diff options
589 files changed, 102281 insertions, 194337 deletions
diff --git a/bin/tests/test_math.cpp b/bin/tests/test_math.cpp index 22d14ada34..9110f72620 100644 --- a/bin/tests/test_math.cpp +++ b/bin/tests/test_math.cpp @@ -40,6 +40,9 @@ #include "scene/resources/texture.h" #include "vmap.h" #include "os/os.h" + +#include "method_ptrcall.h" + namespace TestMath { @@ -105,8 +108,12 @@ uint32_t ihash3( uint32_t a) return a; } + + + MainLoop* test() { + return NULL; { diff --git a/core/balloon_allocator.h b/core/balloon_allocator.h deleted file mode 100644 index eb6632bb37..0000000000 --- a/core/balloon_allocator.h +++ /dev/null @@ -1,35 +0,0 @@ -/*************************************************************************/ -/* balloon_allocator.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef BALLOON_ALLOCATOR_H -#define BALLOON_ALLOCATOR_H - -#include "os/memory.h" - -#include "allocators.h" -#endif // BALLOON_ALLOCATOR_H diff --git a/core/bind/core_bind.cpp b/core/bind/core_bind.cpp index 31c0c0e208..ace7e7c7b7 100644 --- a/core/bind/core_bind.cpp +++ b/core/bind/core_bind.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* core_bind.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "core_bind.h" #include "os/os.h" #include "geometry.h" @@ -1538,7 +1566,12 @@ DVector<uint8_t> _File::get_buffer(int p_length) const{ String _File::get_as_text() const { + ERR_FAIL_COND_V(!f, String()); + String text; + size_t original_pos = f->get_pos(); + f->seek(0); + String l = get_line(); while(!eof_reached()) { text+=l+"\n"; @@ -1546,6 +1579,8 @@ String _File::get_as_text() const { } text+=l; + f->seek(original_pos); + return text; @@ -1558,6 +1593,12 @@ String _File::get_md5(const String& p_path) const { } +String _File::get_sha256(const String& p_path) const { + + return FileAccess::get_sha256(p_path); + +} + String _File::get_line() const{ @@ -1748,6 +1789,7 @@ void _File::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_line"),&_File::get_line); ObjectTypeDB::bind_method(_MD("get_as_text"),&_File::get_as_text); ObjectTypeDB::bind_method(_MD("get_md5","path"),&_File::get_md5); + ObjectTypeDB::bind_method(_MD("get_sha256","path"),&_File::get_md5); ObjectTypeDB::bind_method(_MD("get_endian_swap"),&_File::get_endian_swap); ObjectTypeDB::bind_method(_MD("set_endian_swap","enable"),&_File::set_endian_swap); ObjectTypeDB::bind_method(_MD("get_error:Error"),&_File::get_error); @@ -1856,6 +1898,13 @@ String _Directory::get_current_dir() { Error _Directory::make_dir(String p_dir){ ERR_FAIL_COND_V(!d,ERR_UNCONFIGURED); + if (!p_dir.is_rel_path()) { + DirAccess *d = DirAccess::create_for_path(p_dir); + Error err = d->make_dir(p_dir); + memdelete(d); + return err; + + } return d->make_dir(p_dir); } Error _Directory::make_dir_recursive(String p_dir){ @@ -1867,18 +1916,32 @@ Error _Directory::make_dir_recursive(String p_dir){ bool _Directory::file_exists(String p_file){ ERR_FAIL_COND_V(!d,false); + + if (!p_file.is_rel_path()) { + return FileAccess::exists(p_file); + } + return d->file_exists(p_file); } bool _Directory::dir_exists(String p_dir) { ERR_FAIL_COND_V(!d,false); - return d->dir_exists(p_dir); + if (!p_dir.is_rel_path()) { + + DirAccess *d = DirAccess::create_for_path(p_dir); + bool exists = d->dir_exists(p_dir); + memdelete(d); + return exists; + + } else { + return d->dir_exists(p_dir); + } } int _Directory::get_space_left(){ ERR_FAIL_COND_V(!d,0); - return d->get_space_left(); + return d->get_space_left()/1024*1024; //return value in megabytes, given binding is int } Error _Directory::copy(String p_from,String p_to){ @@ -1889,12 +1952,26 @@ Error _Directory::copy(String p_from,String p_to){ Error _Directory::rename(String p_from, String p_to){ ERR_FAIL_COND_V(!d,ERR_UNCONFIGURED); + if (!p_from.is_rel_path()) { + DirAccess *d = DirAccess::create_for_path(p_from); + Error err = d->rename(p_from,p_to); + memdelete(d); + return err; + } + return d->rename(p_from,p_to); } Error _Directory::remove(String p_name){ ERR_FAIL_COND_V(!d,ERR_UNCONFIGURED); + if (!p_name.is_rel_path()) { + DirAccess *d = DirAccess::create_for_path(p_name); + Error err = d->remove(p_name); + memdelete(d); + return err; + } + return d->remove(p_name); } diff --git a/core/bind/core_bind.h b/core/bind/core_bind.h index 441927940d..856d942d02 100644 --- a/core/bind/core_bind.h +++ b/core/bind/core_bind.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* core_bind.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef CORE_BIND_H #define CORE_BIND_H @@ -380,6 +408,7 @@ public: String get_line() const; String get_as_text() const; String get_md5(const String& p_path) const; + String get_sha256(const String& p_path) const; /**< use this for files WRITTEN in _big_ endian machines (ie, amiga/mac) * It's not about the current CPU type but file formats. diff --git a/core/fpstr.cpp b/core/fpstr.cpp deleted file mode 100644 index 76046d0b99..0000000000 --- a/core/fpstr.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/*************************************************************************/ -/* fpstr.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ diff --git a/core/fpstr.h b/core/fpstr.h deleted file mode 100644 index d3d02733b3..0000000000 --- a/core/fpstr.h +++ /dev/null @@ -1,28 +0,0 @@ -/*************************************************************************/ -/* fpstr.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ diff --git a/core/func_ref.cpp b/core/func_ref.cpp index 66962710bd..29b06ae9a0 100644 --- a/core/func_ref.cpp +++ b/core/func_ref.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* func_ref.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "func_ref.h" Variant FuncRef::call_func(const Variant** p_args, int p_argcount, Variant::CallError& r_error) { diff --git a/core/func_ref.h b/core/func_ref.h index 28d0e737be..140dcd6b1c 100644 --- a/core/func_ref.h +++ b/core/func_ref.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* func_ref.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef FUNC_REF_H #define FUNC_REF_H diff --git a/core/helper/value_evaluator.h b/core/helper/value_evaluator.h index a03602bc61..461c505ee7 100644 --- a/core/helper/value_evaluator.h +++ b/core/helper/value_evaluator.h @@ -5,7 +5,7 @@ /* GODOT ENGINE */ /* http://www.godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/core/image.cpp b/core/image.cpp index 57496683ef..d6ac3f28ea 100644 --- a/core/image.cpp +++ b/core/image.cpp @@ -1735,8 +1735,17 @@ Error Image::_decompress_bc() { print_line("decompressing bc"); + int wd=width,ht=height; + if (wd%4!=0) { + wd+=4-(wd%4); + } + if (ht%4!=0) { + ht+=4-(ht%4); + } + + int mm; - int size = _get_dst_image_size(width,height,FORMAT_RGBA,mm,mipmaps); + int size = _get_dst_image_size(wd,ht,FORMAT_RGBA,mm,mipmaps); DVector<uint8_t> newdata; newdata.resize(size); @@ -1746,7 +1755,8 @@ Error Image::_decompress_bc() { int rofs=0; int wofs=0; - int wd=width,ht=height; + + //print_line("width: "+itos(wd)+" height: "+itos(ht)); for(int i=0;i<=mm;i++) { @@ -2051,6 +2061,11 @@ Error Image::_decompress_bc() { data=newdata; format=FORMAT_RGBA; + if (wd!=width || ht!=height) { + //todo, crop + width=wd; + height=ht; + } return OK; } diff --git a/core/io/file_access_encrypted.cpp b/core/io/file_access_encrypted.cpp index 65b1ca5207..4d4b4d8ee7 100644 --- a/core/io/file_access_encrypted.cpp +++ b/core/io/file_access_encrypted.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* file_access_encrypted.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "file_access_encrypted.h" #include "aes256.h" #include "md5.h" diff --git a/core/io/file_access_encrypted.h b/core/io/file_access_encrypted.h index 3bdcc2dfd0..34926faadf 100644 --- a/core/io/file_access_encrypted.h +++ b/core/io/file_access_encrypted.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* file_access_encrypted.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef FILE_ACCESS_ENCRYPTED_H #define FILE_ACCESS_ENCRYPTED_H diff --git a/core/io/file_access_memory.cpp b/core/io/file_access_memory.cpp index 7db3499505..11a425001e 100644 --- a/core/io/file_access_memory.cpp +++ b/core/io/file_access_memory.cpp @@ -46,7 +46,7 @@ void FileAccessMemory::register_file(String p_name, Vector<uint8_t> p_data) { name = Globals::get_singleton()->globalize_path(p_name); else name = p_name; - name = DirAccess::normalize_path(name); + //name = DirAccess::normalize_path(name); (*files)[name] = p_data; } @@ -68,7 +68,7 @@ FileAccess* FileAccessMemory::create() { bool FileAccessMemory::file_exists(const String& p_name) { String name = fix_path(p_name); - name = DirAccess::normalize_path(name); +// name = DirAccess::normalize_path(name); return files && (files->find(name) != NULL); } @@ -87,7 +87,7 @@ Error FileAccessMemory::_open(const String& p_path, int p_mode_flags) { ERR_FAIL_COND_V(!files, ERR_FILE_NOT_FOUND); String name = fix_path(p_path); - name = DirAccess::normalize_path(name); +// name = DirAccess::normalize_path(name); Map<String, Vector<uint8_t> >::Element* E = files->find(name); ERR_FAIL_COND_V(!E, ERR_FILE_NOT_FOUND); diff --git a/core/io/http_client.cpp b/core/io/http_client.cpp index 3520680118..2a831dd992 100644 --- a/core/io/http_client.cpp +++ b/core/io/http_client.cpp @@ -29,8 +29,6 @@ #include "http_client.h" #include "io/stream_peer_ssl.h" -VARIANT_ENUM_CAST(HTTPClient::Status); - Error HTTPClient::connect(const String &p_host, int p_port, bool p_ssl,bool p_verify_host){ @@ -76,6 +74,7 @@ void HTTPClient::set_connection(const Ref<StreamPeer>& p_connection){ close(); connection=p_connection; + status=STATUS_CONNECTED; } diff --git a/core/io/http_client.h b/core/io/http_client.h index ceb0273a7d..32d2e72101 100644 --- a/core/io/http_client.h +++ b/core/io/http_client.h @@ -201,5 +201,6 @@ public: }; VARIANT_ENUM_CAST(HTTPClient::Method); +VARIANT_ENUM_CAST(HTTPClient::Status); #endif // HTTP_CLIENT_H diff --git a/core/io/packet_peer.cpp b/core/io/packet_peer.cpp index 22b8bc0b39..8e96697ac9 100644 --- a/core/io/packet_peer.cpp +++ b/core/io/packet_peer.cpp @@ -126,7 +126,7 @@ Error PacketPeer::_get_packet_error() const { void PacketPeer::_bind_methods() { - ObjectTypeDB::bind_method(_MD("get_var"),&PacketPeer::_bnd_get_var); + ObjectTypeDB::bind_method(_MD("get_var:Variant"),&PacketPeer::_bnd_get_var); ObjectTypeDB::bind_method(_MD("put_var", "var:Variant"),&PacketPeer::put_var); ObjectTypeDB::bind_method(_MD("get_packet"),&PacketPeer::_get_packet); ObjectTypeDB::bind_method(_MD("put_packet:Error", "buffer"),&PacketPeer::_put_packet); diff --git a/core/io/packet_peer_udp.cpp b/core/io/packet_peer_udp.cpp index 83217ffc41..efc619e414 100644 --- a/core/io/packet_peer_udp.cpp +++ b/core/io/packet_peer_udp.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* packet_peer_udp.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "packet_peer_udp.h" #include "io/ip.h" diff --git a/core/io/packet_peer_udp.h b/core/io/packet_peer_udp.h index 73ff487b19..70d92834fc 100644 --- a/core/io/packet_peer_udp.h +++ b/core/io/packet_peer_udp.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* packet_peer_udp.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef PACKET_PEER_UDP_H #define PACKET_PEER_UDP_H diff --git a/core/io/sha-README.md b/core/io/sha-README.md new file mode 100644 index 0000000000..27a73cffe7 --- /dev/null +++ b/core/io/sha-README.md @@ -0,0 +1,5 @@ +SHA256 +====== + +SHA-256 implementation to compliment a portable byte-oriented AES-256 +implementation in C at http://www.literatecode.com/aes256 diff --git a/core/io/sha256.c b/core/io/sha256.c new file mode 100644 index 0000000000..68a4339af9 --- /dev/null +++ b/core/io/sha256.c @@ -0,0 +1,245 @@ +/* +* SHA-256 implementation. +* +* Copyright (c) 2010 Ilya O. Levin, http://www.literatecode.com +* +* Permission to use, copy, modify, and distribute this software for any +* purpose with or without fee is hereby granted, provided that the above +* copyright notice and this permission notice appear in all copies. +* +* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ +#define SWAP_BYTES +// #define USE_STD_MEMCPY +// #define SELF_TEST + +#ifdef USE_STD_MEMCPY +#include <string.h> +#endif +#include "sha256.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define RL(x,n) (((x) << n) | ((x) >> (32 - n))) +#define RR(x,n) (((x) >> n) | ((x) << (32 - n))) + +#define S0(x) (RR((x), 2) ^ RR((x),13) ^ RR((x),22)) +#define S1(x) (RR((x), 6) ^ RR((x),11) ^ RR((x),25)) +#define G0(x) (RR((x), 7) ^ RR((x),18) ^ ((x) >> 3)) +#define G1(x) (RR((x),17) ^ RR((x),19) ^ ((x) >> 10)) + +#ifdef SWAP_BYTES +#define BSWP(x,y) _bswapw((uint32_t *)(x), (uint32_t)(y)) +#else +#define BSWP(p,n) +#endif +#ifdef USE_STD_MEMCPY +#define MEMCP(x,y,z) memcpy((x),(y),(z)) +#else +#define MEMCP(x,y,z) _memcp((x),(y),(z)) +#endif + +#ifndef __cdecl +#define __cdecl +#endif + +static const uint32_t K[64] = { + 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, + 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, + 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, + 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, + 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, + 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 +}; + +/* -------------------------------------------------------------------------- */ +static void _bswapw(uint32_t *p, uint32_t i) +{ + while (i--) p[i] = (RR(p[i],24) & 0x00ff00ff) | (RR(p[i],8) & 0xff00ff00); + +} /* _bswapw */ + +/* -------------------------------------------------------------------------- */ +#ifndef USE_STD_MEMCPY +void * __cdecl _memcp (void *d, const void *s, uint32_t sz) +{ + void *rv = d; + + while (sz--) *(char *)d = *(char *)s, d = (char *)d + 1, s = (char *)s + 1; + + return(rv); +} /* _memcp */ +#endif + +/* -------------------------------------------------------------------------- */ +static void _rtrf(uint32_t *b, uint32_t *p, uint32_t i, uint32_t j) +{ + #define B(x, y) b[(x-y) & 7] + #define P(x, y) p[(x+y) & 15] + + B(7,i) += (j ? (p[i & 15] += G1(P(i,14)) + P(i,9) + G0(P(i,1))) : p[i & 15]) + + K[i+j] + S1(B(4,i)) + + (B(6,i) ^ (B(4,i) & (B(5,i) ^ B(6,i)))); + B(3,i) += B(7,i); + B(7,i) += S0(B(0,i)) + ( (B(0,i) & B(1,i)) | (B(2,i) & (B(0,i) ^ B(1,i))) ); + + #undef P + #undef B +} /* _rtrf */ + +/* -------------------------------------------------------------------------- */ +static void _hash(sha256_context *ctx) +{ + uint32_t b[8], *p, j; + + b[0] = ctx->hash[0]; b[1] = ctx->hash[1]; b[2] = ctx->hash[2]; + b[3] = ctx->hash[3]; b[4] = ctx->hash[4]; b[5] = ctx->hash[5]; + b[6] = ctx->hash[6]; b[7] = ctx->hash[7]; + + for (p = ctx->buf, j = 0; j < 64; j += 16) + _rtrf(b, p, 0, j), _rtrf(b, p, 1, j), _rtrf(b, p, 2, j), + _rtrf(b, p, 3, j), _rtrf(b, p, 4, j), _rtrf(b, p, 5, j), + _rtrf(b, p, 6, j), _rtrf(b, p, 7, j), _rtrf(b, p, 8, j), + _rtrf(b, p, 9, j), _rtrf(b, p, 10, j), _rtrf(b, p, 11, j), + _rtrf(b, p, 12, j), _rtrf(b, p, 13, j), _rtrf(b, p, 14, j), + _rtrf(b, p, 15, j); + + ctx->hash[0] += b[0]; ctx->hash[1] += b[1]; ctx->hash[2] += b[2]; + ctx->hash[3] += b[3]; ctx->hash[4] += b[4]; ctx->hash[5] += b[5]; + ctx->hash[6] += b[6]; ctx->hash[7] += b[7]; + +} /* _hash */ + +/* -------------------------------------------------------------------------- */ +void sha256_init(sha256_context ctx[1]) +{ + ctx->len[0] = ctx->len[1] = 0; + ctx->hash[0] = 0x6a09e667; ctx->hash[1] = 0xbb67ae85; + ctx->hash[2] = 0x3c6ef372; ctx->hash[3] = 0xa54ff53a; + ctx->hash[4] = 0x510e527f; ctx->hash[5] = 0x9b05688c; + ctx->hash[6] = 0x1f83d9ab; ctx->hash[7] = 0x5be0cd19; + +} /* sha256_init */ + +/* -------------------------------------------------------------------------- */ +void sha256_hash(sha256_context *ctx, uint8_t *dat, uint32_t sz) +{ + register uint32_t i = ctx->len[0] & 63, l, j; + + if ((ctx->len[0] += sz) < sz) ++(ctx->len[1]); + + for (j = 0, l = 64-i; sz >= l; j += l, sz -= l, l = 64, i = 0) + { + MEMCP(&ctx->buf[i], &dat[j], l); + BSWP(ctx->buf, 16 ); + _hash(ctx); + } + MEMCP(&ctx->buf[i], &dat[j], sz); + +} /* _hash */ + +/* -------------------------------------------------------------------------- */ +void sha256_done(sha256_context *ctx, uint8_t *buf) +{ + uint32_t i = (uint32_t)(ctx->len[0] & 63), j = ((~i) & 3) << 3; + + BSWP(ctx->buf, (i + 3) >> 2); + + ctx->buf[i >> 2] &= 0xffffff80 << j; /* add padding */ + ctx->buf[i >> 2] |= 0x00000080 << j; + + if (i < 56) i = (i >> 2) + 1; + else ctx->buf[15] ^= (i < 60) ? ctx->buf[15] : 0, _hash(ctx), i = 0; + + while (i < 14) ctx->buf[i++] = 0; + + ctx->buf[14] = (ctx->len[1] << 3)|(ctx->len[0] >> 29); /* add length */ + ctx->buf[15] = ctx->len[0] << 3; + + _hash(ctx); + + for (i = 0; i < 32; i++) + ctx->buf[i % 16] = 0, /* may remove this line in case of a DIY cleanup */ + buf[i] = (uint8_t)(ctx->hash[i >> 2] >> ((~i & 3) << 3)); + +} /* sha256_done */ + + +#ifdef SELF_TEST +#pragma warning (push, 0) +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#pragma warning(pop) + +char *buf[] = { + "", + "e3b0c442 98fc1c14 9afbf4c8 996fb924 27ae41e4 649b934c a495991b 7852b855", + + "abc", + "ba7816bf 8f01cfea 414140de 5dae2223 b00361a3 96177a9c b410ff61 f20015ad", + + "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + "248d6a61 d20638b8 e5c02693 0c3e6039 a33ce459 64ff2167 f6ecedd4 19db06c1", + + "The quick brown fox jumps over the lazy dog", + "d7a8fbb3 07d78094 69ca9abc b0082e4f 8d5651e4 6d3cdb76 2d02d0bf 37c9e592", + + "The quick brown fox jumps over the lazy cog", /* avalanche effect test */ + "e4c4d8f3 bf76b692 de791a17 3e053211 50f7a345 b46484fe 427f6acc 7ecc81be", + + "bhn5bjmoniertqea40wro2upyflkydsibsk8ylkmgbvwi420t44cq034eou1szc1k0mk46oeb7ktzmlxqkbte2sy", + "9085df2f 02e0cc45 5928d0f5 1b27b4bf 1d9cd260 a66ed1fd a11b0a3f f5756d99" +}; + +int main(int argc, char *argv[]) +{ + sha256_context ctx; + uint8_t hv[32]; + uint32_t i, j; + + for (j = 0; j < (sizeof(buf)/sizeof(buf[0])); j += 2) + { + sha256_init(&ctx); + sha256_hash(&ctx, (uint8_t *)buf[j], (uint32_t)strlen(buf[j])); + sha256_done(&ctx, hv); + printf("input = %s\ndigest: %s\nresult: ", buf[j], buf[j+1]); + for (i = 0; i < 32; i++) printf("%02x%s", hv[i], ((i%4)==3)?" ":""); + printf("\n\n"); + } + + for (j = 1; j < (uint32_t)argc; j++) + { + printf("argv[%d]: %s\nresult: ", (int)j, argv[j]); + sha256_init(&ctx); + sha256_hash(&ctx, (uint8_t *)argv[j], (uint32_t)strlen(argv[j])); + sha256_done(&ctx, hv); + for (i = 0; i < 32; i++) printf("%02x%s", hv[i], ((i%4)==3)?" ":""); + printf("\n\n"); + } + + return 0; +} /* main */ +#endif + +#ifdef __cplusplus +} +#endif diff --git a/core/io/sha256.h b/core/io/sha256.h new file mode 100644 index 0000000000..e19e56b4cc --- /dev/null +++ b/core/io/sha256.h @@ -0,0 +1,50 @@ +/* +* SHA-256 implementation. +* +* Copyright (c) 2010 Ilya O. Levin, http://www.literatecode.com +* +* Permission to use, copy, modify, and distribute this software for any +* purpose with or without fee is hereby granted, provided that the above +* copyright notice and this permission notice appear in all copies. +* +* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ +#ifdef _MSC_VER +#ifndef uint8_t +typedef unsigned __int8 uint8_t; +#endif +#ifndef uint32_t +typedef unsigned __int32 uint32_t; +#endif +#ifndef uint64_t +typedef __int64 int64_t; +typedef unsigned __int64 uint64_t; +#endif +#else +#include <stdint.h> +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + + typedef struct { + uint32_t buf[16]; + uint32_t hash[8]; + uint32_t len[2]; + } sha256_context; + + void sha256_init(sha256_context *); + void sha256_hash(sha256_context *, uint8_t * /* data */, uint32_t /* len */); + void sha256_done(sha256_context *, uint8_t * /* hash */); + +#ifdef __cplusplus +} +#endif diff --git a/core/io/stream_peer_ssl.cpp b/core/io/stream_peer_ssl.cpp index 2114993783..a58be84225 100644 --- a/core/io/stream_peer_ssl.cpp +++ b/core/io/stream_peer_ssl.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* stream_peer_ssl.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "stream_peer_ssl.h" diff --git a/core/io/stream_peer_ssl.h b/core/io/stream_peer_ssl.h index 4b1c8e93bb..3435a9a445 100644 --- a/core/io/stream_peer_ssl.h +++ b/core/io/stream_peer_ssl.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* stream_peer_ssl.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef STREAM_PEER_SSL_H #define STREAM_PEER_SSL_H diff --git a/core/io/zip_io.h b/core/io/zip_io.h index 355003d947..0668c47d97 100644 --- a/core/io/zip_io.h +++ b/core/io/zip_io.h @@ -39,11 +39,14 @@ static void* zipio_open(void* data, const char* p_fname, int mode) { FileAccess *&f = *(FileAccess**)data; + String fname; + fname.parse_utf8(p_fname); + if (mode & ZLIB_FILEFUNC_MODE_WRITE) { - f = FileAccess::open(p_fname,FileAccess::WRITE); + f = FileAccess::open(fname,FileAccess::WRITE); } else { - f = FileAccess::open(p_fname,FileAccess::READ); + f = FileAccess::open(fname,FileAccess::READ); } if (!f) diff --git a/core/make_binders.py b/core/make_binders.py index 93371dc0a3..1d55c92b89 100644 --- a/core/make_binders.py +++ b/core/make_binders.py @@ -48,7 +48,13 @@ public: $ifnoret return Variant();$ } - +#ifdef PTRCAL_ENABLED + virtual void ptrcall(Object*p_object,const void** p_args,void *r_ret) { + + T *instance=p_object->cast_to<T>(); + $ifret PtrToArg<R>::encode( $ (instance->*method)($arg, PtrToArg<P@>::convert(p_args[@-1])$) $ifret ,r_ret)$ ; + } +#endif MethodBind$argc$$ifret R$$ifconst C$ () { #ifdef DEBUG_METHODS_ENABLED _set_const($ifconst true$$ifnoconst false$); @@ -121,7 +127,12 @@ public: $ifret return Variant(ret);$ $ifnoret return Variant();$ } - +#ifdef PTRCALL_ENABLED + virtual void ptrcall(Object*p_object,const void** p_args,void *r_ret) { + __UnexistingClass *instance = (__UnexistingClass*)p_object; + $ifret PtrToArg<R>::encode( $ (instance->*method)($arg, PtrToArg<P@>::convert(p_args[@-1])$) $ifret ,r_ret) $ ; + } +#endif MethodBind$argc$$ifret R$$ifconst C$ () { #ifdef DEBUG_METHODS_ENABLED _set_const($ifconst true$$ifnoconst false$); diff --git a/core/math/bezier_curve.cpp b/core/math/bezier_curve.cpp deleted file mode 100644 index 37cf16504c..0000000000 --- a/core/math/bezier_curve.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/*************************************************************************/ -/* bezier_curve.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "bezier_curve.h" diff --git a/core/math/bezier_curve.h b/core/math/bezier_curve.h deleted file mode 100644 index 25df9dfda8..0000000000 --- a/core/math/bezier_curve.h +++ /dev/null @@ -1,35 +0,0 @@ -/*************************************************************************/ -/* bezier_curve.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef BEZIER_CURVE_H -#define BEZIER_CURVE_H - - - - -#endif // BEZIER_CURVE_H diff --git a/core/math/bsp_tree.h b/core/math/bsp_tree.h index 2bfc26b51e..6c36d80e3e 100644 --- a/core/math/bsp_tree.h +++ b/core/math/bsp_tree.h @@ -34,8 +34,8 @@ #include "face3.h" #include "vector.h" #include "dvector.h" - #include "variant.h" +#include "method_ptrcall.h" /** @author Juan Linietsky <reduzio@gmail.com> */ @@ -138,4 +138,29 @@ bool BSP_Tree::convex_is_inside(const T& p_convex) const { } +#ifdef PTRCALL_ENABLED + + +template<> +struct PtrToArg<BSP_Tree> { + _FORCE_INLINE_ static BSP_Tree convert(const void* p_ptr) { + BSP_Tree s( Variant( *reinterpret_cast<const Dictionary*>(p_ptr) ) ); + return s; + } + _FORCE_INLINE_ static void encode(BSP_Tree p_val,void* p_ptr) { + Dictionary *d = reinterpret_cast<Dictionary*>(p_ptr); + *d=Variant(p_val); + } +}; + +template<> +struct PtrToArg<const BSP_Tree&> { + _FORCE_INLINE_ static BSP_Tree convert(const void* p_ptr) { + BSP_Tree s( Variant( *reinterpret_cast<const Dictionary*>(p_ptr) ) ); + return s; + } +}; + +#endif + #endif diff --git a/core/math/face3.h b/core/math/face3.h index bc34be9935..3a81da74db 100644 --- a/core/math/face3.h +++ b/core/math/face3.h @@ -264,4 +264,6 @@ bool Face3::intersects_aabb2(const AABB& p_aabb) const { } +//this sucks... + #endif // FACE3_H diff --git a/core/math/math_defs.cpp b/core/math/math_defs.cpp deleted file mode 100644 index 70963bd71d..0000000000 --- a/core/math/math_defs.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/*************************************************************************/ -/* math_defs.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "math_defs.h" - diff --git a/core/math/vector3.h b/core/math/vector3.h index 528c4d37b3..910446023a 100644 --- a/core/math/vector3.h +++ b/core/math/vector3.h @@ -44,18 +44,6 @@ struct Vector3 { }; union { - -#ifdef USE_QUAD_VECTORS - - struct { - real_t x; - real_t y; - real_t z; - real_t _unused; - }; - real_t coord[4]; -#else - struct { real_t x; real_t y; @@ -63,7 +51,6 @@ struct Vector3 { }; real_t coord[3]; -#endif }; _FORCE_INLINE_ const real_t& operator[](int p_axis) const { diff --git a/core/method_bind.h b/core/method_bind.h index 48848c5848..30a848270d 100644 --- a/core/method_bind.h +++ b/core/method_bind.h @@ -33,6 +33,7 @@ #include "variant.h" #include "object.h" #include <stdio.h> +#include "method_ptrcall.h" /** @author Juan Linietsky <reduzio@gmail.com> @@ -85,6 +86,32 @@ struct VariantCaster<const T&> { (VariantCaster<P##m_idx>::cast( (m_idx-1)>=p_arg_count?get_default_argument(m_idx-1):*p_args[m_idx-1] )) //SIMPLE_NUMERIC_TYPE is used to avoid a warning on Variant::get_type_for + +#ifdef PTRCALL_ENABLED + + +#define VARIANT_ENUM_CAST( m_enum ) \ +SIMPLE_NUMERIC_TYPE( m_enum );\ +template<> \ +struct VariantCaster<m_enum> {\ +\ + static _FORCE_INLINE_ m_enum cast(const Variant& p_variant) {\ + return (m_enum)p_variant.operator int();\ + }\ +};\ +template<>\ +struct PtrToArg< m_enum > {\ + _FORCE_INLINE_ static m_enum convert(const void* p_ptr) {\ + return m_enum(*reinterpret_cast<const int*>(p_ptr));\ + }\ + _FORCE_INLINE_ static void encode(m_enum p_val,const void* p_ptr) {\ + *(int*)p_ptr=p_val;\ + }\ +}; + +#else + + #define VARIANT_ENUM_CAST( m_enum ) \ SIMPLE_NUMERIC_TYPE( m_enum );\ template<> \ @@ -96,6 +123,9 @@ struct VariantCaster<m_enum> {\ }; +#endif + + #define CHECK_ARG(m_arg)\ if ((m_arg-1)<p_arg_count) {\ Variant::Type argtype=get_argument_type(m_arg-1);\ @@ -222,6 +252,11 @@ public: } #endif virtual Variant call(Object* p_object,const Variant** p_args,int p_arg_count, Variant::CallError& r_error)=0; + +#ifdef PTRCALL_ENABLED + virtual void ptrcall(Object* p_object,const void** p_args,void* r_ret)=0; +#endif + StringName get_name() const; void set_name(const StringName& p_name); _FORCE_INLINE_ int get_method_id() const { return method_id; } @@ -277,6 +312,11 @@ public: #endif } +#ifdef PTRCALL_ENABLED + virtual void ptrcall(Object* p_object,const void** p_args,void* r_ret) {} //todo +#endif + + void set_method(NativeCall p_method) { call_method=p_method; } virtual bool is_const() const { return false; } virtual String get_instance_type() const { return T::get_type_static(); } diff --git a/core/method_ptrcall.h b/core/method_ptrcall.h new file mode 100644 index 0000000000..e38d59fd8f --- /dev/null +++ b/core/method_ptrcall.h @@ -0,0 +1,354 @@ +#ifndef METHOD_PTRCALL_H +#define METHOD_PTRCALL_H + +#include "typedefs.h" +#include "math_2d.h" +#include "variant.h" + +#ifdef PTRCALL_ENABLED + +template<class T> +struct PtrToArg { + +}; + +#define MAKE_PTRARG(m_type) \ +template<>\ +struct PtrToArg<m_type> {\ + _FORCE_INLINE_ static m_type convert(const void* p_ptr) {\ + return *reinterpret_cast<const m_type*>(p_ptr);\ + }\ + _FORCE_INLINE_ static void encode(m_type p_val, void* p_ptr) {\ + *((m_type*)p_ptr)=p_val;\ + }\ +};\ +template<>\ +struct PtrToArg<const m_type&> {\ + _FORCE_INLINE_ static m_type convert(const void* p_ptr) {\ + return *reinterpret_cast<const m_type*>(p_ptr);\ + }\ + _FORCE_INLINE_ static void encode(m_type p_val, void* p_ptr) {\ + *((m_type*)p_ptr)=p_val;\ + }\ +} + + +#define MAKE_PTRARGR(m_type,m_ret) \ +template<>\ +struct PtrToArg<m_type> {\ + _FORCE_INLINE_ static m_type convert(const void* p_ptr) {\ + return *reinterpret_cast<const m_type*>(p_ptr);\ + }\ + _FORCE_INLINE_ static void encode(m_type p_val, void* p_ptr) {\ + *((m_ret*)p_ptr)=p_val;\ + }\ +};\ +template<>\ +struct PtrToArg<const m_type&> {\ + _FORCE_INLINE_ static m_type convert(const void* p_ptr) {\ + return *reinterpret_cast<const m_type*>(p_ptr);\ + }\ + _FORCE_INLINE_ static void encode(m_type p_val, void* p_ptr) {\ + *((m_ret*)p_ptr)=p_val;\ + }\ +} + + + +MAKE_PTRARG(bool); +MAKE_PTRARGR(uint8_t,int); +MAKE_PTRARGR(int8_t,int); +MAKE_PTRARGR(uint16_t,int); +MAKE_PTRARGR(int16_t,int); +MAKE_PTRARGR(uint32_t,int); +MAKE_PTRARGR(int32_t,int); +MAKE_PTRARGR(int64_t,int); +MAKE_PTRARGR(uint64_t,int); +MAKE_PTRARG(float); +MAKE_PTRARGR(double,float); + +MAKE_PTRARG(String); +MAKE_PTRARG(Vector2); +MAKE_PTRARG(Rect2); +MAKE_PTRARG(Vector3); +MAKE_PTRARG(Matrix32); +MAKE_PTRARG(Plane); +MAKE_PTRARG(Quat); +MAKE_PTRARG(AABB); +MAKE_PTRARG(Matrix3); +MAKE_PTRARG(Transform); +MAKE_PTRARG(Color); +MAKE_PTRARG(Image); +MAKE_PTRARG(NodePath); +MAKE_PTRARG(RID); +MAKE_PTRARG(InputEvent); +MAKE_PTRARG(Dictionary); +MAKE_PTRARG(Array); +MAKE_PTRARG(ByteArray); +MAKE_PTRARG(IntArray); +MAKE_PTRARG(RealArray); +MAKE_PTRARG(StringArray); +MAKE_PTRARG(Vector2Array); +MAKE_PTRARG(Vector3Array); +MAKE_PTRARG(ColorArray); +MAKE_PTRARG(Variant); + + +//this is for Object + +template<class T> +struct PtrToArg< T* > { + + _FORCE_INLINE_ static T* convert(const void* p_ptr) { + + return const_cast<T*>(reinterpret_cast<const T*>(p_ptr)); + } + + _FORCE_INLINE_ static void encode(T* p_var, void* p_ptr) { + + *((T**)p_ptr)=p_var; + } + +}; + +template<class T> +struct PtrToArg< const T* > { + + _FORCE_INLINE_ static const T* convert(const void* p_ptr) { + + return reinterpret_cast<const T*>(p_ptr); + } + + _FORCE_INLINE_ static void encode(T* p_var, void* p_ptr) { + + *((T**)p_ptr)=p_var; + } + +}; + + +//this is for the special cases used by Variant + +#define MAKE_VECARG(m_type) \ +template<>\ +struct PtrToArg<Vector<m_type> > {\ + _FORCE_INLINE_ static Vector<m_type> convert(const void* p_ptr) {\ + const DVector<m_type> *dvs = reinterpret_cast<const DVector<m_type> *>(p_ptr);\ + Vector<m_type> ret;\ + int len = dvs->size();\ + ret.resize(len);\ + {\ + DVector<m_type>::Read r=dvs->read();\ + for(int i=0;i<len;i++) {\ + ret[i]=r[i];\ + }\ + } \ + return ret;\ + }\ + _FORCE_INLINE_ static void encode(Vector<m_type> p_vec, void* p_ptr) {\ + DVector<m_type> *dv = reinterpret_cast<DVector<m_type> *>(p_ptr);\ + int len=p_vec.size();\ + dv->resize(len);\ + {\ + DVector<m_type>::Write w=dv->write();\ + for(int i=0;i<len;i++) {\ + w[i]=p_vec[i];\ + }\ + } \ + }\ +};\ +template<>\ +struct PtrToArg<const Vector<m_type>& > {\ + _FORCE_INLINE_ static Vector<m_type> convert(const void* p_ptr) {\ + const DVector<m_type> *dvs = reinterpret_cast<const DVector<m_type> *>(p_ptr);\ + Vector<m_type> ret;\ + int len = dvs->size();\ + ret.resize(len);\ + {\ + DVector<m_type>::Read r=dvs->read();\ + for(int i=0;i<len;i++) {\ + ret[i]=r[i];\ + }\ + } \ + return ret;\ + }\ +} + +MAKE_VECARG(String); +MAKE_VECARG(uint8_t); +MAKE_VECARG(int); +MAKE_VECARG(float); +MAKE_VECARG(Vector2); +MAKE_VECARG(Vector3); +MAKE_VECARG(Color); + +//for stuff that gets converted to Array vectors +#define MAKE_VECARR(m_type) \ +template<>\ +struct PtrToArg<Vector<m_type> > {\ + _FORCE_INLINE_ static Vector<m_type> convert(const void* p_ptr) {\ + const Array *arr = reinterpret_cast<const Array *>(p_ptr);\ + Vector<m_type> ret;\ + int len = arr->size();\ + ret.resize(len);\ + for(int i=0;i<len;i++) {\ + ret[i]=(*arr)[i];\ + }\ + return ret;\ + }\ + _FORCE_INLINE_ static void encode(Vector<m_type> p_vec, void* p_ptr) {\ + Array *arr = reinterpret_cast<Array *>(p_ptr);\ + int len = p_vec.size();\ + arr->resize(len);\ + for(int i=0;i<len;i++) {\ + (*arr)[i]=p_vec[i];\ + }\ + } \ +};\ +template<>\ +struct PtrToArg<const Vector<m_type>& > {\ + _FORCE_INLINE_ static Vector<m_type> convert(const void* p_ptr) {\ + const Array *arr = reinterpret_cast<const Array *>(p_ptr);\ + Vector<m_type> ret;\ + int len = arr->size();\ + ret.resize(len);\ + for(int i=0;i<len;i++) {\ + ret[i]=(*arr)[i];\ + }\ + return ret;\ + }\ +} + + +MAKE_VECARR(Variant); +MAKE_VECARR(RID); +MAKE_VECARR(Plane); + +#define MAKE_DVECARR(m_type) \ +template<>\ +struct PtrToArg<DVector<m_type> > {\ + _FORCE_INLINE_ static DVector<m_type> convert(const void* p_ptr) {\ + const Array *arr = reinterpret_cast<const Array *>(p_ptr);\ + DVector<m_type> ret;\ + int len = arr->size();\ + ret.resize(len);\ + {\ + DVector<m_type>::Write w=ret.write();\ + for(int i=0;i<len;i++) {\ + w[i]=(*arr)[i];\ + }\ + }\ + return ret;\ + }\ + _FORCE_INLINE_ static void encode(DVector<m_type> p_vec, void* p_ptr) {\ + Array *arr = reinterpret_cast<Array *>(p_ptr);\ + int len = p_vec.size();\ + arr->resize(len);\ + {\ + DVector<m_type>::Read r=p_vec.read();\ + for(int i=0;i<len;i++) {\ + (*arr)[i]=r[i];\ + }\ + }\ + } \ +};\ +template<>\ +struct PtrToArg<const DVector<m_type>& > {\ + _FORCE_INLINE_ static DVector<m_type> convert(const void* p_ptr) {\ + const Array *arr = reinterpret_cast<const Array *>(p_ptr);\ + DVector<m_type> ret;\ + int len = arr->size();\ + ret.resize(len);\ + {\ + DVector<m_type>::Write w=ret.write();\ + for(int i=0;i<len;i++) {\ + w[i]=(*arr)[i];\ + }\ + }\ + return ret;\ + }\ +} + +MAKE_DVECARR(Plane); +//for special case StringName + +#define MAKE_STRINGCONV(m_type) \ +template<>\ +struct PtrToArg<m_type> {\ + _FORCE_INLINE_ static m_type convert(const void* p_ptr) {\ + m_type s = *reinterpret_cast<const String*>(p_ptr);\ + return s;\ + }\ + _FORCE_INLINE_ static void encode(m_type p_vec, void* p_ptr) {\ + String *arr = reinterpret_cast<String *>(p_ptr);\ + *arr=p_vec;\ + }\ +};\ +\ +template<>\ +struct PtrToArg<const m_type&> {\ + _FORCE_INLINE_ static m_type convert(const void* p_ptr) {\ + m_type s = *reinterpret_cast<const String*>(p_ptr);\ + return s;\ + }\ +} + +MAKE_STRINGCONV(StringName); +MAKE_STRINGCONV(IP_Address); + +template<> +struct PtrToArg<DVector<Face3> > { + _FORCE_INLINE_ static DVector<Face3> convert(const void* p_ptr) { + const DVector<Vector3> *dvs = reinterpret_cast<const DVector<Vector3> *>(p_ptr); + DVector<Face3> ret; + int len = dvs->size()/3; + ret.resize(len); + { + DVector<Vector3>::Read r=dvs->read(); + DVector<Face3>::Write w=ret.write(); + for(int i=0;i<len;i++) { + w[i].vertex[0]=r[i*3+0]; + w[i].vertex[1]=r[i*3+1]; + w[i].vertex[2]=r[i*3+2]; + } + } + return ret; + } + _FORCE_INLINE_ static void encode(DVector<Face3> p_vec, void* p_ptr) {\ + DVector<Vector3> *arr = reinterpret_cast<DVector<Vector3> *>(p_ptr);\ + int len = p_vec.size();\ + arr->resize(len*3);\ + {\ + DVector<Face3>::Read r=p_vec.read();\ + DVector<Vector3>::Write w=arr->write();\ + for(int i=0;i<len;i++) {\ + w[i*3+0]=r[i].vertex[0];\ + w[i*3+1]=r[i].vertex[1];\ + w[i*3+2]=r[i].vertex[2];\ + }\ + }\ + } \ +}; +template<> +struct PtrToArg<const DVector<Face3>& > { + _FORCE_INLINE_ static DVector<Face3> convert(const void* p_ptr) { + const DVector<Vector3> *dvs = reinterpret_cast<const DVector<Vector3> *>(p_ptr); + DVector<Face3> ret; + int len = dvs->size()/3; + ret.resize(len); + { + DVector<Vector3>::Read r=dvs->read(); + DVector<Face3>::Write w=ret.write(); + for(int i=0;i<len;i++) { + w[i].vertex[0]=r[i*3+0]; + w[i].vertex[1]=r[i*3+1]; + w[i].vertex[2]=r[i*3+2]; + } + } + return ret; + } +}; + + +#endif // METHOD_PTRCALL_H +#endif diff --git a/core/multi_bucket_array.h b/core/multi_bucket_array.h deleted file mode 100644 index 98033e40f6..0000000000 --- a/core/multi_bucket_array.h +++ /dev/null @@ -1,42 +0,0 @@ -/*************************************************************************/ -/* multi_bucket_array.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef MULTI_BUCKET_ARRAY_H -#define MULTI_BUCKET_ARRAY_H - - -template<class T> -class MultiBucketArray { - - - -}; - - - -#endif // MULTI_BUCKET_ARRAY_H diff --git a/core/object.cpp b/core/object.cpp index 34d6d8487a..99d4a1f46a 100644 --- a/core/object.cpp +++ b/core/object.cpp @@ -1320,14 +1320,16 @@ Array Object::_get_signal_connection_list(const String& p_signal) const{ for (List<Connection>::Element *E=conns.front();E;E=E->next()) { Connection &c=E->get(); - Dictionary rc; - rc["signal"]=c.signal; - rc["method"]=c.method; - rc["source"]=c.source; - rc["target"]=c.target; - rc["binds"]=c.binds; - rc["flags"]=c.flags; - ret.push_back(rc); + if (c.signal == p_signal){ + Dictionary rc; + rc["signal"]=c.signal; + rc["method"]=c.method; + rc["source"]=c.source; + rc["target"]=c.target; + rc["binds"]=c.binds; + rc["flags"]=c.flags; + ret.push_back(rc); + } } return ret; diff --git a/core/object.h b/core/object.h index a27e8c7dd8..d7b0f09df9 100644 --- a/core/object.h +++ b/core/object.h @@ -87,6 +87,8 @@ enum PropertyUsageFlags { PROPERTY_USAGE_NO_INSTANCE_STATE=2048, PROPERTY_USAGE_RESTART_IF_CHANGED=4096, PROPERTY_USAGE_SCRIPT_VARIABLE=8192, + PROPERTY_USAGE_STORE_IF_NULL=16384, + PROPERTY_USAGE_ANIMATE_AS_TRIGGER=32768, PROPERTY_USAGE_DEFAULT=PROPERTY_USAGE_STORAGE|PROPERTY_USAGE_EDITOR|PROPERTY_USAGE_NETWORK, PROPERTY_USAGE_DEFAULT_INTL=PROPERTY_USAGE_STORAGE|PROPERTY_USAGE_EDITOR|PROPERTY_USAGE_NETWORK|PROPERTY_USAGE_INTERNATIONALIZED, diff --git a/core/os/dir_access.cpp b/core/os/dir_access.cpp index 9a7135913a..c2402183fd 100644 --- a/core/os/dir_access.cpp +++ b/core/os/dir_access.cpp @@ -143,118 +143,52 @@ Error DirAccess::make_dir_recursive(String p_dir) { }; String full_dir; - Globals* g = Globals::get_singleton(); - if (!p_dir.is_abs_path()) { - //append current + if (p_dir.is_rel_path()) { + //append current + full_dir=get_current_dir().plus_file(p_dir); - String cur = normalize_path(g->globalize_path(get_current_dir())); - if (cur[cur.length()-1] != '/') { - cur = cur + "/"; - }; - - full_dir=(cur+"/"+p_dir).simplify_path(); } else { - //validate and use given - String dir = normalize_path(g->globalize_path(p_dir)); - if (dir.length() < 1) { - return OK; - }; - if (dir[dir.length()-1] != '/') { - dir = dir + "/"; - }; - full_dir=dir; + full_dir=p_dir; } - //int slices = full_dir.get_slice_count("/"); - - int pos = 0; - while (pos < full_dir.length()) { - - int n = full_dir.find("/", pos); - if (n < 0) { - n = full_dir.length(); - }; - pos = n + 1; - - if (pos > 1) { - String to_create = full_dir.substr(0, pos -1); - //print_line("MKDIR: "+to_create); - Error err = make_dir(to_create); - if (err != OK && err != ERR_ALREADY_EXISTS) { - - ERR_FAIL_V(err); - }; - }; - }; - - return OK; -}; - - -String DirAccess::normalize_path(const String &p_path) { - - static const int max_depth = 64; - int pos_stack[max_depth]; - int curr = 0; - - int pos = 0; - String cur_dir; - - do { + full_dir=full_dir.replace("\\","/"); - if (curr >= max_depth) { - - ERR_PRINT("Directory depth too deep."); - return ""; - }; - - int start = pos; - - int next = p_path.find("/", pos); - if (next < 0) { - next = p_path.length() - 1; - }; - - pos = next + 1; + //int slices = full_dir.get_slice_count("/"); - cur_dir = p_path.substr(start, next - start); + String base; - if (cur_dir == "" || cur_dir == ".") { - continue; - }; - if (cur_dir == "..") { + if (full_dir.begins_with("res://")) + base="res://"; + else if (full_dir.begins_with("user://")) + base="user://"; + else if (full_dir.begins_with("/")) + base="/"; + else if (full_dir.find(":/")!=-1) { + base=full_dir.substr(0,full_dir.find(":/")+2); + } else { + ERR_FAIL_V(ERR_INVALID_PARAMETER); + } - if (curr > 0) { // pop a dir - curr -= 2; - }; - continue; - }; + full_dir=full_dir.replace_first(base,"").simplify_path(); - pos_stack[curr++] = start; - pos_stack[curr++] = next; + Vector<String> subdirs=full_dir.split("/"); - } while (pos < p_path.length()); + String curpath=base; + for(int i=0;i<subdirs.size();i++) { - String path; - if (p_path[0] == '/') { - path = "/"; - }; + curpath=curpath.plus_file(subdirs[i]); + Error err = make_dir(curpath); + if (err != OK && err != ERR_ALREADY_EXISTS) { - int i=0; - while (i < curr) { - - int start = pos_stack[i++]; + ERR_FAIL_V(err); + } + } - while ( ((i+1)<curr) && (pos_stack[i] == pos_stack[i+1]) ) { + return OK; +} - ++i; - }; - path = path + p_path.substr(start, (pos_stack[i++] - start) + 1); - }; - return path; -}; String DirAccess::get_next(bool* p_is_dir) { @@ -276,9 +210,9 @@ String DirAccess::fix_path(String p_path) const { String resource_path = Globals::get_singleton()->get_resource_path(); if (resource_path != "") { - return p_path.replace("res:/",resource_path); + return p_path.replace_first("res:/",resource_path); }; - return p_path.replace("res://", ""); + return p_path.replace_first("res://", ""); } } @@ -292,9 +226,9 @@ String DirAccess::fix_path(String p_path) const { String data_dir=OS::get_singleton()->get_data_dir(); if (data_dir != "") { - return p_path.replace("user:/",data_dir); + return p_path.replace_first("user:/",data_dir); }; - return p_path.replace("user://", ""); + return p_path.replace_first("user://", ""); } } break; diff --git a/core/os/dir_access.h b/core/os/dir_access.h index 7a850ddc6d..83288b7c91 100644 --- a/core/os/dir_access.h +++ b/core/os/dir_access.h @@ -72,8 +72,6 @@ protected: public: - static String normalize_path(const String& p_path); - virtual bool list_dir_begin()=0; ///< This starts dir listing virtual String get_next(bool* p_is_dir); // compatibility virtual String get_next()=0; diff --git a/core/os/file_access.cpp b/core/os/file_access.cpp index 1f23e8f33d..2f1693c044 100644 --- a/core/os/file_access.cpp +++ b/core/os/file_access.cpp @@ -31,6 +31,7 @@ #include "os/os.h" #include "core/io/marshalls.h" #include "io/md5.h" +#include "io/sha256.h" #include "core/io/file_access_pack.h" FileAccess::CreateFunc FileAccess::create_func[ACCESS_MAX]={0,0}; @@ -517,6 +518,38 @@ String FileAccess::get_md5(const String& p_file) { } +String FileAccess::get_sha256(const String& p_file) { + + FileAccess *f=FileAccess::open(p_file,READ); + if (!f) + return String(); + + sha256_context sha256; + sha256_init(&sha256); + + unsigned char step[32768]; + + while(true) { + + int br = f->get_buffer(step,32768); + if (br>0) { + + sha256_hash(&sha256,step,br); + } + if (br < 4096) + break; + + } + + unsigned char hash[32]; + + sha256_done(&sha256, hash); + + memdelete(f); + return String::hex_encode_buffer(hash, 32); + +} + FileAccess::FileAccess() { endian_swap=false; diff --git a/core/os/file_access.h b/core/os/file_access.h index 8d5823663e..5178c469bc 100644 --- a/core/os/file_access.h +++ b/core/os/file_access.h @@ -153,6 +153,7 @@ public: static bool is_backup_save_enabled() { return backup_save; }; static String get_md5(const String& p_file); + static String get_sha256(const String& p_file); static Vector<uint8_t> get_file_as_array(const String& p_path); diff --git a/core/os/input.cpp b/core/os/input.cpp index 005a248aac..dacddc0928 100644 --- a/core/os/input.cpp +++ b/core/os/input.cpp @@ -61,7 +61,7 @@ void Input::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_joy_guid","device"),&Input::get_joy_guid); ObjectTypeDB::bind_method(_MD("get_joy_vibration_strength", "device"), &Input::get_joy_vibration_strength); ObjectTypeDB::bind_method(_MD("get_joy_vibration_duration", "device"), &Input::get_joy_vibration_duration); - ObjectTypeDB::bind_method(_MD("start_joy_vibration", "device", "weak_magnitude", "strong_magnitude", "duration"), &Input::start_joy_vibration); + ObjectTypeDB::bind_method(_MD("start_joy_vibration", "device", "weak_magnitude", "strong_magnitude", "duration"), &Input::start_joy_vibration, DEFVAL(0)); ObjectTypeDB::bind_method(_MD("stop_joy_vibration", "device"), &Input::stop_joy_vibration); ObjectTypeDB::bind_method(_MD("get_accelerometer"),&Input::get_accelerometer); ObjectTypeDB::bind_method(_MD("get_magnetometer"),&Input::get_magnetometer); diff --git a/core/os/input.h b/core/os/input.h index 6364d597b0..fa2cef5467 100644 --- a/core/os/input.h +++ b/core/os/input.h @@ -70,7 +70,7 @@ public: virtual Vector2 get_joy_vibration_strength(int p_device)=0; virtual float get_joy_vibration_duration(int p_device)=0; virtual uint64_t get_joy_vibration_timestamp(int p_device)=0; - virtual void start_joy_vibration(int p_device, float p_weak_magnitude, float p_strong_magnitude, float p_duration)=0; + virtual void start_joy_vibration(int p_device, float p_weak_magnitude, float p_strong_magnitude, float p_duration=0)=0; virtual void stop_joy_vibration(int p_device)=0; virtual Point2 get_mouse_pos() const=0; diff --git a/core/pair.cpp b/core/pair.cpp deleted file mode 100644 index 14bb2d7775..0000000000 --- a/core/pair.cpp +++ /dev/null @@ -1,29 +0,0 @@ -/*************************************************************************/ -/* pair.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "pair.h" diff --git a/core/print_string.cpp b/core/print_string.cpp index 6e57822e94..b6154f1cf6 100644 --- a/core/print_string.cpp +++ b/core/print_string.cpp @@ -44,18 +44,15 @@ void add_print_handler(PrintHandlerList *p_handler) { void remove_print_handler(PrintHandlerList *p_handler) { - OS::get_singleton()->print("pre-removing print handler...\n"); _global_lock(); PrintHandlerList *prev = NULL; PrintHandlerList *l = print_handler_list; - OS::get_singleton()->print("removing print handler...\n"); while(l) { if (l==p_handler) { - OS::get_singleton()->print("found\n"); if (prev) prev->next=l->next; else diff --git a/core/reference.cpp b/core/reference.cpp index 90bafd0a9c..34f36a5735 100644 --- a/core/reference.cpp +++ b/core/reference.cpp @@ -27,7 +27,7 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ #include "reference.h" - +#include "script_language.h" bool Reference::init_ref() { @@ -66,11 +66,21 @@ int Reference::reference_get_count() const { void Reference::reference(){ refcount.ref(); + if (get_script_instance()) { + get_script_instance()->refcount_incremented(); + } } bool Reference::unreference(){ - return refcount.unref(); + bool die = refcount.unref(); + + if (get_script_instance()) { + die = die && get_script_instance()->refcount_decremented(); + } + + return die; + } Reference::Reference() { diff --git a/core/reference.h b/core/reference.h index 8bfbf19ab6..60a256dc99 100644 --- a/core/reference.h +++ b/core/reference.h @@ -329,6 +329,62 @@ public: WeakRef(); }; +#ifdef PTRCALL_ENABLED + +template<class T> +struct PtrToArg< Ref<T> > { + + _FORCE_INLINE_ static Ref<T> convert(const void* p_ptr) { + + return Ref<T>(reinterpret_cast<const T*>(p_ptr)); + } + + _FORCE_INLINE_ static void encode(Ref<T> p_val,const void* p_ptr) { + + *((T**)p_ptr)=p_val.ptr(); + } + +}; + + +template<class T> +struct PtrToArg< const Ref<T>& > { + + _FORCE_INLINE_ static Ref<T> convert(const void* p_ptr) { + + return Ref<T>(reinterpret_cast<const T*>(p_ptr)); + } + +}; +//this is for RefPtr + +template<> +struct PtrToArg< RefPtr > { + + _FORCE_INLINE_ static RefPtr convert(const void* p_ptr) { + + return Ref<Reference>(reinterpret_cast<const Reference*>(p_ptr)).get_ref_ptr(); + } + + _FORCE_INLINE_ static void encode(RefPtr p_val,const void* p_ptr) { + + Ref<Reference> r = p_val; + *((Reference**)p_ptr)=r.ptr(); + } + +}; + +template<> +struct PtrToArg< const RefPtr& > { + + _FORCE_INLINE_ static RefPtr convert(const void* p_ptr) { + + return Ref<Reference>(reinterpret_cast<const Reference*>(p_ptr)).get_ref_ptr(); + } + +}; + +#endif #endif // REFERENCE_H diff --git a/core/res_ptr.cpp b/core/res_ptr.cpp deleted file mode 100644 index 2fada627e7..0000000000 --- a/core/res_ptr.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/*************************************************************************/ -/* res_ptr.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#if 0 -#include "ref_ptr.h" -#include "resource.h" -#include "stdio.h" - -void RefPtr::operator=(const RefPtr& p_other) { - - Ref<Resource> *ref = reinterpret_cast<Ref<Resource>*>( &data[0] ); - Ref<Resource> *ref_other = reinterpret_cast<Ref<Resource>*>( const_cast<char*>(&p_other.data[0]) ); - - *ref = *ref_other; -} - -bool RefPtr::operator==(const RefPtr& p_other) const { - - Ref<Resource> *ref = reinterpret_cast<Ref<Resource>*>( &data[0] ); - Ref<Resource> *ref_other = reinterpret_cast<Ref<Resource>*>( const_cast<char*>(&p_other.data[0]) ); - - return *ref == *ref_other; -} - -RefPtr::RefPtr(const RefPtr& p_other) { - - memnew_placement(&data[0],Ref<Resource>); - - Ref<Resource> *ref = reinterpret_cast<Ref<Resource>*>( &data[0] ); - Ref<Resource> *ref_other = reinterpret_cast<Ref<Resource>*>( const_cast<char*>(&p_other.data[0]) ); - - *ref = *ref_other; -} - -bool RefPtr::is_null() const { - - Ref<Resource> *ref = reinterpret_cast<Ref<Resource>*>( &data[0] ); - return ref->is_null(); - - -} - -RID RefPtr::get_rid() const { - - Ref<Resource> *ref = reinterpret_cast<Ref<Resource>*>( &data[0] ); - if (ref->is_null()) - return RID(); - return (*ref)->get_rid(); -} - -RefPtr::RefPtr() { - - ERR_FAIL_COND(sizeof(Ref<Resource>)>DATASIZE); - memnew_placement(&data[0],Ref<Resource>); -} - - -RefPtr::~RefPtr() { - - Ref<Resource> *ref = reinterpret_cast<Ref<Resource>*>( &data[0] ); - ref->~Ref<Resource>(); -} - - -#endif diff --git a/core/res_ptr.h b/core/res_ptr.h deleted file mode 100644 index 54b74bb113..0000000000 --- a/core/res_ptr.h +++ /dev/null @@ -1,63 +0,0 @@ -/*************************************************************************/ -/* res_ptr.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef RES_PTR_H -#define RES_PTR_H - -#if 0 -/** - @author Juan Linietsky <reduzio@gmail.com> - * This class exists to workaround a limitation in C++ but keep the design OK. - * It's basically an opaque container of a Resource reference, so Variant can use it. -*/ - -#include "rid.h" - -class ResBase; - -class RefPtr { -friend class ResBase; - enum { - - DATASIZE=sizeof(void*)*4 - }; - - mutable char data[DATASIZE]; // too much probably, virtual class + pointer -public: - - bool is_null() const; - void operator=(const RefPtr& p_other); - bool operator==(const RefPtr& p_other) const; - RID get_rid() const; - RefPtr(const RefPtr& p_other); - RefPtr(); - ~RefPtr(); - -}; -#endif -#endif diff --git a/core/script_debugger_debugger.cpp b/core/script_debugger_debugger.cpp deleted file mode 100644 index 71ad33f5ed..0000000000 --- a/core/script_debugger_debugger.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/*************************************************************************/ -/* script_debugger_debugger.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ diff --git a/core/script_language.h b/core/script_language.h index 478ebd88ed..bde4d619ab 100644 --- a/core/script_language.h +++ b/core/script_language.h @@ -129,6 +129,13 @@ public: virtual void notification(int p_notification)=0; + //this is used by script languages that keep a reference counter of their own + //you can make make Ref<> not die when it reaches zero, so deleting the reference + //depends entirely from the script + + virtual void refcount_incremented() {} + virtual bool refcount_decremented() { return true; } //return true if it can die + virtual Ref<Script> get_script() const=0; virtual bool is_placeholder() const { return false; } diff --git a/core/ucaps.h b/core/ucaps.h index 9c07828006..cf42e96b4f 100644 --- a/core/ucaps.h +++ b/core/ucaps.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* ucaps.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef UCAPS_H #define UCAPS_H diff --git a/core/ustring.cpp b/core/ustring.cpp index 309b9e08fa..ea9a9d903e 100644 --- a/core/ustring.cpp +++ b/core/ustring.cpp @@ -32,6 +32,7 @@ #include "print_string.h" #include "math_funcs.h" #include "io/md5.h" +#include "io/sha256.h" #include "ucaps.h" #include "color.h" #include "variant.h" @@ -849,21 +850,23 @@ const CharType * String::c_str() const { } String String::md5(const uint8_t *p_md5) { + return String::hex_encode_buffer(p_md5, 16); +} - String ret; +String String::hex_encode_buffer(const uint8_t *p_buffer, int p_len) { + static const char hex[16]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; - for(int i=0;i<16;i++) { + String ret; + char v[2]={0,0}; - static const char hex[16]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; - char v[2]={0,0}; - v[0]=hex[p_md5[i]>>4]; + for(int i=0;i<p_len;i++) { + v[0]=hex[p_buffer[i]>>4]; ret+=v; - v[0]=hex[p_md5[i]&0xF]; + v[0]=hex[p_buffer[i]&0xF]; ret+=v; } return ret; - } String String::chr(CharType p_char) { @@ -2389,6 +2392,16 @@ String String::md5_text() const { return String::md5(ctx.digest); } +String String::sha256_text() const { + CharString cs=utf8(); + unsigned char hash[32]; + sha256_context ctx; + sha256_init(&ctx); + sha256_hash(&ctx,(unsigned char*)cs.ptr(),cs.length()); + sha256_done(&ctx, hash); + return String::hex_encode_buffer(hash, 32); +} + Vector<uint8_t> String::md5_buffer() const { CharString cs=utf8(); @@ -2797,6 +2810,50 @@ bool String::_base_is_subsequence_of(const String& p_string, bool case_insensiti return false; } +Vector<String> String::bigrams() const { + int n_pairs = length() - 1; + Vector<String> b; + if(n_pairs <= 0) { + return b; + } + b.resize(n_pairs); + for(int i = 0; i < n_pairs; i++) { + b[i] = substr(i,2); + } + return b; +} + +// Similarity according to Sorensen-Dice coefficient +float String::similarity(const String& p_string) const { + if(operator==(p_string)) { + // Equal strings are totally similar + return 1.0f; + } + if (length() < 2 || p_string.length() < 2) { + // No way to calculate similarity without a single bigram + return 0.0f; + } + + Vector<String> src_bigrams = bigrams(); + Vector<String> tgt_bigrams = p_string.bigrams(); + + int src_size = src_bigrams.size(); + int tgt_size = tgt_bigrams.size(); + + float sum = src_size + tgt_size; + float inter = 0; + for (int i = 0; i < src_size; i++) { + for (int j = 0; j < tgt_size; j++) { + if (src_bigrams[i] == tgt_bigrams[j]) { + inter++; + break; + } + } + } + + return (2.0f * inter)/sum; +} + static bool _wildcard_match(const CharType* p_pattern, const CharType* p_string,bool p_case_sensitive) { switch (*p_pattern) { case '\0': diff --git a/core/ustring.h b/core/ustring.h index fddb77b040..692cb4e37d 100644 --- a/core/ustring.h +++ b/core/ustring.h @@ -46,11 +46,9 @@ public: operator const char*() {return get_data();}; }; -#ifndef CHARTYPE_16BITS + typedef wchar_t CharType; -#else -typedef wchar_t uint16_t; -#endif + struct StrRange { @@ -125,6 +123,8 @@ public: bool ends_with(const String& p_string) const; bool is_subsequence_of(const String& p_string) const; bool is_subsequence_ofi(const String& p_string) const; + Vector<String> bigrams() const; + float similarity(const String& p_string) const; String replace_first(String p_key,String p_with) const; String replace(String p_key,String p_with) const; String replacen(String p_key,String p_with) const; @@ -140,6 +140,7 @@ public: static String num_int64(int64_t p_num,int base=10,bool capitalize_hex=false); static String chr(CharType p_char); static String md5(const uint8_t *p_md5); + static String hex_encode_buffer(const uint8_t *p_buffer, int p_len); bool is_numeric() const; double to_double() const; float to_float() const; @@ -193,6 +194,7 @@ public: uint32_t hash() const; /* hash the string */ uint64_t hash64() const; /* hash the string */ String md5_text() const; + String sha256_text() const; Vector<uint8_t> md5_buffer() const; inline bool empty() const { return length() == 0; } diff --git a/core/variant.cpp b/core/variant.cpp index 472d6cf568..81d10f379a 100644 --- a/core/variant.cpp +++ b/core/variant.cpp @@ -1445,12 +1445,12 @@ Variant::operator unsigned char() const { return 0; } -#ifndef CHARTYPE_16BITS + Variant::operator CharType() const { return operator unsigned int(); } -#endif + Variant::operator float() const { diff --git a/core/variant.h b/core/variant.h index b95223ecfb..87bf20f8ee 100644 --- a/core/variant.h +++ b/core/variant.h @@ -151,11 +151,7 @@ private: InputEvent *_input_event; Image *_image; void *_ptr; //generic pointer -#ifdef USE_QUAD_VECTORS - uint8_t _mem[sizeof(ObjData) > (sizeof(real_t)*5) ? sizeof(ObjData) : (sizeof(real_t)*5)]; // plane uses an extra real -#else uint8_t _mem[sizeof(ObjData) > (sizeof(real_t)*4) ? sizeof(ObjData) : (sizeof(real_t)*4)]; -#endif } _data; @@ -202,9 +198,8 @@ public: operator unsigned long() const; #endif -#ifndef CHARTYPE_16BITS + operator CharType() const; -#endif operator float() const; operator double() const; operator String() const; @@ -390,6 +385,7 @@ public: Type expected; }; + void call_ptr(const StringName& p_method,const Variant** p_args,int p_argcount,Variant* r_ret,CallError &r_error); Variant call(const StringName& p_method,const Variant** p_args,int p_argcount,CallError &r_error); Variant call(const StringName& p_method,const Variant& p_arg1=Variant(),const Variant& p_arg2=Variant(),const Variant& p_arg3=Variant(),const Variant& p_arg4=Variant(),const Variant& p_arg5=Variant()); diff --git a/core/variant_call.cpp b/core/variant_call.cpp index c1a58dff75..34e5164b24 100644 --- a/core/variant_call.cpp +++ b/core/variant_call.cpp @@ -249,6 +249,8 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var VCALL_LOCALMEM1R(String,ends_with); VCALL_LOCALMEM1R(String,is_subsequence_of); VCALL_LOCALMEM1R(String,is_subsequence_ofi); + VCALL_LOCALMEM0R(String,bigrams); + VCALL_LOCALMEM1R(String,similarity); VCALL_LOCALMEM2R(String,replace); VCALL_LOCALMEM2R(String,replacen); VCALL_LOCALMEM2R(String,insert); @@ -267,6 +269,7 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var VCALL_LOCALMEM2(String,erase); VCALL_LOCALMEM0R(String,hash); VCALL_LOCALMEM0R(String,md5_text); + VCALL_LOCALMEM0R(String,sha256_text); VCALL_LOCALMEM0R(String,md5_buffer); VCALL_LOCALMEM0R(String,empty); VCALL_LOCALMEM0R(String,is_abs_path); @@ -508,6 +511,8 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var VCALL_LOCALMEM1R(ByteArray,get); VCALL_LOCALMEM1(ByteArray,push_back); VCALL_LOCALMEM1(ByteArray,resize); + VCALL_LOCALMEM2R(ByteArray,insert); + VCALL_LOCALMEM1(ByteArray,remove); VCALL_LOCALMEM1(ByteArray,append); VCALL_LOCALMEM1(ByteArray,append_array); @@ -516,6 +521,8 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var VCALL_LOCALMEM1R(IntArray,get); VCALL_LOCALMEM1(IntArray,push_back); VCALL_LOCALMEM1(IntArray,resize); + VCALL_LOCALMEM2R(IntArray,insert); + VCALL_LOCALMEM1(IntArray,remove); VCALL_LOCALMEM1(IntArray,append); VCALL_LOCALMEM1(IntArray,append_array); @@ -524,6 +531,8 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var VCALL_LOCALMEM1R(RealArray,get); VCALL_LOCALMEM1(RealArray,push_back); VCALL_LOCALMEM1(RealArray,resize); + VCALL_LOCALMEM2R(RealArray,insert); + VCALL_LOCALMEM1(RealArray,remove); VCALL_LOCALMEM1(RealArray,append); VCALL_LOCALMEM1(RealArray,append_array); @@ -532,6 +541,8 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var VCALL_LOCALMEM1R(StringArray,get); VCALL_LOCALMEM1(StringArray,push_back); VCALL_LOCALMEM1(StringArray,resize); + VCALL_LOCALMEM2R(StringArray,insert); + VCALL_LOCALMEM1(StringArray,remove); VCALL_LOCALMEM1(StringArray,append); VCALL_LOCALMEM1(StringArray,append_array); @@ -540,6 +551,8 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var VCALL_LOCALMEM1R(Vector2Array,get); VCALL_LOCALMEM1(Vector2Array,push_back); VCALL_LOCALMEM1(Vector2Array,resize); + VCALL_LOCALMEM2R(Vector2Array,insert); + VCALL_LOCALMEM1(Vector2Array,remove); VCALL_LOCALMEM1(Vector2Array,append); VCALL_LOCALMEM1(Vector2Array,append_array); @@ -548,6 +561,8 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var VCALL_LOCALMEM1R(Vector3Array,get); VCALL_LOCALMEM1(Vector3Array,push_back); VCALL_LOCALMEM1(Vector3Array,resize); + VCALL_LOCALMEM2R(Vector3Array,insert); + VCALL_LOCALMEM1(Vector3Array,remove); VCALL_LOCALMEM1(Vector3Array,append); VCALL_LOCALMEM1(Vector3Array,append_array); @@ -556,6 +571,8 @@ static void _call_##m_type##_##m_method(Variant& r_ret,Variant& p_self,const Var VCALL_LOCALMEM1R(ColorArray,get); VCALL_LOCALMEM1(ColorArray,push_back); VCALL_LOCALMEM1(ColorArray,resize); + VCALL_LOCALMEM2R(ColorArray,insert); + VCALL_LOCALMEM1(ColorArray,remove); VCALL_LOCALMEM1(ColorArray,append); VCALL_LOCALMEM1(ColorArray,append_array); @@ -936,26 +953,32 @@ _VariantCall::ConstantData* _VariantCall::constant_data=NULL; Variant Variant::call(const StringName& p_method,const Variant** p_args,int p_argcount,CallError &r_error) { Variant ret; + call_ptr(p_method,p_args,p_argcount,&ret,r_error); + return ret; +} + +void Variant::call_ptr(const StringName& p_method,const Variant** p_args,int p_argcount,Variant* r_ret,CallError &r_error) { + Variant ret; if (type==Variant::OBJECT) { //call object Object *obj = _get_obj().obj; if (!obj) { r_error.error=CallError::CALL_ERROR_INSTANCE_IS_NULL; - return ret; + return; } #ifdef DEBUG_ENABLED if (ScriptDebugger::get_singleton() && _get_obj().ref.is_null()) { //only if debugging! if (!ObjectDB::instance_validate(obj)) { r_error.error=CallError::CALL_ERROR_INSTANCE_IS_NULL; - return ret; + return; } } #endif - return _get_obj().obj->call(p_method,p_args,p_argcount,r_error); + ret=_get_obj().obj->call(p_method,p_args,p_argcount,r_error); //else if (type==Variant::METHOD) { @@ -967,14 +990,15 @@ Variant Variant::call(const StringName& p_method,const Variant** p_args,int p_ar #ifdef DEBUG_ENABLED if (!E) { r_error.error=Variant::CallError::CALL_ERROR_INVALID_METHOD; - return Variant(); + return; } #endif _VariantCall::FuncData& funcdata = E->get(); funcdata.call(ret,*this,p_args,p_argcount,r_error); } - return ret; + if (r_error.error==Variant::CallError::CALL_OK && r_ret) + *r_ret=ret; } #define VCALL(m_type,m_method) _VariantCall::_call_##m_type##_##m_method @@ -1273,6 +1297,8 @@ _VariantCall::addfunc(Variant::m_vtype,Variant::m_ret,_SCS(#m_method),VCALL(m_cl ADDFUNC1(STRING,BOOL,String,ends_with,STRING,"text",varray()); ADDFUNC1(STRING,BOOL,String,is_subsequence_of,STRING,"text",varray()); ADDFUNC1(STRING,BOOL,String,is_subsequence_ofi,STRING,"text",varray()); + ADDFUNC0(STRING,STRING_ARRAY,String,bigrams,varray()); + ADDFUNC1(STRING,REAL,String,similarity,STRING,"text",varray()); ADDFUNC2(STRING,STRING,String,replace,STRING,"what",STRING,"forwhat",varray()); ADDFUNC2(STRING,STRING,String,replacen,STRING,"what",STRING,"forwhat",varray()); @@ -1294,6 +1320,7 @@ _VariantCall::addfunc(Variant::m_vtype,Variant::m_ret,_SCS(#m_method),VCALL(m_cl ADDFUNC2(STRING,NIL,String,erase,INT,"pos",INT,"chars", varray()); ADDFUNC0(STRING,INT,String,hash,varray()); ADDFUNC0(STRING,STRING,String,md5_text,varray()); + ADDFUNC0(STRING,STRING,String,sha256_text,varray()); ADDFUNC0(STRING,RAW_ARRAY,String,md5_buffer,varray()); ADDFUNC0(STRING,BOOL,String,empty,varray()); ADDFUNC0(STRING,BOOL,String,is_abs_path,varray()); @@ -1471,8 +1498,11 @@ _VariantCall::addfunc(Variant::m_vtype,Variant::m_ret,_SCS(#m_method),VCALL(m_cl ADDFUNC0(RAW_ARRAY,INT,ByteArray,size,varray()); ADDFUNC2(RAW_ARRAY,NIL,ByteArray,set,INT,"idx",INT,"byte",varray()); - //ADDFUNC1(RAW_ARRAY,INT,ByteArray,get,INT,"idx",varray()); ADDFUNC1(RAW_ARRAY,NIL,ByteArray,push_back,INT,"byte",varray()); + ADDFUNC1(RAW_ARRAY,NIL,ByteArray,append,INT,"byte",varray()); + ADDFUNC1(RAW_ARRAY,NIL,ByteArray,append_array,RAW_ARRAY,"array",varray()); + ADDFUNC1(RAW_ARRAY,NIL,ByteArray,remove,INT,"idx",varray()); + ADDFUNC2(RAW_ARRAY,INT,ByteArray,insert,INT,"idx",INT,"byte",varray()); ADDFUNC1(RAW_ARRAY,NIL,ByteArray,resize,INT,"idx",varray()); ADDFUNC0(RAW_ARRAY,STRING,ByteArray,get_string_from_ascii,varray()); @@ -1481,38 +1511,56 @@ _VariantCall::addfunc(Variant::m_vtype,Variant::m_ret,_SCS(#m_method),VCALL(m_cl ADDFUNC0(INT_ARRAY,INT,IntArray,size,varray()); ADDFUNC2(INT_ARRAY,NIL,IntArray,set,INT,"idx",INT,"integer",varray()); - //ADDFUNC1(INT_ARRAY,INT,IntArray,get,INT,"idx",varray()); ADDFUNC1(INT_ARRAY,NIL,IntArray,push_back,INT,"integer",varray()); + ADDFUNC1(INT_ARRAY,NIL,IntArray,append,INT,"integer",varray()); + ADDFUNC1(INT_ARRAY,NIL,IntArray,append_array,INT_ARRAY,"array",varray()); + ADDFUNC1(INT_ARRAY,NIL,IntArray,remove,INT,"idx",varray()); + ADDFUNC2(INT_ARRAY,INT,IntArray,insert,INT,"idx",INT,"integer",varray()); ADDFUNC1(INT_ARRAY,NIL,IntArray,resize,INT,"idx",varray()); ADDFUNC0(REAL_ARRAY,INT,RealArray,size,varray()); ADDFUNC2(REAL_ARRAY,NIL,RealArray,set,INT,"idx",REAL,"value",varray()); - //ADDFUNC1(REAL_ARRAY,REAL,RealArray,get,INT,"idx",varray()); ADDFUNC1(REAL_ARRAY,NIL,RealArray,push_back,REAL,"value",varray()); + ADDFUNC1(REAL_ARRAY,NIL,RealArray,append,REAL,"value",varray()); + ADDFUNC1(REAL_ARRAY,NIL,RealArray,append_array,REAL_ARRAY,"array",varray()); + ADDFUNC1(REAL_ARRAY,NIL,RealArray,remove,INT,"idx",varray()); + ADDFUNC2(REAL_ARRAY,INT,RealArray,insert,INT,"idx",REAL,"value",varray()); ADDFUNC1(REAL_ARRAY,NIL,RealArray,resize,INT,"idx",varray()); ADDFUNC0(STRING_ARRAY,INT,StringArray,size,varray()); ADDFUNC2(STRING_ARRAY,NIL,StringArray,set,INT,"idx",STRING,"string",varray()); - //ADDFUNC1(STRING_ARRAY,STRING,StringArray,get,INT,"idx",varray()); ADDFUNC1(STRING_ARRAY,NIL,StringArray,push_back,STRING,"string",varray()); + ADDFUNC1(STRING_ARRAY,NIL,StringArray,append,STRING,"string",varray()); + ADDFUNC1(STRING_ARRAY,NIL,StringArray,append_array,STRING_ARRAY,"array",varray()); + ADDFUNC1(STRING_ARRAY,NIL,StringArray,remove,INT,"idx",varray()); + ADDFUNC2(STRING_ARRAY,INT,StringArray,insert,INT,"idx",STRING,"string",varray()); ADDFUNC1(STRING_ARRAY,NIL,StringArray,resize,INT,"idx",varray()); ADDFUNC0(VECTOR2_ARRAY,INT,Vector2Array,size,varray()); ADDFUNC2(VECTOR2_ARRAY,NIL,Vector2Array,set,INT,"idx",VECTOR2,"vector2",varray()); - //ADDFUNC1(VECTOR2_ARRAY,VECTOR2,Vector2Array,get,INT,"idx",varray()); ADDFUNC1(VECTOR2_ARRAY,NIL,Vector2Array,push_back,VECTOR2,"vector2",varray()); + ADDFUNC1(VECTOR2_ARRAY,NIL,Vector2Array,append,VECTOR2,"vector2",varray()); + ADDFUNC1(VECTOR2_ARRAY,NIL,Vector2Array,append_array,VECTOR2_ARRAY,"array",varray()); + ADDFUNC1(VECTOR2_ARRAY,NIL,Vector2Array,remove,INT,"idx",varray()); + ADDFUNC2(VECTOR2_ARRAY,INT,Vector2Array,insert,INT,"idx",VECTOR2,"vector2",varray()); ADDFUNC1(VECTOR2_ARRAY,NIL,Vector2Array,resize,INT,"idx",varray()); ADDFUNC0(VECTOR3_ARRAY,INT,Vector3Array,size,varray()); ADDFUNC2(VECTOR3_ARRAY,NIL,Vector3Array,set,INT,"idx",VECTOR3,"vector3",varray()); - //ADDFUNC1(VECTOR3_ARRAY,VECTOR3,Vector3Array,get,INT,"idx",varray()); ADDFUNC1(VECTOR3_ARRAY,NIL,Vector3Array,push_back,VECTOR3,"vector3",varray()); + ADDFUNC1(VECTOR3_ARRAY,NIL,Vector3Array,append,VECTOR3,"vector3",varray()); + ADDFUNC1(VECTOR3_ARRAY,NIL,Vector3Array,append_array,VECTOR3_ARRAY,"array",varray()); + ADDFUNC1(VECTOR3_ARRAY,NIL,Vector3Array,remove,INT,"idx",varray()); + ADDFUNC2(VECTOR3_ARRAY,INT,Vector3Array,insert,INT,"idx",VECTOR3,"vector3",varray()); ADDFUNC1(VECTOR3_ARRAY,NIL,Vector3Array,resize,INT,"idx",varray()); ADDFUNC0(COLOR_ARRAY,INT,ColorArray,size,varray()); ADDFUNC2(COLOR_ARRAY,NIL,ColorArray,set,INT,"idx",COLOR,"color",varray()); - //ADDFUNC1(COLOR_ARRAY,COLOR,ColorArray,get,INT,"idx",varray()); ADDFUNC1(COLOR_ARRAY,NIL,ColorArray,push_back,COLOR,"color",varray()); + ADDFUNC1(COLOR_ARRAY,NIL,ColorArray,append,COLOR,"color",varray()); + ADDFUNC1(COLOR_ARRAY,NIL,ColorArray,append_array,COLOR_ARRAY,"array",varray()); + ADDFUNC1(COLOR_ARRAY,NIL,ColorArray,remove,INT,"idx",varray()); + ADDFUNC2(COLOR_ARRAY,INT,ColorArray,insert,INT,"idx",COLOR,"color",varray()); ADDFUNC1(COLOR_ARRAY,NIL,ColorArray,resize,INT,"idx",varray()); //pointerbased diff --git a/core/variant_call_bind.h b/core/variant_call_bind.h deleted file mode 100644 index 54954540b0..0000000000 --- a/core/variant_call_bind.h +++ /dev/null @@ -1,40 +0,0 @@ -/*************************************************************************/ -/* variant_call_bind.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef VARIANT_CALL_BIND_H -#define VARIANT_CALL_BIND_H - - -#include "variant.h" - - - - - - -#endif // VARIANT_CALL_BIND_H diff --git a/core/variant_construct_string.cpp b/core/variant_construct_string.cpp index 0308fd3180..6395501603 100644 --- a/core/variant_construct_string.cpp +++ b/core/variant_construct_string.cpp @@ -1,4 +1,31 @@ - +/*************************************************************************/ +/* variant_construct_string.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "variant.h" class VariantConstruct { diff --git a/core/variant_parser.cpp b/core/variant_parser.cpp index 875a144fef..dce873a306 100644 --- a/core/variant_parser.cpp +++ b/core/variant_parser.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* variant_parser.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "variant_parser.h" #include "io/resource_loader.h" #include "os/keyboard.h" @@ -1747,7 +1775,20 @@ Error VariantParser::parse_tag_assign_eof(Stream *p_stream, int &line, String &r } if (c>32) { - if (c!='=') { + if (c=='"') { //quoted + p_stream->saved='"'; + Token tk; + Error err = get_token(p_stream,tk,line,r_err_str); + if (err) + return err; + if (tk.type!=TK_STRING) { + r_err_str="Error reading quoted string"; + return err; + } + + what=tk.value; + + } else if (c!='=') { what+=String::chr(c); } else { r_assign=what; diff --git a/core/variant_parser.h b/core/variant_parser.h index 00f6910b29..5857820efa 100644 --- a/core/variant_parser.h +++ b/core/variant_parser.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* variant_parser.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef VARIANT_PARSER_H #define VARIANT_PARSER_H diff --git a/core/vmap.cpp b/core/vmap.cpp deleted file mode 100644 index e94198257a..0000000000 --- a/core/vmap.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/*************************************************************************/ -/* vmap.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "vmap.h" - diff --git a/core/vset.cpp b/core/vset.cpp deleted file mode 100644 index cefafeb073..0000000000 --- a/core/vset.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/*************************************************************************/ -/* vset.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 4db81f487c..808bf20c25 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -8,58 +8,37 @@ This contains the list of built-in gdscript functions. Mostly math functions and other utilities. Everything else is expanded by objects. </description> <methods> - <method name="sin"> - <return type="float"> + <method name="Color8"> + <return type="Color"> </return> - <argument index="0" name="s" type="float"> + <argument index="0" name="r8" type="int"> </argument> - <description> - Standard sine function. - </description> - </method> - <method name="cos"> - <return type="float"> - </return> - <argument index="0" name="s" type="float"> + <argument index="1" name="g8" type="int"> </argument> - <description> - Standard cosine function. - </description> - </method> - <method name="tan"> - <return type="float"> - </return> - <argument index="0" name="s" type="float"> + <argument index="2" name="b8" type="int"> </argument> - <description> - Standard tangent function. - </description> - </method> - <method name="sinh"> - <return type="float"> - </return> - <argument index="0" name="s" type="float"> + <argument index="3" name="a8" type="int"> </argument> <description> - Hyperbolic sine. + Make a color from red, green, blue and alpha. Arguments can range from 0 to 255. </description> </method> - <method name="cosh"> + <method name="abs"> <return type="float"> </return> <argument index="0" name="s" type="float"> </argument> <description> - Hyperbolic cosine. + Remove sign (works for integer and float). </description> </method> - <method name="tanh"> + <method name="acos"> <return type="float"> </return> <argument index="0" name="s" type="float"> </argument> <description> - Hyperbolic tangent. + Arc-cosine. </description> </method> <method name="asin"> @@ -71,13 +50,13 @@ Arc-sine. </description> </method> - <method name="acos"> - <return type="float"> + <method name="assert"> + <return type="Nil"> </return> - <argument index="0" name="s" type="float"> + <argument index="0" name="condition" type="bool"> </argument> <description> - Arc-cosine. + Assert that the condition is true. If the condition is false, generates an error. </description> </method> <method name="atan"> @@ -100,125 +79,113 @@ Arc-tangent that takes a 2D vector as argument, returns the full -pi to +pi range. </description> </method> - <method name="sqrt"> - <return type="float"> + <method name="bytes2var"> + <return type="Variant"> </return> - <argument index="0" name="s" type="float"> + <argument index="0" name="bytes" type="RawArray"> </argument> <description> - Square root. + Decode a byte array back to a value. </description> </method> - <method name="fmod"> + <method name="ceil"> <return type="float"> </return> - <argument index="0" name="x" type="float"> - </argument> - <argument index="1" name="y" type="float"> + <argument index="0" name="s" type="float"> </argument> <description> - Module (remainder of x/y). + Ceiling (rounds up to nearest integer). </description> </method> - <method name="fposmod"> + <method name="clamp"> <return type="float"> </return> - <argument index="0" name="x" type="float"> + <argument index="0" name="val" type="float"> </argument> - <argument index="1" name="y" type="float"> + <argument index="1" name="min" type="float"> </argument> - <description> - Module (remainder of x/y) that wraps equally in positive and negative. - </description> - </method> - <method name="floor"> - <return type="float"> - </return> - <argument index="0" name="s" type="float"> + <argument index="2" name="max" type="float"> </argument> <description> - Floor (rounds down to nearest integer). + Clamp both values to a range. </description> </method> - <method name="ceil"> - <return type="float"> + <method name="convert"> + <return type="Object"> </return> - <argument index="0" name="s" type="float"> + <argument index="0" name="what" type="Variant"> </argument> - <description> - Ceiling (rounds up to nearest integer). - </description> - </method> - <method name="round"> - <return type="float"> - </return> - <argument index="0" name="s" type="float"> + <argument index="1" name="type" type="int"> </argument> <description> - Round to nearest integer. + Convert from a type to another in the best way possible. The "type" parameter uses the enum TYPE_* in [@Global Scope]. </description> </method> - <method name="abs"> + <method name="cos"> <return type="float"> </return> <argument index="0" name="s" type="float"> </argument> <description> - Remove sign (works for integer and float). + Standard cosine function. </description> </method> - <method name="sign"> + <method name="cosh"> <return type="float"> </return> <argument index="0" name="s" type="float"> </argument> <description> - Return sign (-1 or +1). + Hyperbolic cosine. </description> </method> - <method name="pow"> + <method name="db2linear"> <return type="float"> </return> - <argument index="0" name="x" type="float"> - </argument> - <argument index="1" name="y" type="float"> + <argument index="0" name="db" type="float"> </argument> <description> - Power function, x elevate to y. + Convert from decibels to linear energy (audio). </description> </method> - <method name="log"> + <method name="decimals"> <return type="float"> </return> - <argument index="0" name="s" type="float"> + <argument index="0" name="step" type="float"> </argument> <description> - Natural logarithm. + Return the amount of decimals in the floating point value. </description> </method> - <method name="exp"> + <method name="dectime"> <return type="float"> </return> - <argument index="0" name="s" type="float"> + <argument index="0" name="value" type="float"> + </argument> + <argument index="1" name="amount" type="float"> + </argument> + <argument index="2" name="step" type="float"> </argument> <description> - Exponential logarithm. + Decreases time by a specified amount. </description> </method> - <method name="is_nan"> + <method name="deg2rad"> <return type="float"> </return> - <argument index="0" name="s" type="float"> + <argument index="0" name="deg" type="float"> </argument> <description> + Convert from degrees to radians. </description> </method> - <method name="is_inf"> - <return type="float"> + <method name="dict2inst"> + <return type="Object"> </return> - <argument index="0" name="s" type="float"> + <argument index="0" name="dict" type="Dictionary"> </argument> <description> + Convert a previously converted instances to dictionary back into an instance. Useful for deserializing. </description> </method> <method name="ease"> @@ -232,118 +199,111 @@ Easing function, based on exponent. 0 is constant, 1 is linear, 0 to 1 is ease-in, 1+ is ease out. Negative values are in-out/out in. </description> </method> - <method name="decimals"> + <method name="exp"> <return type="float"> </return> - <argument index="0" name="step" type="float"> + <argument index="0" name="s" type="float"> </argument> <description> - Return the amount of decimals in the floating point value. + Exponential logarithm. </description> </method> - <method name="stepify"> + <method name="floor"> <return type="float"> </return> <argument index="0" name="s" type="float"> </argument> - <argument index="1" name="step" type="float"> - </argument> <description> - Snap float value to a given step. + Floor (rounds down to nearest integer). </description> </method> - <method name="lerp"> + <method name="fmod"> <return type="float"> </return> - <argument index="0" name="from" type="float"> - </argument> - <argument index="1" name="to" type="float"> + <argument index="0" name="x" type="float"> </argument> - <argument index="2" name="weight" type="float"> + <argument index="1" name="y" type="float"> </argument> <description> - Linear interpolates between two values by a normalized value. + Module (remainder of x/y). </description> </method> - <method name="dectime"> + <method name="fposmod"> <return type="float"> </return> - <argument index="0" name="value" type="float"> - </argument> - <argument index="1" name="amount" type="float"> + <argument index="0" name="x" type="float"> </argument> - <argument index="2" name="step" type="float"> + <argument index="1" name="y" type="float"> </argument> <description> - Decreases time by a specified amount. + Module (remainder of x/y) that wraps equally in positive and negative. </description> </method> - <method name="randomize"> - <return type="Nil"> + <method name="funcref"> + <return type="FuncRef"> </return> + <argument index="0" name="instance" type="Object"> + </argument> + <argument index="1" name="funcname" type="String"> + </argument> <description> - Reset the seed of the random number generator with a new, different one. + Return a reference to the specified function. </description> </method> - <method name="randi"> + <method name="hash"> <return type="int"> </return> + <argument index="0" name="var:Variant" type="Variant"> + </argument> <description> - Random 32 bits value (integer). To obtain a value from 0 to N, you can use remainder, like (for random from 0 to 19): randi() % 20. - </description> - </method> - <method name="randf"> - <return type="float"> - </return> - <description> - Random value (0 to 1 float). + Hash the variable passed and return an integer. </description> </method> - <method name="rand_range"> - <return type="float"> + <method name="inst2dict"> + <return type="Dictionary"> </return> - <argument index="0" name="from" type="float"> - </argument> - <argument index="1" name="to" type="float"> + <argument index="0" name="inst" type="Object"> </argument> <description> - Random range, any floating point value between 'from' and 'to' + Convert a script class instance to a dictionary (useful for serializing). </description> </method> - <method name="seed"> - <return type="Nil"> + <method name="instance_from_id"> + <return type="Object"> </return> - <argument index="0" name="seed" type="float"> + <argument index="0" name="instance_id" type="int"> </argument> <description> - Set seed for the random number generator. + Get an object by its ID. </description> </method> - <method name="rand_seed"> - <return type="Array"> + <method name="is_inf"> + <return type="float"> </return> - <argument index="0" name="seed" type="float"> + <argument index="0" name="s" type="float"> </argument> <description> - Random from seed, pass a seed and an array with both number and new seed is returned. </description> </method> - <method name="deg2rad"> + <method name="is_nan"> <return type="float"> </return> - <argument index="0" name="deg" type="float"> + <argument index="0" name="s" type="float"> </argument> <description> - Convert from degrees to radians. </description> </method> - <method name="rad2deg"> + <method name="lerp"> <return type="float"> </return> - <argument index="0" name="rad" type="float"> + <argument index="0" name="from" type="float"> + </argument> + <argument index="1" name="to" type="float"> + </argument> + <argument index="2" name="weight" type="float"> </argument> <description> - Convert from radians to degrees. + Linear interpolates between two values by a normalized value. </description> </method> <method name="linear2db"> @@ -355,13 +315,22 @@ Convert from linear energy to decibels (audio). </description> </method> - <method name="db2linear"> + <method name="load"> + <return type="Resource"> + </return> + <argument index="0" name="path" type="String"> + </argument> + <description> + Load a resource from the filesystem, pass a valid path as argument. + </description> + </method> + <method name="log"> <return type="float"> </return> - <argument index="0" name="db" type="float"> + <argument index="0" name="s" type="float"> </argument> <description> - Convert from decibels to linear energy (audio). + Natural logarithm. </description> </method> <method name="max"> @@ -386,19 +355,6 @@ Return the minimum of two values. </description> </method> - <method name="clamp"> - <return type="float"> - </return> - <argument index="0" name="val" type="float"> - </argument> - <argument index="1" name="min" type="float"> - </argument> - <argument index="2" name="max" type="float"> - </argument> - <description> - Clamp both values to a range. - </description> - </method> <method name="nearest_po2"> <return type="int"> </return> @@ -408,58 +364,56 @@ Return the nearest larger power of 2 for an integer. </description> </method> - <method name="weakref"> - <return type="WeakRef"> + <method name="pow"> + <return type="float"> </return> - <argument index="0" name="obj" type="Object"> + <argument index="0" name="x" type="float"> + </argument> + <argument index="1" name="y" type="float"> </argument> <description> - Return a weak reference to an object. + Power function, x elevate to y. </description> </method> - <method name="funcref"> - <return type="FuncRef"> + <method name="preload"> + <return type="Resource"> </return> - <argument index="0" name="instance" type="Object"> - </argument> - <argument index="1" name="funcname" type="String"> + <argument index="0" name="path" type="String"> </argument> <description> - Return a reference to the specified function. + Preload a resource from the filesystem. The resource is loaded during script parsing. </description> </method> - <method name="convert"> - <return type="Object"> + <method name="print"> + <return type="Nil"> </return> <argument index="0" name="what" type="Variant"> </argument> - <argument index="1" name="type" type="int"> + <argument index="1" name="..." type="Variant"> </argument> <description> - Convert from a type to another in the best way possible. The "type" parameter uses the enum TYPE_* in [@Global Scope]. + Print one or more arguments to strings in the best way possible to a console line. </description> </method> - <method name="typeof"> - <return type="int"> + <method name="print_stack"> + <return type="Nil"> </return> - <argument index="0" name="what" type="Variant"> - </argument> <description> - Return the internal type of the given Variant object, using the TYPE_* enum in [@Global Scope]. + Print a stack track at code location, only works when running with debugger turned on. </description> </method> - <method name="str"> - <return type="String"> + <method name="printerr"> + <return type="Nil"> </return> <argument index="0" name="what" type="Variant"> </argument> <argument index="1" name="..." type="Variant"> </argument> <description> - Convert one or more arguments to strings in the best way possible. + Print one or more arguments to strings in the best way possible to standard error line. </description> </method> - <method name="print"> + <method name="printraw"> <return type="Nil"> </return> <argument index="0" name="what" type="Variant"> @@ -467,10 +421,10 @@ <argument index="1" name="..." type="Variant"> </argument> <description> - Print one or more arguments to strings in the best way possible to a console line. + Print one or more arguments to strings in the best way possible to console. No newline is added at the end. </description> </method> - <method name="printt"> + <method name="prints"> <return type="Nil"> </return> <argument index="0" name="what" type="Variant"> @@ -478,10 +432,10 @@ <argument index="1" name="..." type="Variant"> </argument> <description> - Print one or more arguments to the console with a tab between each argument. + Print one or more arguments to the console with a space between each argument. </description> </method> - <method name="prints"> + <method name="printt"> <return type="Nil"> </return> <argument index="0" name="what" type="Variant"> @@ -489,65 +443,57 @@ <argument index="1" name="..." type="Variant"> </argument> <description> - Print one or more arguments to the console with a space between each argument. + Print one or more arguments to the console with a tab between each argument. </description> </method> - <method name="printerr"> - <return type="Nil"> + <method name="rad2deg"> + <return type="float"> </return> - <argument index="0" name="what" type="Variant"> - </argument> - <argument index="1" name="..." type="Variant"> + <argument index="0" name="rad" type="float"> </argument> <description> - Print one or more arguments to strings in the best way possible to standard error line. + Convert from radians to degrees. </description> </method> - <method name="printraw"> - <return type="Nil"> + <method name="rand_range"> + <return type="float"> </return> - <argument index="0" name="what" type="Variant"> + <argument index="0" name="from" type="float"> </argument> - <argument index="1" name="..." type="Variant"> + <argument index="1" name="to" type="float"> </argument> <description> - Print one or more arguments to strings in the best way possible to console. No newline is added at the end. + Random range, any floating point value between 'from' and 'to' </description> </method> - <method name="var2str"> - <return type="String"> + <method name="rand_seed"> + <return type="Array"> </return> - <argument index="0" name="var" type="Variant"> + <argument index="0" name="seed" type="int"> </argument> <description> - Convert a value to a formatted string that can later be parsed using [method str2var]. + Random from seed, pass a seed and an array with both number and new seed is returned. </description> </method> - <method name="str2var"> - <return type="Variant"> + <method name="randf"> + <return type="float"> </return> - <argument index="0" name="string" type="String"> - </argument> <description> - Convert a formatted string that was returned by [method var2str] to the original value. + Random value (0 to 1 float). </description> </method> - <method name="var2bytes"> - <return type="RawArray"> + <method name="randi"> + <return type="int"> </return> - <argument index="0" name="var" type="Variant"> - </argument> <description> - Encode a variable value to a byte array. + Random 32 bits value (integer). To obtain a value from 0 to N, you can use remainder, like (for random from 0 to 19): randi() % 20. </description> </method> - <method name="bytes2var"> - <return type="Variant"> + <method name="randomize"> + <return type="Nil"> </return> - <argument index="0" name="bytes" type="RawArray"> - </argument> <description> - Decode a byte array back to a value. + Reset the seed of the random number generator with a new, different one. </description> </method> <method name="range"> @@ -559,80 +505,151 @@ Return an array with the given range. Range can be 1 argument N (0 to N-1), two arguments (initial, final-1) or three arguments (initial, final-1, increment). </description> </method> - <method name="load"> - <return type="Resource"> + <method name="round"> + <return type="float"> </return> - <argument index="0" name="path" type="String"> + <argument index="0" name="s" type="float"> </argument> <description> - Load a resource from the filesystem, pass a valid path as argument. + Round to nearest integer. </description> </method> - <method name="inst2dict"> - <return type="Dictionary"> + <method name="seed"> + <return type="Nil"> </return> - <argument index="0" name="inst" type="Object"> + <argument index="0" name="seed" type="int"> </argument> <description> - Convert a script class instance to a dictionary (useful for serializing). + Set seed for the random number generator. </description> </method> - <method name="dict2inst"> - <return type="Object"> + <method name="sign"> + <return type="float"> </return> - <argument index="0" name="dict" type="Dictionary"> + <argument index="0" name="s" type="float"> </argument> <description> - Convert a previously converted instances to dictionary back into an instance. Useful for deserializing. + Return sign (-1 or +1). </description> </method> - <method name="hash"> - <return type="int"> + <method name="sin"> + <return type="float"> </return> - <argument index="0" name="var:Variant" type="Variant"> + <argument index="0" name="s" type="float"> </argument> <description> - Hash the variable passed and return an integer. + Standard sine function. </description> </method> - <method name="Color8"> - <return type="Color"> + <method name="sinh"> + <return type="float"> </return> - <argument index="0" name="r8" type="int"> + <argument index="0" name="s" type="float"> </argument> - <argument index="1" name="g8" type="int"> + <description> + Hyperbolic sine. + </description> + </method> + <method name="sqrt"> + <return type="float"> + </return> + <argument index="0" name="s" type="float"> </argument> - <argument index="2" name="b8" type="int"> + <description> + Square root. + </description> + </method> + <method name="stepify"> + <return type="float"> + </return> + <argument index="0" name="s" type="float"> </argument> - <argument index="3" name="a8" type="int"> + <argument index="1" name="step" type="float"> </argument> <description> - Make a color from red, green, blue and alpha. Arguments can range from 0 to 255. + Snap float value to a given step. </description> </method> - <method name="print_stack"> - <return type="Nil"> + <method name="str"> + <return type="String"> </return> + <argument index="0" name="what" type="Variant"> + </argument> + <argument index="1" name="..." type="Variant"> + </argument> <description> - Print a stack track at code location, only works when running with debugger turned on. + Convert one or more arguments to strings in the best way possible. </description> </method> - <method name="instance_from_id"> - <return type="Object"> + <method name="str2var"> + <return type="Variant"> </return> - <argument index="0" name="instance_id" type="int"> + <argument index="0" name="string" type="String"> </argument> <description> - Get an object by its ID. + Convert a formatted string that was returned by [method var2str] to the original value. </description> </method> - <method name="preload"> - <return type="Resource"> + <method name="tan"> + <return type="float"> </return> - <argument index="0" name="path" type="String"> + <argument index="0" name="s" type="float"> </argument> <description> - Preload a resource from the filesystem. The resource is loaded during script parsing. + Standard tangent function. + </description> + </method> + <method name="tanh"> + <return type="float"> + </return> + <argument index="0" name="s" type="float"> + </argument> + <description> + Hyperbolic tangent. + </description> + </method> + <method name="type_exists"> + <return type="bool"> + </return> + <argument index="0" name="type" type="String"> + </argument> + <description> + </description> + </method> + <method name="typeof"> + <return type="int"> + </return> + <argument index="0" name="what" type="Variant"> + </argument> + <description> + Return the internal type of the given Variant object, using the TYPE_* enum in [@Global Scope]. + </description> + </method> + <method name="var2bytes"> + <return type="RawArray"> + </return> + <argument index="0" name="var" type="Variant"> + </argument> + <description> + Encode a variable value to a byte array. + </description> + </method> + <method name="var2str"> + <return type="String"> + </return> + <argument index="0" name="var" type="Variant"> + </argument> + <description> + Convert a value to a formatted string that can later be parsed using [method str2var]. + </description> + </method> + <method name="weakref"> + <return type="WeakRef"> + </return> + <argument index="0" name="obj" type="Object"> + </argument> + <description> + Return a weak reference to an object. </description> </method> <method name="yield"> @@ -648,15 +665,6 @@ If passed an object and a signal, the execution is resumed when the object's signal is emmited. </description> </method> - <method name="assert"> - <return type="Nil"> - </return> - <argument index="0" name="condition" type="bool"> - </argument> - <description> - Assert that the condition is true. If the condition is false, generates an error. - </description> - </method> </methods> <constants> <constant name="PI" value="3.141593"> @@ -675,38 +683,20 @@ <methods> </methods> <members> - <member name="Performance" type="Performance"> - [Performance] singleton - </member> - <member name="Globals" type="Globals"> - [Globals] singleton + <member name="AS" type="AudioServer"> + [AudioServer] singleton </member> - <member name="IP" type="IP"> - [IP] singleton + <member name="AudioServer" type="AudioServer"> + [AudioServer] singleton </member> <member name="Geometry" type="Geometry"> [Geometry] singleton </member> - <member name="ResourceLoader" type="ResourceLoader"> - [ResourceLoader] singleton - </member> - <member name="ResourceSaver" type="ResourceSaver"> - [ResourceSaver] singleton - </member> - <member name="PathRemap" type="PathRemap"> - [PathRemap] singleton - </member> - <member name="OS" type="OS"> - [OS] singleton - </member> - <member name="Marshalls" type="Reference"> - [Marshalls] singleton - </member> - <member name="TranslationServer" type="TranslationServer"> - [TranslationServer] singleton + <member name="Globals" type="Globals"> + [Globals] singleton </member> - <member name="TS" type="TranslationServer"> - [TranslationServer] singleton + <member name="IP" type="IP"> + [IP] singleton </member> <member name="Input" type="Input"> [Input] singleton @@ -714,61 +704,171 @@ <member name="InputMap" type="InputMap"> [InputMap] singleton </member> - <member name="VisualServer" type="VisualServer"> - [VisualServer] singleton + <member name="Marshalls" type="Reference"> + [Marshalls] singleton </member> - <member name="VS" type="VisualServer"> - [VisualServer] singleton + <member name="OS" type="OS"> + [OS] singleton </member> - <member name="AudioServer" type="AudioServer"> - [AudioServer] singleton + <member name="PS" type="PhysicsServer"> + [PhysicsServer] singleton </member> - <member name="AS" type="AudioServer"> - [AudioServer] singleton + <member name="PS2D" type="Physics2DServer"> + [Physics2DServer] singleton </member> - <member name="PhysicsServer" type="PhysicsServer"> - [PhysicsServer] singleton + <member name="PathRemap" type="PathRemap"> + [PathRemap] singleton </member> - <member name="PS" type="PhysicsServer"> - [PhysicsServer] singleton + <member name="Performance" type="Performance"> + [Performance] singleton </member> <member name="Physics2DServer" type="Physics2DServer"> [Physics2DServer] singleton </member> - <member name="PS2D" type="Physics2DServer"> - [Physics2DServer] singleton + <member name="PhysicsServer" type="PhysicsServer"> + [PhysicsServer] singleton </member> - <member name="SpatialSoundServer" type="SpatialSoundServer"> - [SpatialSoundServer] singleton + <member name="ResourceLoader" type="ResourceLoader"> + [ResourceLoader] singleton + </member> + <member name="ResourceSaver" type="ResourceSaver"> + [ResourceSaver] singleton </member> <member name="SS" type="SpatialSoundServer"> [SpatialSoundServer] singleton </member> - <member name="SpatialSound2DServer" type="SpatialSound2DServer"> + <member name="SS2D" type="SpatialSound2DServer"> [SpatialSound2DServer] singleton </member> - <member name="SS2D" type="SpatialSound2DServer"> + <member name="SpatialSound2DServer" type="SpatialSound2DServer"> [SpatialSound2DServer] singleton </member> + <member name="SpatialSoundServer" type="SpatialSoundServer"> + [SpatialSoundServer] singleton + </member> + <member name="TS" type="TranslationServer"> + [TranslationServer] singleton + </member> + <member name="TranslationServer" type="TranslationServer"> + [TranslationServer] singleton + </member> + <member name="VS" type="VisualServer"> + [VisualServer] singleton + </member> + <member name="VisualServer" type="VisualServer"> + [VisualServer] singleton + </member> </members> <constants> - <constant name="MARGIN_LEFT" value="0"> - Left margin, used usually for [Control] or [StyleBox] derived classes. + <constant name="BUTTON_LEFT" value="1"> + Left Mouse Button </constant> - <constant name="MARGIN_TOP" value="1"> - Top margin, used usually for [Control] or [StyleBox] derived classes. + <constant name="BUTTON_MASK_LEFT" value="1"> </constant> - <constant name="MARGIN_RIGHT" value="2"> - Right margin, used usually for [Control] or [StyleBox] derived classes. + <constant name="BUTTON_MASK_RIGHT" value="2"> </constant> - <constant name="MARGIN_BOTTOM" value="3"> - Bottom margin, used usually for [Control] or [StyleBox] derived classes. + <constant name="BUTTON_RIGHT" value="2"> + Right Mouse Button </constant> - <constant name="VERTICAL" value="1"> - General vertical alignment, used usually for [Separator], [ScrollBar], [Slider], etc. + <constant name="BUTTON_MIDDLE" value="3"> + Middle Mouse Button </constant> - <constant name="HORIZONTAL" value="0"> - General horizontal alignment, used usually for [Separator], [ScrollBar], [Slider], etc. + <constant name="BUTTON_MASK_MIDDLE" value="4"> + </constant> + <constant name="BUTTON_WHEEL_UP" value="4"> + Mouse wheel up + </constant> + <constant name="BUTTON_WHEEL_DOWN" value="5"> + Mouse wheel down + </constant> + <constant name="BUTTON_WHEEL_LEFT" value="6"> + Mouse wheel left button + </constant> + <constant name="BUTTON_WHEEL_RIGHT" value="7"> + Mouse wheel right button + </constant> + <constant name="ERR_FILE_NO_PERMISSION" value="10"> + </constant> + <constant name="ERR_FILE_ALREADY_IN_USE" value="11"> + </constant> + <constant name="ERR_FILE_CANT_OPEN" value="12"> + </constant> + <constant name="ERR_FILE_CANT_WRITE" value="13"> + </constant> + <constant name="ERR_FILE_CANT_READ" value="14"> + </constant> + <constant name="ERR_FILE_UNRECOGNIZED" value="15"> + </constant> + <constant name="ERR_FILE_CORRUPT" value="16"> + </constant> + <constant name="ERR_FILE_MISSING_DEPENDENCIES" value="17"> + </constant> + <constant name="ERR_FILE_EOF" value="18"> + </constant> + <constant name="ERR_CANT_OPEN" value="19"> + </constant> + <constant name="ERR_UNAVAILABLE" value="2"> + </constant> + <constant name="ERR_CANT_CREATE" value="20"> + </constant> + <constant name="ERR_ALREADY_IN_USE" value="22"> + </constant> + <constant name="ERR_LOCKED" value="23"> + </constant> + <constant name="ERR_TIMEOUT" value="24"> + </constant> + <constant name="ERR_CANT_AQUIRE_RESOURCE" value="28"> + </constant> + <constant name="ERR_UNCONFIGURED" value="3"> + </constant> + <constant name="ERR_INVALID_DATA" value="30"> + </constant> + <constant name="ERR_INVALID_PARAMETER" value="31"> + </constant> + <constant name="ERR_ALREADY_EXISTS" value="32"> + </constant> + <constant name="ERR_DOES_NOT_EXIST" value="33"> + </constant> + <constant name="ERR_DATABASE_CANT_READ" value="34"> + </constant> + <constant name="ERR_DATABASE_CANT_WRITE" value="35"> + </constant> + <constant name="ERR_COMPILATION_FAILED" value="36"> + </constant> + <constant name="ERR_METHOD_NOT_FOUND" value="37"> + </constant> + <constant name="ERR_LINK_FAILED" value="38"> + </constant> + <constant name="ERR_SCRIPT_FAILED" value="39"> + </constant> + <constant name="ERR_UNAUTHORIZED" value="4"> + </constant> + <constant name="ERR_CYCLIC_LINK" value="40"> + </constant> + <constant name="ERR_PARSE_ERROR" value="43"> + </constant> + <constant name="ERR_BUSY" value="44"> + </constant> + <constant name="ERR_HELP" value="46"> + </constant> + <constant name="ERR_BUG" value="47"> + </constant> + <constant name="ERR_WTF" value="49"> + </constant> + <constant name="ERR_PARAMETER_RANGE_ERROR" value="5"> + </constant> + <constant name="ERR_OUT_OF_MEMORY" value="6"> + </constant> + <constant name="ERR_FILE_NOT_FOUND" value="7"> + </constant> + <constant name="ERR_FILE_BAD_DRIVE" value="8"> + </constant> + <constant name="ERR_FILE_BAD_PATH" value="9"> + </constant> + <constant name="ERROR_QUERY_FAILED" value="21"> + </constant> + <constant name="FAILED" value="1"> + Generic fail return error. </constant> <constant name="HALIGN_LEFT" value="0"> Horizontal left alignment, usually for text-derived classes. @@ -779,17 +879,232 @@ <constant name="HALIGN_RIGHT" value="2"> Horizontal right alignment, usually for text-derived classes. </constant> - <constant name="VALIGN_TOP" value="0"> - Vertical top alignment, usually for text-derived classes. + <constant name="HORIZONTAL" value="0"> + General horizontal alignment, used usually for [Separator], [ScrollBar], [Slider], etc. </constant> - <constant name="VALIGN_CENTER" value="1"> - Vertical center alignment, usually for text-derived classes. + <constant name="JOY_ANALOG_0_X" value="0"> + Joystick Left Stick Horizontal Axis </constant> - <constant name="VALIGN_BOTTOM" value="2"> - Vertical bottom alignment, usually for text-derived classes. + <constant name="JOY_AXIS_0" value="0"> + Joystick Left Stick Horizontal Axis </constant> - <constant name="SPKEY" value="16777216"> - Scancodes with this bit applied are non printable. + <constant name="JOY_BUTTON_0" value="0"> + Joystick Button 0 + </constant> + <constant name="JOY_DS_B" value="0"> + </constant> + <constant name="JOY_SEGA_A" value="0"> + SEGA controller A button + </constant> + <constant name="JOY_SNES_B" value="0"> + Super Nintendo Entertaiment System controller B button + </constant> + <constant name="JOY_SONY_X" value="0"> + DUALSHOCK X button + </constant> + <constant name="JOY_XBOX_A" value="0"> + XBOX controller A button + </constant> + <constant name="JOY_ANALOG_0_Y" value="1"> + Joystick Left Stick Vertical Axis + </constant> + <constant name="JOY_AXIS_1" value="1"> + Joystick Left Stick Vertical Axis + </constant> + <constant name="JOY_BUTTON_1" value="1"> + Joystick Button 1 + </constant> + <constant name="JOY_DS_A" value="1"> + </constant> + <constant name="JOY_SEGA_B" value="1"> + SEGA controller B button + </constant> + <constant name="JOY_SNES_A" value="1"> + Super Nintendo Entertaiment System controller A button + </constant> + <constant name="JOY_SONY_CIRCLE" value="1"> + DUALSHOCK circle button + </constant> + <constant name="JOY_XBOX_B" value="1"> + XBOX controller B button + </constant> + <constant name="JOY_BUTTON_10" value="10"> + Joystick Button 10 + </constant> + <constant name="JOY_SELECT" value="10"> + Joystick Button Select + </constant> + <constant name="JOY_BUTTON_11" value="11"> + Joystick Button 11 + </constant> + <constant name="JOY_START" value="11"> + Joystick Button Start + </constant> + <constant name="JOY_BUTTON_12" value="12"> + Joystick Button 12 + </constant> + <constant name="JOY_DPAD_UP" value="12"> + Joystick DPad Up + </constant> + <constant name="JOY_BUTTON_13" value="13"> + Joystick Button 13 + </constant> + <constant name="JOY_DPAD_DOWN" value="13"> + Joystick DPad Down + </constant> + <constant name="JOY_BUTTON_14" value="14"> + Joystick Button 14 + </constant> + <constant name="JOY_DPAD_LEFT" value="14"> + Joystick DPad Left + </constant> + <constant name="JOY_BUTTON_15" value="15"> + Joystick Button 15 + </constant> + <constant name="JOY_DPAD_RIGHT" value="15"> + Joystick DPad Right + </constant> + <constant name="JOY_BUTTON_MAX" value="16"> + Joystick Button 16 + </constant> + <constant name="JOY_ANALOG_1_X" value="2"> + Joystick Right Stick Horizontal Axis + </constant> + <constant name="JOY_AXIS_2" value="2"> + Joystick Right Stick Horizontal Axis + </constant> + <constant name="JOY_BUTTON_2" value="2"> + Joystick Button 2 + </constant> + <constant name="JOY_DS_Y" value="2"> + </constant> + <constant name="JOY_SEGA_X" value="2"> + SEGA controller X button + </constant> + <constant name="JOY_SNES_Y" value="2"> + Super Nintendo Entertaiment System controller Y button + </constant> + <constant name="JOY_SONY_SQUARE" value="2"> + DUALSHOCK square button + </constant> + <constant name="JOY_XBOX_X" value="2"> + XBOX controller X button + </constant> + <constant name="JOY_ANALOG_1_Y" value="3"> + Joystick Right Stick Vertical Axis + </constant> + <constant name="JOY_AXIS_3" value="3"> + Joystick Right Stick Vertical Axis + </constant> + <constant name="JOY_BUTTON_3" value="3"> + Joystick Button 3 + </constant> + <constant name="JOY_DS_X" value="3"> + </constant> + <constant name="JOY_SEGA_Y" value="3"> + SEGA controller Y button + </constant> + <constant name="JOY_SNES_X" value="3"> + Super Nintendo Entertaiment System controller X button + </constant> + <constant name="JOY_SONY_TRIANGLE" value="3"> + DUALSHOCK triangle button + </constant> + <constant name="JOY_XBOX_Y" value="3"> + XBOX controller Y button + </constant> + <constant name="JOY_ANALOG_2_X" value="4"> + </constant> + <constant name="JOY_AXIS_4" value="4"> + </constant> + <constant name="JOY_BUTTON_4" value="4"> + Joystick Button 4 + </constant> + <constant name="JOY_L" value="4"> + Joystick Left Shoulder Button + </constant> + <constant name="JOY_ANALOG_2_Y" value="5"> + </constant> + <constant name="JOY_AXIS_5" value="5"> + </constant> + <constant name="JOY_BUTTON_5" value="5"> + Joystick Button 5 + </constant> + <constant name="JOY_R" value="5"> + Joystick Right Shoulder Button + </constant> + <constant name="JOY_ANALOG_L2" value="6"> + </constant> + <constant name="JOY_AXIS_6" value="6"> + Joystick Left Trigger Analog Axis + </constant> + <constant name="JOY_BUTTON_6" value="6"> + Joystick Button 6 + </constant> + <constant name="JOY_L2" value="6"> + Joystick Left Trigger + </constant> + <constant name="JOY_ANALOG_R2" value="7"> + </constant> + <constant name="JOY_AXIS_7" value="7"> + Joystick Right Trigger Analog Axis + </constant> + <constant name="JOY_BUTTON_7" value="7"> + Joystick Button 7 + </constant> + <constant name="JOY_R2" value="7"> + Joystick Right Trigger + </constant> + <constant name="JOY_AXIS_MAX" value="8"> + </constant> + <constant name="JOY_BUTTON_8" value="8"> + Joystick Button 8 + </constant> + <constant name="JOY_L3" value="8"> + Joystick Left Stick Click + </constant> + <constant name="JOY_BUTTON_9" value="9"> + Joystick Button 9 + </constant> + <constant name="JOY_R3" value="9"> + Joystick Right Stick Click + </constant> + <constant name="KEY_MODIFIER_MASK" value="-16777216"> + </constant> + <constant name="KEY_MASK_GROUP_SWITCH" value="1073741824"> + </constant> + <constant name="KEY_BRACELEFT" value="123"> + { key + </constant> + <constant name="KEY_BAR" value="124"> + | key + </constant> + <constant name="KEY_BRACERIGHT" value="125"> + } key + </constant> + <constant name="KEY_ASCIITILDE" value="126"> + ~ key + </constant> + <constant name="KEY_MASK_META" value="134217728"> + </constant> + <constant name="KEY_NOBREAKSPACE" value="160"> + </constant> + <constant name="KEY_EXCLAMDOWN" value="161"> + </constant> + <constant name="KEY_CENT" value="162"> + ¢ key + </constant> + <constant name="KEY_STERLING" value="163"> + </constant> + <constant name="KEY_CURRENCY" value="164"> + </constant> + <constant name="KEY_YEN" value="165"> + </constant> + <constant name="KEY_BROKENBAR" value="166"> + ¦ key + </constant> + <constant name="KEY_SECTION" value="167"> + § key </constant> <constant name="KEY_ESCAPE" value="16777217"> Escape Key @@ -804,10 +1119,10 @@ Backspace Key </constant> <constant name="KEY_RETURN" value="16777221"> - Return Key + Return Key (On Main Keyboard) </constant> <constant name="KEY_ENTER" value="16777222"> - Enter Key + Enter Key (On Numpad) </constant> <constant name="KEY_INSERT" value="16777223"> Insert Key @@ -917,54 +1232,6 @@ <constant name="KEY_F16" value="16777259"> F16 Key </constant> - <constant name="KEY_KP_ENTER" value="16777344"> - Enter Key on Numpad - </constant> - <constant name="KEY_KP_MULTIPLY" value="16777345"> - Multiply Key on Numpad - </constant> - <constant name="KEY_KP_DIVIDE" value="16777346"> - Divide Key on Numpad - </constant> - <constant name="KEY_KP_SUBTRACT" value="16777347"> - Subtract Key on Numpad - </constant> - <constant name="KEY_KP_PERIOD" value="16777348"> - Period Key on Numpad - </constant> - <constant name="KEY_KP_ADD" value="16777349"> - Add Key on Numpad - </constant> - <constant name="KEY_KP_0" value="16777350"> - Number 0 on Numpad - </constant> - <constant name="KEY_KP_1" value="16777351"> - Number 1 on Numpad - </constant> - <constant name="KEY_KP_2" value="16777352"> - Number 2 on Numpad - </constant> - <constant name="KEY_KP_3" value="16777353"> - Number 3 on Numpad - </constant> - <constant name="KEY_KP_4" value="16777354"> - Number 4 on Numpad - </constant> - <constant name="KEY_KP_5" value="16777355"> - Number 5 on Numpad - </constant> - <constant name="KEY_KP_6" value="16777356"> - Number 6 on Numpad - </constant> - <constant name="KEY_KP_7" value="16777357"> - Number 7 on Numpad - </constant> - <constant name="KEY_KP_8" value="16777358"> - Number 8 on Numpad - </constant> - <constant name="KEY_KP_9" value="16777359"> - Number 9 on Numpad - </constant> <constant name="KEY_SUPER_L" value="16777260"> Super Left key (windows key) </constant> @@ -1080,232 +1347,53 @@ </constant> <constant name="KEY_LAUNCHF" value="16777319"> </constant> - <constant name="KEY_UNKNOWN" value="33554431"> - </constant> - <constant name="KEY_SPACE" value="32"> - Space Key - </constant> - <constant name="KEY_EXCLAM" value="33"> - ! key - </constant> - <constant name="KEY_QUOTEDBL" value="34"> - " key - </constant> - <constant name="KEY_NUMBERSIGN" value="35"> - # key - </constant> - <constant name="KEY_DOLLAR" value="36"> - $ key - </constant> - <constant name="KEY_PERCENT" value="37"> - % key - </constant> - <constant name="KEY_AMPERSAND" value="38"> - & key - </constant> - <constant name="KEY_APOSTROPHE" value="39"> - ' key - </constant> - <constant name="KEY_PARENLEFT" value="40"> - ( key - </constant> - <constant name="KEY_PARENRIGHT" value="41"> - ) key - </constant> - <constant name="KEY_ASTERISK" value="42"> - * key - </constant> - <constant name="KEY_PLUS" value="43"> - + key - </constant> - <constant name="KEY_COMMA" value="44"> - , key - </constant> - <constant name="KEY_MINUS" value="45"> - - key - </constant> - <constant name="KEY_PERIOD" value="46"> - . key - </constant> - <constant name="KEY_SLASH" value="47"> - / key - </constant> - <constant name="KEY_0" value="48"> - Number 0 - </constant> - <constant name="KEY_1" value="49"> - Number 1 - </constant> - <constant name="KEY_2" value="50"> - Number 2 - </constant> - <constant name="KEY_3" value="51"> - Number 3 - </constant> - <constant name="KEY_4" value="52"> - Number 4 - </constant> - <constant name="KEY_5" value="53"> - Number 5 - </constant> - <constant name="KEY_6" value="54"> - Number 6 - </constant> - <constant name="KEY_7" value="55"> - Number 7 - </constant> - <constant name="KEY_8" value="56"> - Number 8 - </constant> - <constant name="KEY_9" value="57"> - Number 9 - </constant> - <constant name="KEY_COLON" value="58"> - : key - </constant> - <constant name="KEY_SEMICOLON" value="59"> - ; key - </constant> - <constant name="KEY_LESS" value="60"> - Lower than key - </constant> - <constant name="KEY_EQUAL" value="61"> - = key - </constant> - <constant name="KEY_GREATER" value="62"> - Greater than key - </constant> - <constant name="KEY_QUESTION" value="63"> - ? key - </constant> - <constant name="KEY_AT" value="64"> - @ key - </constant> - <constant name="KEY_A" value="65"> - A Key - </constant> - <constant name="KEY_B" value="66"> - B Key - </constant> - <constant name="KEY_C" value="67"> - C Key - </constant> - <constant name="KEY_D" value="68"> - D Key - </constant> - <constant name="KEY_E" value="69"> - E Key - </constant> - <constant name="KEY_F" value="70"> - F Key - </constant> - <constant name="KEY_G" value="71"> - G Key - </constant> - <constant name="KEY_H" value="72"> - H Key - </constant> - <constant name="KEY_I" value="73"> - I Key - </constant> - <constant name="KEY_J" value="74"> - J Key - </constant> - <constant name="KEY_K" value="75"> - K Key - </constant> - <constant name="KEY_L" value="76"> - L Key - </constant> - <constant name="KEY_M" value="77"> - M Key - </constant> - <constant name="KEY_N" value="78"> - N Key - </constant> - <constant name="KEY_O" value="79"> - O Key - </constant> - <constant name="KEY_P" value="80"> - P Key - </constant> - <constant name="KEY_Q" value="81"> - Q Key - </constant> - <constant name="KEY_R" value="82"> - R Key - </constant> - <constant name="KEY_S" value="83"> - S Key - </constant> - <constant name="KEY_T" value="84"> - T Key - </constant> - <constant name="KEY_U" value="85"> - U Key - </constant> - <constant name="KEY_V" value="86"> - V Key - </constant> - <constant name="KEY_W" value="87"> - W Key - </constant> - <constant name="KEY_X" value="88"> - X Key - </constant> - <constant name="KEY_Y" value="89"> - Y Key - </constant> - <constant name="KEY_Z" value="90"> - Z Key - </constant> - <constant name="KEY_BRACKETLEFT" value="91"> - [ key - </constant> - <constant name="KEY_BACKSLASH" value="92"> - \ key - </constant> - <constant name="KEY_BRACKETRIGHT" value="93"> - ] key + <constant name="KEY_KP_ENTER" value="16777344"> + Enter Key on Numpad </constant> - <constant name="KEY_ASCIICIRCUM" value="94"> - ^ key + <constant name="KEY_KP_MULTIPLY" value="16777345"> + Multiply Key on Numpad </constant> - <constant name="KEY_UNDERSCORE" value="95"> - _ key + <constant name="KEY_KP_DIVIDE" value="16777346"> + Divide Key on Numpad </constant> - <constant name="KEY_QUOTELEFT" value="96"> + <constant name="KEY_KP_SUBTRACT" value="16777347"> + Subtract Key on Numpad </constant> - <constant name="KEY_BRACELEFT" value="123"> - { key + <constant name="KEY_KP_PERIOD" value="16777348"> + Period Key on Numpad </constant> - <constant name="KEY_BAR" value="124"> - | key + <constant name="KEY_KP_ADD" value="16777349"> + Add Key on Numpad </constant> - <constant name="KEY_BRACERIGHT" value="125"> - } key + <constant name="KEY_KP_0" value="16777350"> + Number 0 on Numpad </constant> - <constant name="KEY_ASCIITILDE" value="126"> - ~ key + <constant name="KEY_KP_1" value="16777351"> + Number 1 on Numpad </constant> - <constant name="KEY_NOBREAKSPACE" value="160"> + <constant name="KEY_KP_2" value="16777352"> + Number 2 on Numpad </constant> - <constant name="KEY_EXCLAMDOWN" value="161"> + <constant name="KEY_KP_3" value="16777353"> + Number 3 on Numpad </constant> - <constant name="KEY_CENT" value="162"> - ¢ key + <constant name="KEY_KP_4" value="16777354"> + Number 4 on Numpad </constant> - <constant name="KEY_STERLING" value="163"> + <constant name="KEY_KP_5" value="16777355"> + Number 5 on Numpad </constant> - <constant name="KEY_CURRENCY" value="164"> + <constant name="KEY_KP_6" value="16777356"> + Number 6 on Numpad </constant> - <constant name="KEY_YEN" value="165"> + <constant name="KEY_KP_7" value="16777357"> + Number 7 on Numpad </constant> - <constant name="KEY_BROKENBAR" value="166"> - ¦ key + <constant name="KEY_KP_8" value="16777358"> + Number 8 on Numpad </constant> - <constant name="KEY_SECTION" value="167"> - § key + <constant name="KEY_KP_9" value="16777359"> + Number 9 on Numpad </constant> <constant name="KEY_DIAERESIS" value="168"> ¨ key @@ -1438,356 +1526,266 @@ </constant> <constant name="KEY_YDIAERESIS" value="255"> </constant> - <constant name="KEY_CODE_MASK" value="33554431"> - </constant> - <constant name="KEY_MODIFIER_MASK" value="-16777216"> + <constant name="KEY_MASK_CMD" value="268435456"> </constant> - <constant name="KEY_MASK_SHIFT" value="33554432"> + <constant name="KEY_MASK_CTRL" value="268435456"> </constant> - <constant name="KEY_MASK_ALT" value="67108864"> + <constant name="KEY_SPACE" value="32"> + Space Key </constant> - <constant name="KEY_MASK_META" value="134217728"> + <constant name="KEY_EXCLAM" value="33"> + ! key </constant> - <constant name="KEY_MASK_CTRL" value="268435456"> + <constant name="KEY_CODE_MASK" value="33554431"> </constant> - <constant name="KEY_MASK_CMD" value="268435456"> + <constant name="KEY_UNKNOWN" value="33554431"> </constant> - <constant name="KEY_MASK_KPAD" value="536870912"> + <constant name="KEY_MASK_SHIFT" value="33554432"> </constant> - <constant name="KEY_MASK_GROUP_SWITCH" value="1073741824"> + <constant name="KEY_QUOTEDBL" value="34"> + " key </constant> - <constant name="BUTTON_LEFT" value="1"> - Left Mouse Button + <constant name="KEY_NUMBERSIGN" value="35"> + # key </constant> - <constant name="BUTTON_RIGHT" value="2"> - Right Mouse Button + <constant name="KEY_DOLLAR" value="36"> + $ key </constant> - <constant name="BUTTON_MIDDLE" value="3"> - Middle Mouse Button + <constant name="KEY_PERCENT" value="37"> + % key </constant> - <constant name="BUTTON_WHEEL_UP" value="4"> - Mouse wheel up + <constant name="KEY_AMPERSAND" value="38"> + & key </constant> - <constant name="BUTTON_WHEEL_DOWN" value="5"> - Mouse wheel down + <constant name="KEY_APOSTROPHE" value="39"> + ' key </constant> - <constant name="BUTTON_WHEEL_LEFT" value="6"> - Mouse wheel left button + <constant name="KEY_PARENLEFT" value="40"> + ( key </constant> - <constant name="BUTTON_WHEEL_RIGHT" value="7"> - Mouse wheel right button + <constant name="KEY_PARENRIGHT" value="41"> + ) key </constant> - <constant name="BUTTON_MASK_LEFT" value="1"> + <constant name="KEY_ASTERISK" value="42"> + * key </constant> - <constant name="BUTTON_MASK_RIGHT" value="2"> + <constant name="KEY_PLUS" value="43"> + + key </constant> - <constant name="BUTTON_MASK_MIDDLE" value="4"> + <constant name="KEY_COMMA" value="44"> + , key </constant> - <constant name="JOY_BUTTON_0" value="0"> - Joystick Button 0 + <constant name="KEY_MINUS" value="45"> + - key </constant> - <constant name="JOY_BUTTON_1" value="1"> - Joystick Button 1 + <constant name="KEY_PERIOD" value="46"> + . key </constant> - <constant name="JOY_BUTTON_2" value="2"> - Joystick Button 2 + <constant name="KEY_SLASH" value="47"> + / key </constant> - <constant name="JOY_BUTTON_3" value="3"> - Joystick Button 3 + <constant name="KEY_0" value="48"> + Number 0 </constant> - <constant name="JOY_BUTTON_4" value="4"> - Joystick Button 4 + <constant name="KEY_1" value="49"> + Number 1 </constant> - <constant name="JOY_BUTTON_5" value="5"> - Joystick Button 5 + <constant name="KEY_2" value="50"> + Number 2 </constant> - <constant name="JOY_BUTTON_6" value="6"> - Joystick Button 6 + <constant name="KEY_3" value="51"> + Number 3 </constant> - <constant name="JOY_BUTTON_7" value="7"> - Joystick Button 7 + <constant name="KEY_4" value="52"> + Number 4 </constant> - <constant name="JOY_BUTTON_8" value="8"> - Joystick Button 8 + <constant name="KEY_5" value="53"> + Number 5 </constant> - <constant name="JOY_BUTTON_9" value="9"> - Joystick Button 9 + <constant name="KEY_MASK_KPAD" value="536870912"> </constant> - <constant name="JOY_BUTTON_10" value="10"> - Joystick Button 10 + <constant name="KEY_6" value="54"> + Number 6 </constant> - <constant name="JOY_BUTTON_11" value="11"> - Joystick Button 11 + <constant name="KEY_7" value="55"> + Number 7 </constant> - <constant name="JOY_BUTTON_12" value="12"> - Joystick Button 12 + <constant name="KEY_8" value="56"> + Number 8 </constant> - <constant name="JOY_BUTTON_13" value="13"> - Joystick Button 13 + <constant name="KEY_9" value="57"> + Number 9 </constant> - <constant name="JOY_BUTTON_14" value="14"> - Joystick Button 14 + <constant name="KEY_COLON" value="58"> + : key </constant> - <constant name="JOY_BUTTON_15" value="15"> - Joystick Button 15 + <constant name="KEY_SEMICOLON" value="59"> + ; key </constant> - <constant name="JOY_BUTTON_MAX" value="16"> - Joystick Button 16 + <constant name="KEY_LESS" value="60"> + Lower than key </constant> - <constant name="JOY_SNES_A" value="1"> - Super Nintendo Entertaiment System controller A button + <constant name="KEY_EQUAL" value="61"> + = key </constant> - <constant name="JOY_SNES_B" value="0"> - Super Nintendo Entertaiment System controller B button + <constant name="KEY_GREATER" value="62"> + Greater than key </constant> - <constant name="JOY_SNES_X" value="3"> - Super Nintendo Entertaiment System controller X button + <constant name="KEY_QUESTION" value="63"> + ? key </constant> - <constant name="JOY_SNES_Y" value="2"> - Super Nintendo Entertaiment System controller Y button + <constant name="KEY_AT" value="64"> + @ key </constant> - <constant name="JOY_SONY_CIRCLE" value="1"> - DUALSHOCK circle button + <constant name="KEY_A" value="65"> + A Key </constant> - <constant name="JOY_SONY_X" value="0"> - DUALSHOCK X button + <constant name="KEY_B" value="66"> + B Key </constant> - <constant name="JOY_SONY_SQUARE" value="2"> - DUALSHOCK square button + <constant name="KEY_C" value="67"> + C Key </constant> - <constant name="JOY_SONY_TRIANGLE" value="3"> - DUALSHOCK triangle button + <constant name="KEY_MASK_ALT" value="67108864"> </constant> - <constant name="JOY_SEGA_B" value="1"> - SEGA controller B button + <constant name="KEY_D" value="68"> + D Key </constant> - <constant name="JOY_SEGA_A" value="0"> - SEGA controller A button + <constant name="KEY_E" value="69"> + E Key </constant> - <constant name="JOY_SEGA_X" value="2"> - SEGA controller X button + <constant name="KEY_F" value="70"> + F Key </constant> - <constant name="JOY_SEGA_Y" value="3"> - SEGA controller Y button + <constant name="KEY_G" value="71"> + G Key </constant> - <constant name="JOY_XBOX_B" value="1"> - XBOX controller B button + <constant name="KEY_H" value="72"> + H Key </constant> - <constant name="JOY_XBOX_A" value="0"> - XBOX controller A button + <constant name="KEY_I" value="73"> + I Key </constant> - <constant name="JOY_XBOX_X" value="2"> - XBOX controller X button + <constant name="KEY_J" value="74"> + J Key </constant> - <constant name="JOY_XBOX_Y" value="3"> - XBOX controller Y button + <constant name="KEY_K" value="75"> + K Key </constant> - <constant name="JOY_DS_A" value="1"> + <constant name="KEY_L" value="76"> + L Key </constant> - <constant name="JOY_DS_B" value="0"> + <constant name="KEY_M" value="77"> + M Key </constant> - <constant name="JOY_DS_X" value="3"> + <constant name="KEY_N" value="78"> + N Key </constant> - <constant name="JOY_DS_Y" value="2"> + <constant name="KEY_O" value="79"> + O Key </constant> - <constant name="JOY_SELECT" value="10"> - Joystick Button Select + <constant name="KEY_P" value="80"> + P Key </constant> - <constant name="JOY_START" value="11"> - Joystick Button Start + <constant name="KEY_Q" value="81"> + Q Key </constant> - <constant name="JOY_DPAD_UP" value="12"> - Joystick DPad Up + <constant name="KEY_R" value="82"> + R Key </constant> - <constant name="JOY_DPAD_DOWN" value="13"> - Joystick DPad Down + <constant name="KEY_S" value="83"> + S Key </constant> - <constant name="JOY_DPAD_LEFT" value="14"> - Joystick DPad Left + <constant name="KEY_T" value="84"> + T Key </constant> - <constant name="JOY_DPAD_RIGHT" value="15"> - Joystick DPad Right + <constant name="KEY_U" value="85"> + U Key </constant> - <constant name="JOY_L" value="4"> - Joystick Left Shoulder Button + <constant name="KEY_V" value="86"> + V Key </constant> - <constant name="JOY_L2" value="6"> - Joystick Left Trigger + <constant name="KEY_W" value="87"> + W Key </constant> - <constant name="JOY_L3" value="8"> - Joystick Left Stick Click + <constant name="KEY_X" value="88"> + X Key </constant> - <constant name="JOY_R" value="5"> - Joystick Right Shoulder Button + <constant name="KEY_Y" value="89"> + Y Key </constant> - <constant name="JOY_R2" value="7"> - Joystick Right Trigger + <constant name="KEY_Z" value="90"> + Z Key </constant> - <constant name="JOY_R3" value="9"> - Joystick Right Stick Click + <constant name="KEY_BRACKETLEFT" value="91"> + [ key </constant> - <constant name="JOY_AXIS_0" value="0"> - Joystick Left Stick Horizontal Axis + <constant name="KEY_BACKSLASH" value="92"> + \ key </constant> - <constant name="JOY_AXIS_1" value="1"> - Joystick Left Stick Vertical Axis + <constant name="KEY_BRACKETRIGHT" value="93"> + ] key </constant> - <constant name="JOY_AXIS_2" value="2"> - Joystick Right Stick Horizontal Axis + <constant name="KEY_ASCIICIRCUM" value="94"> + ^ key </constant> - <constant name="JOY_AXIS_3" value="3"> - Joystick Right Stick Vertical Axis + <constant name="KEY_UNDERSCORE" value="95"> + _ key </constant> - <constant name="JOY_AXIS_4" value="4"> + <constant name="KEY_QUOTELEFT" value="96"> </constant> - <constant name="JOY_AXIS_5" value="5"> + <constant name="MARGIN_LEFT" value="0"> + Left margin, used usually for [Control] or [StyleBox] derived classes. </constant> - <constant name="JOY_AXIS_6" value="6"> - Joystick Left Trigger Analog Axis + <constant name="MARGIN_TOP" value="1"> + Top margin, used usually for [Control] or [StyleBox] derived classes. </constant> - <constant name="JOY_AXIS_7" value="7"> - Joystick Right Trigger Analog Axis + <constant name="MARGIN_RIGHT" value="2"> + Right margin, used usually for [Control] or [StyleBox] derived classes. </constant> - <constant name="JOY_AXIS_MAX" value="8"> + <constant name="MARGIN_BOTTOM" value="3"> + Bottom margin, used usually for [Control] or [StyleBox] derived classes. </constant> - <constant name="JOY_ANALOG_0_X" value="0"> - Joystick Left Stick Horizontal Axis + <constant name="METHOD_FLAGS_DEFAULT" value="1"> </constant> - <constant name="JOY_ANALOG_0_Y" value="1"> - Joystick Left Stick Vertical Axis + <constant name="METHOD_FLAG_NORMAL" value="1"> </constant> - <constant name="JOY_ANALOG_1_X" value="2"> - Joystick Right Stick Horizontal Axis + <constant name="METHOD_FLAG_REVERSE" value="16"> </constant> - <constant name="JOY_ANALOG_1_Y" value="3"> - Joystick Right Stick Vertical Axis + <constant name="METHOD_FLAG_EDITOR" value="2"> </constant> - <constant name="JOY_ANALOG_2_X" value="4"> + <constant name="METHOD_FLAG_VIRTUAL" value="32"> </constant> - <constant name="JOY_ANALOG_2_Y" value="5"> + <constant name="METHOD_FLAG_NOSCRIPT" value="4"> </constant> - <constant name="JOY_ANALOG_L2" value="6"> + <constant name="METHOD_FLAG_FROM_SCRIPT" value="64"> </constant> - <constant name="JOY_ANALOG_R2" value="7"> + <constant name="METHOD_FLAG_CONST" value="8"> </constant> <constant name="OK" value="0"> Functions that return Error return OK when everything went ok. Most functions don't return error anyway and/or just print errors to stdout. </constant> - <constant name="FAILED" value="1"> - Generic fail return error. - </constant> - <constant name="ERR_UNAVAILABLE" value="2"> - </constant> - <constant name="ERR_UNCONFIGURED" value="3"> - </constant> - <constant name="ERR_UNAUTHORIZED" value="4"> - </constant> - <constant name="ERR_PARAMETER_RANGE_ERROR" value="5"> - </constant> - <constant name="ERR_OUT_OF_MEMORY" value="6"> - </constant> - <constant name="ERR_FILE_NOT_FOUND" value="7"> - </constant> - <constant name="ERR_FILE_BAD_DRIVE" value="8"> - </constant> - <constant name="ERR_FILE_BAD_PATH" value="9"> - </constant> - <constant name="ERR_FILE_NO_PERMISSION" value="10"> - </constant> - <constant name="ERR_FILE_ALREADY_IN_USE" value="11"> - </constant> - <constant name="ERR_FILE_CANT_OPEN" value="12"> - </constant> - <constant name="ERR_FILE_CANT_WRITE" value="13"> - </constant> - <constant name="ERR_FILE_CANT_READ" value="14"> - </constant> - <constant name="ERR_FILE_UNRECOGNIZED" value="15"> - </constant> - <constant name="ERR_FILE_CORRUPT" value="16"> - </constant> - <constant name="ERR_FILE_MISSING_DEPENDENCIES" value="17"> - </constant> - <constant name="ERR_FILE_EOF" value="18"> - </constant> - <constant name="ERR_CANT_OPEN" value="19"> - </constant> - <constant name="ERR_CANT_CREATE" value="20"> - </constant> - <constant name="ERR_PARSE_ERROR" value="43"> - </constant> - <constant name="ERROR_QUERY_FAILED" value="21"> - </constant> - <constant name="ERR_ALREADY_IN_USE" value="22"> - </constant> - <constant name="ERR_LOCKED" value="23"> - </constant> - <constant name="ERR_TIMEOUT" value="24"> - </constant> - <constant name="ERR_CANT_AQUIRE_RESOURCE" value="28"> - </constant> - <constant name="ERR_INVALID_DATA" value="30"> - </constant> - <constant name="ERR_INVALID_PARAMETER" value="31"> - </constant> - <constant name="ERR_ALREADY_EXISTS" value="32"> - </constant> - <constant name="ERR_DOES_NOT_EXIST" value="33"> - </constant> - <constant name="ERR_DATABASE_CANT_READ" value="34"> - </constant> - <constant name="ERR_DATABASE_CANT_WRITE" value="35"> - </constant> - <constant name="ERR_COMPILATION_FAILED" value="36"> - </constant> - <constant name="ERR_METHOD_NOT_FOUND" value="37"> - </constant> - <constant name="ERR_LINK_FAILED" value="38"> - </constant> - <constant name="ERR_SCRIPT_FAILED" value="39"> - </constant> - <constant name="ERR_CYCLIC_LINK" value="40"> - </constant> - <constant name="ERR_BUSY" value="44"> - </constant> - <constant name="ERR_HELP" value="46"> - </constant> - <constant name="ERR_BUG" value="47"> - </constant> - <constant name="ERR_WTF" value="49"> - </constant> <constant name="PROPERTY_HINT_NONE" value="0"> No hint for edited property. </constant> <constant name="PROPERTY_HINT_RANGE" value="1"> Hints that the string is a range, defined as "min,max" or "min,max,step". This is valid for integers and floats. </constant> - <constant name="PROPERTY_HINT_EXP_RANGE" value="2"> - Hints that the string is an exponential range, defined as "min,max" or "min,max,step". This is valid for integers and floats. - </constant> - <constant name="PROPERTY_HINT_ENUM" value="3"> - Property hint for an enumerated value, like "Hello,Something,Else". This is valid for integer, float and string properties. - </constant> - <constant name="PROPERTY_HINT_EXP_EASING" value="4"> - </constant> - <constant name="PROPERTY_HINT_LENGTH" value="5"> - </constant> - <constant name="PROPERTY_HINT_KEY_ACCEL" value="7"> - </constant> - <constant name="PROPERTY_HINT_FLAGS" value="8"> - Property hint for a bitmask description, for bits 0,1,2,3 and 5 the hint would be like "Bit0,Bit1,Bit2,Bit3,,Bit5". Valid only for integers. - </constant> - <constant name="PROPERTY_HINT_ALL_FLAGS" value="9"> - Property hint for a bitmask description that covers all 32 bits. Valid only for integers. + <constant name="PROPERTY_USAGE_STORAGE" value="1"> + Property will be used as storage (default). </constant> <constant name="PROPERTY_HINT_FILE" value="10"> String property is a file (so pop up a file dialog when edited). Hint string can be a set of wildcards like "*.doc". </constant> + <constant name="PROPERTY_USAGE_STORE_IF_NONONE" value="1024"> + </constant> <constant name="PROPERTY_HINT_DIR" value="11"> String property is a directory (so pop up a file dialog when edited). </constant> <constant name="PROPERTY_HINT_GLOBAL_FILE" value="12"> </constant> + <constant name="PROPERTY_USAGE_BUNDLE" value="128"> + </constant> <constant name="PROPERTY_HINT_GLOBAL_DIR" value="13"> </constant> <constant name="PROPERTY_HINT_RESOURCE_TYPE" value="14"> @@ -1797,62 +1795,60 @@ </constant> <constant name="PROPERTY_HINT_COLOR_NO_ALPHA" value="16"> </constant> + <constant name="PROPERTY_USAGE_CHECKABLE" value="16"> + </constant> <constant name="PROPERTY_HINT_IMAGE_COMPRESS_LOSSY" value="17"> </constant> <constant name="PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS" value="18"> </constant> - <constant name="PROPERTY_USAGE_STORAGE" value="1"> - Property will be used as storage (default). + <constant name="PROPERTY_HINT_EXP_RANGE" value="2"> + Hints that the string is an exponential range, defined as "min,max" or "min,max,step". This is valid for integers and floats. </constant> <constant name="PROPERTY_USAGE_EDITOR" value="2"> Property will be visible in editor (default). </constant> - <constant name="PROPERTY_USAGE_NETWORK" value="4"> + <constant name="PROPERTY_USAGE_NO_INSTANCE_STATE" value="2048"> </constant> - <constant name="PROPERTY_USAGE_EDITOR_HELPER" value="8"> + <constant name="PROPERTY_USAGE_CATEGORY" value="256"> </constant> - <constant name="PROPERTY_USAGE_CHECKABLE" value="16"> + <constant name="PROPERTY_HINT_ENUM" value="3"> + Property hint for an enumerated value, like "Hello,Something,Else". This is valid for integer, float and string properties. </constant> <constant name="PROPERTY_USAGE_CHECKED" value="32"> </constant> - <constant name="PROPERTY_USAGE_INTERNATIONALIZED" value="64"> + <constant name="PROPERTY_HINT_EXP_EASING" value="4"> </constant> - <constant name="PROPERTY_USAGE_BUNDLE" value="128"> + <constant name="PROPERTY_USAGE_NETWORK" value="4"> </constant> - <constant name="PROPERTY_USAGE_CATEGORY" value="256"> + <constant name="PROPERTY_USAGE_RESTART_IF_CHANGED" value="4096"> </constant> - <constant name="PROPERTY_USAGE_STORE_IF_NONZERO" value="512"> + <constant name="PROPERTY_HINT_LENGTH" value="5"> </constant> - <constant name="PROPERTY_USAGE_STORE_IF_NONONE" value="1024"> + <constant name="PROPERTY_USAGE_NOEDITOR" value="5"> </constant> - <constant name="PROPERTY_USAGE_NO_INSTANCE_STATE" value="2048"> + <constant name="PROPERTY_USAGE_STORE_IF_NONZERO" value="512"> </constant> - <constant name="PROPERTY_USAGE_RESTART_IF_CHANGED" value="4096"> + <constant name="PROPERTY_USAGE_INTERNATIONALIZED" value="64"> </constant> - <constant name="PROPERTY_USAGE_SCRIPT_VARIABLE" value="8192"> + <constant name="PROPERTY_HINT_KEY_ACCEL" value="7"> </constant> <constant name="PROPERTY_USAGE_DEFAULT" value="7"> Default usage (storage and editor). </constant> <constant name="PROPERTY_USAGE_DEFAULT_INTL" value="71"> </constant> - <constant name="PROPERTY_USAGE_NOEDITOR" value="5"> - </constant> - <constant name="METHOD_FLAG_NORMAL" value="1"> - </constant> - <constant name="METHOD_FLAG_EDITOR" value="2"> - </constant> - <constant name="METHOD_FLAG_NOSCRIPT" value="4"> - </constant> - <constant name="METHOD_FLAG_CONST" value="8"> + <constant name="PROPERTY_HINT_FLAGS" value="8"> + Property hint for a bitmask description, for bits 0,1,2,3 and 5 the hint would be like "Bit0,Bit1,Bit2,Bit3,,Bit5". Valid only for integers. </constant> - <constant name="METHOD_FLAG_REVERSE" value="16"> + <constant name="PROPERTY_USAGE_EDITOR_HELPER" value="8"> </constant> - <constant name="METHOD_FLAG_VIRTUAL" value="32"> + <constant name="PROPERTY_USAGE_SCRIPT_VARIABLE" value="8192"> </constant> - <constant name="METHOD_FLAG_FROM_SCRIPT" value="64"> + <constant name="PROPERTY_HINT_ALL_FLAGS" value="9"> + Property hint for a bitmask description that covers all 32 bits. Valid only for integers. </constant> - <constant name="METHOD_FLAGS_DEFAULT" value="1"> + <constant name="SPKEY" value="16777216"> + Scancodes with this bit applied are non printable. </constant> <constant name="TYPE_NIL" value="0"> Variable is of type nil (only applied for null). @@ -1860,30 +1856,6 @@ <constant name="TYPE_BOOL" value="1"> Variable is of type [bool]. </constant> - <constant name="TYPE_INT" value="2"> - Variable is of type [int]. - </constant> - <constant name="TYPE_REAL" value="3"> - Variable is of type [float]/real. - </constant> - <constant name="TYPE_STRING" value="4"> - Variable is of type [String]. - </constant> - <constant name="TYPE_VECTOR2" value="5"> - Variable is of type [Vector2]. - </constant> - <constant name="TYPE_RECT2" value="6"> - Variable is of type [Rect2]. - </constant> - <constant name="TYPE_VECTOR3" value="7"> - Variable is of type [Vector3]. - </constant> - <constant name="TYPE_MATRIX32" value="8"> - Variable is of type [Matrix32]. - </constant> - <constant name="TYPE_PLANE" value="9"> - Variable is of type [Plane]. - </constant> <constant name="TYPE_QUAT" value="10"> Variable is of type [Quat]. </constant> @@ -1914,6 +1886,9 @@ <constant name="TYPE_INPUT_EVENT" value="19"> Variable is of type [InputEvent]. </constant> + <constant name="TYPE_INT" value="2"> + Variable is of type [int]. + </constant> <constant name="TYPE_DICTIONARY" value="20"> Variable is of type [Dictionary]. </constant> @@ -1936,6 +1911,39 @@ </constant> <constant name="TYPE_MAX" value="29"> </constant> + <constant name="TYPE_REAL" value="3"> + Variable is of type [float]/real. + </constant> + <constant name="TYPE_STRING" value="4"> + Variable is of type [String]. + </constant> + <constant name="TYPE_VECTOR2" value="5"> + Variable is of type [Vector2]. + </constant> + <constant name="TYPE_RECT2" value="6"> + Variable is of type [Rect2]. + </constant> + <constant name="TYPE_VECTOR3" value="7"> + Variable is of type [Vector3]. + </constant> + <constant name="TYPE_MATRIX32" value="8"> + Variable is of type [Matrix32]. + </constant> + <constant name="TYPE_PLANE" value="9"> + Variable is of type [Plane]. + </constant> + <constant name="VALIGN_TOP" value="0"> + Vertical top alignment, usually for text-derived classes. + </constant> + <constant name="VALIGN_CENTER" value="1"> + Vertical center alignment, usually for text-derived classes. + </constant> + <constant name="VALIGN_BOTTOM" value="2"> + Vertical bottom alignment, usually for text-derived classes. + </constant> + <constant name="VERTICAL" value="1"> + General vertical alignment, used usually for [Separator], [ScrollBar], [Slider], etc. + </constant> </constants> </class> <class name="AABB" category="Built-In Types"> @@ -1946,6 +1954,17 @@ AABB provides an 3D Axis-Aligned Bounding Box. It consists of a position, a size, and several utility functions. It is typically used for simple (fast) overlap tests. </description> <methods> + <method name="AABB"> + <return type="AABB"> + </return> + <argument index="0" name="pos" type="Vector3"> + </argument> + <argument index="1" name="size" type="Vector3"> + </argument> + <description> + Optional constructor, accepts position and size. + </description> + </method> <method name="encloses"> <return type="bool"> </return> @@ -2110,28 +2129,17 @@ Combine this [AABB] with another, a larger one is returned that contains both. </description> </method> - <method name="AABB"> - <return type="AABB"> - </return> - <argument index="0" name="pos" type="Vector3"> - </argument> - <argument index="1" name="size" type="Vector3"> - </argument> - <description> - Optional constructor, accepts position and size. - </description> - </method> </methods> <members> + <member name="end" type="Vector3"> + Ending corner. + </member> <member name="pos" type="Vector3"> Position (starting corner). </member> <member name="size" type="Vector3"> Size from position to end. </member> - <member name="end" type="Vector3"> - Ending corner. - </member> </members> <constants> </constants> @@ -2144,25 +2152,27 @@ This dialog is useful for small notifications to the user about an event. It can only be accepted or closed, with the same result. </description> <methods> - <method name="get_ok"> - <return type="Object"> + <method name="add_button"> + <return type="Button"> </return> + <argument index="0" name="text" type="String"> + </argument> + <argument index="1" name="right" type="bool" default="false"> + </argument> + <argument index="2" name="action" type="String" default=""""> + </argument> <description> - Return the OK Button. + Add custom button to the dialog and return the created button. + The button titled with [i]text[/i] and the [i]action[/i] will be passed to [custom_action] signal when it is pressed. </description> </method> - <method name="get_label"> - <return type="Object"> + <method name="add_cancel"> + <return type="Button"> </return> - <description> - Return the label used for built-in text. - </description> - </method> - <method name="set_hide_on_ok"> - <argument index="0" name="enabled" type="bool"> + <argument index="0" name="name" type="String"> </argument> <description> - Set whether the dialog is hidden when accepted (default true). + Add custom cancel button to the dialog and return the created button. </description> </method> <method name="get_hide_on_ok" qualifiers="const"> @@ -2172,27 +2182,25 @@ Return true if the dialog will be hidden when accepted (default true). </description> </method> - <method name="add_button"> - <return type="Button"> + <method name="get_label"> + <return type="Object"> </return> - <argument index="0" name="text" type="String"> - </argument> - <argument index="1" name="right" type="bool" default="false"> - </argument> - <argument index="2" name="action" type="String" default=""""> - </argument> <description> - Add custom button to the dialog and return the created button. - The button titled with [i]text[/i] and the [i]action[/i] will be passed to [custom_action] signal when it is pressed. + Return the label used for built-in text. </description> </method> - <method name="add_cancel"> - <return type="Button"> + <method name="get_ok"> + <return type="Object"> </return> - <argument index="0" name="name" type="String"> - </argument> <description> - Add custom cancel button to the dialog and return the created button. + Return the OK Button. + </description> + </method> + <method name="get_text" qualifiers="const"> + <return type="String"> + </return> + <description> + Return the built-in label text. </description> </method> <method name="register_text_enter"> @@ -2204,18 +2212,18 @@ Register a [LineEdit] in the dialog. When the enter key is pressed, the dialog will be accepted. </description> </method> - <method name="set_text"> - <argument index="0" name="text" type="String"> + <method name="set_hide_on_ok"> + <argument index="0" name="enabled" type="bool"> </argument> <description> - Set the built-in label text. + Set whether the dialog is hidden when accepted (default true). </description> </method> - <method name="get_text" qualifiers="const"> - <return type="String"> - </return> + <method name="set_text"> + <argument index="0" name="text" type="String"> + </argument> <description> - Return the built-in label text. + Set the built-in label text. </description> </method> </methods> @@ -2244,88 +2252,91 @@ Sprite node that can use multiple textures for animation. </description> <methods> - <method name="set_sprite_frames"> - <argument index="0" name="sprite_frames" type="SpriteFrames"> - </argument> + <method name="get_animation" qualifiers="const"> + <return type="String"> + </return> <description> - Set the [SpriteFrames] resource, which contains all frames. </description> </method> - <method name="get_sprite_frames" qualifiers="const"> - <return type="SpriteFrames"> + <method name="get_frame" qualifiers="const"> + <return type="int"> </return> <description> - Get the [SpriteFrames] resource, which contains all frames. + Return the visible frame index. </description> </method> - <method name="set_animation"> - <argument index="0" name="animation" type="String"> - </argument> + <method name="get_modulate" qualifiers="const"> + <return type="Color"> + </return> <description> + Return the color modulation for this sprite. </description> </method> - <method name="get_animation" qualifiers="const"> - <return type="String"> + <method name="get_offset" qualifiers="const"> + <return type="Vector2"> </return> <description> + Return the offset of the sprite in the node origin. </description> </method> - <method name="play"> - <argument index="0" name="anim" type="String" default=""""> - </argument> + <method name="get_sprite_frames" qualifiers="const"> + <return type="SpriteFrames"> + </return> <description> + Get the [SpriteFrames] resource, which contains all frames. </description> </method> - <method name="stop"> + <method name="is_centered" qualifiers="const"> + <return type="bool"> + </return> <description> + Return true when centered. See [method set_centered]. </description> </method> - <method name="is_playing" qualifiers="const"> + <method name="is_flipped_h" qualifiers="const"> <return type="bool"> </return> <description> + Return true if sprite is flipped horizontally. </description> </method> - <method name="set_centered"> - <argument index="0" name="centered" type="bool"> - </argument> + <method name="is_flipped_v" qualifiers="const"> + <return type="bool"> + </return> <description> - When turned on, offset at (0,0) is the center of the sprite, when off, the top-left corner is. + Return true if sprite is flipped vertically. </description> </method> - <method name="is_centered" qualifiers="const"> + <method name="is_playing" qualifiers="const"> <return type="bool"> </return> <description> - Return true when centered. See [method set_centered]. </description> </method> - <method name="set_offset"> - <argument index="0" name="offset" type="Vector2"> + <method name="play"> + <argument index="0" name="anim" type="String" default=""""> </argument> <description> - Set the offset of the sprite in the node origin. Position varies depending on whether it is centered or not. </description> </method> - <method name="get_offset" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_animation"> + <argument index="0" name="animation" type="String"> + </argument> <description> - Return the offset of the sprite in the node origin. </description> </method> - <method name="set_flip_h"> - <argument index="0" name="flip_h" type="bool"> + <method name="set_centered"> + <argument index="0" name="centered" type="bool"> </argument> <description> - If true, sprite is flipped horizontally. + When turned on, offset at (0,0) is the center of the sprite, when off, the top-left corner is. </description> </method> - <method name="is_flipped_h" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_flip_h"> + <argument index="0" name="flip_h" type="bool"> + </argument> <description> - Return true if sprite is flipped horizontally. + If true, sprite is flipped horizontally. </description> </method> <method name="set_flip_v"> @@ -2335,13 +2346,6 @@ If true, sprite is flipped vertically. </description> </method> - <method name="is_flipped_v" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return true if sprite is flipped vertically. - </description> - </method> <method name="set_frame"> <argument index="0" name="frame" type="int"> </argument> @@ -2349,13 +2353,6 @@ Set the visible sprite frame index (from the list of frames inside the [SpriteFrames] resource). </description> </method> - <method name="get_frame" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the visible frame index. - </description> - </method> <method name="set_modulate"> <argument index="0" name="modulate" type="Color"> </argument> @@ -2363,11 +2360,22 @@ Change the color modulation (multiplication) for this sprite. </description> </method> - <method name="get_modulate" qualifiers="const"> - <return type="Color"> - </return> + <method name="set_offset"> + <argument index="0" name="offset" type="Vector2"> + </argument> + <description> + Set the offset of the sprite in the node origin. Position varies depending on whether it is centered or not. + </description> + </method> + <method name="set_sprite_frames"> + <argument index="0" name="sprite_frames" type="SpriteFrames"> + </argument> + <description> + Set the [SpriteFrames] resource, which contains all frames. + </description> + </method> + <method name="stop"> <description> - Return the color modulation for this sprite. </description> </method> </methods> @@ -2387,26 +2395,26 @@ <description> </description> <methods> - <method name="set_sprite_frames"> - <argument index="0" name="sprite_frames" type="SpriteFrames"> - </argument> + <method name="get_animation" qualifiers="const"> + <return type="String"> + </return> <description> </description> </method> - <method name="get_sprite_frames" qualifiers="const"> - <return type="SpriteFrames"> + <method name="get_frame" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="set_animation"> - <argument index="0" name="animation" type="String"> - </argument> + <method name="get_sprite_frames" qualifiers="const"> + <return type="SpriteFrames"> + </return> <description> </description> </method> - <method name="get_animation" qualifiers="const"> - <return type="String"> + <method name="is_playing" qualifiers="const"> + <return type="bool"> </return> <description> </description> @@ -2417,25 +2425,25 @@ <description> </description> </method> - <method name="stop"> + <method name="set_animation"> + <argument index="0" name="animation" type="String"> + </argument> <description> </description> </method> - <method name="is_playing" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_frame"> + <argument index="0" name="frame" type="int"> + </argument> <description> </description> </method> - <method name="set_frame"> - <argument index="0" name="frame" type="int"> + <method name="set_sprite_frames"> + <argument index="0" name="sprite_frames" type="SpriteFrames"> </argument> <description> </description> </method> - <method name="get_frame" qualifiers="const"> - <return type="int"> - </return> + <method name="stop"> <description> </description> </method> @@ -2469,148 +2477,140 @@ Add a track to the Animation. The track type must be specified as any of the values in the TYPE_* enumeration. </description> </method> - <method name="remove_track"> - <argument index="0" name="idx" type="int"> - </argument> - <description> - Remove a track by specifying the track index. - </description> - </method> - <method name="get_track_count" qualifiers="const"> - <return type="int"> - </return> + <method name="clear"> <description> - Return the amount of tracks in the animation. + Clear the animation (clear all tracks and reset all). </description> </method> - <method name="track_get_type" qualifiers="const"> + <method name="find_track" qualifiers="const"> <return type="int"> </return> - <argument index="0" name="idx" type="int"> + <argument index="0" name="path" type="NodePath"> </argument> <description> - Get the type of a track. </description> </method> - <method name="track_get_path" qualifiers="const"> - <return type="NodePath"> + <method name="get_length" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> - Get the path of a track. for more information on the path format, see [method track_set_path] + Return the total length of the animation (in seconds). </description> </method> - <method name="track_set_path"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="path" type="NodePath"> - </argument> + <method name="get_step" qualifiers="const"> + <return type="float"> + </return> <description> - Set the path of a track. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. Tracks that control properties or bones must append their name after the path, separated by ":". Example: "character/skeleton:ankle" or "character/mesh:transform/local" </description> </method> - <method name="find_track" qualifiers="const"> + <method name="get_track_count" qualifiers="const"> <return type="int"> </return> - <argument index="0" name="path" type="NodePath"> - </argument> <description> + Return the amount of tracks in the animation. </description> </method> - <method name="track_move_up"> - <argument index="0" name="idx" type="int"> - </argument> + <method name="has_loop" qualifiers="const"> + <return type="bool"> + </return> <description> - Move a track up. + Return whether the animation has the loop flag set. </description> </method> - <method name="track_move_down"> - <argument index="0" name="idx" type="int"> - </argument> + <method name="has_loop_interpolation" qualifiers="const"> + <return type="bool"> + </return> <description> - Move a track down. </description> </method> - <method name="transform_track_insert_key"> - <return type="int"> + <method name="method_track_get_key_indices" qualifiers="const"> + <return type="IntArray"> </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="time" type="float"> - </argument> - <argument index="2" name="loc" type="Vector3"> - </argument> - <argument index="3" name="rot" type="Quat"> + <argument index="1" name="time_sec" type="float"> </argument> - <argument index="4" name="scale" type="Vector3"> + <argument index="2" name="delta" type="float"> </argument> <description> - Insert a transform key for a transform track. + Return all the key indices of a method track, given a position and delta time. </description> </method> - <method name="track_insert_key"> + <method name="method_track_get_name" qualifiers="const"> + <return type="String"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="time" type="float"> - </argument> - <argument index="2" name="key" type="Variant"> - </argument> - <argument index="3" name="transition" type="float" default="1"> + <argument index="1" name="key_idx" type="int"> </argument> <description> - Insert a generic key in a given track. + Return the method name of a method track. </description> </method> - <method name="track_remove_key"> + <method name="method_track_get_params" qualifiers="const"> + <return type="Array"> + </return> <argument index="0" name="idx" type="int"> </argument> <argument index="1" name="key_idx" type="int"> </argument> <description> - Remove a key by index in a given track. + Return the arguments values to be called on a method track for a given key in a given track. </description> </method> - <method name="track_remove_key_at_pos"> + <method name="remove_track"> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="pos" type="float"> + <description> + Remove a track by specifying the track index. + </description> + </method> + <method name="set_length"> + <argument index="0" name="time_sec" type="float"> </argument> <description> - Remove a key by position (seconds) in a given track. + Set the total length of the animation (in seconds). Note that length is not delimited by the last key, as this one may be before or after the end to ensure correct interpolation and looping. </description> </method> - <method name="track_set_key_value"> - <argument index="0" name="idx" type="int"> + <method name="set_loop"> + <argument index="0" name="enabled" type="bool"> </argument> - <argument index="1" name="key" type="int"> + <description> + Set a flag indicating that the animation must loop. This is uses for correct interpolation of animation cycles, and for hinting the player that it must restart the animation. + </description> + </method> + <method name="set_loop_interpolation"> + <argument index="0" name="enabled" type="bool"> </argument> - <argument index="2" name="value" type="Variant"> + <description> + </description> + </method> + <method name="set_step"> + <argument index="0" name="size_sec" type="float"> </argument> <description> - Set the value of an existing key. </description> </method> - <method name="track_set_key_transition"> + <method name="track_find_key" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="key_idx" type="int"> + <argument index="1" name="time" type="float"> </argument> - <argument index="2" name="transition" type="float"> + <argument index="2" name="exact" type="bool" default="false"> </argument> <description> - Set the transition curve (easing) for a specific key (see built-in math function "ease"). + Find the key index by time in a given track. Optionally, only find it if the exact time is given. </description> </method> - <method name="track_get_key_transition" qualifiers="const"> - <return type="float"> + <method name="track_get_interpolation_type" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="key_idx" type="int"> - </argument> <description> - Return the transition curve (easing) for a specific key (see built-in math function "ease"). + Return the interpolation type of a given track, from the INTERPOLATION_* enum. </description> </method> <method name="track_get_key_count" qualifiers="const"> @@ -2622,16 +2622,18 @@ Return the amount of keys in a given track. </description> </method> - <method name="track_get_key_value" qualifiers="const"> + <method name="track_get_key_time" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="idx" type="int"> </argument> <argument index="1" name="key_idx" type="int"> </argument> <description> - Return the value of a given key in a given track. + Return the time at which the key is located. </description> </method> - <method name="track_get_key_time" qualifiers="const"> + <method name="track_get_key_transition" qualifiers="const"> <return type="float"> </return> <argument index="0" name="idx" type="int"> @@ -2639,164 +2641,205 @@ <argument index="1" name="key_idx" type="int"> </argument> <description> - Return the time at which the key is located. + Return the transition curve (easing) for a specific key (see built-in math function "ease"). </description> </method> - <method name="track_find_key" qualifiers="const"> - <return type="int"> - </return> + <method name="track_get_key_value" qualifiers="const"> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="time" type="float"> - </argument> - <argument index="2" name="exact" type="bool" default="false"> + <argument index="1" name="key_idx" type="int"> </argument> <description> - Find the key index by time in a given track. Optionally, only find it if the exact time is given. + Return the value of a given key in a given track. </description> </method> - <method name="track_set_interpolation_type"> + <method name="track_get_path" qualifiers="const"> + <return type="NodePath"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="interpolation" type="int"> - </argument> <description> - Set the interpolation type of a given track, from the INTERPOLATION_* enum. + Get the path of a track. for more information on the path format, see [method track_set_path] </description> </method> - <method name="track_get_interpolation_type" qualifiers="const"> + <method name="track_get_type" qualifiers="const"> <return type="int"> </return> <argument index="0" name="idx" type="int"> </argument> <description> - Return the interpolation type of a given track, from the INTERPOLATION_* enum. + Get the type of a track. </description> </method> - <method name="transform_track_interpolate" qualifiers="const"> - <return type="Array"> - </return> + <method name="track_insert_key"> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="time_sec" type="float"> + <argument index="1" name="time" type="float"> + </argument> + <argument index="2" name="key" type="Variant"> + </argument> + <argument index="3" name="transition" type="float" default="1"> </argument> <description> - Return the interpolated value of a transform track at a given time (in seconds). An array consisting of 3 elements: position ([Vector3]), rotation ([Quat]) and scale ([Vector3]). + Insert a generic key in a given track. </description> </method> - <method name="value_track_set_continuous"> + <method name="track_is_imported" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="continuous" type="bool"> - </argument> <description> - Enable or disable interpolation for a whole track. By default tracks are interpolated. </description> </method> - <method name="value_track_is_continuous" qualifiers="const"> - <return type="bool"> - </return> + <method name="track_move_down"> <argument index="0" name="idx" type="int"> </argument> <description> - Return whether interpolation is enabled or disabled for a whole track. By default tracks are interpolated. + Move a track down. </description> </method> - <method name="value_track_get_key_indices" qualifiers="const"> - <return type="IntArray"> - </return> + <method name="track_move_up"> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="time_sec" type="float"> + <description> + Move a track up. + </description> + </method> + <method name="track_remove_key"> + <argument index="0" name="idx" type="int"> </argument> - <argument index="2" name="delta" type="float"> + <argument index="1" name="key_idx" type="int"> </argument> <description> - Return all the key indices of a value track, given a position and delta time. + Remove a key by index in a given track. </description> </method> - <method name="method_track_get_key_indices" qualifiers="const"> - <return type="IntArray"> - </return> + <method name="track_remove_key_at_pos"> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="time_sec" type="float"> + <argument index="1" name="pos" type="float"> </argument> - <argument index="2" name="delta" type="float"> + <description> + Remove a key by position (seconds) in a given track. + </description> + </method> + <method name="track_set_imported"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="imported" type="bool"> </argument> <description> - Return all the key indices of a method track, given a position and delta time. </description> </method> - <method name="method_track_get_name" qualifiers="const"> - <return type="String"> - </return> + <method name="track_set_interpolation_type"> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="key_idx" type="int"> + <argument index="1" name="interpolation" type="int"> </argument> <description> - Return the method name of a method track. + Set the interpolation type of a given track, from the INTERPOLATION_* enum. </description> </method> - <method name="method_track_get_params" qualifiers="const"> - <return type="Array"> - </return> + <method name="track_set_key_transition"> <argument index="0" name="idx" type="int"> </argument> <argument index="1" name="key_idx" type="int"> </argument> + <argument index="2" name="transition" type="float"> + </argument> <description> - Return the arguments values to be called on a method track for a given key in a given track. + Set the transition curve (easing) for a specific key (see built-in math function "ease"). </description> </method> - <method name="set_length"> - <argument index="0" name="time_sec" type="float"> + <method name="track_set_key_value"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="key" type="int"> + </argument> + <argument index="2" name="value" type="Variant"> </argument> <description> - Set the total length of the animation (in seconds). Note that length is not delimited by the last key, as this one may be before or after the end to ensure correct interpolation and looping. + Set the value of an existing key. </description> </method> - <method name="get_length" qualifiers="const"> - <return type="float"> - </return> + <method name="track_set_path"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="path" type="NodePath"> + </argument> <description> - Return the total length of the animation (in seconds). + Set the path of a track. Paths must be valid scene-tree paths to a node, and must be specified starting from the parent node of the node that will reproduce the animation. Tracks that control properties or bones must append their name after the path, separated by ":". Example: "character/skeleton:ankle" or "character/mesh:transform/local" </description> </method> - <method name="set_loop"> - <argument index="0" name="enabled" type="bool"> + <method name="transform_track_insert_key"> + <return type="int"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="time" type="float"> + </argument> + <argument index="2" name="loc" type="Vector3"> + </argument> + <argument index="3" name="rot" type="Quat"> + </argument> + <argument index="4" name="scale" type="Vector3"> </argument> <description> - Set a flag indicating that the animation must loop. This is uses for correct interpolation of animation cycles, and for hinting the player that it must restart the animation. + Insert a transform key for a transform track. </description> </method> - <method name="has_loop" qualifiers="const"> - <return type="bool"> + <method name="transform_track_interpolate" qualifiers="const"> + <return type="Array"> </return> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="time_sec" type="float"> + </argument> <description> - Return whether the animation has the loop flag set. + Return the interpolated value of a transform track at a given time (in seconds). An array consisting of 3 elements: position ([Vector3]), rotation ([Quat]) and scale ([Vector3]). </description> </method> - <method name="set_step"> - <argument index="0" name="size_sec" type="float"> + <method name="value_track_get_key_indices" qualifiers="const"> + <return type="IntArray"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="time_sec" type="float"> + </argument> + <argument index="2" name="delta" type="float"> </argument> <description> + Return all the key indices of a value track, given a position and delta time. </description> </method> - <method name="get_step" qualifiers="const"> - <return type="float"> + <method name="value_track_get_update_mode" qualifiers="const"> + <return type="int"> </return> + <argument index="0" name="idx" type="int"> + </argument> <description> </description> </method> - <method name="clear"> + <method name="value_track_set_update_mode"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="mode" type="int"> + </argument> <description> - Clear the animation (clear all tracks and reset all). </description> </method> </methods> <constants> + <constant name="INTERPOLATION_NEAREST" value="0"> + No interpolation (nearest value). + </constant> + <constant name="INTERPOLATION_LINEAR" value="1"> + Linear interpolation. + </constant> + <constant name="INTERPOLATION_CUBIC" value="2"> + Cubic interpolation. + </constant> <constant name="TYPE_VALUE" value="0"> Value tracks set values in node properties, but only those which can be Interpolated. </constant> @@ -2806,14 +2849,11 @@ <constant name="TYPE_METHOD" value="2"> Method tracks call functions with given arguments per key. </constant> - <constant name="INTERPOLATION_NEAREST" value="0"> - No interpolation (nearest value). + <constant name="UPDATE_CONTINUOUS" value="0"> </constant> - <constant name="INTERPOLATION_LINEAR" value="1"> - Linear interpolation. + <constant name="UPDATE_DISCRETE" value="1"> </constant> - <constant name="INTERPOLATION_CUBIC" value="2"> - Cubic interpolation. + <constant name="UPDATE_TRIGGER" value="2"> </constant> </constants> </class> @@ -2836,29 +2876,46 @@ Add an animation resource to the player, which will be later referenced by the "name" argument. </description> </method> - <method name="remove_animation"> - <argument index="0" name="name" type="String"> + <method name="advance"> + <argument index="0" name="delta" type="float"> </argument> <description> - Remove an animation from the player (by supplying the same name used to add it). + Used to skip ahead or skip back in an animation. Delta is the time in seconds to skip. </description> </method> - <method name="rename_animation"> - <argument index="0" name="name" type="String"> + <method name="animation_get_next" qualifiers="const"> + <return type="String"> + </return> + <argument index="0" name="anim_from" type="String"> </argument> - <argument index="1" name="newname" type="String"> + <description> + </description> + </method> + <method name="animation_set_next"> + <argument index="0" name="anim_from" type="String"> + </argument> + <argument index="1" name="anim_to" type="String"> </argument> <description> - Rename an existing animation. </description> </method> - <method name="has_animation" qualifiers="const"> - <return type="bool"> + <method name="clear_caches"> + <description> + The animation player creates caches for faster access to the nodes it will animate. However, if a specific node is removed, it may not notice it, so clear_caches will force the player to search for the nodes again. + </description> + </method> + <method name="clear_queue"> + <description> + If animations are queued to play, clear them. + </description> + </method> + <method name="find_animation" qualifiers="const"> + <return type="String"> </return> - <argument index="0" name="name" type="String"> + <argument index="0" name="animation" type="Animation"> </argument> <description> - Request whether an [Animation] name exist within the player. + Find an animation name by resource. </description> </method> <method name="get_animation" qualifiers="const"> @@ -2877,49 +2934,50 @@ Get the list of names of the animations stored in the player. </description> </method> - <method name="animation_set_next"> - <argument index="0" name="anim_from" type="String"> - </argument> - <argument index="1" name="anim_to" type="String"> - </argument> + <method name="get_animation_process_mode" qualifiers="const"> + <return type="int"> + </return> <description> + Return the mode in which the animation player processes. See [method set_animation_process_mode]. </description> </method> - <method name="animation_get_next" qualifiers="const"> + <method name="get_autoplay" qualifiers="const"> <return type="String"> </return> - <argument index="0" name="anim_from" type="String"> - </argument> <description> + Return the name of the animation that will be automatically played when the scene is loaded. </description> </method> - <method name="set_blend_time"> + <method name="get_blend_time" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="anim_from" type="String"> </argument> <argument index="1" name="anim_to" type="String"> </argument> - <argument index="2" name="sec" type="float"> - </argument> <description> - Specify a blend time (in seconds) between two animations, referenced by their names. + Get the blend time between two animations, referenced by their names. </description> </method> - <method name="get_blend_time" qualifiers="const"> + <method name="get_current_animation" qualifiers="const"> + <return type="String"> + </return> + <description> + Return the name of the animation being played. + </description> + </method> + <method name="get_current_animation_length" qualifiers="const"> <return type="float"> </return> - <argument index="0" name="anim_from" type="String"> - </argument> - <argument index="1" name="anim_to" type="String"> - </argument> <description> - Get the blend time between two animations, referenced by their names. + Get the length (in seconds) of the currently being played animation. </description> </method> - <method name="set_default_blend_time"> - <argument index="0" name="sec" type="float"> - </argument> + <method name="get_current_animation_pos" qualifiers="const"> + <return type="float"> + </return> <description> - Set the default blend time between animations. + Get the position (in seconds) of the currently being played animation. </description> </method> <method name="get_default_blend_time" qualifiers="const"> @@ -2929,38 +2987,41 @@ Return the default blend time between animations. </description> </method> - <method name="play"> - <argument index="0" name="name" type="String" default=""""> - </argument> - <argument index="1" name="custom_blend" type="float" default="-1"> - </argument> - <argument index="2" name="custom_speed" type="float" default="1"> - </argument> - <argument index="3" name="from_end" type="bool" default="false"> - </argument> + <method name="get_pos" qualifiers="const"> + <return type="float"> + </return> <description> - Play a given animation by the animation name. Custom speed and blend times can be set. If custom speed is negative (-1), 'from_end' being true can play the animation backwards. + Return the playback position (in seconds) in an animation channel (or channel 0 if none is provided). </description> </method> - <method name="play_backwards"> - <argument index="0" name="name" type="String" default=""""> - </argument> - <argument index="1" name="custom_blend" type="float" default="-1"> - </argument> + <method name="get_root" qualifiers="const"> + <return type="NodePath"> + </return> <description> - Play a given animation by the animation name in reverse. + Return path to root node (see [method set_root]). </description> </method> - <method name="stop"> - <argument index="0" name="reset" type="bool" default="true"> + <method name="get_speed" qualifiers="const"> + <return type="float"> + </return> + <description> + Get the speed scaling ratio in a given animation channel (or channel 0 if none is provided). Default ratio is [i]1[/i] (no scaling). + </description> + </method> + <method name="has_animation" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="name" type="String"> </argument> <description> - Stop the currently playing animation. + Request whether an [Animation] name exist within the player. </description> </method> - <method name="stop_all"> + <method name="is_active" qualifiers="const"> + <return type="bool"> + </return> <description> - Stop playback of animations (deprecated). + Return true if the player is active. </description> </method> <method name="is_playing" qualifiers="const"> @@ -2970,18 +3031,26 @@ Return whether an animation is playing. </description> </method> - <method name="set_current_animation"> - <argument index="0" name="anim" type="String"> + <method name="play"> + <argument index="0" name="name" type="String" default=""""> + </argument> + <argument index="1" name="custom_blend" type="float" default="-1"> + </argument> + <argument index="2" name="custom_speed" type="float" default="1"> + </argument> + <argument index="3" name="from_end" type="bool" default="false"> </argument> <description> - Set the current animation (even if no playback occurs). Using set_current_animation() and set_active() are similar to calling play(). + Play a given animation by the animation name. Custom speed and blend times can be set. If custom speed is negative (-1), 'from_end' being true can play the animation backwards. </description> </method> - <method name="get_current_animation" qualifiers="const"> - <return type="String"> - </return> + <method name="play_backwards"> + <argument index="0" name="name" type="String" default=""""> + </argument> + <argument index="1" name="custom_blend" type="float" default="-1"> + </argument> <description> - Return the name of the animation being played. + Play a given animation by the animation name in reverse. </description> </method> <method name="queue"> @@ -2991,38 +3060,44 @@ Queue an animation for playback once the current one is done. </description> </method> - <method name="clear_queue"> + <method name="remove_animation"> + <argument index="0" name="name" type="String"> + </argument> <description> - If animations are queued to play, clear them. + Remove an animation from the player (by supplying the same name used to add it). </description> </method> - <method name="set_active"> - <argument index="0" name="active" type="bool"> + <method name="rename_animation"> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="newname" type="String"> </argument> <description> - Set the player as active (playing). If false, it - will do nothing. + Rename an existing animation. </description> </method> - <method name="is_active" qualifiers="const"> - <return type="bool"> - </return> + <method name="seek"> + <argument index="0" name="pos_sec" type="float"> + </argument> + <argument index="1" name="update" type="bool" default="false"> + </argument> <description> - Return true if the player is active. + Seek the animation to a given position in time (in seconds). If 'update' is true, the animation will be updated too, otherwise it will be updated at process time. </description> </method> - <method name="set_speed"> - <argument index="0" name="speed" type="float"> + <method name="set_active"> + <argument index="0" name="active" type="bool"> </argument> <description> - Set a speed scaling ratio in a given animation channel (or channel 0 if none is provided). Default ratio is [i]1[/i] (no scaling). + Set the player as active (playing). If false, it + will do nothing. </description> </method> - <method name="get_speed" qualifiers="const"> - <return type="float"> - </return> + <method name="set_animation_process_mode"> + <argument index="0" name="mode" type="int"> + </argument> <description> - Get the speed scaling ratio in a given animation channel (or channel 0 if none is provided). Default ratio is [i]1[/i] (no scaling). + Set the mode in which the animation player processes. By default, it processes on idle time (framerate dependent), but using fixed time works well for animating static collision bodies in 2D and 3D. See enum ANIMATION_PROCESS_*. </description> </method> <method name="set_autoplay"> @@ -3032,101 +3107,59 @@ Set the name of the animation that will be automatically played when the scene is loaded. </description> </method> - <method name="get_autoplay" qualifiers="const"> - <return type="String"> - </return> - <description> - Return the name of the animation that will be automatically played when the scene is loaded. - </description> - </method> - <method name="set_root"> - <argument index="0" name="path" type="NodePath"> + <method name="set_blend_time"> + <argument index="0" name="anim_from" type="String"> </argument> - <description> - AnimationPlayer resolves animation track paths from this node (which is relative to itself), by default root is "..", but it can be changed. - </description> - </method> - <method name="get_root" qualifiers="const"> - <return type="NodePath"> - </return> - <description> - Return path to root node (see [method set_root]). - </description> - </method> - <method name="seek"> - <argument index="0" name="pos_sec" type="float"> + <argument index="1" name="anim_to" type="String"> </argument> - <argument index="1" name="update" type="bool" default="false"> + <argument index="2" name="sec" type="float"> </argument> <description> - Seek the animation to a given position in time (in seconds). If 'update' is true, the animation will be updated too, otherwise it will be updated at process time. - </description> - </method> - <method name="get_pos" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the playback position (in seconds) in an animation channel (or channel 0 if none is provided). + Specify a blend time (in seconds) between two animations, referenced by their names. </description> </method> - <method name="find_animation" qualifiers="const"> - <return type="String"> - </return> - <argument index="0" name="animation" type="Animation"> + <method name="set_current_animation"> + <argument index="0" name="anim" type="String"> </argument> <description> - Find an animation name by resource. - </description> - </method> - <method name="clear_caches"> - <description> - The animation player creates caches for faster access to the nodes it will animate. However, if a specific node is removed, it may not notice it, so clear_caches will force the player to search for the nodes again. + Set the current animation (even if no playback occurs). Using set_current_animation() and set_active() are similar to calling play(). </description> </method> - <method name="set_animation_process_mode"> - <argument index="0" name="mode" type="int"> + <method name="set_default_blend_time"> + <argument index="0" name="sec" type="float"> </argument> <description> - Set the mode in which the animation player processes. By default, it processes on idle time (framerate dependent), but using fixed time works well for animating static collision bodies in 2D and 3D. See enum ANIMATION_PROCESS_*. + Set the default blend time between animations. </description> </method> - <method name="get_animation_process_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_root"> + <argument index="0" name="path" type="NodePath"> + </argument> <description> - Return the mode in which the animation player processes. See [method set_animation_process_mode]. + AnimationPlayer resolves animation track paths from this node (which is relative to itself), by default root is "..", but it can be changed. </description> </method> - <method name="get_current_animation_pos" qualifiers="const"> - <return type="float"> - </return> + <method name="set_speed"> + <argument index="0" name="speed" type="float"> + </argument> <description> - Get the position (in seconds) of the currently being played animation. + Set a speed scaling ratio in a given animation channel (or channel 0 if none is provided). Default ratio is [i]1[/i] (no scaling). </description> </method> - <method name="get_current_animation_length" qualifiers="const"> - <return type="float"> - </return> + <method name="stop"> + <argument index="0" name="reset" type="bool" default="true"> + </argument> <description> - Get the length (in seconds) of the currently being played animation. + Stop the currently playing animation. </description> </method> - <method name="advance"> - <argument index="0" name="delta" type="float"> - </argument> + <method name="stop_all"> <description> - Used to skip ahead or skip back in an animation. Delta is the time in seconds to skip. + Stop playback of animations (deprecated). </description> </method> </methods> <signals> - <signal name="animation_started"> - <argument index="0" name="name" type="String"> - </argument> - <description> - Notifies when an animation starts playing. - </description> - </signal> <signal name="animation_changed"> <argument index="0" name="old_name" type="String"> </argument> @@ -3136,6 +3169,13 @@ If the currently being played animation changes, this signal will notify of such change. </description> </signal> + <signal name="animation_started"> + <argument index="0" name="name" type="String"> + </argument> + <description> + Notifies when an animation starts playing. + </description> + </signal> <signal name="finished"> <description> Notifies when an animation finished playing. @@ -3168,53 +3208,26 @@ Add a node of a given type in the graph with given id. </description> </method> - <method name="node_exists" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="node" type="String"> - </argument> - <description> - Check if a node exists (by name). - </description> - </method> - <method name="node_rename"> - <return type="int"> - </return> - <argument index="0" name="node" type="String"> - </argument> - <argument index="1" name="new_name" type="String"> - </argument> - <description> - Rename a node in the graph. - </description> - </method> - <method name="node_get_type" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="id" type="String"> + <method name="advance"> + <argument index="0" name="delta" type="float"> </argument> <description> - Get the node type, will return from NODE_* enum. </description> </method> - <method name="node_get_input_count" qualifiers="const"> - <return type="int"> + <method name="animation_node_get_animation" qualifiers="const"> + <return type="Animation"> </return> <argument index="0" name="id" type="String"> </argument> <description> - Return the input count for a given node. Different types of nodes have different amount of inputs. </description> </method> - <method name="node_get_input_source" qualifiers="const"> + <method name="animation_node_get_master_animation" qualifiers="const"> <return type="String"> </return> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="idx" type="int"> - </argument> <description> - Return the input source for a given node input. </description> </method> <method name="animation_node_set_animation"> @@ -3226,11 +3239,13 @@ Set the animation for an animation node. </description> </method> - <method name="animation_node_get_animation" qualifiers="const"> - <return type="Animation"> - </return> + <method name="animation_node_set_filter_path"> <argument index="0" name="id" type="String"> </argument> + <argument index="1" name="path" type="NodePath"> + </argument> + <argument index="2" name="enable" type="bool"> + </argument> <description> </description> </method> @@ -3242,33 +3257,33 @@ <description> </description> </method> - <method name="animation_node_get_master_animation" qualifiers="const"> - <return type="String"> + <method name="blend2_node_get_amount" qualifiers="const"> + <return type="float"> </return> <argument index="0" name="id" type="String"> </argument> <description> </description> </method> - <method name="animation_node_set_filter_path"> + <method name="blend2_node_set_amount"> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="path" type="NodePath"> - </argument> - <argument index="2" name="enable" type="bool"> + <argument index="1" name="blend" type="float"> </argument> <description> </description> </method> - <method name="oneshot_node_set_fadein_time"> + <method name="blend2_node_set_filter_path"> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="time_sec" type="float"> + <argument index="1" name="path" type="NodePath"> + </argument> + <argument index="2" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="oneshot_node_get_fadein_time" qualifiers="const"> + <method name="blend3_node_get_amount" qualifiers="const"> <return type="float"> </return> <argument index="0" name="id" type="String"> @@ -3276,97 +3291,97 @@ <description> </description> </method> - <method name="oneshot_node_set_fadeout_time"> + <method name="blend3_node_set_amount"> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="time_sec" type="float"> + <argument index="1" name="blend" type="float"> </argument> <description> </description> </method> - <method name="oneshot_node_get_fadeout_time" qualifiers="const"> - <return type="float"> + <method name="blend4_node_get_amount" qualifiers="const"> + <return type="Vector2"> </return> <argument index="0" name="id" type="String"> </argument> <description> </description> </method> - <method name="oneshot_node_set_autorestart"> + <method name="blend4_node_set_amount"> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="enable" type="bool"> + <argument index="1" name="blend" type="Vector2"> </argument> <description> </description> </method> - <method name="oneshot_node_set_autorestart_delay"> + <method name="connect"> + <return type="int"> + </return> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="delay_sec" type="float"> + <argument index="1" name="dst_id" type="String"> + </argument> + <argument index="2" name="dst_input_idx" type="int"> </argument> <description> </description> </method> - <method name="oneshot_node_set_autorestart_random_delay"> + <method name="disconnect"> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="rand_sec" type="float"> + <argument index="1" name="dst_input_idx" type="int"> </argument> <description> </description> </method> - <method name="oneshot_node_has_autorestart" qualifiers="const"> - <return type="bool"> + <method name="get_animation_process_mode" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="id" type="String"> - </argument> <description> </description> </method> - <method name="oneshot_node_get_autorestart_delay" qualifiers="const"> - <return type="float"> + <method name="get_base_path" qualifiers="const"> + <return type="NodePath"> </return> - <argument index="0" name="id" type="String"> - </argument> <description> </description> </method> - <method name="oneshot_node_get_autorestart_random_delay" qualifiers="const"> - <return type="float"> + <method name="get_master_player" qualifiers="const"> + <return type="NodePath"> </return> - <argument index="0" name="id" type="String"> - </argument> <description> </description> </method> - <method name="oneshot_node_start"> - <argument index="0" name="id" type="String"> - </argument> + <method name="get_node_list"> + <return type="StringArray"> + </return> <description> </description> </method> - <method name="oneshot_node_stop"> - <argument index="0" name="id" type="String"> - </argument> + <method name="is_active" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="oneshot_node_is_active" qualifiers="const"> + <method name="is_connected" qualifiers="const"> <return type="bool"> </return> <argument index="0" name="id" type="String"> </argument> + <argument index="1" name="dst_id" type="String"> + </argument> + <argument index="2" name="dst_input_idx" type="int"> + </argument> <description> </description> </method> - <method name="oneshot_node_set_filter_path"> + <method name="mix_node_get_amount" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="path" type="NodePath"> - </argument> - <argument index="2" name="enable" type="bool"> - </argument> <description> </description> </method> @@ -3378,81 +3393,88 @@ <description> </description> </method> - <method name="mix_node_get_amount" qualifiers="const"> - <return type="float"> + <method name="node_exists" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="id" type="String"> + <argument index="0" name="node" type="String"> </argument> <description> + Check if a node exists (by name). </description> </method> - <method name="blend2_node_set_amount"> + <method name="node_get_input_count" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="blend" type="float"> - </argument> <description> + Return the input count for a given node. Different types of nodes have different amount of inputs. </description> </method> - <method name="blend2_node_get_amount" qualifiers="const"> - <return type="float"> + <method name="node_get_input_source" qualifiers="const"> + <return type="String"> </return> <argument index="0" name="id" type="String"> </argument> + <argument index="1" name="idx" type="int"> + </argument> <description> + Return the input source for a given node input. </description> </method> - <method name="blend2_node_set_filter_path"> + <method name="node_get_pos" qualifiers="const"> + <return type="Vector2"> + </return> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="path" type="NodePath"> - </argument> - <argument index="2" name="enable" type="bool"> - </argument> <description> </description> </method> - <method name="blend3_node_set_amount"> + <method name="node_get_type" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="blend" type="float"> - </argument> <description> + Get the node type, will return from NODE_* enum. </description> </method> - <method name="blend3_node_get_amount" qualifiers="const"> - <return type="float"> + <method name="node_rename"> + <return type="int"> </return> - <argument index="0" name="id" type="String"> + <argument index="0" name="node" type="String"> + </argument> + <argument index="1" name="new_name" type="String"> </argument> <description> + Rename a node in the graph. </description> </method> - <method name="blend4_node_set_amount"> + <method name="node_set_pos"> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="blend" type="Vector2"> + <argument index="1" name="screen_pos" type="Vector2"> </argument> <description> </description> </method> - <method name="blend4_node_get_amount" qualifiers="const"> - <return type="Vector2"> + <method name="oneshot_node_get_autorestart_delay" qualifiers="const"> + <return type="float"> </return> <argument index="0" name="id" type="String"> </argument> <description> </description> </method> - <method name="timescale_node_set_scale"> + <method name="oneshot_node_get_autorestart_random_delay" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="scale" type="float"> - </argument> <description> </description> </method> - <method name="timescale_node_get_scale" qualifiers="const"> + <method name="oneshot_node_get_fadein_time" qualifiers="const"> <return type="float"> </return> <argument index="0" name="id" type="String"> @@ -3460,59 +3482,55 @@ <description> </description> </method> - <method name="timeseek_node_seek"> + <method name="oneshot_node_get_fadeout_time" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="pos_sec" type="float"> - </argument> <description> </description> </method> - <method name="transition_node_set_input_count"> + <method name="oneshot_node_has_autorestart" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="count" type="int"> - </argument> <description> </description> </method> - <method name="transition_node_get_input_count" qualifiers="const"> - <return type="int"> + <method name="oneshot_node_is_active" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="id" type="String"> </argument> <description> </description> </method> - <method name="transition_node_delete_input"> + <method name="oneshot_node_set_autorestart"> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="input_idx" type="int"> + <argument index="1" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="transition_node_set_input_auto_advance"> + <method name="oneshot_node_set_autorestart_delay"> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="input_idx" type="int"> - </argument> - <argument index="2" name="enable" type="bool"> + <argument index="1" name="delay_sec" type="float"> </argument> <description> </description> </method> - <method name="transition_node_has_input_auto_advance" qualifiers="const"> - <return type="bool"> - </return> + <method name="oneshot_node_set_autorestart_random_delay"> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="input_idx" type="int"> + <argument index="1" name="rand_sec" type="float"> </argument> <description> </description> </method> - <method name="transition_node_set_xfade_time"> + <method name="oneshot_node_set_fadein_time"> <argument index="0" name="id" type="String"> </argument> <argument index="1" name="time_sec" type="float"> @@ -3520,43 +3538,37 @@ <description> </description> </method> - <method name="transition_node_get_xfade_time" qualifiers="const"> - <return type="float"> - </return> + <method name="oneshot_node_set_fadeout_time"> <argument index="0" name="id" type="String"> </argument> + <argument index="1" name="time_sec" type="float"> + </argument> <description> </description> </method> - <method name="transition_node_set_current"> + <method name="oneshot_node_set_filter_path"> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="input_idx" type="int"> + <argument index="1" name="path" type="NodePath"> + </argument> + <argument index="2" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="transition_node_get_current" qualifiers="const"> - <return type="int"> - </return> + <method name="oneshot_node_start"> <argument index="0" name="id" type="String"> </argument> <description> </description> </method> - <method name="node_set_pos"> + <method name="oneshot_node_stop"> <argument index="0" name="id" type="String"> </argument> - <argument index="1" name="screen_pos" type="Vector2"> - </argument> <description> </description> </method> - <method name="node_get_pos" qualifiers="const"> - <return type="Vector2"> - </return> - <argument index="0" name="id" type="String"> - </argument> + <method name="recompute_caches"> <description> </description> </method> @@ -3566,103 +3578,131 @@ <description> </description> </method> - <method name="connect"> - <return type="int"> - </return> - <argument index="0" name="id" type="String"> - </argument> - <argument index="1" name="dst_id" type="String"> - </argument> - <argument index="2" name="dst_input_idx" type="int"> - </argument> + <method name="reset"> <description> </description> </method> - <method name="is_connected" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="id" type="String"> - </argument> - <argument index="1" name="dst_id" type="String"> - </argument> - <argument index="2" name="dst_input_idx" type="int"> + <method name="set_active"> + <argument index="0" name="enabled" type="bool"> </argument> <description> </description> </method> - <method name="disconnect"> - <argument index="0" name="id" type="String"> + <method name="set_animation_process_mode"> + <argument index="0" name="mode" type="int"> </argument> - <argument index="1" name="dst_input_idx" type="int"> + <description> + </description> + </method> + <method name="set_base_path"> + <argument index="0" name="path" type="NodePath"> </argument> <description> </description> </method> - <method name="set_active"> - <argument index="0" name="enabled" type="bool"> + <method name="set_master_player"> + <argument index="0" name="nodepath" type="NodePath"> </argument> <description> </description> </method> - <method name="is_active" qualifiers="const"> - <return type="bool"> + <method name="timescale_node_get_scale" qualifiers="const"> + <return type="float"> </return> + <argument index="0" name="id" type="String"> + </argument> <description> </description> </method> - <method name="set_base_path"> - <argument index="0" name="path" type="NodePath"> + <method name="timescale_node_set_scale"> + <argument index="0" name="id" type="String"> + </argument> + <argument index="1" name="scale" type="float"> </argument> <description> </description> </method> - <method name="get_base_path" qualifiers="const"> - <return type="NodePath"> - </return> + <method name="timeseek_node_seek"> + <argument index="0" name="id" type="String"> + </argument> + <argument index="1" name="pos_sec" type="float"> + </argument> <description> </description> </method> - <method name="set_master_player"> - <argument index="0" name="nodepath" type="NodePath"> + <method name="transition_node_delete_input"> + <argument index="0" name="id" type="String"> + </argument> + <argument index="1" name="input_idx" type="int"> </argument> <description> </description> </method> - <method name="get_master_player" qualifiers="const"> - <return type="NodePath"> + <method name="transition_node_get_current" qualifiers="const"> + <return type="int"> </return> + <argument index="0" name="id" type="String"> + </argument> <description> </description> </method> - <method name="get_node_list"> - <return type="StringArray"> + <method name="transition_node_get_input_count" qualifiers="const"> + <return type="int"> </return> + <argument index="0" name="id" type="String"> + </argument> <description> </description> </method> - <method name="set_animation_process_mode"> - <argument index="0" name="mode" type="int"> + <method name="transition_node_get_xfade_time" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="id" type="String"> </argument> <description> </description> </method> - <method name="get_animation_process_mode" qualifiers="const"> - <return type="int"> + <method name="transition_node_has_input_auto_advance" qualifiers="const"> + <return type="bool"> </return> + <argument index="0" name="id" type="String"> + </argument> + <argument index="1" name="input_idx" type="int"> + </argument> <description> </description> </method> - <method name="advance"> - <argument index="0" name="delta" type="float"> + <method name="transition_node_set_current"> + <argument index="0" name="id" type="String"> + </argument> + <argument index="1" name="input_idx" type="int"> </argument> <description> </description> </method> - <method name="reset"> + <method name="transition_node_set_input_auto_advance"> + <argument index="0" name="id" type="String"> + </argument> + <argument index="1" name="input_idx" type="int"> + </argument> + <argument index="2" name="enable" type="bool"> + </argument> <description> </description> </method> - <method name="recompute_caches"> + <method name="transition_node_set_input_count"> + <argument index="0" name="id" type="String"> + </argument> + <argument index="1" name="count" type="int"> + </argument> + <description> + </description> + </method> + <method name="transition_node_set_xfade_time"> + <argument index="0" name="id" type="String"> + </argument> + <argument index="1" name="time_sec" type="float"> + </argument> <description> </description> </method> @@ -3698,44 +3738,34 @@ General purpose area detection for 3D physics. Areas can be used for detection of objects that enter/exit them, as well as overriding space parameters (changing gravity, damping, etc). For this, use any space override different from AREA_SPACE_OVERRIDE_DISABLE and point gravity at the center of mass. </description> <methods> - <method name="set_space_override_mode"> - <argument index="0" name="enable" type="int"> - </argument> + <method name="get_angular_damp" qualifiers="const"> + <return type="float"> + </return> <description> - Set the space override mode. This mode controls how an area affects gravity and damp. - AREA_SPACE_OVERRIDE_DISABLED: This area does not affect gravity/damp. These are generally areas that exist only to detect collisions, and objects entering or exiting them. - AREA_SPACE_OVERRIDE_COMBINE: This area adds its gravity/damp values to whatever has been calculated so far. This way, many overlapping areas can combine their physics to make interesting effects. - AREA_SPACE_OVERRIDE_COMBINE_REPLACE: This area adds its gravity/damp values to whatever has been calculated so far. Then stops taking into account the rest of the areas, even the default one. - AREA_SPACE_OVERRIDE_REPLACE: This area replaces any gravity/damp, even the default one, and stops taking into account the rest of the areas. - AREA_SPACE_OVERRIDE_REPLACE_COMBINE: This area replaces any gravity/damp calculated so far, but keeps calculating the rest of the areas, down to the default one. + Return the angular damp rate. </description> </method> - <method name="get_space_override_mode" qualifiers="const"> + <method name="get_collision_mask" qualifiers="const"> <return type="int"> </return> <description> - Return the space override mode. - </description> - </method> - <method name="set_gravity_is_point"> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - When overriding space parameters, this method sets whether this area has a center of gravity. To set/get the location of the center of gravity, use [method set_gravity_vector]/[method get_gravity_vector]. + Return the physics layers this area can scan for collisions. </description> </method> - <method name="is_gravity_a_point" qualifiers="const"> + <method name="get_collision_mask_bit" qualifiers="const"> <return type="bool"> </return> + <argument index="0" name="bit" type="int"> + </argument> <description> - Return whether gravity is a point. A point gravity will attract objects towards it, as opposed to a gravity vector, which moves them in a given direction. + Return an individual bit on the collision mask. </description> </method> - <method name="set_gravity_distance_scale"> - <argument index="0" name="distance_scale" type="float"> - </argument> + <method name="get_gravity" qualifiers="const"> + <return type="float"> + </return> <description> - Set the falloff factor for point gravity. The greater this value is, the faster the strength of gravity decreases with the square of distance. + Return the gravity intensity. </description> </method> <method name="get_gravity_distance_scale" qualifiers="const"> @@ -3745,14 +3775,6 @@ Return the falloff factor for point gravity. </description> </method> - <method name="set_gravity_vector"> - <argument index="0" name="vector" type="Vector3"> - </argument> - <description> - Set the gravity vector. This vector does not have to be normalized. - If gravity is a point (see [method is_gravity_a_point]), this will be the attraction center. - </description> - </method> <method name="get_gravity_vector" qualifiers="const"> <return type="Vector3"> </return> @@ -3760,94 +3782,109 @@ Return the gravity vector. If gravity is a point (see [method is_gravity_a_point]), this will be the attraction center. </description> </method> - <method name="set_gravity"> - <argument index="0" name="gravity" type="float"> + <method name="get_layer_mask" qualifiers="const"> + <return type="int"> + </return> + <description> + Return the physics layer this area is in. + </description> + </method> + <method name="get_layer_mask_bit" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="bit" type="int"> </argument> <description> - Set the gravity intensity. This is useful to alter the force of gravity without altering its direction. - This value multiplies the gravity vector, whether it is the given vector ([method set_gravity_vector]), or a calculated one (when using a center of gravity). + Return an individual bit on the layer mask. </description> </method> - <method name="get_gravity" qualifiers="const"> + <method name="get_linear_damp" qualifiers="const"> <return type="float"> </return> <description> - Return the gravity intensity. + Return the linear damp rate. </description> </method> - <method name="set_angular_damp"> - <argument index="0" name="angular_damp" type="float"> - </argument> + <method name="get_overlapping_areas" qualifiers="const"> + <return type="Array"> + </return> <description> - Set the rate at which objects stop spinning in this area, if there are not any other forces making it spin. The value is a fraction of its current speed, lost per second. Thus, a value of 1.0 should mean stopping immediately, and 0.0 means the object never stops. - In practice, as the fraction of speed lost gets smaller with each frame, a value of 1.0 does not mean the object will stop in exactly one second. Only when the physics calculations are done at 1 frame per second, it does stop in a second. + Return a list of the areas that are totally or partially inside this area. </description> </method> - <method name="get_angular_damp" qualifiers="const"> + <method name="get_overlapping_bodies" qualifiers="const"> + <return type="Array"> + </return> + <description> + Return a list of the bodies ([PhysicsBody]) that are totally or partially inside this area. + </description> + </method> + <method name="get_priority" qualifiers="const"> <return type="float"> </return> <description> - Return the angular damp rate. + Return the processing order of this area. </description> </method> - <method name="set_linear_damp"> - <argument index="0" name="linear_damp" type="float"> - </argument> + <method name="get_space_override_mode" qualifiers="const"> + <return type="int"> + </return> <description> - Set the rate at which objects stop moving in this area, if there are not any other forces moving it. The value is a fraction of its current speed, lost per second. Thus, a value of 1.0 should mean stopping immediately, and 0.0 means the object never stops. - In practice, as the fraction of speed lost gets smaller with each frame, a value of 1.0 does not mean the object will stop in exactly one second. Only when the physics calculations are done at 1 frame per second, it does stop in a second. + Return the space override mode. </description> </method> - <method name="get_linear_damp" qualifiers="const"> - <return type="float"> + <method name="is_gravity_a_point" qualifiers="const"> + <return type="bool"> </return> <description> - Return the linear damp rate. + Return whether gravity is a point. A point gravity will attract objects towards it, as opposed to a gravity vector, which moves them in a given direction. </description> </method> - <method name="set_priority"> - <argument index="0" name="priority" type="float"> - </argument> + <method name="is_monitorable" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the order in which the area is processed. Greater values mean the area gets processed first. This is useful for areas which have an space override different from AREA_SPACE_OVERRIDE_DISABLED or AREA_SPACE_OVERRIDE_COMBINE, as they replace values, and are thus order-dependent. - Areas with the same priority value get evaluated in an unpredictable order, and should be differentiated if evaluation order is to be important. + Return whether this area can be detected by other, monitoring, areas. </description> </method> - <method name="get_priority" qualifiers="const"> - <return type="float"> + <method name="is_monitoring_enabled" qualifiers="const"> + <return type="bool"> </return> <description> - Return the processing order of this area. + Return whether this area detects bodies/areas entering/exiting it. </description> </method> - <method name="set_collision_mask"> - <argument index="0" name="collision_mask" type="int"> + <method name="overlaps_area" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="area" type="Object"> </argument> <description> - Set the physics layers this area can scan for collisions. + Return whether the area passed is totally or partially inside this area. </description> </method> - <method name="get_collision_mask" qualifiers="const"> - <return type="int"> + <method name="overlaps_body" qualifiers="const"> + <return type="bool"> </return> + <argument index="0" name="body" type="Object"> + </argument> <description> - Return the physics layers this area can scan for collisions. + Return whether the body passed is totally or partially inside this area. </description> </method> - <method name="set_layer_mask"> - <argument index="0" name="layer_mask" type="int"> + <method name="set_angular_damp"> + <argument index="0" name="angular_damp" type="float"> </argument> <description> - Set the physics layers this area is in. - Collidable objects can exist in any of 32 different layers. These layers are not visual, but more of a tagging system instead. A collidable can use these layers/tags to select with which objects it can collide, using [method set_collision_mask]. - A contact is detected if object A is in any of the layers that object B scans, or object B is in any layer scanned by object A. + Set the rate at which objects stop spinning in this area, if there are not any other forces making it spin. The value is a fraction of its current speed, lost per second. Thus, a value of 1.0 should mean stopping immediately, and 0.0 means the object never stops. + In practice, as the fraction of speed lost gets smaller with each frame, a value of 1.0 does not mean the object will stop in exactly one second. Only when the physics calculations are done at 1 frame per second, it does stop in a second. </description> </method> - <method name="get_layer_mask" qualifiers="const"> - <return type="int"> - </return> + <method name="set_collision_mask"> + <argument index="0" name="collision_mask" type="int"> + </argument> <description> - Return the physics layer this area is in. + Set the physics layers this area can scan for collisions. </description> </method> <method name="set_collision_mask_bit"> @@ -3859,123 +3896,126 @@ Set/clear individual bits on the collision mask. This makes selecting the areas scanned easier. </description> </method> - <method name="get_collision_mask_bit" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="bit" type="int"> + <method name="set_enable_monitoring"> + <argument index="0" name="enable" type="bool"> </argument> <description> - Return an individual bit on the collision mask. + Set whether this area can detect bodies/areas entering/exiting it. </description> </method> - <method name="set_layer_mask_bit"> - <argument index="0" name="bit" type="int"> - </argument> - <argument index="1" name="value" type="bool"> + <method name="set_gravity"> + <argument index="0" name="gravity" type="float"> </argument> <description> - Set/clear individual bits on the layer mask. This makes getting an area in/out of only one layer easier. + Set the gravity intensity. This is useful to alter the force of gravity without altering its direction. + This value multiplies the gravity vector, whether it is the given vector ([method set_gravity_vector]), or a calculated one (when using a center of gravity). </description> </method> - <method name="get_layer_mask_bit" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="bit" type="int"> + <method name="set_gravity_distance_scale"> + <argument index="0" name="distance_scale" type="float"> </argument> <description> - Return an individual bit on the layer mask. + Set the falloff factor for point gravity. The greater this value is, the faster the strength of gravity decreases with the square of distance. </description> </method> - <method name="set_monitorable"> + <method name="set_gravity_is_point"> <argument index="0" name="enable" type="bool"> </argument> <description> - Set whether this area can be detected by other, monitoring, areas. Only areas need to be marked as monitorable. Bodies are always so. + When overriding space parameters, this method sets whether this area has a center of gravity. To set/get the location of the center of gravity, use [method set_gravity_vector]/[method get_gravity_vector]. </description> </method> - <method name="is_monitorable" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_gravity_vector"> + <argument index="0" name="vector" type="Vector3"> + </argument> <description> - Return whether this area can be detected by other, monitoring, areas. + Set the gravity vector. This vector does not have to be normalized. + If gravity is a point (see [method is_gravity_a_point]), this will be the attraction center. </description> </method> - <method name="set_enable_monitoring"> - <argument index="0" name="enable" type="bool"> + <method name="set_layer_mask"> + <argument index="0" name="layer_mask" type="int"> </argument> <description> - Set whether this area can detect bodies/areas entering/exiting it. + Set the physics layers this area is in. + Collidable objects can exist in any of 32 different layers. These layers are not visual, but more of a tagging system instead. A collidable can use these layers/tags to select with which objects it can collide, using [method set_collision_mask]. + A contact is detected if object A is in any of the layers that object B scans, or object B is in any layer scanned by object A. </description> </method> - <method name="is_monitoring_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_layer_mask_bit"> + <argument index="0" name="bit" type="int"> + </argument> + <argument index="1" name="value" type="bool"> + </argument> <description> - Return whether this area detects bodies/areas entering/exiting it. + Set/clear individual bits on the layer mask. This makes getting an area in/out of only one layer easier. </description> </method> - <method name="get_overlapping_bodies" qualifiers="const"> - <return type="Array"> - </return> + <method name="set_linear_damp"> + <argument index="0" name="linear_damp" type="float"> + </argument> <description> - Return a list of the bodies ([PhysicsBody]) that are totally or partially inside this area. + Set the rate at which objects stop moving in this area, if there are not any other forces moving it. The value is a fraction of its current speed, lost per second. Thus, a value of 1.0 should mean stopping immediately, and 0.0 means the object never stops. + In practice, as the fraction of speed lost gets smaller with each frame, a value of 1.0 does not mean the object will stop in exactly one second. Only when the physics calculations are done at 1 frame per second, it does stop in a second. </description> </method> - <method name="get_overlapping_areas" qualifiers="const"> - <return type="Array"> - </return> + <method name="set_monitorable"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Return a list of the areas that are totally or partially inside this area. + Set whether this area can be detected by other, monitoring, areas. Only areas need to be marked as monitorable. Bodies are always so. </description> </method> - <method name="overlaps_body" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="body" type="Object"> + <method name="set_priority"> + <argument index="0" name="priority" type="float"> </argument> <description> - Return whether the body passed is totally or partially inside this area. + Set the order in which the area is processed. Greater values mean the area gets processed first. This is useful for areas which have an space override different from AREA_SPACE_OVERRIDE_DISABLED or AREA_SPACE_OVERRIDE_COMBINE, as they replace values, and are thus order-dependent. + Areas with the same priority value get evaluated in an unpredictable order, and should be differentiated if evaluation order is to be important. </description> </method> - <method name="overlaps_area" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="area" type="Object"> + <method name="set_space_override_mode"> + <argument index="0" name="enable" type="int"> </argument> <description> - Return whether the area passed is totally or partially inside this area. + Set the space override mode. This mode controls how an area affects gravity and damp. + AREA_SPACE_OVERRIDE_DISABLED: This area does not affect gravity/damp. These are generally areas that exist only to detect collisions, and objects entering or exiting them. + AREA_SPACE_OVERRIDE_COMBINE: This area adds its gravity/damp values to whatever has been calculated so far. This way, many overlapping areas can combine their physics to make interesting effects. + AREA_SPACE_OVERRIDE_COMBINE_REPLACE: This area adds its gravity/damp values to whatever has been calculated so far. Then stops taking into account the rest of the areas, even the default one. + AREA_SPACE_OVERRIDE_REPLACE: This area replaces any gravity/damp, even the default one, and stops taking into account the rest of the areas. + AREA_SPACE_OVERRIDE_REPLACE_COMBINE: This area replaces any gravity/damp calculated so far, but keeps calculating the rest of the areas, down to the default one. </description> </method> </methods> <signals> - <signal name="body_enter"> - <argument index="0" name="body" type="Object"> + <signal name="area_enter"> + <argument index="0" name="area" type="Object"> </argument> <description> - This signal is triggered only once when a body enters this area. The only parameter passed is the body that entered this area. + This signal is triggered only once when an area enters this area. The only parameter passed is the area that entered this area. </description> </signal> - <signal name="body_enter_shape"> - <argument index="0" name="body_id" type="int"> + <signal name="area_enter_shape"> + <argument index="0" name="area_id" type="int"> </argument> - <argument index="1" name="body" type="Object"> + <argument index="1" name="area" type="Object"> </argument> - <argument index="2" name="body_shape" type="int"> + <argument index="2" name="area_shape" type="int"> </argument> <argument index="3" name="area_shape" type="int"> </argument> <description> - This signal triggers only once when a body enters this area. The first parameter is the body's [RID]. The second one is the body as an object. The third one is the index of the shape of the body that entered this area, and the fourth one is the index of the shape in this area that reported the entering. + This signal triggers only once when an area enters this area. The first parameter is the area's [RID]. The second one is the area as an object. The third one is the index of the shape entering this area, and the fourth one is the index of the shape in this area that reported the entering. </description> </signal> - <signal name="area_enter"> + <signal name="area_exit"> <argument index="0" name="area" type="Object"> </argument> <description> - This signal is triggered only once when an area enters this area. The only parameter passed is the area that entered this area. + This signal is triggered only once when an area exits this area. The only parameter passed is the area that exited this area. </description> </signal> - <signal name="area_enter_shape"> + <signal name="area_exit_shape"> <argument index="0" name="area_id" type="int"> </argument> <argument index="1" name="area" type="Object"> @@ -3985,17 +4025,17 @@ <argument index="3" name="area_shape" type="int"> </argument> <description> - This signal triggers only once when an area enters this area. The first parameter is the area's [RID]. The second one is the area as an object. The third one is the index of the shape entering this area, and the fourth one is the index of the shape in this area that reported the entering. + This signal triggers only once when an area exits this area. The first parameter is the area's [RID]. The second one is the area as an object. The third one is the index of the shape entering this area, and the fourth one is the index of the shape in this area that reported the entering. </description> </signal> - <signal name="body_exit"> + <signal name="body_enter"> <argument index="0" name="body" type="Object"> </argument> <description> - This signal is triggered only once when a body exits this area. The only parameter passed is the body that exited this area. + This signal is triggered only once when a body enters this area. The only parameter passed is the body that entered this area. </description> </signal> - <signal name="body_exit_shape"> + <signal name="body_enter_shape"> <argument index="0" name="body_id" type="int"> </argument> <argument index="1" name="body" type="Object"> @@ -4005,27 +4045,27 @@ <argument index="3" name="area_shape" type="int"> </argument> <description> - This signal triggers only once when a body exits this area. The first parameter is the body's [RID]. The second one is the body as an object. The third one is the index of the shape exiting this area, and the fourth one is the index of the shape in this area that reported the exit. + This signal triggers only once when a body enters this area. The first parameter is the body's [RID]. The second one is the body as an object. The third one is the index of the shape of the body that entered this area, and the fourth one is the index of the shape in this area that reported the entering. </description> </signal> - <signal name="area_exit"> - <argument index="0" name="area" type="Object"> + <signal name="body_exit"> + <argument index="0" name="body" type="Object"> </argument> <description> - This signal is triggered only once when an area exits this area. The only parameter passed is the area that exited this area. + This signal is triggered only once when a body exits this area. The only parameter passed is the body that exited this area. </description> </signal> - <signal name="area_exit_shape"> - <argument index="0" name="area_id" type="int"> + <signal name="body_exit_shape"> + <argument index="0" name="body_id" type="int"> </argument> - <argument index="1" name="area" type="Object"> + <argument index="1" name="body" type="Object"> </argument> - <argument index="2" name="area_shape" type="int"> + <argument index="2" name="body_shape" type="int"> </argument> <argument index="3" name="area_shape" type="int"> </argument> <description> - This signal triggers only once when an area exits this area. The first parameter is the area's [RID]. The second one is the area as an object. The third one is the index of the shape entering this area, and the fourth one is the index of the shape in this area that reported the entering. + This signal triggers only once when a body exits this area. The first parameter is the body's [RID]. The second one is the body as an object. The third one is the index of the shape exiting this area, and the fourth one is the index of the shape in this area that reported the exit. </description> </signal> </signals> @@ -4040,44 +4080,34 @@ General purpose area detection for 2D physics. Areas can be used for detection of objects that enter/exit them, as well as overriding space parameters (changing gravity, damping, etc). For this, use any space override different from AREA_SPACE_OVERRIDE_DISABLE and point gravity at the center of mass. </description> <methods> - <method name="set_space_override_mode"> - <argument index="0" name="enable" type="int"> - </argument> + <method name="get_angular_damp" qualifiers="const"> + <return type="float"> + </return> <description> - Set the space override mode. This mode controls how an area affects gravity and damp. - AREA_SPACE_OVERRIDE_DISABLED: This area does not affect gravity/damp. These are generally areas that exist only to detect collisions, and objects entering or exiting them. - AREA_SPACE_OVERRIDE_COMBINE: This area adds its gravity/damp values to whatever has been calculated so far. This way, many overlapping areas can combine their physics to make interesting effects. - AREA_SPACE_OVERRIDE_COMBINE_REPLACE: This area adds its gravity/damp values to whatever has been calculated so far. Then stops taking into account the rest of the areas, even the default one. - AREA_SPACE_OVERRIDE_REPLACE: This area replaces any gravity/damp, even the default one, and stops taking into account the rest of the areas. - AREA_SPACE_OVERRIDE_REPLACE_COMBINE: This area replaces any gravity/damp calculated so far, but keeps calculating the rest of the areas, down to the default one. + Return the angular damp rate. </description> </method> - <method name="get_space_override_mode" qualifiers="const"> + <method name="get_collision_mask" qualifiers="const"> <return type="int"> </return> <description> - Return the space override mode. - </description> - </method> - <method name="set_gravity_is_point"> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - When overriding space parameters, this method sets whether this area has a center of gravity. To set/get the location of the center of gravity, use [method set_gravity_vector]/[method get_gravity_vector]. + Return the physics layers this area can scan for collisions. </description> </method> - <method name="is_gravity_a_point" qualifiers="const"> + <method name="get_collision_mask_bit" qualifiers="const"> <return type="bool"> </return> + <argument index="0" name="bit" type="int"> + </argument> <description> - Return whether gravity is a point. A point gravity will attract objects towards it, as opposed to a gravity vector, which moves them in a given direction. + Return an individual bit on the collision mask. </description> </method> - <method name="set_gravity_distance_scale"> - <argument index="0" name="distance_scale" type="float"> - </argument> + <method name="get_gravity" qualifiers="const"> + <return type="float"> + </return> <description> - Set the falloff factor for point gravity. The greater this value is, the faster the strength of gravity decreases with the square of distance. + Return the gravity intensity. </description> </method> <method name="get_gravity_distance_scale" qualifiers="const"> @@ -4087,14 +4117,6 @@ Return the falloff factor for point gravity. </description> </method> - <method name="set_gravity_vector"> - <argument index="0" name="vector" type="Vector2"> - </argument> - <description> - Set the gravity vector. This vector does not have to be normalized. - If gravity is a point (see [method is_gravity_a_point]), this will be the attraction center. - </description> - </method> <method name="get_gravity_vector" qualifiers="const"> <return type="Vector2"> </return> @@ -4102,94 +4124,109 @@ Return the gravity vector. If gravity is a point (see [method is_gravity_a_point]), this will be the attraction center. </description> </method> - <method name="set_gravity"> - <argument index="0" name="gravity" type="float"> + <method name="get_layer_mask" qualifiers="const"> + <return type="int"> + </return> + <description> + Return the physics layer this area is in. + </description> + </method> + <method name="get_layer_mask_bit" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="bit" type="int"> </argument> <description> - Set the gravity intensity. This is useful to alter the force of gravity without altering its direction. - This value multiplies the gravity vector, whether it is the given vector ([method set_gravity_vector]), or a calculated one (when using a center of gravity). + Return an individual bit on the layer mask. </description> </method> - <method name="get_gravity" qualifiers="const"> + <method name="get_linear_damp" qualifiers="const"> <return type="float"> </return> <description> - Return the gravity intensity. + Return the linear damp rate. </description> </method> - <method name="set_linear_damp"> - <argument index="0" name="linear_damp" type="float"> - </argument> + <method name="get_overlapping_areas" qualifiers="const"> + <return type="Array"> + </return> <description> - Set the rate at which objects stop moving in this area, if there are not any other forces moving it. The value is a fraction of its current speed, lost per second. Thus, a value of 1.0 should mean stopping immediately, and 0.0 means the object never stops. - In practice, as the fraction of speed lost gets smaller with each frame, a value of 1.0 does not mean the object will stop in exactly one second. Only when the physics calculations are done at 1 frame per second, it does stop in a second. + Return a list of the areas that are totally or partially inside this area. </description> </method> - <method name="get_linear_damp" qualifiers="const"> + <method name="get_overlapping_bodies" qualifiers="const"> + <return type="Array"> + </return> + <description> + Return a list of the bodies ([PhysicsBody2D]) that are totally or partially inside this area. + </description> + </method> + <method name="get_priority" qualifiers="const"> <return type="float"> </return> <description> - Return the linear damp rate. + Return the processing order of this area. </description> </method> - <method name="set_angular_damp"> - <argument index="0" name="angular_damp" type="float"> - </argument> + <method name="get_space_override_mode" qualifiers="const"> + <return type="int"> + </return> <description> - Set the rate at which objects stop spinning in this area, if there are not any other forces making it spin. The value is a fraction of its current speed, lost per second. Thus, a value of 1.0 should mean stopping immediately, and 0.0 means the object never stops. - In practice, as the fraction of speed lost gets smaller with each frame, a value of 1.0 does not mean the object will stop in exactly one second. Only when the physics calculations are done at 1 frame per second, it does stop in a second. + Return the space override mode. </description> </method> - <method name="get_angular_damp" qualifiers="const"> - <return type="float"> + <method name="is_gravity_a_point" qualifiers="const"> + <return type="bool"> </return> <description> - Return the angular damp rate. + Return whether gravity is a point. A point gravity will attract objects towards it, as opposed to a gravity vector, which moves them in a given direction. </description> </method> - <method name="set_priority"> - <argument index="0" name="priority" type="float"> - </argument> + <method name="is_monitorable" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the order in which the area is processed. Greater values mean the area gets processed first. This is useful for areas which have an space override different from AREA_SPACE_OVERRIDE_DISABLED or AREA_SPACE_OVERRIDE_COMBINE, as they replace values, and are thus order-dependent. - Areas with the same priority value get evaluated in an unpredictable order, and should be differentiated if evaluation order is to be important. + Return whether this area can be detected by other, monitoring, areas. </description> </method> - <method name="get_priority" qualifiers="const"> - <return type="float"> + <method name="is_monitoring_enabled" qualifiers="const"> + <return type="bool"> </return> <description> - Return the processing order of this area. + Return whether this area detects bodies/areas entering/exiting it. </description> </method> - <method name="set_collision_mask"> - <argument index="0" name="collision_mask" type="int"> + <method name="overlaps_area" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="area" type="Object"> </argument> <description> - Set the physics layers this area can scan for collisions. + Return whether the area passed is totally or partially inside this area. </description> </method> - <method name="get_collision_mask" qualifiers="const"> - <return type="int"> + <method name="overlaps_body" qualifiers="const"> + <return type="bool"> </return> + <argument index="0" name="body" type="Object"> + </argument> <description> - Return the physics layers this area can scan for collisions. + Return whether the body passed is totally or partially inside this area. </description> </method> - <method name="set_layer_mask"> - <argument index="0" name="layer_mask" type="int"> + <method name="set_angular_damp"> + <argument index="0" name="angular_damp" type="float"> </argument> <description> - Set the physics layers this area is in. - Collidable objects can exist in any of 32 different layers. These layers are not visual, but more of a tagging system instead. A collidable can use these layers/tags to select with which objects it can collide, using [method set_collision_mask]. - A contact is detected if object A is in any of the layers that object B scans, or object B is in any layer scanned by object A. + Set the rate at which objects stop spinning in this area, if there are not any other forces making it spin. The value is a fraction of its current speed, lost per second. Thus, a value of 1.0 should mean stopping immediately, and 0.0 means the object never stops. + In practice, as the fraction of speed lost gets smaller with each frame, a value of 1.0 does not mean the object will stop in exactly one second. Only when the physics calculations are done at 1 frame per second, it does stop in a second. </description> </method> - <method name="get_layer_mask" qualifiers="const"> - <return type="int"> - </return> + <method name="set_collision_mask"> + <argument index="0" name="collision_mask" type="int"> + </argument> <description> - Return the physics layer this area is in. + Set the physics layers this area can scan for collisions. </description> </method> <method name="set_collision_mask_bit"> @@ -4201,123 +4238,126 @@ Set/clear individual bits on the collision mask. This makes selecting the areas scanned easier. </description> </method> - <method name="get_collision_mask_bit" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="bit" type="int"> + <method name="set_enable_monitoring"> + <argument index="0" name="enable" type="bool"> </argument> <description> - Return an individual bit on the collision mask. + Set whether this area can detect bodies/areas entering/exiting it. </description> </method> - <method name="set_layer_mask_bit"> - <argument index="0" name="bit" type="int"> - </argument> - <argument index="1" name="value" type="bool"> + <method name="set_gravity"> + <argument index="0" name="gravity" type="float"> </argument> <description> - Set/clear individual bits on the layer mask. This makes getting an area in/out of only one layer easier. + Set the gravity intensity. This is useful to alter the force of gravity without altering its direction. + This value multiplies the gravity vector, whether it is the given vector ([method set_gravity_vector]), or a calculated one (when using a center of gravity). </description> </method> - <method name="get_layer_mask_bit" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="bit" type="int"> + <method name="set_gravity_distance_scale"> + <argument index="0" name="distance_scale" type="float"> </argument> <description> - Return an individual bit on the layer mask. + Set the falloff factor for point gravity. The greater this value is, the faster the strength of gravity decreases with the square of distance. </description> </method> - <method name="set_enable_monitoring"> + <method name="set_gravity_is_point"> <argument index="0" name="enable" type="bool"> </argument> <description> - Set whether this area can detect bodies/areas entering/exiting it. + When overriding space parameters, this method sets whether this area has a center of gravity. To set/get the location of the center of gravity, use [method set_gravity_vector]/[method get_gravity_vector]. </description> </method> - <method name="is_monitoring_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_gravity_vector"> + <argument index="0" name="vector" type="Vector2"> + </argument> <description> - Return whether this area detects bodies/areas entering/exiting it. + Set the gravity vector. This vector does not have to be normalized. + If gravity is a point (see [method is_gravity_a_point]), this will be the attraction center. </description> </method> - <method name="set_monitorable"> - <argument index="0" name="enable" type="bool"> + <method name="set_layer_mask"> + <argument index="0" name="layer_mask" type="int"> </argument> <description> - Set whether this area can be detected by other, monitoring, areas. Only areas need to be marked as monitorable. Bodies are always so. + Set the physics layers this area is in. + Collidable objects can exist in any of 32 different layers. These layers are not visual, but more of a tagging system instead. A collidable can use these layers/tags to select with which objects it can collide, using [method set_collision_mask]. + A contact is detected if object A is in any of the layers that object B scans, or object B is in any layer scanned by object A. </description> </method> - <method name="is_monitorable" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_layer_mask_bit"> + <argument index="0" name="bit" type="int"> + </argument> + <argument index="1" name="value" type="bool"> + </argument> <description> - Return whether this area can be detected by other, monitoring, areas. + Set/clear individual bits on the layer mask. This makes getting an area in/out of only one layer easier. </description> </method> - <method name="get_overlapping_bodies" qualifiers="const"> - <return type="Array"> - </return> + <method name="set_linear_damp"> + <argument index="0" name="linear_damp" type="float"> + </argument> <description> - Return a list of the bodies ([PhysicsBody2D]) that are totally or partially inside this area. + Set the rate at which objects stop moving in this area, if there are not any other forces moving it. The value is a fraction of its current speed, lost per second. Thus, a value of 1.0 should mean stopping immediately, and 0.0 means the object never stops. + In practice, as the fraction of speed lost gets smaller with each frame, a value of 1.0 does not mean the object will stop in exactly one second. Only when the physics calculations are done at 1 frame per second, it does stop in a second. </description> </method> - <method name="get_overlapping_areas" qualifiers="const"> - <return type="Array"> - </return> + <method name="set_monitorable"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Return a list of the areas that are totally or partially inside this area. + Set whether this area can be detected by other, monitoring, areas. Only areas need to be marked as monitorable. Bodies are always so. </description> </method> - <method name="overlaps_body" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="body" type="Object"> + <method name="set_priority"> + <argument index="0" name="priority" type="float"> </argument> <description> - Return whether the body passed is totally or partially inside this area. + Set the order in which the area is processed. Greater values mean the area gets processed first. This is useful for areas which have an space override different from AREA_SPACE_OVERRIDE_DISABLED or AREA_SPACE_OVERRIDE_COMBINE, as they replace values, and are thus order-dependent. + Areas with the same priority value get evaluated in an unpredictable order, and should be differentiated if evaluation order is to be important. </description> </method> - <method name="overlaps_area" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="area" type="Object"> + <method name="set_space_override_mode"> + <argument index="0" name="enable" type="int"> </argument> <description> - Return whether the area passed is totally or partially inside this area. + Set the space override mode. This mode controls how an area affects gravity and damp. + AREA_SPACE_OVERRIDE_DISABLED: This area does not affect gravity/damp. These are generally areas that exist only to detect collisions, and objects entering or exiting them. + AREA_SPACE_OVERRIDE_COMBINE: This area adds its gravity/damp values to whatever has been calculated so far. This way, many overlapping areas can combine their physics to make interesting effects. + AREA_SPACE_OVERRIDE_COMBINE_REPLACE: This area adds its gravity/damp values to whatever has been calculated so far. Then stops taking into account the rest of the areas, even the default one. + AREA_SPACE_OVERRIDE_REPLACE: This area replaces any gravity/damp, even the default one, and stops taking into account the rest of the areas. + AREA_SPACE_OVERRIDE_REPLACE_COMBINE: This area replaces any gravity/damp calculated so far, but keeps calculating the rest of the areas, down to the default one. </description> </method> </methods> <signals> - <signal name="body_enter"> - <argument index="0" name="body" type="Object"> + <signal name="area_enter"> + <argument index="0" name="area" type="Object"> </argument> <description> - This signal is triggered only once when a body enters this area. The only parameter passed is the body that entered this area. + This signal is triggered only once when an area enters this area. The only parameter passed is the area that entered this area. </description> </signal> - <signal name="body_enter_shape"> - <argument index="0" name="body_id" type="int"> + <signal name="area_enter_shape"> + <argument index="0" name="area_id" type="int"> </argument> - <argument index="1" name="body" type="Object"> + <argument index="1" name="area" type="Object"> </argument> - <argument index="2" name="body_shape" type="int"> + <argument index="2" name="area_shape" type="int"> </argument> <argument index="3" name="area_shape" type="int"> </argument> <description> - This signal triggers only once when a body enters this area. The first parameter is the body's [RID]. The second one is the body as an object. The third one is the index of the shape of the body that entered this area, and the fourth one is the index of the shape in this area that reported the entering. + This signal triggers only once when an area enters this area. The first parameter is the area's [RID]. The second one is the area as an object. The third one is the index of the shape entering this area, and the fourth one is the index of the shape in this area that reported the entering. </description> </signal> - <signal name="area_enter"> + <signal name="area_exit"> <argument index="0" name="area" type="Object"> </argument> <description> - This signal is triggered only once when an area enters this area. The only parameter passed is the area that entered this area. + This signal is triggered only once when an area exits this area. The only parameter passed is the area that exited this area. </description> </signal> - <signal name="area_enter_shape"> + <signal name="area_exit_shape"> <argument index="0" name="area_id" type="int"> </argument> <argument index="1" name="area" type="Object"> @@ -4327,17 +4367,17 @@ <argument index="3" name="area_shape" type="int"> </argument> <description> - This signal triggers only once when an area enters this area. The first parameter is the area's [RID]. The second one is the area as an object. The third one is the index of the shape entering this area, and the fourth one is the index of the shape in this area that reported the entering. + This signal triggers only once when an area exits this area. The first parameter is the area's [RID]. The second one is the area as an object. The third one is the index of the shape entering this area, and the fourth one is the index of the shape in this area that reported the entering. </description> </signal> - <signal name="body_exit"> + <signal name="body_enter"> <argument index="0" name="body" type="Object"> </argument> <description> - This signal is triggered only once when a body exits this area. The only parameter passed is the body that exited this area. + This signal is triggered only once when a body enters this area. The only parameter passed is the body that entered this area. </description> </signal> - <signal name="body_exit_shape"> + <signal name="body_enter_shape"> <argument index="0" name="body_id" type="int"> </argument> <argument index="1" name="body" type="Object"> @@ -4347,27 +4387,27 @@ <argument index="3" name="area_shape" type="int"> </argument> <description> - This signal triggers only once when a body exits this area. The first parameter is the body's [RID]. The second one is the body as an object. The third one is the index of the shape exiting this area, and the fourth one is the index of the shape in this area that reported the exit. + This signal triggers only once when a body enters this area. The first parameter is the body's [RID]. The second one is the body as an object. The third one is the index of the shape of the body that entered this area, and the fourth one is the index of the shape in this area that reported the entering. </description> </signal> - <signal name="area_exit"> - <argument index="0" name="area" type="Object"> + <signal name="body_exit"> + <argument index="0" name="body" type="Object"> </argument> <description> - This signal is triggered only once when an area exits this area. The only parameter passed is the area that exited this area. + This signal is triggered only once when a body exits this area. The only parameter passed is the body that exited this area. </description> </signal> - <signal name="area_exit_shape"> - <argument index="0" name="area_id" type="int"> + <signal name="body_exit_shape"> + <argument index="0" name="body_id" type="int"> </argument> - <argument index="1" name="area" type="Object"> + <argument index="1" name="body" type="Object"> </argument> - <argument index="2" name="area_shape" type="int"> + <argument index="2" name="body_shape" type="int"> </argument> <argument index="3" name="area_shape" type="int"> </argument> <description> - This signal triggers only once when an area exits this area. The first parameter is the area's [RID]. The second one is the area as an object. The third one is the index of the shape entering this area, and the fourth one is the index of the shape in this area that reported the entering. + This signal triggers only once when a body exits this area. The first parameter is the body's [RID]. The second one is the body as an object. The third one is the index of the shape exiting this area, and the fourth one is the index of the shape in this area that reported the exit. </description> </signal> </signals> @@ -4382,6 +4422,69 @@ Generic array, contains several elements of any type, accessible by numerical index starting at 0. Negative indices can be used to count from the right, like in Python. Arrays are always passed by reference. </description> <methods> + <method name="Array"> + <return type="Array"> + </return> + <argument index="0" name="from" type="ColorArray"> + </argument> + <description> + Construct an array from a [RawArray]. + </description> + </method> + <method name="Array"> + <return type="Array"> + </return> + <argument index="0" name="from" type="Vector3Array"> + </argument> + <description> + Construct an array from a [RawArray]. + </description> + </method> + <method name="Array"> + <return type="Array"> + </return> + <argument index="0" name="from" type="Vector2Array"> + </argument> + <description> + Construct an array from a [RawArray]. + </description> + </method> + <method name="Array"> + <return type="Array"> + </return> + <argument index="0" name="from" type="StringArray"> + </argument> + <description> + Construct an array from a [RawArray]. + </description> + </method> + <method name="Array"> + <return type="Array"> + </return> + <argument index="0" name="from" type="RealArray"> + </argument> + <description> + Construct an array from a [RawArray]. + </description> + </method> + <method name="Array"> + <return type="Array"> + </return> + <argument index="0" name="from" type="IntArray"> + </argument> + <description> + Construct an array from a [RawArray]. + </description> + </method> + <method name="Array"> + <return type="Array"> + </return> + <argument index="0" name="from" type="RawArray"> + </argument> + <description> + Construct an array from a [RawArray]. + </description> + </method> <method name="append"> <argument index="0" name="value" type="var"> </argument> @@ -4535,127 +4638,92 @@ Sort the array using a custom method. The arguments are an object that holds the method and the name of such method. The custom method receives two arguments (a pair of elements from the array) and must return true if the first argument is less than the second, and return false otherwise. </description> </method> - <method name="Array"> - <return type="Array"> - </return> - <argument index="0" name="from" type="RawArray"> - </argument> - <description> - Construct an array from a [RawArray]. - </description> - </method> - <method name="Array"> - <return type="Array"> + </methods> + <constants> + </constants> +</class> +<class name="AtlasTexture" inherits="Texture" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="get_atlas" qualifiers="const"> + <return type="Texture"> </return> - <argument index="0" name="from" type="IntArray"> - </argument> <description> - Construct an array from a [RawArray]. </description> </method> - <method name="Array"> - <return type="Array"> + <method name="get_margin" qualifiers="const"> + <return type="Rect2"> </return> - <argument index="0" name="from" type="RealArray"> - </argument> <description> - Construct an array from a [RawArray]. </description> </method> - <method name="Array"> - <return type="Array"> + <method name="get_region" qualifiers="const"> + <return type="Rect2"> </return> - <argument index="0" name="from" type="StringArray"> - </argument> <description> - Construct an array from a [RawArray]. </description> </method> - <method name="Array"> - <return type="Array"> - </return> - <argument index="0" name="from" type="Vector2Array"> + <method name="set_atlas"> + <argument index="0" name="atlas" type="Texture"> </argument> <description> - Construct an array from a [RawArray]. </description> </method> - <method name="Array"> - <return type="Array"> - </return> - <argument index="0" name="from" type="Vector3Array"> + <method name="set_margin"> + <argument index="0" name="margin" type="Rect2"> </argument> <description> - Construct an array from a [RawArray]. </description> </method> - <method name="Array"> - <return type="Array"> - </return> - <argument index="0" name="from" type="ColorArray"> + <method name="set_region"> + <argument index="0" name="region" type="Rect2"> </argument> <description> - Construct an array from a [RawArray]. </description> </method> </methods> <constants> </constants> </class> -<class name="AtlasTexture" inherits="Texture" category="Core"> +<class name="AudioServer" inherits="Object" category="Core"> <brief_description> + Server interface for low level audio access. </brief_description> <description> + AudioServer is a low level server interface for audio access. It is in charge of creating sample data (playable audio) as well as its playback via a voice interface. </description> <methods> - <method name="set_atlas"> - <argument index="0" name="atlas" type="Texture"> + <method name="free_rid"> + <argument index="0" name="rid" type="RID"> </argument> <description> + Free a [RID] resource. </description> </method> - <method name="get_atlas" qualifiers="const"> - <return type="Texture"> + <method name="get_event_voice_global_volume_scale" qualifiers="const"> + <return type="float"> </return> <description> + Return the global scale for event-based stream playback. </description> </method> - <method name="set_region"> - <argument index="0" name="region" type="Rect2"> - </argument> - <description> - </description> - </method> - <method name="get_region" qualifiers="const"> - <return type="Rect2"> + <method name="get_fx_global_volume_scale" qualifiers="const"> + <return type="float"> </return> <description> + Return the global scale for all voices. </description> </method> - <method name="set_margin"> - <argument index="0" name="margin" type="Rect2"> - </argument> - <description> - </description> - </method> - <method name="get_margin" qualifiers="const"> - <return type="Rect2"> + <method name="get_stream_global_volume_scale" qualifiers="const"> + <return type="float"> </return> <description> + Return the global scale for stream playback. </description> </method> - </methods> - <constants> - </constants> -</class> -<class name="AudioServer" inherits="Object" category="Core"> - <brief_description> - Server interface for low level audio access. - </brief_description> - <description> - AudioServer is a low level server interface for audio access. It is in charge of creating sample data (playable audio) as well as its playback via a voice interface. - </description> - <methods> <method name="sample_create"> <return type="RID"> </return> @@ -4670,13 +4738,13 @@ Even if a stereo sample consists of a left sample and a right sample, it still counts as one sample for length purposes. </description> </method> - <method name="sample_set_description"> + <method name="sample_get_data" qualifiers="const"> + <return type="RawArray"> + </return> <argument index="0" name="sample" type="RID"> </argument> - <argument index="1" name="description" type="String"> - </argument> <description> - Set the description of an audio sample. Mainly used for organization. + Return the sample data as an array of bytes. The length will be the expected length in bytes. </description> </method> <method name="sample_get_description" qualifiers="const"> @@ -4697,15 +4765,6 @@ Return the format of the audio sample, in the form of the SAMPLE_FORMAT_* enum. </description> </method> - <method name="sample_is_stereo" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="sample" type="RID"> - </argument> - <description> - Return whether the sample is stereo (2 channels). - </description> - </method> <method name="sample_get_length" qualifiers="const"> <return type="int"> </return> @@ -4715,73 +4774,71 @@ Return the length in samples (not bytes) of the audio sample. Even if a stereo sample consists of a left sample and a right sample, it still counts as one sample for length purposes. </description> </method> - <method name="sample_set_signed_data"> + <method name="sample_get_loop_begin" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="sample" type="RID"> </argument> - <argument index="1" name="data" type="RealArray"> - </argument> <description> - Set the sample data for a given sample as an array of floats. The length must be equal to the sample length or an error will be produced. - For this method, a stereo sample is made from two samples. Thus, in case of a stereo sample, the array length must be twice the length returned by [method sample_get_length]. - Trying to alter a SAMPLE_FORMAT_IMA_ADPCM sample is not supported. It will throw an error to the console, but will not alter the sample data. + Return the initial loop point of a sample. Only has effect if sample loop is enabled. See [method sample_set_loop_format]. </description> </method> - <method name="sample_set_data"> + <method name="sample_get_loop_end" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="sample" type="RID"> </argument> - <argument index="1" name="data" type="RawArray"> - </argument> <description> - Set the sample data for a given sample as an array of bytes. The length must be equal to the sample length expected in bytes or an error will be produced. The byte length can be calculated as follows: - Get the sample length ([method sample_get_length]). - If the sample format is SAMPLE_FORMAT_PCM16, multiply it by 2. - If the sample format is SAMPLE_FORMAT_IMA_ADPCM, divide it by 2 (rounding any fraction up), then add 4. - If the sample is stereo ([method sample_is_stereo]), multiply it by 2. + Return the final loop point of a sample. Only has effect if sample loop is enabled. See [method sample_set_loop_format]. </description> </method> - <method name="sample_get_data" qualifiers="const"> - <return type="RawArray"> + <method name="sample_get_loop_format" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="sample" type="RID"> </argument> <description> - Return the sample data as an array of bytes. The length will be the expected length in bytes. + Return the loop format for a sample, as a value from the SAMPLE_LOOP_* enum. </description> </method> - <method name="sample_set_mix_rate"> + <method name="sample_get_mix_rate" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="sample" type="RID"> </argument> - <argument index="1" name="mix_rate" type="int"> - </argument> <description> - Change the default mix rate of a given sample. + Return the mix rate of the given sample. </description> </method> - <method name="sample_get_mix_rate" qualifiers="const"> - <return type="int"> + <method name="sample_is_stereo" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="sample" type="RID"> </argument> <description> - Return the mix rate of the given sample. + Return whether the sample is stereo (2 channels). </description> </method> - <method name="sample_set_loop_format"> + <method name="sample_set_data"> <argument index="0" name="sample" type="RID"> </argument> - <argument index="1" name="loop_format" type="int"> + <argument index="1" name="data" type="RawArray"> </argument> <description> - Set the loop format for a sample from the SAMPLE_LOOP_* enum. As a warning, Ping Pong loops may not be available on some hardware-mixing platforms. + Set the sample data for a given sample as an array of bytes. The length must be equal to the sample length expected in bytes or an error will be produced. The byte length can be calculated as follows: + Get the sample length ([method sample_get_length]). + If the sample format is SAMPLE_FORMAT_PCM16, multiply it by 2. + If the sample format is SAMPLE_FORMAT_IMA_ADPCM, divide it by 2 (rounding any fraction up), then add 4. + If the sample is stereo ([method sample_is_stereo]), multiply it by 2. </description> </method> - <method name="sample_get_loop_format" qualifiers="const"> - <return type="int"> - </return> + <method name="sample_set_description"> <argument index="0" name="sample" type="RID"> </argument> + <argument index="1" name="description" type="String"> + </argument> <description> - Return the loop format for a sample, as a value from the SAMPLE_LOOP_* enum. + Set the description of an audio sample. Mainly used for organization. </description> </method> <method name="sample_set_loop_begin"> @@ -4793,15 +4850,6 @@ Set the initial loop point of a sample. Only has effect if sample loop is enabled. See [method sample_set_loop_format]. </description> </method> - <method name="sample_get_loop_begin" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="sample" type="RID"> - </argument> - <description> - Return the initial loop point of a sample. Only has effect if sample loop is enabled. See [method sample_set_loop_format]. - </description> - </method> <method name="sample_set_loop_end"> <argument index="0" name="sample" type="RID"> </argument> @@ -4811,176 +4859,142 @@ Set the final loop point of a sample. Only has effect if sample loop is enabled. See [method sample_set_loop_format]. </description> </method> - <method name="sample_get_loop_end" qualifiers="const"> - <return type="int"> - </return> + <method name="sample_set_loop_format"> <argument index="0" name="sample" type="RID"> </argument> - <description> - Return the final loop point of a sample. Only has effect if sample loop is enabled. See [method sample_set_loop_format]. - </description> - </method> - <method name="voice_create"> - <return type="RID"> - </return> - <description> - Allocate a voice for playback. Voices are persistent. A voice can play a single sample at the same time. See [method sample_create]. - </description> - </method> - <method name="voice_play"> - <argument index="0" name="voice" type="RID"> - </argument> - <argument index="1" name="sample" type="RID"> + <argument index="1" name="loop_format" type="int"> </argument> <description> - Start playback of a given voice using a given sample. If the voice was already playing it will be restarted. + Set the loop format for a sample from the SAMPLE_LOOP_* enum. As a warning, Ping Pong loops may not be available on some hardware-mixing platforms. </description> </method> - <method name="voice_set_volume"> - <argument index="0" name="voice" type="RID"> + <method name="sample_set_mix_rate"> + <argument index="0" name="sample" type="RID"> </argument> - <argument index="1" name="volume" type="float"> + <argument index="1" name="mix_rate" type="int"> </argument> <description> - Change the volume of a currently playing voice. Volume is expressed as linear gain where 0.0 is mute and 1.0 is default. + Change the default mix rate of a given sample. </description> </method> - <method name="voice_set_pan"> - <argument index="0" name="voice" type="RID"> - </argument> - <argument index="1" name="pan" type="float"> - </argument> - <argument index="2" name="depth" type="float" default="0"> + <method name="sample_set_signed_data"> + <argument index="0" name="sample" type="RID"> </argument> - <argument index="3" name="height" type="float" default="0"> + <argument index="1" name="data" type="RealArray"> </argument> <description> - Change the pan of a currently playing voice and, optionally, the depth and height for a positional/3D sound. Panning values are expressed within the -1 to +1 range. + Set the sample data for a given sample as an array of floats. The length must be equal to the sample length or an error will be produced. + For this method, a stereo sample is made from two samples. Thus, in case of a stereo sample, the array length must be twice the length returned by [method sample_get_length]. + Trying to alter a SAMPLE_FORMAT_IMA_ADPCM sample is not supported. It will throw an error to the console, but will not alter the sample data. </description> </method> - <method name="voice_set_filter"> - <argument index="0" name="voice" type="RID"> - </argument> - <argument index="1" name="type" type="int"> - </argument> - <argument index="2" name="cutoff" type="float"> - </argument> - <argument index="3" name="resonance" type="float"> - </argument> - <argument index="4" name="gain" type="float" default="0"> + <method name="set_event_voice_global_volume_scale"> + <argument index="0" name="scale" type="float"> </argument> <description> - Set a resonant filter post processing for the voice. Filter type is a value from the FILTER_* enum. + Set global scale for event-based stream ([EventStream]) playback. Default is 1.0. </description> </method> - <method name="voice_set_chorus"> - <argument index="0" name="voice" type="RID"> - </argument> - <argument index="1" name="chorus" type="float"> + <method name="set_fx_global_volume_scale"> + <argument index="0" name="scale" type="float"> </argument> <description> - Set chorus send post processing for the voice (from 0 to 1). + Set global scale for all voices (not including streams). Default is 1.0. </description> </method> - <method name="voice_set_reverb"> - <argument index="0" name="voice" type="RID"> - </argument> - <argument index="1" name="room" type="int"> - </argument> - <argument index="2" name="reverb" type="float"> + <method name="set_stream_global_volume_scale"> + <argument index="0" name="scale" type="float"> </argument> <description> - Set the reverb send post processing for the voice (from 0 to 1) and the reverb type, from the REVERB_* enum. + Set global scale for stream playback. Default is 1.0. </description> </method> - <method name="voice_set_mix_rate"> - <argument index="0" name="voice" type="RID"> - </argument> - <argument index="1" name="rate" type="int"> - </argument> + <method name="voice_create"> + <return type="RID"> + </return> <description> - Set a different playback mix rate for the given voice. + Allocate a voice for playback. Voices are persistent. A voice can play a single sample at the same time. See [method sample_create]. </description> </method> - <method name="voice_set_positional"> + <method name="voice_get_chorus" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="voice" type="RID"> </argument> - <argument index="1" name="enabled" type="bool"> - </argument> <description> - Set whether a given voice is positional. This is only interpreted as a hint and used for backends that may support binaural encoding. + Return the current chorus send for a given voice (0 to 1). </description> </method> - <method name="voice_get_volume" qualifiers="const"> + <method name="voice_get_filter_cutoff" qualifiers="const"> <return type="float"> </return> <argument index="0" name="voice" type="RID"> </argument> <description> - Return the current volume for a given voice. + Return the current filter cutoff (in hz) for a given voice. </description> </method> - <method name="voice_get_pan" qualifiers="const"> + <method name="voice_get_filter_resonance" qualifiers="const"> <return type="float"> </return> <argument index="0" name="voice" type="RID"> </argument> <description> - Return the current pan for a given voice (-1 to +1 range). + Return the current filter resonance for a given voice. </description> </method> - <method name="voice_get_pan_height" qualifiers="const"> - <return type="float"> + <method name="voice_get_filter_type" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="voice" type="RID"> </argument> <description> - Return the current pan height for a given voice (-1 to +1 range). + Return the current selected filter type for a given voice, from the FILTER_* enum. </description> </method> - <method name="voice_get_pan_depth" qualifiers="const"> - <return type="float"> + <method name="voice_get_mix_rate" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="voice" type="RID"> </argument> <description> - Return the current pan depth for a given voice (-1 to +1 range). + Return the current mix rate for a given voice. </description> </method> - <method name="voice_get_filter_type" qualifiers="const"> - <return type="int"> + <method name="voice_get_pan" qualifiers="const"> + <return type="float"> </return> <argument index="0" name="voice" type="RID"> </argument> <description> - Return the current selected filter type for a given voice, from the FILTER_* enum. + Return the current pan for a given voice (-1 to +1 range). </description> </method> - <method name="voice_get_filter_cutoff" qualifiers="const"> + <method name="voice_get_pan_depth" qualifiers="const"> <return type="float"> </return> <argument index="0" name="voice" type="RID"> </argument> <description> - Return the current filter cutoff (in hz) for a given voice. + Return the current pan depth for a given voice (-1 to +1 range). </description> </method> - <method name="voice_get_filter_resonance" qualifiers="const"> + <method name="voice_get_pan_height" qualifiers="const"> <return type="float"> </return> <argument index="0" name="voice" type="RID"> </argument> <description> - Return the current filter resonance for a given voice. + Return the current pan height for a given voice (-1 to +1 range). </description> </method> - <method name="voice_get_chorus" qualifiers="const"> + <method name="voice_get_reverb" qualifiers="const"> <return type="float"> </return> <argument index="0" name="voice" type="RID"> </argument> <description> - Return the current chorus send for a given voice (0 to 1). + Return the current reverb send for a given voice (0 to 1). </description> </method> <method name="voice_get_reverb_type" qualifiers="const"> @@ -4992,109 +5006,117 @@ Return the current reverb type for a given voice from the REVERB_* enum. </description> </method> - <method name="voice_get_reverb" qualifiers="const"> + <method name="voice_get_volume" qualifiers="const"> <return type="float"> </return> <argument index="0" name="voice" type="RID"> </argument> <description> - Return the current reverb send for a given voice (0 to 1). + Return the current volume for a given voice. </description> </method> - <method name="voice_get_mix_rate" qualifiers="const"> - <return type="int"> + <method name="voice_is_positional" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="voice" type="RID"> </argument> <description> - Return the current mix rate for a given voice. + Return whether the current voice is positional. See [method voice_set_positional]. </description> </method> - <method name="voice_is_positional" qualifiers="const"> - <return type="bool"> - </return> + <method name="voice_play"> <argument index="0" name="voice" type="RID"> </argument> + <argument index="1" name="sample" type="RID"> + </argument> <description> - Return whether the current voice is positional. See [method voice_set_positional]. + Start playback of a given voice using a given sample. If the voice was already playing it will be restarted. </description> </method> - <method name="voice_stop"> + <method name="voice_set_chorus"> <argument index="0" name="voice" type="RID"> </argument> + <argument index="1" name="chorus" type="float"> + </argument> <description> - Stop a given voice. + Set chorus send post processing for the voice (from 0 to 1). </description> </method> - <method name="free_rid"> - <argument index="0" name="rid" type="RID"> + <method name="voice_set_filter"> + <argument index="0" name="voice" type="RID"> + </argument> + <argument index="1" name="type" type="int"> + </argument> + <argument index="2" name="cutoff" type="float"> + </argument> + <argument index="3" name="resonance" type="float"> + </argument> + <argument index="4" name="gain" type="float" default="0"> </argument> <description> - Free a [RID] resource. + Set a resonant filter post processing for the voice. Filter type is a value from the FILTER_* enum. </description> </method> - <method name="set_stream_global_volume_scale"> - <argument index="0" name="scale" type="float"> + <method name="voice_set_mix_rate"> + <argument index="0" name="voice" type="RID"> + </argument> + <argument index="1" name="rate" type="int"> </argument> <description> - Set global scale for stream playback. Default is 1.0. + Set a different playback mix rate for the given voice. </description> </method> - <method name="get_stream_global_volume_scale" qualifiers="const"> - <return type="float"> - </return> + <method name="voice_set_pan"> + <argument index="0" name="voice" type="RID"> + </argument> + <argument index="1" name="pan" type="float"> + </argument> + <argument index="2" name="depth" type="float" default="0"> + </argument> + <argument index="3" name="height" type="float" default="0"> + </argument> <description> - Return the global scale for stream playback. + Change the pan of a currently playing voice and, optionally, the depth and height for a positional/3D sound. Panning values are expressed within the -1 to +1 range. </description> </method> - <method name="set_fx_global_volume_scale"> - <argument index="0" name="scale" type="float"> + <method name="voice_set_positional"> + <argument index="0" name="voice" type="RID"> + </argument> + <argument index="1" name="enabled" type="bool"> </argument> <description> - Set global scale for all voices (not including streams). Default is 1.0. + Set whether a given voice is positional. This is only interpreted as a hint and used for backends that may support binaural encoding. </description> </method> - <method name="get_fx_global_volume_scale" qualifiers="const"> - <return type="float"> - </return> + <method name="voice_set_reverb"> + <argument index="0" name="voice" type="RID"> + </argument> + <argument index="1" name="room" type="int"> + </argument> + <argument index="2" name="reverb" type="float"> + </argument> <description> - Return the global scale for all voices. + Set the reverb send post processing for the voice (from 0 to 1) and the reverb type, from the REVERB_* enum. </description> </method> - <method name="set_event_voice_global_volume_scale"> - <argument index="0" name="scale" type="float"> + <method name="voice_set_volume"> + <argument index="0" name="voice" type="RID"> + </argument> + <argument index="1" name="volume" type="float"> </argument> <description> - Set global scale for event-based stream ([EventStream]) playback. Default is 1.0. + Change the volume of a currently playing voice. Volume is expressed as linear gain where 0.0 is mute and 1.0 is default. </description> </method> - <method name="get_event_voice_global_volume_scale" qualifiers="const"> - <return type="float"> - </return> + <method name="voice_stop"> + <argument index="0" name="voice" type="RID"> + </argument> <description> - Return the global scale for event-based stream playback. + Stop a given voice. </description> </method> </methods> <constants> - <constant name="SAMPLE_FORMAT_PCM8" value="0"> - Sample format is 8 bits, signed. - </constant> - <constant name="SAMPLE_FORMAT_PCM16" value="1"> - Sample format is 16 bits, little-endian, signed. - </constant> - <constant name="SAMPLE_FORMAT_IMA_ADPCM" value="2"> - Sample format is IMA-ADPCM compressed. - </constant> - <constant name="SAMPLE_LOOP_NONE" value="0"> - Sample does not loop. - </constant> - <constant name="SAMPLE_LOOP_FORWARD" value="1"> - Sample loops in forward mode. - </constant> - <constant name="SAMPLE_LOOP_PING_PONG" value="2"> - Sample loops in a bidirectional way. - </constant> <constant name="FILTER_NONE" value="0"> Filter is disabled. </constant> @@ -5125,6 +5147,24 @@ <constant name="REVERB_HALL" value="3"> Large reverb room with long decay. </constant> + <constant name="SAMPLE_FORMAT_PCM8" value="0"> + Sample format is 8 bits, signed. + </constant> + <constant name="SAMPLE_LOOP_NONE" value="0"> + Sample does not loop. + </constant> + <constant name="SAMPLE_FORMAT_PCM16" value="1"> + Sample format is 16 bits, little-endian, signed. + </constant> + <constant name="SAMPLE_LOOP_FORWARD" value="1"> + Sample loops in forward mode. + </constant> + <constant name="SAMPLE_FORMAT_IMA_ADPCM" value="2"> + Sample format is IMA-ADPCM compressed. + </constant> + <constant name="SAMPLE_LOOP_PING_PONG" value="2"> + Sample loops in a bidirectional way. + </constant> </constants> </class> <class name="AudioServerSW" inherits="AudioServer" category="Core"> @@ -5194,73 +5234,73 @@ <description> </description> <methods> - <method name="play"> - <argument index="0" name="from_pos_sec" type="float" default="0"> - </argument> + <method name="get_channels" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="stop"> + <method name="get_length" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="is_playing" qualifiers="const"> - <return type="bool"> + <method name="get_loop_count" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="set_loop"> - <argument index="0" name="enabled" type="bool"> - </argument> + <method name="get_minimum_buffer_size" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="has_loop" qualifiers="const"> - <return type="bool"> + <method name="get_mix_rate" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="get_loop_count" qualifiers="const"> - <return type="int"> + <method name="get_pos" qualifiers="const"> + <return type="float"> </return> <description> </description> </method> - <method name="seek_pos"> - <argument index="0" name="pos" type="float"> - </argument> + <method name="has_loop" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="get_pos" qualifiers="const"> - <return type="float"> + <method name="is_playing" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="get_length" qualifiers="const"> - <return type="float"> - </return> + <method name="play"> + <argument index="0" name="from_pos_sec" type="float" default="0"> + </argument> <description> </description> </method> - <method name="get_channels" qualifiers="const"> - <return type="int"> - </return> + <method name="seek_pos"> + <argument index="0" name="pos" type="float"> + </argument> <description> </description> </method> - <method name="get_mix_rate" qualifiers="const"> - <return type="int"> - </return> + <method name="set_loop"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> </description> </method> - <method name="get_minimum_buffer_size" qualifiers="const"> - <return type="int"> - </return> + <method name="stop"> <description> </description> </method> @@ -5288,11 +5328,11 @@ Node for back-buffering the currently displayed screen. The region defined in the BackBufferCopy node is bufferized with the content of the screen it covers, or the entire screen according to the copy mode set. Accessing this buffer is done with the texscreen() shader instruction. </description> <methods> - <method name="set_rect"> - <argument index="0" name="rect" type="Rect2"> - </argument> + <method name="get_copy_mode" qualifiers="const"> + <return type="int"> + </return> <description> - Defines the area covered by the BackBufferCopy. + Return the copy mode currently applied to the BackBufferCopy (refer to constants section). </description> </method> <method name="get_rect" qualifiers="const"> @@ -5309,11 +5349,11 @@ Set the copy mode of the BackBufferCopy (refer to constants section). </description> </method> - <method name="get_copy_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_rect"> + <argument index="0" name="rect" type="Rect2"> + </argument> <description> - Return the copy mode currently applied to the BackBufferCopy (refer to constants section). + Defines the area covered by the BackBufferCopy. </description> </method> </methods> @@ -5335,87 +5375,83 @@ <description> </description> <methods> - <method name="set_mode"> - <argument index="0" name="mode" type="int"> + <method name="add_lightmap"> + <argument index="0" name="texture" type="Texture"> + </argument> + <argument index="1" name="gen_size" type="Vector2"> </argument> <description> </description> </method> - <method name="get_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="clear_lightmaps"> <description> </description> </method> - <method name="set_octree"> - <argument index="0" name="octree" type="RawArray"> + <method name="erase_lightmap"> + <argument index="0" name="id" type="int"> </argument> <description> </description> </method> - <method name="get_octree" qualifiers="const"> - <return type="RawArray"> + <method name="get_ao_radius" qualifiers="const"> + <return type="float"> </return> <description> </description> </method> - <method name="set_light"> - <argument index="0" name="light" type="RawArray"> - </argument> - <description> - </description> - </method> - <method name="get_light" qualifiers="const"> - <return type="RawArray"> + <method name="get_ao_strength" qualifiers="const"> + <return type="float"> </return> <description> </description> </method> - <method name="set_sampler_octree"> - <argument index="0" name="sampler_octree" type="IntArray"> + <method name="get_bake_flag" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="flag" type="int"> </argument> <description> </description> </method> - <method name="get_sampler_octree" qualifiers="const"> - <return type="IntArray"> + <method name="get_bounces" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="add_lightmap"> - <argument index="0" name="texture" type="Texture"> - </argument> - <argument index="1" name="gen_size" type="Vector2"> - </argument> + <method name="get_cell_extra_margin" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="erase_lightmap"> - <argument index="0" name="id" type="int"> - </argument> + <method name="get_cell_subdivision" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="clear_lightmaps"> + <method name="get_edge_damp" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="set_cell_subdivision"> - <argument index="0" name="cell_subdivision" type="int"> - </argument> + <method name="get_energy_multiplier" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_cell_subdivision" qualifiers="const"> + <method name="get_format" qualifiers="const"> <return type="int"> </return> <description> </description> </method> - <method name="set_initial_lattice_subdiv"> - <argument index="0" name="cell_subdivision" type="int"> - </argument> + <method name="get_gamma_adjust" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> @@ -5425,220 +5461,220 @@ <description> </description> </method> - <method name="set_plot_size"> - <argument index="0" name="plot_size" type="float"> - </argument> + <method name="get_light" qualifiers="const"> + <return type="RawArray"> + </return> <description> </description> </method> - <method name="get_plot_size" qualifiers="const"> - <return type="float"> + <method name="get_mode" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="set_bounces"> - <argument index="0" name="bounces" type="int"> - </argument> + <method name="get_normal_damp" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_bounces" qualifiers="const"> - <return type="int"> + <method name="get_octree" qualifiers="const"> + <return type="RawArray"> </return> <description> </description> </method> - <method name="set_cell_extra_margin"> - <argument index="0" name="cell_extra_margin" type="float"> - </argument> + <method name="get_plot_size" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_cell_extra_margin" qualifiers="const"> - <return type="float"> + <method name="get_realtime_color" qualifiers="const"> + <return type="Color"> </return> <description> </description> </method> - <method name="set_edge_damp"> - <argument index="0" name="edge_damp" type="float"> - </argument> + <method name="get_realtime_color_enabled" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="get_edge_damp" qualifiers="const"> + <method name="get_realtime_energy" qualifiers="const"> <return type="float"> </return> <description> </description> </method> - <method name="set_normal_damp"> - <argument index="0" name="normal_damp" type="float"> - </argument> + <method name="get_sampler_octree" qualifiers="const"> + <return type="IntArray"> + </return> <description> </description> </method> - <method name="get_normal_damp" qualifiers="const"> + <method name="get_saturation" qualifiers="const"> <return type="float"> </return> <description> </description> </method> - <method name="set_tint"> - <argument index="0" name="tint" type="float"> - </argument> + <method name="get_tint" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_tint" qualifiers="const"> - <return type="float"> + <method name="get_transfer_lightmaps_only_to_uv2" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="set_saturation"> - <argument index="0" name="saturation" type="float"> + <method name="set_ao_radius"> + <argument index="0" name="ao_radius" type="float"> </argument> <description> </description> </method> - <method name="get_saturation" qualifiers="const"> - <return type="float"> - </return> + <method name="set_ao_strength"> + <argument index="0" name="ao_strength" type="float"> + </argument> <description> </description> </method> - <method name="set_ao_radius"> - <argument index="0" name="ao_radius" type="float"> + <method name="set_bake_flag"> + <argument index="0" name="flag" type="int"> + </argument> + <argument index="1" name="enabled" type="bool"> </argument> <description> </description> </method> - <method name="get_ao_radius" qualifiers="const"> - <return type="float"> - </return> + <method name="set_bounces"> + <argument index="0" name="bounces" type="int"> + </argument> <description> </description> </method> - <method name="set_ao_strength"> - <argument index="0" name="ao_strength" type="float"> + <method name="set_cell_extra_margin"> + <argument index="0" name="cell_extra_margin" type="float"> </argument> <description> </description> </method> - <method name="get_ao_strength" qualifiers="const"> - <return type="float"> - </return> + <method name="set_cell_subdivision"> + <argument index="0" name="cell_subdivision" type="int"> + </argument> <description> </description> </method> - <method name="set_realtime_color_enabled"> - <argument index="0" name="enabled" type="bool"> + <method name="set_edge_damp"> + <argument index="0" name="edge_damp" type="float"> </argument> <description> </description> </method> - <method name="get_realtime_color_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_energy_multiplier"> + <argument index="0" name="energy_multiplier" type="float"> + </argument> <description> </description> </method> - <method name="set_realtime_color"> - <argument index="0" name="tint" type="Color"> + <method name="set_format"> + <argument index="0" name="format" type="int"> </argument> <description> </description> </method> - <method name="get_realtime_color" qualifiers="const"> - <return type="Color"> - </return> + <method name="set_gamma_adjust"> + <argument index="0" name="gamma_adjust" type="float"> + </argument> <description> </description> </method> - <method name="set_realtime_energy"> - <argument index="0" name="energy" type="float"> + <method name="set_initial_lattice_subdiv"> + <argument index="0" name="cell_subdivision" type="int"> </argument> <description> </description> </method> - <method name="get_realtime_energy" qualifiers="const"> - <return type="float"> - </return> + <method name="set_light"> + <argument index="0" name="light" type="RawArray"> + </argument> <description> </description> </method> - <method name="set_format"> - <argument index="0" name="format" type="int"> + <method name="set_mode"> + <argument index="0" name="mode" type="int"> </argument> <description> </description> </method> - <method name="get_format" qualifiers="const"> - <return type="int"> - </return> + <method name="set_normal_damp"> + <argument index="0" name="normal_damp" type="float"> + </argument> <description> </description> </method> - <method name="set_transfer_lightmaps_only_to_uv2"> - <argument index="0" name="enable" type="bool"> + <method name="set_octree"> + <argument index="0" name="octree" type="RawArray"> </argument> <description> </description> </method> - <method name="get_transfer_lightmaps_only_to_uv2" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_plot_size"> + <argument index="0" name="plot_size" type="float"> + </argument> <description> </description> </method> - <method name="set_energy_multiplier"> - <argument index="0" name="energy_multiplier" type="float"> + <method name="set_realtime_color"> + <argument index="0" name="tint" type="Color"> </argument> <description> </description> </method> - <method name="get_energy_multiplier" qualifiers="const"> - <return type="float"> - </return> + <method name="set_realtime_color_enabled"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> </description> </method> - <method name="set_gamma_adjust"> - <argument index="0" name="gamma_adjust" type="float"> + <method name="set_realtime_energy"> + <argument index="0" name="energy" type="float"> </argument> <description> </description> </method> - <method name="get_gamma_adjust" qualifiers="const"> - <return type="float"> - </return> + <method name="set_sampler_octree"> + <argument index="0" name="sampler_octree" type="IntArray"> + </argument> <description> </description> </method> - <method name="set_bake_flag"> - <argument index="0" name="flag" type="int"> + <method name="set_saturation"> + <argument index="0" name="saturation" type="float"> </argument> - <argument index="1" name="enabled" type="bool"> + <description> + </description> + </method> + <method name="set_tint"> + <argument index="0" name="tint" type="float"> </argument> <description> </description> </method> - <method name="get_bake_flag" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="flag" type="int"> + <method name="set_transfer_lightmaps_only_to_uv2"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> </methods> <constants> - <constant name="MODE_OCTREE" value="0"> - </constant> - <constant name="MODE_LIGHTMAPS" value="1"> - </constant> <constant name="BAKE_DIFFUSE" value="0"> </constant> <constant name="BAKE_SPECULAR" value="1"> @@ -5649,6 +5685,10 @@ </constant> <constant name="BAKE_MAX" value="5"> </constant> + <constant name="MODE_OCTREE" value="0"> + </constant> + <constant name="MODE_LIGHTMAPS" value="1"> + </constant> </constants> </class> <class name="BakedLightInstance" inherits="VisualInstance" category="Core"> @@ -5657,12 +5697,6 @@ <description> </description> <methods> - <method name="set_baked_light"> - <argument index="0" name="baked_light" type="Object"> - </argument> - <description> - </description> - </method> <method name="get_baked_light" qualifiers="const"> <return type="Object"> </return> @@ -5675,6 +5709,12 @@ <description> </description> </method> + <method name="set_baked_light"> + <argument index="0" name="baked_light" type="Object"> + </argument> + <description> + </description> + </method> </methods> <signals> <signal name="baked_light_changed"> @@ -5691,19 +5731,25 @@ <description> </description> <methods> - <method name="set_param"> + <method name="get_param" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="param" type="int"> </argument> - <argument index="1" name="value" type="float"> - </argument> <description> </description> </method> - <method name="get_param" qualifiers="const"> - <return type="float"> + <method name="get_resolution" qualifiers="const"> + <return type="int"> </return> + <description> + </description> + </method> + <method name="set_param"> <argument index="0" name="param" type="int"> </argument> + <argument index="1" name="value" type="float"> + </argument> <description> </description> </method> @@ -5713,12 +5759,6 @@ <description> </description> </method> - <method name="get_resolution" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> </methods> <constants> <constant name="PARAM_RADIUS" value="0"> @@ -5753,53 +5793,59 @@ Called when button is toggled (only if toggle_mode is active). </description> </method> - <method name="set_pressed"> - <argument index="0" name="pressed" type="bool"> - </argument> + <method name="get_click_on_press" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the button to pressed state (only if toggle_mode is active). + Return the state of the click_on_press property (see [method set_click_on_press]). </description> </method> - <method name="is_pressed" qualifiers="const"> - <return type="bool"> + <method name="get_draw_mode" qualifiers="const"> + <return type="int"> </return> <description> - If toggle_mode is active, return whether the button is toggled. If toggle_mode is not active, return whether the button is pressed down. + Return the visual state used to draw the button. This is useful mainly when implementing your own draw code by either overriding _draw() or connecting to "draw" signal. The visual state of the button is defined by the DRAW_* enum. </description> </method> - <method name="is_hovered" qualifiers="const"> - <return type="bool"> + <method name="get_enabled_focus_mode" qualifiers="const"> + <return type="int"> </return> <description> - Return true if mouse entered the button before it exit. + Returns focus access mode used when switching between enabled/disabled (see [method Control.set_focus_mode] and [method set_disabled]). </description> </method> - <method name="set_toggle_mode"> - <argument index="0" name="enabled" type="bool"> - </argument> + <method name="get_shortcut" qualifiers="const"> + <return type="Object"> + </return> <description> - Set the button toggle_mode property. Toggle mode makes the button flip state between pressed and unpressed each time its area is clicked. </description> </method> - <method name="is_toggle_mode" qualifiers="const"> + <method name="is_disabled" qualifiers="const"> <return type="bool"> </return> <description> - Return the toggle_mode property (see [method set_toggle_mode]). + Return whether the button is in disabled state (see [method set_disabled]). </description> </method> - <method name="set_disabled"> - <argument index="0" name="disabled" type="bool"> - </argument> + <method name="is_hovered" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the button into disabled state. When a button is disabled, it can't be clicked or toggled. + Return true if mouse entered the button before it exit. </description> </method> - <method name="is_disabled" qualifiers="const"> + <method name="is_pressed" qualifiers="const"> <return type="bool"> </return> <description> - Return whether the button is in disabled state (see [method set_disabled]). + If toggle_mode is active, return whether the button is toggled. If toggle_mode is not active, return whether the button is pressed down. + </description> + </method> + <method name="is_toggle_mode" qualifiers="const"> + <return type="bool"> + </return> + <description> + Return the toggle_mode property (see [method set_toggle_mode]). </description> </method> <method name="set_click_on_press"> @@ -5809,18 +5855,11 @@ Set the button click_on_press mode. This mode generates click events when a mouse button or key is just pressed (by default events are generated when the button/keys are released and both press and release occur in the visual area of the Button). </description> </method> - <method name="get_click_on_press" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return the state of the click_on_press property (see [method set_click_on_press]). - </description> - </method> - <method name="get_draw_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_disabled"> + <argument index="0" name="disabled" type="bool"> + </argument> <description> - Return the visual state used to draw the button. This is useful mainly when implementing your own draw code by either overriding _draw() or connecting to "draw" signal. The visual state of the button is defined by the DRAW_* enum. + Set the button into disabled state. When a button is disabled, it can't be clicked or toggled. </description> </method> <method name="set_enabled_focus_mode"> @@ -5830,11 +5869,11 @@ Sets the focus access mode to use when switching between enabled/disabled (see [method Control.set_focus_mode] and [method set_disabled]). </description> </method> - <method name="get_enabled_focus_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_pressed"> + <argument index="0" name="pressed" type="bool"> + </argument> <description> - Returns focus access mode used when switching between enabled/disabled (see [method Control.set_focus_mode] and [method set_disabled]). + Set the button to pressed state (only if toggle_mode is active). </description> </method> <method name="set_shortcut"> @@ -5843,14 +5882,20 @@ <description> </description> </method> - <method name="get_shortcut" qualifiers="const"> - <return type="Object"> - </return> + <method name="set_toggle_mode"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> + Set the button toggle_mode property. Toggle mode makes the button flip state between pressed and unpressed each time its area is clicked. </description> </method> </methods> <signals> + <signal name="pressed"> + <description> + This signal is emitted every time the button is pressed or toggled. + </description> + </signal> <signal name="released"> <description> This signal is emitted when the button was released. @@ -5863,11 +5908,6 @@ This signal is emitted when the button was just toggled between pressed and normal states (only if toggle_mode is active). The new state is contained in the [i]pressed[/i] argument. </description> </signal> - <signal name="pressed"> - <description> - This signal is emitted every time the button is pressed or toggled. - </description> - </signal> </signals> <constants> <constant name="DRAW_NORMAL" value="0"> @@ -5902,14 +5942,6 @@ <description> </description> </method> - <method name="set_bit"> - <argument index="0" name="pos" type="Vector2"> - </argument> - <argument index="1" name="bit" type="bool"> - </argument> - <description> - </description> - </method> <method name="get_bit" qualifiers="const"> <return type="bool"> </return> @@ -5918,11 +5950,9 @@ <description> </description> </method> - <method name="set_bit_rect"> - <argument index="0" name="p_rect" type="Rect2"> - </argument> - <argument index="1" name="bit" type="bool"> - </argument> + <method name="get_size" qualifiers="const"> + <return type="Vector2"> + </return> <description> </description> </method> @@ -5932,9 +5962,19 @@ <description> </description> </method> - <method name="get_size" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_bit"> + <argument index="0" name="pos" type="Vector2"> + </argument> + <argument index="1" name="bit" type="bool"> + </argument> + <description> + </description> + </method> + <method name="set_bit_rect"> + <argument index="0" name="p_rect" type="Rect2"> + </argument> + <argument index="1" name="bit" type="bool"> + </argument> <description> </description> </method> @@ -5948,26 +5988,19 @@ <description> </description> <methods> - <method name="create_from_fnt"> - <return type="int"> - </return> - <argument index="0" name="path" type="String"> + <method name="add_char"> + <argument index="0" name="character" type="int"> </argument> - <description> - </description> - </method> - <method name="set_height"> - <argument index="0" name="px" type="float"> + <argument index="1" name="texture" type="int"> </argument> - <description> - Set the total font height (ascent plus descent) in pixels. - </description> - </method> - <method name="set_ascent"> - <argument index="0" name="px" type="float"> + <argument index="2" name="rect" type="Rect2"> + </argument> + <argument index="3" name="align" type="Vector2" default="Vector2(0,0)"> + </argument> + <argument index="4" name="advance" type="float" default="-1"> </argument> <description> - Set the font ascent (number of pixels above the baseline). + Add a character to the font, where [i]character[/i] is the unicode value, [i]texture[/i] is the texture index, [i]rect[/i] is the region in the texture (in pixels!), [i]align[/i] is the (optional) alignment for the character and [i]advance[/i] is the (optional) advance. </description> </method> <method name="add_kerning_pair"> @@ -5981,17 +6014,6 @@ Add a kerning pair to the [BitmapFont] as a difference. Kerning pairs are special cases where a typeface advance is determined by the next character. </description> </method> - <method name="get_kerning_pair" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="char_a" type="int"> - </argument> - <argument index="1" name="char_b" type="int"> - </argument> - <description> - Return a kerning pair as a difference. - </description> - </method> <method name="add_texture"> <argument index="0" name="texture" type="Texture"> </argument> @@ -5999,25 +6021,45 @@ Add a texture to the [BitmapFont]. </description> </method> - <method name="add_char"> - <argument index="0" name="character" type="int"> - </argument> - <argument index="1" name="texture" type="int"> - </argument> - <argument index="2" name="rect" type="Rect2"> + <method name="clear"> + <description> + Clear all the font data. + </description> + </method> + <method name="create_from_fnt"> + <return type="int"> + </return> + <argument index="0" name="path" type="String"> </argument> - <argument index="3" name="align" type="Vector2" default="Vector2(0,0)"> + <description> + </description> + </method> + <method name="get_char_size" qualifiers="const"> + <return type="Vector2"> + </return> + <argument index="0" name="char" type="int"> </argument> - <argument index="4" name="advance" type="float" default="-1"> + <argument index="1" name="next" type="int" default="0"> </argument> <description> - Add a character to the font, where [i]character[/i] is the unicode value, [i]texture[/i] is the texture index, [i]rect[/i] is the region in the texture (in pixels!), [i]align[/i] is the (optional) alignment for the character and [i]advance[/i] is the (optional) advance. + Return the size of a character, optionally taking kerning into account if the next character is provided. </description> </method> - <method name="get_texture_count" qualifiers="const"> + <method name="get_fallback" qualifiers="const"> + <return type="Object"> + </return> + <description> + </description> + </method> + <method name="get_kerning_pair" qualifiers="const"> <return type="int"> </return> + <argument index="0" name="char_a" type="int"> + </argument> + <argument index="1" name="char_b" type="int"> + </argument> <description> + Return a kerning pair as a difference. </description> </method> <method name="get_texture" qualifiers="const"> @@ -6028,26 +6070,23 @@ <description> </description> </method> - <method name="get_char_size" qualifiers="const"> - <return type="Vector2"> + <method name="get_texture_count" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="char" type="int"> - </argument> - <argument index="1" name="next" type="int" default="0"> - </argument> <description> - Return the size of a character, optionally taking kerning into account if the next character is provided. </description> </method> - <method name="set_distance_field_hint"> - <argument index="0" name="enable" type="bool"> + <method name="set_ascent"> + <argument index="0" name="px" type="float"> </argument> <description> + Set the font ascent (number of pixels above the baseline). </description> </method> - <method name="clear"> + <method name="set_distance_field_hint"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Clear all the font data. </description> </method> <method name="set_fallback"> @@ -6056,10 +6095,11 @@ <description> </description> </method> - <method name="get_fallback" qualifiers="const"> - <return type="Object"> - </return> + <method name="set_height"> + <argument index="0" name="px" type="float"> + </argument> <description> + Set the total font height (ascent plus descent) in pixels. </description> </method> </methods> @@ -6129,13 +6169,6 @@ Box shape resource, which can be set into a [PhysicsBody] or area. </description> <methods> - <method name="set_extents"> - <argument index="0" name="extents" type="Vector3"> - </argument> - <description> - Set the half extents for the shape. - </description> - </method> <method name="get_extents" qualifiers="const"> <return type="Vector3"> </return> @@ -6143,6 +6176,13 @@ Return the half extents of the shape. </description> </method> + <method name="set_extents"> + <argument index="0" name="extents" type="Vector3"> + </argument> + <description> + Set the half extents for the shape. + </description> + </method> </methods> <constants> </constants> @@ -6155,11 +6195,18 @@ Button is the standard themed button. It can contain text and an icon, and will display them according to the current [Theme]. </description> <methods> - <method name="set_text"> - <argument index="0" name="text" type="String"> - </argument> + <method name="get_button_icon" qualifiers="const"> + <return type="Texture"> + </return> <description> - Set the button text, which will be displayed inside the button area. + Return the button icon. + </description> + </method> + <method name="get_clip_text" qualifiers="const"> + <return type="bool"> + </return> + <description> + Return the state of the [i]clip_text[/i] property (see [method set_clip_text]) </description> </method> <method name="get_text" qualifiers="const"> @@ -6169,25 +6216,25 @@ Return the button text. </description> </method> - <method name="set_button_icon"> - <argument index="0" name="texture" type="Texture"> - </argument> + <method name="get_text_align" qualifiers="const"> + <return type="int"> + </return> <description> - Set the icon that will be displayed next to the text inside the button area. + Return the text alignment policy. </description> </method> - <method name="get_button_icon" qualifiers="const"> - <return type="Texture"> + <method name="is_flat" qualifiers="const"> + <return type="bool"> </return> <description> - Return the button icon. + Return the state of the [i]flat[/i] property (see [method set_flat]). </description> </method> - <method name="set_flat"> - <argument index="0" name="enabled" type="bool"> + <method name="set_button_icon"> + <argument index="0" name="texture" type="Texture"> </argument> <description> - Set the [i]flat[/i] property of a Button. Flat buttons don't display decoration unless hovered or pressed. + Set the icon that will be displayed next to the text inside the button area. </description> </method> <method name="set_clip_text"> @@ -6197,32 +6244,25 @@ Set the [i]clip_text[/i] property of a Button. When this property is enabled, text that is too large to fit the button is clipped, when disabled (default) the Button will always be wide enough to hold the text. </description> </method> - <method name="get_clip_text" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return the state of the [i]clip_text[/i] property (see [method set_clip_text]) - </description> - </method> - <method name="set_text_align"> - <argument index="0" name="align" type="int"> + <method name="set_flat"> + <argument index="0" name="enabled" type="bool"> </argument> <description> - Set the text alignment policy, using one of the ALIGN_* constants. + Set the [i]flat[/i] property of a Button. Flat buttons don't display decoration unless hovered or pressed. </description> </method> - <method name="get_text_align" qualifiers="const"> - <return type="int"> - </return> + <method name="set_text"> + <argument index="0" name="text" type="String"> + </argument> <description> - Return the text alignment policy. + Set the button text, which will be displayed inside the button area. </description> </method> - <method name="is_flat" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_text_align"> + <argument index="0" name="align" type="int"> + </argument> <description> - Return the state of the [i]flat[/i] property (see [method set_flat]). + Set the text alignment policy, using one of the ALIGN_* constants. </description> </method> </methods> @@ -6238,28 +6278,28 @@ </constant> </constants> <theme_items> - <theme_item name="hseparation" type="int"> + <theme_item name="disabled" type="StyleBox"> </theme_item> - <theme_item name="font_color_disabled" type="Color"> + <theme_item name="focus" type="StyleBox"> + </theme_item> + <theme_item name="font" type="Font"> </theme_item> <theme_item name="font_color" type="Color"> </theme_item> + <theme_item name="font_color_disabled" type="Color"> + </theme_item> <theme_item name="font_color_hover" type="Color"> </theme_item> <theme_item name="font_color_pressed" type="Color"> </theme_item> - <theme_item name="font" type="Font"> - </theme_item> <theme_item name="hover" type="StyleBox"> </theme_item> - <theme_item name="pressed" type="StyleBox"> - </theme_item> - <theme_item name="focus" type="StyleBox"> - </theme_item> - <theme_item name="disabled" type="StyleBox"> + <theme_item name="hseparation" type="int"> </theme_item> <theme_item name="normal" type="StyleBox"> </theme_item> + <theme_item name="pressed" type="StyleBox"> + </theme_item> </theme_items> </class> <class name="ButtonArray" inherits="Control" category="Core"> @@ -6287,31 +6327,23 @@ Append a new button to the array, with the specified icon and text. </description> </method> - <method name="set_button_text"> - <argument index="0" name="button_idx" type="int"> - </argument> - <argument index="1" name="text" type="String"> - </argument> + <method name="clear"> <description> - Define the text of the specified button. + Remove all buttons from the array. </description> </method> - <method name="set_button_icon"> + <method name="erase_button"> <argument index="0" name="button_idx" type="int"> </argument> - <argument index="1" name="icon" type="Texture"> - </argument> <description> - Set the icon of the specified button. + Remove the specified button in the array. </description> </method> - <method name="get_button_text" qualifiers="const"> - <return type="String"> + <method name="get_button_count" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="button_idx" type="int"> - </argument> <description> - Return the text of the specified button. + Return the amount of buttons in the array. </description> </method> <method name="get_button_icon" qualifiers="const"> @@ -6323,44 +6355,52 @@ Return the icon of the specified button. </description> </method> - <method name="get_button_count" qualifiers="const"> - <return type="int"> + <method name="get_button_text" qualifiers="const"> + <return type="String"> </return> + <argument index="0" name="button_idx" type="int"> + </argument> <description> - Return the amount of buttons in the array. + Return the text of the specified button. </description> </method> - <method name="get_selected" qualifiers="const"> + <method name="get_hovered" qualifiers="const"> <return type="int"> </return> <description> - Return the index of the currently selected button in the array. + Return the index of the currently hovered button in the array. </description> </method> - <method name="get_hovered" qualifiers="const"> + <method name="get_selected" qualifiers="const"> <return type="int"> </return> <description> - Return the index of the currently hovered button in the array. + Return the index of the currently selected button in the array. </description> </method> - <method name="set_selected"> + <method name="set_button_icon"> <argument index="0" name="button_idx" type="int"> </argument> + <argument index="1" name="icon" type="Texture"> + </argument> <description> - Select a button in the array based on the given index. + Set the icon of the specified button. </description> </method> - <method name="erase_button"> + <method name="set_button_text"> <argument index="0" name="button_idx" type="int"> </argument> + <argument index="1" name="text" type="String"> + </argument> <description> - Remove the specified button in the array. + Define the text of the specified button. </description> </method> - <method name="clear"> + <method name="set_selected"> + <argument index="0" name="button_idx" type="int"> + </argument> <description> - Remove all buttons from the array. + Select a button in the array based on the given index. </description> </method> </methods> @@ -6399,32 +6439,32 @@ Group of [Button]. All direct and indirect children buttons become radios. Only one allows being pressed. </description> <methods> - <method name="get_pressed_button" qualifiers="const"> - <return type="BaseButton"> + <method name="get_button_list" qualifiers="const"> + <return type="Array"> </return> <description> - Return the pressed button. + Return the list of all the buttons in the group. </description> </method> - <method name="get_pressed_button_index" qualifiers="const"> - <return type="int"> + <method name="get_focused_button" qualifiers="const"> + <return type="BaseButton"> </return> <description> - Return the index of the pressed button (by tree order). + Return the focused button. </description> </method> - <method name="get_focused_button" qualifiers="const"> + <method name="get_pressed_button" qualifiers="const"> <return type="BaseButton"> </return> <description> - Return the focused button. + Return the pressed button. </description> </method> - <method name="get_button_list" qualifiers="const"> - <return type="Array"> + <method name="get_pressed_button_index" qualifiers="const"> + <return type="int"> </return> <description> - Return the list of all the buttons in the group. + Return the index of the pressed button (by tree order). </description> </method> <method name="set_pressed_button"> @@ -6450,85 +6490,62 @@ Camera is a special node that displays what is visible from its current location. Cameras register themselves in the nearest [Viewport] node (when ascending the tree). Only one camera can be active per viewport. If no viewport is available ascending the tree, the Camera will register in the global viewport. In other words, a Camera just provides [i]3D[/i] display capabilities to a [Viewport], and, without one, a scene registered in that [Viewport] (or higher viewports) can't be displayed. </description> <methods> - <method name="project_ray_normal" qualifiers="const"> - <return type="Vector3"> - </return> - <argument index="0" name="screen_point" type="Vector2"> - </argument> + <method name="clear_current"> <description> - Return a normal vector in worldspace, that is the result of projecting a point on the [Viewport] rectangle by the camera projection. This is useful for casting rays in the form of (origin,normal) for object intersection or picking. </description> </method> - <method name="project_local_ray_normal" qualifiers="const"> - <return type="Vector3"> + <method name="get_camera_transform" qualifiers="const"> + <return type="Transform"> </return> - <argument index="0" name="screen_point" type="Vector2"> - </argument> <description> + Get the camera transform. Subclassed cameras (such as CharacterCamera) may provide different transforms than the [Node] transform. </description> </method> - <method name="project_ray_origin" qualifiers="const"> - <return type="Vector3"> + <method name="get_environment" qualifiers="const"> + <return type="Environment"> </return> - <argument index="0" name="screen_point" type="Vector2"> - </argument> <description> - Return a 3D position in worldspace, that is the result of projecting a point on the [Viewport] rectangle by the camera projection. This is useful for casting rays in the form of (origin,normal) for object intersection or picking. </description> </method> - <method name="unproject_position" qualifiers="const"> - <return type="Vector2"> + <method name="get_fov" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="world_point" type="Vector3"> - </argument> <description> - Return how a 3D point in worldspace maps to a 2D coordinate in the [Viewport] rectangle. </description> </method> - <method name="is_position_behind" qualifiers="const"> - <return type="bool"> + <method name="get_keep_aspect_mode" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="world_point" type="Vector3"> - </argument> <description> </description> </method> - <method name="project_position" qualifiers="const"> - <return type="Vector3"> + <method name="get_projection" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="screen_point" type="Vector2"> - </argument> <description> </description> </method> - <method name="set_perspective"> - <argument index="0" name="fov" type="float"> - </argument> - <argument index="1" name="z_near" type="float"> - </argument> - <argument index="2" name="z_far" type="float"> - </argument> + <method name="get_size" qualifiers="const"> + <return type="float"> + </return> <description> - Set the camera projection to perspective mode, by specifying a [i]FOV[/i] Y angle in degrees (FOV means Field of View), and the [i]near[/i] and [i]far[/i] clip planes in worldspace units. </description> </method> - <method name="set_orthogonal"> - <argument index="0" name="size" type="float"> - </argument> - <argument index="1" name="z_near" type="float"> - </argument> - <argument index="2" name="z_far" type="float"> - </argument> + <method name="get_visible_layers" qualifiers="const"> + <return type="int"> + </return> <description> - Set the camera projection to orthogonal mode, by specifying a width and the [i]near[/i] and [i]far[/i] clip planes in worldspace units. (As a hint, 2D games often use this projection, with values specified in pixels) </description> </method> - <method name="make_current"> + <method name="get_zfar" qualifiers="const"> + <return type="float"> + </return> <description> - Make this camera the current Camera for the [Viewport] (see class description). If the Camera Node is outside the scene tree, it will attempt to become current once it's added. </description> </method> - <method name="clear_current"> + <method name="get_znear" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> @@ -6539,91 +6556,114 @@ Return whether the Camera is the current one in the [Viewport], or plans to become current (if outside the scene tree). </description> </method> - <method name="get_camera_transform" qualifiers="const"> - <return type="Transform"> + <method name="is_position_behind" qualifiers="const"> + <return type="bool"> </return> + <argument index="0" name="world_point" type="Vector3"> + </argument> <description> - Get the camera transform. Subclassed cameras (such as CharacterCamera) may provide different transforms than the [Node] transform. </description> </method> - <method name="get_fov" qualifiers="const"> - <return type="float"> - </return> + <method name="make_current"> <description> + Make this camera the current Camera for the [Viewport] (see class description). If the Camera Node is outside the scene tree, it will attempt to become current once it's added. </description> </method> - <method name="get_size" qualifiers="const"> - <return type="float"> + <method name="project_local_ray_normal" qualifiers="const"> + <return type="Vector3"> </return> + <argument index="0" name="screen_point" type="Vector2"> + </argument> <description> </description> </method> - <method name="get_zfar" qualifiers="const"> - <return type="float"> + <method name="project_position" qualifiers="const"> + <return type="Vector3"> </return> + <argument index="0" name="screen_point" type="Vector2"> + </argument> <description> </description> </method> - <method name="get_znear" qualifiers="const"> - <return type="float"> + <method name="project_ray_normal" qualifiers="const"> + <return type="Vector3"> </return> + <argument index="0" name="screen_point" type="Vector2"> + </argument> <description> + Return a normal vector in worldspace, that is the result of projecting a point on the [Viewport] rectangle by the camera projection. This is useful for casting rays in the form of (origin,normal) for object intersection or picking. </description> </method> - <method name="get_projection" qualifiers="const"> - <return type="int"> + <method name="project_ray_origin" qualifiers="const"> + <return type="Vector3"> </return> + <argument index="0" name="screen_point" type="Vector2"> + </argument> <description> + Return a 3D position in worldspace, that is the result of projecting a point on the [Viewport] rectangle by the camera projection. This is useful for casting rays in the form of (origin,normal) for object intersection or picking. </description> </method> - <method name="set_visible_layers"> - <argument index="0" name="mask" type="int"> + <method name="set_environment"> + <argument index="0" name="env" type="Environment"> </argument> <description> </description> </method> - <method name="get_visible_layers" qualifiers="const"> - <return type="int"> - </return> + <method name="set_keep_aspect_mode"> + <argument index="0" name="mode" type="int"> + </argument> <description> </description> </method> - <method name="set_environment"> - <argument index="0" name="env" type="Environment"> + <method name="set_orthogonal"> + <argument index="0" name="size" type="float"> + </argument> + <argument index="1" name="z_near" type="float"> + </argument> + <argument index="2" name="z_far" type="float"> </argument> <description> + Set the camera projection to orthogonal mode, by specifying a width and the [i]near[/i] and [i]far[/i] clip planes in worldspace units. (As a hint, 2D games often use this projection, with values specified in pixels) </description> </method> - <method name="get_environment" qualifiers="const"> - <return type="Environment"> - </return> + <method name="set_perspective"> + <argument index="0" name="fov" type="float"> + </argument> + <argument index="1" name="z_near" type="float"> + </argument> + <argument index="2" name="z_far" type="float"> + </argument> <description> + Set the camera projection to perspective mode, by specifying a [i]FOV[/i] Y angle in degrees (FOV means Field of View), and the [i]near[/i] and [i]far[/i] clip planes in worldspace units. </description> </method> - <method name="set_keep_aspect_mode"> - <argument index="0" name="mode" type="int"> + <method name="set_visible_layers"> + <argument index="0" name="mask" type="int"> </argument> <description> </description> </method> - <method name="get_keep_aspect_mode" qualifiers="const"> - <return type="int"> + <method name="unproject_position" qualifiers="const"> + <return type="Vector2"> </return> + <argument index="0" name="world_point" type="Vector3"> + </argument> <description> + Return how a 3D point in worldspace maps to a 2D coordinate in the [Viewport] rectangle. </description> </method> </methods> <constants> + <constant name="KEEP_WIDTH" value="0"> + </constant> + <constant name="KEEP_HEIGHT" value="1"> + </constant> <constant name="PROJECTION_PERSPECTIVE" value="0"> Perspective Projection (object's size on the screen becomes smaller when far away). </constant> <constant name="PROJECTION_ORTHOGONAL" value="1"> Orthogonal Projection (objects remain the same size on the screen no matter how far away they are). </constant> - <constant name="KEEP_WIDTH" value="0"> - </constant> - <constant name="KEEP_HEIGHT" value="1"> - </constant> </constants> </class> <class name="Camera2D" inherits="Node2D" category="Core"> @@ -6635,24 +6675,13 @@ This node is intended to be a simple helper get get things going quickly and it may happen often that more functionality is desired to change how the camera works. To make your own custom camera node, simply inherit from [Node2D] and change the transform of the canvas by calling get_viewport().set_canvas_transform(m) in [Viewport]. </description> <methods> - <method name="set_offset"> - <argument index="0" name="offset" type="Vector2"> - </argument> - <description> - Set the scroll offset. Useful for looking around or camera shake animations. - </description> - </method> - <method name="get_offset" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="clear_current"> <description> - Return the scroll offset. </description> </method> - <method name="set_anchor_mode"> - <argument index="0" name="anchor_mode" type="int"> - </argument> + <method name="force_update_scroll"> <description> + Force the camera to update scroll immediately. </description> </method> <method name="get_anchor_mode" qualifiers="const"> @@ -6661,41 +6690,38 @@ <description> </description> </method> - <method name="set_rotating"> - <argument index="0" name="rotating" type="bool"> - </argument> - <description> - </description> - </method> - <method name="is_rotating" qualifiers="const"> - <return type="bool"> + <method name="get_camera_pos" qualifiers="const"> + <return type="Vector2"> </return> <description> + Return the camera position. </description> </method> - <method name="make_current"> + <method name="get_camera_screen_center" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Make this the current 2D camera for the scene (viewport and layer), in case there's many cameras in the scene. </description> </method> - <method name="clear_current"> + <method name="get_drag_margin" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="margin" type="int"> + </argument> <description> + Return the margins needed to drag the camera (see [method set_drag_margin]). </description> </method> - <method name="is_current" qualifiers="const"> - <return type="bool"> + <method name="get_follow_smoothing" qualifiers="const"> + <return type="float"> </return> <description> - Return true of this is the current camera (see [method make_current]). </description> </method> - <method name="set_limit"> - <argument index="0" name="margin" type="int"> - </argument> - <argument index="1" name="limit" type="int"> - </argument> + <method name="get_h_offset" qualifiers="const"> + <return type="float"> + </return> <description> - Set the scrolling limit in pixels. </description> </method> <method name="get_limit" qualifiers="const"> @@ -6707,21 +6733,35 @@ Return the scrolling limit in pixels. </description> </method> - <method name="set_v_drag_enabled"> - <argument index="0" name="enabled" type="bool"> - </argument> + <method name="get_offset" qualifiers="const"> + <return type="Vector2"> + </return> <description> + Return the scroll offset. </description> </method> - <method name="is_v_drag_enabled" qualifiers="const"> + <method name="get_v_offset" qualifiers="const"> + <return type="float"> + </return> + <description> + </description> + </method> + <method name="get_zoom" qualifiers="const"> + <return type="Vector2"> + </return> + <description> + </description> + </method> + <method name="is_current" qualifiers="const"> <return type="bool"> </return> <description> + Return true of this is the current camera (see [method make_current]). </description> </method> - <method name="set_h_drag_enabled"> - <argument index="0" name="enabled" type="bool"> - </argument> + <method name="is_follow_smoothing_enabled" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> @@ -6731,27 +6771,26 @@ <description> </description> </method> - <method name="set_v_offset"> - <argument index="0" name="ofs" type="float"> - </argument> + <method name="is_rotating" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="get_v_offset" qualifiers="const"> - <return type="float"> + <method name="is_v_drag_enabled" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="set_h_offset"> - <argument index="0" name="ofs" type="float"> - </argument> + <method name="make_current"> <description> + Make this the current 2D camera for the scene (viewport and layer), in case there's many cameras in the scene. </description> </method> - <method name="get_h_offset" qualifiers="const"> - <return type="float"> - </return> + <method name="set_anchor_mode"> + <argument index="0" name="anchor_mode" type="int"> + </argument> <description> </description> </method> @@ -6764,75 +6803,76 @@ Set the margins needed to drag the camera (relative to the screen size). Margin uses the MARGIN_* enum. Drag margins of 0,0,0,0 will keep the camera at the center of the screen, while drag margins of 1,1,1,1 will only move when the camera is at the edges. </description> </method> - <method name="get_drag_margin" qualifiers="const"> - <return type="float"> - </return> - <argument index="0" name="margin" type="int"> + <method name="set_enable_follow_smoothing"> + <argument index="0" name="follow_smoothing" type="bool"> </argument> <description> - Return the margins needed to drag the camera (see [method set_drag_margin]). </description> </method> - <method name="get_camera_pos" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_follow_smoothing"> + <argument index="0" name="follow_smoothing" type="float"> + </argument> <description> - Return the camera position. </description> </method> - <method name="get_camera_screen_center" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_h_drag_enabled"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> </description> </method> - <method name="set_zoom"> - <argument index="0" name="zoom" type="Vector2"> + <method name="set_h_offset"> + <argument index="0" name="ofs" type="float"> </argument> <description> </description> </method> - <method name="get_zoom" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_limit"> + <argument index="0" name="margin" type="int"> + </argument> + <argument index="1" name="limit" type="int"> + </argument> <description> + Set the scrolling limit in pixels. </description> </method> - <method name="set_follow_smoothing"> - <argument index="0" name="follow_smoothing" type="float"> + <method name="set_offset"> + <argument index="0" name="offset" type="Vector2"> </argument> <description> + Set the scroll offset. Useful for looking around or camera shake animations. </description> </method> - <method name="get_follow_smoothing" qualifiers="const"> - <return type="float"> - </return> + <method name="set_rotating"> + <argument index="0" name="rotating" type="bool"> + </argument> <description> </description> </method> - <method name="set_enable_follow_smoothing"> - <argument index="0" name="follow_smoothing" type="bool"> + <method name="set_v_drag_enabled"> + <argument index="0" name="enabled" type="bool"> </argument> <description> </description> </method> - <method name="is_follow_smoothing_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_v_offset"> + <argument index="0" name="ofs" type="float"> + </argument> <description> </description> </method> - <method name="force_update_scroll"> + <method name="set_zoom"> + <argument index="0" name="zoom" type="Vector2"> + </argument> <description> - Force the camera to update scroll immediately. </description> </method> </methods> <constants> - <constant name="ANCHOR_MODE_DRAG_CENTER" value="1"> - </constant> <constant name="ANCHOR_MODE_FIXED_TOP_LEFT" value="0"> </constant> + <constant name="ANCHOR_MODE_DRAG_CENTER" value="1"> + </constant> </constants> </class> <class name="CanvasItem" inherits="Node" category="Core"> @@ -6852,159 +6892,45 @@ Called (if exists) to draw the canvas item. </description> </method> - <method name="edit_set_state"> - <argument index="0" name="state" type="Variant"> + <method name="draw_char"> + <return type="float"> + </return> + <argument index="0" name="font" type="Font"> </argument> - <description> - Used for editing, returns an opaque value representing the transform state. - </description> - </method> - <method name="edit_get" qualifiers="const"> - <description> - </description> - </method> - <method name="edit_set_rect"> - <argument index="0" name="rect" type="Rect2"> + <argument index="1" name="pos" type="Vector2"> </argument> - <description> - </description> - </method> - <method name="edit_rotate"> - <argument index="0" name="degrees" type="float"> + <argument index="2" name="char" type="String"> </argument> - <description> - Used for editing, handle rotation. - </description> - </method> - <method name="get_item_rect" qualifiers="const"> - <return type="Rect2"> - </return> - <description> - Return a rect containing the editable contents of the item. - </description> - </method> - <method name="get_canvas_item" qualifiers="const"> - <return type="RID"> - </return> - <description> - Return the canvas item RID used by [VisualServer] for this item. - </description> - </method> - <method name="is_visible" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return true if this CanvasItem is visible. It may be invisible because itself or a parent canvas item is hidden. - </description> - </method> - <method name="is_hidden" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return true if this CanvasItem is hidden. Note that the CanvasItem may not be visible, but as long as it's not hidden ([method hide] called) the function will return false. - </description> - </method> - <method name="show"> - <description> - Show the CanvasItem currently hidden. - </description> - </method> - <method name="hide"> - <description> - Hide the CanvasItem currently visible. - </description> - </method> - <method name="set_hidden"> - <argument index="0" name="hidden" type="bool"> + <argument index="3" name="next" type="String"> </argument> - <description> - </description> - </method> - <method name="update"> - <description> - Queue the CanvasItem for update. NOTIFICATION_DRAW will be called on idle time to request redraw. - </description> - </method> - <method name="set_as_toplevel"> - <argument index="0" name="enable" type="bool"> + <argument index="4" name="modulate" type="Color" default="Color(1,1,1,1)"> </argument> <description> - Set as toplevel. This means that it will not inherit transform from parent canvas items. - </description> - </method> - <method name="is_set_as_toplevel" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return if set as toplevel. See [method set_as_toplevel]. + Draw a string character using a custom font. Returns the advance, depending on the char width and kerning with an optional next char. </description> </method> - <method name="set_blend_mode"> - <argument index="0" name="blend_mode" type="int"> + <method name="draw_circle"> + <argument index="0" name="pos" type="Vector2"> </argument> - <description> - Set the blending mode from enum BLEND_MODE_*. - </description> - </method> - <method name="get_blend_mode" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the current blending mode from enum BLEND_MODE_*. - </description> - </method> - <method name="set_light_mask"> - <argument index="0" name="light_mask" type="int"> + <argument index="1" name="radius" type="float"> </argument> - <description> - </description> - </method> - <method name="get_light_mask" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> - <method name="set_opacity"> - <argument index="0" name="opacity" type="float"> + <argument index="2" name="color" type="Color"> </argument> <description> - Set canvas item opacity. This will affect the canvas item and all the children. - </description> - </method> - <method name="get_opacity" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the canvas item opacity. This affects the canvas item and all the children. + Draw a colored circle. </description> </method> - <method name="set_self_opacity"> - <argument index="0" name="self_opacity" type="float"> + <method name="draw_colored_polygon"> + <argument index="0" name="points" type="Vector2Array"> </argument> - <description> - Set canvas item self-opacity. This does not affect the opacity of children items. - </description> - </method> - <method name="get_self_opacity" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the canvas item self-opacity. - </description> - </method> - <method name="set_draw_behind_parent"> - <argument index="0" name="enable" type="bool"> + <argument index="1" name="color" type="Color"> + </argument> + <argument index="2" name="uvs" type="Vector2Array" default="Vector2Array()"> + </argument> + <argument index="3" name="texture" type="Texture" default="NULL"> </argument> <description> - Sets whether the canvas item is drawn behind its parent. - </description> - </method> - <method name="is_draw_behind_parent_enabled" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return whether the item is drawn behind its parent. + Draw a colored polygon of any amount of points, convex or concave. </description> </method> <method name="draw_line"> @@ -7020,6 +6946,34 @@ Draw a line from a 2D point to another, with a given color and width. </description> </method> + <method name="draw_polygon"> + <argument index="0" name="points" type="Vector2Array"> + </argument> + <argument index="1" name="colors" type="ColorArray"> + </argument> + <argument index="2" name="uvs" type="Vector2Array" default="Vector2Array()"> + </argument> + <argument index="3" name="texture" type="Texture" default="NULL"> + </argument> + <description> + Draw a polygon of any amount of points, convex or concave. + </description> + </method> + <method name="draw_primitive"> + <argument index="0" name="points" type="Vector2Array"> + </argument> + <argument index="1" name="colors" type="ColorArray"> + </argument> + <argument index="2" name="uvs" type="Vector2Array"> + </argument> + <argument index="3" name="texture" type="Texture" default="NULL"> + </argument> + <argument index="4" name="width" type="float" default="1"> + </argument> + <description> + Draw a custom primitive, 1 point for a point, 2 points for a line, 3 points for a triangle and 4 points for a quad. + </description> + </method> <method name="draw_rect"> <argument index="0" name="rect" type="Rect2"> </argument> @@ -7029,15 +6983,39 @@ Draw a colored rectangle. </description> </method> - <method name="draw_circle"> + <method name="draw_set_transform"> <argument index="0" name="pos" type="Vector2"> </argument> - <argument index="1" name="radius" type="float"> + <argument index="1" name="rot" type="float"> </argument> - <argument index="2" name="color" type="Color"> + <argument index="2" name="scale" type="Vector2"> </argument> <description> - Draw a colored circle. + Set a custom transform for drawing. Anything drawn afterwards will be transformed by this. + </description> + </method> + <method name="draw_string"> + <argument index="0" name="font" type="Font"> + </argument> + <argument index="1" name="pos" type="Vector2"> + </argument> + <argument index="2" name="text" type="String"> + </argument> + <argument index="3" name="modulate" type="Color" default="Color(1,1,1,1)"> + </argument> + <argument index="4" name="clip_w" type="int" default="-1"> + </argument> + <description> + Draw a string using a custom font. + </description> + </method> + <method name="draw_style_box"> + <argument index="0" name="style_box" type="StyleBox"> + </argument> + <argument index="1" name="rect" type="Rect2"> + </argument> + <description> + Draw a styled rectangle. </description> </method> <method name="draw_texture"> @@ -7081,105 +7059,62 @@ Draw a textured rectangle region at a given position, optionally modulated by a color. Transpose swaps the x and y coordinates when reading the texture. </description> </method> - <method name="draw_style_box"> - <argument index="0" name="style_box" type="StyleBox"> - </argument> - <argument index="1" name="rect" type="Rect2"> - </argument> + <method name="edit_get" qualifiers="const"> <description> - Draw a styled rectangle. </description> </method> - <method name="draw_primitive"> - <argument index="0" name="points" type="Vector2Array"> - </argument> - <argument index="1" name="colors" type="ColorArray"> - </argument> - <argument index="2" name="uvs" type="Vector2Array"> - </argument> - <argument index="3" name="texture" type="Texture" default="NULL"> - </argument> - <argument index="4" name="width" type="float" default="1"> + <method name="edit_rotate"> + <argument index="0" name="degrees" type="float"> </argument> <description> - Draw a custom primitive, 1 point for a point, 2 points for a line, 3 points for a triangle and 4 points for a quad. + Used for editing, handle rotation. </description> </method> - <method name="draw_polygon"> - <argument index="0" name="points" type="Vector2Array"> - </argument> - <argument index="1" name="colors" type="ColorArray"> - </argument> - <argument index="2" name="uvs" type="Vector2Array" default="Vector2Array()"> - </argument> - <argument index="3" name="texture" type="Texture" default="NULL"> + <method name="edit_set_rect"> + <argument index="0" name="rect" type="Rect2"> </argument> <description> - Draw a polygon of any amount of points, convex or concave. </description> </method> - <method name="draw_colored_polygon"> - <argument index="0" name="points" type="Vector2Array"> - </argument> - <argument index="1" name="color" type="Color"> - </argument> - <argument index="2" name="uvs" type="Vector2Array" default="Vector2Array()"> - </argument> - <argument index="3" name="texture" type="Texture" default="NULL"> + <method name="edit_set_state"> + <argument index="0" name="state" type="Variant"> </argument> <description> - Draw a colored polygon of any amount of points, convex or concave. + Used for editing, returns an opaque value representing the transform state. </description> </method> - <method name="draw_string"> - <argument index="0" name="font" type="Font"> - </argument> - <argument index="1" name="pos" type="Vector2"> - </argument> - <argument index="2" name="text" type="String"> - </argument> - <argument index="3" name="modulate" type="Color" default="Color(1,1,1,1)"> - </argument> - <argument index="4" name="clip_w" type="int" default="-1"> - </argument> + <method name="get_blend_mode" qualifiers="const"> + <return type="int"> + </return> <description> - Draw a string using a custom font. + Return the current blending mode from enum BLEND_MODE_*. </description> </method> - <method name="draw_char"> - <return type="float"> + <method name="get_canvas" qualifiers="const"> + <return type="RID"> </return> - <argument index="0" name="font" type="Font"> - </argument> - <argument index="1" name="pos" type="Vector2"> - </argument> - <argument index="2" name="char" type="String"> - </argument> - <argument index="3" name="next" type="String"> - </argument> - <argument index="4" name="modulate" type="Color" default="Color(1,1,1,1)"> - </argument> <description> - Draw a string character using a custom font. Returns the advance, depending on the char width and kerning with an optional next char. </description> </method> - <method name="draw_set_transform"> - <argument index="0" name="pos" type="Vector2"> - </argument> - <argument index="1" name="rot" type="float"> - </argument> - <argument index="2" name="scale" type="Vector2"> - </argument> + <method name="get_canvas_item" qualifiers="const"> + <return type="RID"> + </return> <description> - Set a custom transform for drawing. Anything drawn afterwards will be transformed by this. + Return the canvas item RID used by [VisualServer] for this item. </description> </method> - <method name="get_transform" qualifiers="const"> + <method name="get_canvas_transform" qualifiers="const"> <return type="Matrix32"> </return> <description> </description> </method> + <method name="get_global_mouse_pos" qualifiers="const"> + <return type="Vector2"> + </return> + <description> + </description> + </method> <method name="get_global_transform" qualifiers="const"> <return type="Matrix32"> </return> @@ -7192,20 +7127,21 @@ <description> </description> </method> - <method name="get_viewport_transform" qualifiers="const"> - <return type="Matrix32"> + <method name="get_item_and_children_rect" qualifiers="const"> + <return type="Rect2"> </return> <description> </description> </method> - <method name="get_viewport_rect" qualifiers="const"> + <method name="get_item_rect" qualifiers="const"> <return type="Rect2"> </return> <description> + Return a rect containing the editable contents of the item. </description> </method> - <method name="get_canvas_transform" qualifiers="const"> - <return type="Matrix32"> + <method name="get_light_mask" qualifiers="const"> + <return type="int"> </return> <description> </description> @@ -7216,14 +7152,46 @@ <description> </description> </method> - <method name="get_global_mouse_pos" qualifiers="const"> - <return type="Vector2"> + <method name="get_material" qualifiers="const"> + <return type="CanvasItemMaterial"> </return> <description> </description> </method> - <method name="get_canvas" qualifiers="const"> - <return type="RID"> + <method name="get_opacity" qualifiers="const"> + <return type="float"> + </return> + <description> + Return the canvas item opacity. This affects the canvas item and all the children. + </description> + </method> + <method name="get_self_opacity" qualifiers="const"> + <return type="float"> + </return> + <description> + Return the canvas item self-opacity. + </description> + </method> + <method name="get_transform" qualifiers="const"> + <return type="Matrix32"> + </return> + <description> + </description> + </method> + <method name="get_use_parent_material" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> + <method name="get_viewport_rect" qualifiers="const"> + <return type="Rect2"> + </return> + <description> + </description> + </method> + <method name="get_viewport_transform" qualifiers="const"> + <return type="Matrix32"> </return> <description> </description> @@ -7234,28 +7202,37 @@ <description> </description> </method> - <method name="set_material"> - <argument index="0" name="material" type="CanvasItemMaterial"> - </argument> + <method name="hide"> <description> + Hide the CanvasItem currently visible. </description> </method> - <method name="get_material" qualifiers="const"> - <return type="CanvasItemMaterial"> + <method name="is_draw_behind_parent_enabled" qualifiers="const"> + <return type="bool"> </return> <description> + Return whether the item is drawn behind its parent. </description> </method> - <method name="set_use_parent_material"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="is_hidden" qualifiers="const"> + <return type="bool"> + </return> <description> + Return true if this CanvasItem is hidden. Note that the CanvasItem may not be visible, but as long as it's not hidden ([method hide] called) the function will return false. </description> </method> - <method name="get_use_parent_material" qualifiers="const"> + <method name="is_set_as_toplevel" qualifiers="const"> <return type="bool"> </return> <description> + Return if set as toplevel. See [method set_as_toplevel]. + </description> + </method> + <method name="is_visible" qualifiers="const"> + <return type="bool"> + </return> + <description> + Return true if this CanvasItem is visible. It may be invisible because itself or a parent canvas item is hidden. </description> </method> <method name="make_input_local" qualifiers="const"> @@ -7266,26 +7243,95 @@ <description> </description> </method> + <method name="set_as_toplevel"> + <argument index="0" name="enable" type="bool"> + </argument> + <description> + Set as toplevel. This means that it will not inherit transform from parent canvas items. + </description> + </method> + <method name="set_blend_mode"> + <argument index="0" name="blend_mode" type="int"> + </argument> + <description> + Set the blending mode from enum BLEND_MODE_*. + </description> + </method> + <method name="set_draw_behind_parent"> + <argument index="0" name="enable" type="bool"> + </argument> + <description> + Sets whether the canvas item is drawn behind its parent. + </description> + </method> + <method name="set_hidden"> + <argument index="0" name="hidden" type="bool"> + </argument> + <description> + </description> + </method> + <method name="set_light_mask"> + <argument index="0" name="light_mask" type="int"> + </argument> + <description> + </description> + </method> + <method name="set_material"> + <argument index="0" name="material" type="CanvasItemMaterial"> + </argument> + <description> + </description> + </method> + <method name="set_opacity"> + <argument index="0" name="opacity" type="float"> + </argument> + <description> + Set canvas item opacity. This will affect the canvas item and all the children. + </description> + </method> + <method name="set_self_opacity"> + <argument index="0" name="self_opacity" type="float"> + </argument> + <description> + Set canvas item self-opacity. This does not affect the opacity of children items. + </description> + </method> + <method name="set_use_parent_material"> + <argument index="0" name="enable" type="bool"> + </argument> + <description> + </description> + </method> + <method name="show"> + <description> + Show the CanvasItem currently hidden. + </description> + </method> + <method name="update"> + <description> + Queue the CanvasItem for update. NOTIFICATION_DRAW will be called on idle time to request redraw. + </description> + </method> </methods> <signals> - <signal name="item_rect_changed"> + <signal name="draw"> <description> - Emitted when the item rect has changed. + Emitted when the CanvasItem must redraw. This can only be connected realtime, as deferred will not allow drawing. </description> </signal> - <signal name="draw"> + <signal name="hide"> <description> - Emitted when the CanvasItem must redraw. This can only be connected realtime, as deferred will not allow drawing. + Emitted when becoming hidden. </description> </signal> - <signal name="visibility_changed"> + <signal name="item_rect_changed"> <description> - Emitted when the visibility (hidden/visible) changes. + Emitted when the item rect has changed. </description> </signal> - <signal name="hide"> + <signal name="visibility_changed"> <description> - Emitted when becoming hidden. + Emitted when the visibility (hidden/visible) changes. </description> </signal> </signals> @@ -7305,6 +7351,9 @@ <constant name="BLEND_MODE_PREMULT_ALPHA" value="4"> Mix blending mode. Colors are assumed to be premultiplied by the alpha (opacity) value. </constant> + <constant name="NOTIFICATION_TRANSFORM_CHANGED" value="29"> + Canvas item transform has changed. Only received if requested. + </constant> <constant name="NOTIFICATION_DRAW" value="30"> CanvasItem is requested to draw. </constant> @@ -7317,9 +7366,6 @@ <constant name="NOTIFICATION_EXIT_CANVAS" value="33"> Canvas item has exited the canvas. </constant> - <constant name="NOTIFICATION_TRANSFORM_CHANGED" value="29"> - Canvas item transform has changed. Only received if requested. - </constant> </constants> </class> <class name="CanvasItemMaterial" inherits="Resource" category="Core"> @@ -7328,29 +7374,35 @@ <description> </description> <methods> - <method name="set_shader"> - <argument index="0" name="shader" type="Shader"> - </argument> - <description> - </description> - </method> <method name="get_shader" qualifiers="const"> <return type="Shader"> </return> <description> </description> </method> - <method name="set_shader_param"> + <method name="get_shader_param" qualifiers="const"> <argument index="0" name="param" type="String"> </argument> - <argument index="1" name="value" type="Variant"> + <description> + </description> + </method> + <method name="get_shading_mode" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="set_shader"> + <argument index="0" name="shader" type="Shader"> </argument> <description> </description> </method> - <method name="get_shader_param" qualifiers="const"> + <method name="set_shader_param"> <argument index="0" name="param" type="String"> </argument> + <argument index="1" name="value" type="Variant"> + </argument> <description> </description> </method> @@ -7360,12 +7412,6 @@ <description> </description> </method> - <method name="get_shading_mode" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> </methods> <constants> <constant name="SHADING_NORMAL" value="0"> @@ -7404,13 +7450,6 @@ Canvas Item layer. [CanvasItem] nodes that are direct or indirect children of a [CanvasLayer] will be drawn in that layer. The layer is a numeric index that defines the draw order. The default 2D scene renders with index 0, so a [CanvasLayer] with index -1 will be drawn below, and one with index 1 will be drawn above. This is very useful for HUDs (in layer 1+ or above), or backgrounds (in layer -1 or below). </description> <methods> - <method name="set_layer"> - <argument index="0" name="layer" type="int"> - </argument> - <description> - Set the layer index, determines the draw order, a lower value will be below a higher one. - </description> - </method> <method name="get_layer" qualifiers="const"> <return type="int"> </return> @@ -7418,88 +7457,95 @@ Return the layer index, determines the draw order, a lower value will be below a higher one. </description> </method> - <method name="set_transform"> - <argument index="0" name="transform" type="Matrix32"> - </argument> + <method name="get_offset" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Set the base transform for this layer. + Return the base offset for this layer (helper). </description> </method> - <method name="get_transform" qualifiers="const"> - <return type="Matrix32"> + <method name="get_rotation" qualifiers="const"> + <return type="float"> </return> <description> - Return the base transform for this layer. + Return the base rotation for this layer (helper). </description> </method> - <method name="set_offset"> - <argument index="0" name="offset" type="Vector2"> - </argument> + <method name="get_rotationd" qualifiers="const"> + <return type="float"> + </return> <description> - Set the base offset for this layer (helper). + Get rotation of the layer in degree. </description> </method> - <method name="get_offset" qualifiers="const"> + <method name="get_scale" qualifiers="const"> <return type="Vector2"> </return> <description> - Return the base offset for this layer (helper). + Return the base scale for this layer (helper). </description> </method> - <method name="set_rotation"> - <argument index="0" name="radians" type="float"> - </argument> + <method name="get_transform" qualifiers="const"> + <return type="Matrix32"> + </return> <description> - Set the base rotation for this layer (helper). + Return the base transform for this layer. </description> </method> - <method name="get_rotation" qualifiers="const"> - <return type="float"> + <method name="get_viewport" qualifiers="const"> + <return type="RID"> </return> <description> - Return the base rotation for this layer (helper). + Return the viewport RID for this layer. </description> </method> - <method name="set_rotationd"> - <argument index="0" name="degrees" type="float"> + <method name="get_world_2d" qualifiers="const"> + <return type="World2D"> + </return> + <description> + Return the [World2D] used by this layer. + </description> + </method> + <method name="set_layer"> + <argument index="0" name="layer" type="int"> </argument> <description> - Set rotation of the layer in degree. + Set the layer index, determines the draw order, a lower value will be below a higher one. </description> </method> - <method name="get_rotationd" qualifiers="const"> - <return type="float"> - </return> + <method name="set_offset"> + <argument index="0" name="offset" type="Vector2"> + </argument> <description> - Get rotation of the layer in degree. + Set the base offset for this layer (helper). </description> </method> - <method name="set_scale"> - <argument index="0" name="scale" type="Vector2"> + <method name="set_rotation"> + <argument index="0" name="radians" type="float"> </argument> <description> - Set the base scale for this layer (helper). + Set the base rotation for this layer (helper). </description> </method> - <method name="get_scale" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_rotationd"> + <argument index="0" name="degrees" type="float"> + </argument> <description> - Return the base scale for this layer (helper). + Set rotation of the layer in degree. </description> </method> - <method name="get_world_2d" qualifiers="const"> - <return type="World2D"> - </return> + <method name="set_scale"> + <argument index="0" name="scale" type="Vector2"> + </argument> <description> - Return the [World2D] used by this layer. + Set the base scale for this layer (helper). </description> </method> - <method name="get_viewport" qualifiers="const"> - <return type="RID"> - </return> + <method name="set_transform"> + <argument index="0" name="transform" type="Matrix32"> + </argument> <description> - Return the viewport RID for this layer. + Set the base transform for this layer. </description> </method> </methods> @@ -7514,13 +7560,6 @@ CanvasModulate tints the canvas elements using its asigned color </description> <methods> - <method name="set_color"> - <argument index="0" name="color" type="Color"> - </argument> - <description> - Sets the canvas tint color - </description> - </method> <method name="get_color" qualifiers="const"> <return type="Color"> </return> @@ -7528,6 +7567,13 @@ Gets the canvas tint color </description> </method> + <method name="set_color"> + <argument index="0" name="color" type="Color"> + </argument> + <description> + Sets the canvas tint color + </description> + </method> </methods> <constants> </constants> @@ -7540,11 +7586,11 @@ Capsule shape resource, which can be set into a [PhysicsBody] or area. </description> <methods> - <method name="set_radius"> - <argument index="0" name="radius" type="float"> - </argument> + <method name="get_height" qualifiers="const"> + <return type="float"> + </return> <description> - Set the capsule radius. + Return the capsule height. </description> </method> <method name="get_radius" qualifiers="const"> @@ -7561,11 +7607,11 @@ Set the capsule height. </description> </method> - <method name="get_height" qualifiers="const"> - <return type="float"> - </return> + <method name="set_radius"> + <argument index="0" name="radius" type="float"> + </argument> <description> - Return the capsule height. + Set the capsule radius. </description> </method> </methods> @@ -7580,11 +7626,11 @@ Capsule 2D shape resource for physics. A capsule (or sometimes called "pill") is like a line grown in all directions. It has a radius and a height, and is often useful for modeling biped characters. </description> <methods> - <method name="set_radius"> - <argument index="0" name="radius" type="float"> - </argument> + <method name="get_height" qualifiers="const"> + <return type="float"> + </return> <description> - Set the radius of the [CapsuleShape2D]. + Return the height of the [CapsuleShape2D]. </description> </method> <method name="get_radius" qualifiers="const"> @@ -7601,11 +7647,11 @@ Set the height of the [CapsuleShape2D]. </description> </method> - <method name="get_height" qualifiers="const"> - <return type="float"> - </return> + <method name="set_radius"> + <argument index="0" name="radius" type="float"> + </argument> <description> - Return the height of the [CapsuleShape2D]. + Set the radius of the [CapsuleShape2D]. </description> </method> </methods> @@ -7620,13 +7666,6 @@ CenterContainer Keeps children controls centered. This container keeps all children to their minimum size, in the center. </description> <methods> - <method name="set_use_top_left"> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - This function will anchor the container children to the top left corner of the the container boundaries, moving all its children to that position, (the children new center will be the top left corner of the container). - </description> - </method> <method name="is_using_top_left" qualifiers="const"> <return type="bool"> </return> @@ -7634,6 +7673,13 @@ Should put children to the top left corner instead of center of the container. </description> </method> + <method name="set_use_top_left"> + <argument index="0" name="enable" type="bool"> + </argument> + <description> + This function will anchor the container children to the top left corner of the the container boundaries, moving all its children to that position, (the children new center will be the top left corner of the container). + </description> + </method> </methods> <constants> </constants> @@ -7652,35 +7698,35 @@ <theme_items> <theme_item name="check_vadjust" type="int"> </theme_item> - <theme_item name="hseparation" type="int"> + <theme_item name="checked" type="Texture"> </theme_item> - <theme_item name="font_color_disabled" type="Color"> + <theme_item name="disabled" type="StyleBox"> </theme_item> - <theme_item name="font_color" type="Color"> + <theme_item name="focus" type="StyleBox"> </theme_item> - <theme_item name="font_color_hover" type="Color"> + <theme_item name="font" type="Font"> </theme_item> - <theme_item name="font_color_pressed" type="Color"> + <theme_item name="font_color" type="Color"> </theme_item> - <theme_item name="radio_checked" type="Texture"> + <theme_item name="font_color_disabled" type="Color"> </theme_item> - <theme_item name="checked" type="Texture"> + <theme_item name="font_color_hover" type="Color"> </theme_item> - <theme_item name="radio_unchecked" type="Texture"> + <theme_item name="font_color_pressed" type="Color"> </theme_item> - <theme_item name="unchecked" type="Texture"> + <theme_item name="hover" type="StyleBox"> </theme_item> - <theme_item name="font" type="Font"> + <theme_item name="hseparation" type="int"> </theme_item> - <theme_item name="hover" type="StyleBox"> + <theme_item name="normal" type="StyleBox"> </theme_item> <theme_item name="pressed" type="StyleBox"> </theme_item> - <theme_item name="focus" type="StyleBox"> + <theme_item name="radio_checked" type="Texture"> </theme_item> - <theme_item name="disabled" type="StyleBox"> + <theme_item name="radio_unchecked" type="Texture"> </theme_item> - <theme_item name="normal" type="StyleBox"> + <theme_item name="unchecked" type="Texture"> </theme_item> </theme_items> </class> @@ -7698,31 +7744,31 @@ <theme_items> <theme_item name="check_vadjust" type="int"> </theme_item> - <theme_item name="hseparation" type="int"> + <theme_item name="disabled" type="StyleBox"> </theme_item> - <theme_item name="font_color_disabled" type="Color"> + <theme_item name="focus" type="StyleBox"> + </theme_item> + <theme_item name="font" type="Font"> </theme_item> <theme_item name="font_color" type="Color"> </theme_item> + <theme_item name="font_color_disabled" type="Color"> + </theme_item> <theme_item name="font_color_hover" type="Color"> </theme_item> <theme_item name="font_color_pressed" type="Color"> </theme_item> - <theme_item name="off" type="Texture"> - </theme_item> - <theme_item name="on" type="Texture"> - </theme_item> - <theme_item name="font" type="Font"> - </theme_item> <theme_item name="hover" type="StyleBox"> </theme_item> - <theme_item name="pressed" type="StyleBox"> + <theme_item name="hseparation" type="int"> </theme_item> - <theme_item name="focus" type="StyleBox"> + <theme_item name="normal" type="StyleBox"> </theme_item> - <theme_item name="disabled" type="StyleBox"> + <theme_item name="off" type="Texture"> </theme_item> - <theme_item name="normal" type="StyleBox"> + <theme_item name="on" type="Texture"> + </theme_item> + <theme_item name="pressed" type="StyleBox"> </theme_item> </theme_items> </class> @@ -7734,13 +7780,6 @@ Circular Shape for 2D Physics. This shape is useful for modeling balls or small characters and it's collision detection with everything else is very fast. </description> <methods> - <method name="set_radius"> - <argument index="0" name="radius" type="float"> - </argument> - <description> - Set the radius of the circle shape. - </description> - </method> <method name="get_radius" qualifiers="const"> <return type="float"> </return> @@ -7748,6 +7787,13 @@ Return the radius of the circle shape. </description> </method> + <method name="set_radius"> + <argument index="0" name="radius" type="float"> + </argument> + <description> + Set the radius of the circle shape. + </description> + </method> </methods> <constants> </constants> @@ -7780,54 +7826,52 @@ <description> </description> </method> - <method name="get_shape_count" qualifiers="const"> - <return type="int"> + <method name="clear_shapes"> + <description> + </description> + </method> + <method name="get_capture_input_on_drag" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="set_shape"> - <argument index="0" name="shape_idx" type="int"> - </argument> - <argument index="1" name="shape" type="Shape"> - </argument> + <method name="get_rid" qualifiers="const"> + <return type="RID"> + </return> <description> </description> </method> - <method name="set_shape_transform"> + <method name="get_shape" qualifiers="const"> + <return type="Shape"> + </return> <argument index="0" name="shape_idx" type="int"> </argument> - <argument index="1" name="transform" type="Transform"> - </argument> <description> </description> </method> - <method name="set_shape_as_trigger"> - <argument index="0" name="shape_idx" type="int"> - </argument> - <argument index="1" name="enable" type="bool"> - </argument> + <method name="get_shape_count" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="is_shape_set_as_trigger" qualifiers="const"> - <return type="bool"> + <method name="get_shape_transform" qualifiers="const"> + <return type="Transform"> </return> <argument index="0" name="shape_idx" type="int"> </argument> <description> </description> </method> - <method name="get_shape" qualifiers="const"> - <return type="Shape"> + <method name="is_ray_pickable" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="shape_idx" type="int"> - </argument> <description> </description> </method> - <method name="get_shape_transform" qualifiers="const"> - <return type="Transform"> + <method name="is_shape_set_as_trigger" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="shape_idx" type="int"> </argument> @@ -7840,7 +7884,9 @@ <description> </description> </method> - <method name="clear_shapes"> + <method name="set_capture_input_on_drag"> + <argument index="0" name="enable" type="bool"> + </argument> <description> </description> </method> @@ -7850,36 +7896,32 @@ <description> </description> </method> - <method name="is_ray_pickable" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> - <method name="set_capture_input_on_drag"> - <argument index="0" name="enable" type="bool"> + <method name="set_shape"> + <argument index="0" name="shape_idx" type="int"> + </argument> + <argument index="1" name="shape" type="Shape"> </argument> <description> </description> </method> - <method name="get_capture_input_on_drag" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_shape_as_trigger"> + <argument index="0" name="shape_idx" type="int"> + </argument> + <argument index="1" name="enable" type="bool"> + </argument> <description> </description> </method> - <method name="get_rid" qualifiers="const"> - <return type="RID"> - </return> + <method name="set_shape_transform"> + <argument index="0" name="shape_idx" type="int"> + </argument> + <argument index="1" name="transform" type="Transform"> + </argument> <description> </description> </method> </methods> <signals> - <signal name="mouse_enter"> - <description> - </description> - </signal> <signal name="input_event"> <argument index="0" name="camera" type="Object"> </argument> @@ -7894,6 +7936,10 @@ <description> </description> </signal> + <signal name="mouse_enter"> + <description> + </description> + </signal> <signal name="mouse_exit"> <description> </description> @@ -7930,38 +7976,16 @@ Add a [Shape2D] to the collision body, with a given custom transform. </description> </method> - <method name="get_shape_count" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the amount of shapes in the collision body. Because a [CollisionPolygon2D] can generate more than one [Shape2D], the amount returned does not have to match the sum of [CollisionShape2D] and [CollisionPolygon2D]. - </description> - </method> - <method name="set_shape"> - <argument index="0" name="shape_idx" type="int"> - </argument> - <argument index="1" name="shape" type="Shape"> - </argument> - <description> - Change a shape in the collision body. - </description> - </method> - <method name="set_shape_transform"> - <argument index="0" name="shape_idx" type="int"> - </argument> - <argument index="1" name="transform" type="Matrix32"> - </argument> + <method name="clear_shapes"> <description> - Change the shape transform in the collision body. + Remove all shapes. </description> </method> - <method name="set_shape_as_trigger"> - <argument index="0" name="shape_idx" type="int"> - </argument> - <argument index="1" name="enable" type="bool"> - </argument> + <method name="get_rid" qualifiers="const"> + <return type="RID"> + </return> <description> - Set whether a shape is a trigger. A trigger shape detects collisions, but is otherwise unaffected by physics (i.e. colliding objects will not get blocked). + Return the RID of this object. </description> </method> <method name="get_shape" qualifiers="const"> @@ -7973,6 +7997,13 @@ Return the shape in the given index. </description> </method> + <method name="get_shape_count" qualifiers="const"> + <return type="int"> + </return> + <description> + Return the amount of shapes in the collision body. Because a [CollisionPolygon2D] can generate more than one [Shape2D], the amount returned does not have to match the sum of [CollisionShape2D] and [CollisionPolygon2D]. + </description> + </method> <method name="get_shape_transform" qualifiers="const"> <return type="Matrix32"> </return> @@ -7982,6 +8013,13 @@ Return the shape transform in the given index. </description> </method> + <method name="is_pickable" qualifiers="const"> + <return type="bool"> + </return> + <description> + Return whether this object is pickable. + </description> + </method> <method name="is_shape_set_as_trigger" qualifiers="const"> <return type="bool"> </return> @@ -7998,39 +8036,42 @@ Remove the shape in the given index. </description> </method> - <method name="clear_shapes"> + <method name="set_pickable"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> - Remove all shapes. + Set whether this object is pickable. A pickable object can detect the mouse pointer enter/leave it and, if the mouse is inside it, report input events. </description> </method> - <method name="get_rid" qualifiers="const"> - <return type="RID"> - </return> + <method name="set_shape"> + <argument index="0" name="shape_idx" type="int"> + </argument> + <argument index="1" name="shape" type="Shape"> + </argument> <description> - Return the RID of this object. + Change a shape in the collision body. </description> </method> - <method name="set_pickable"> - <argument index="0" name="enabled" type="bool"> + <method name="set_shape_as_trigger"> + <argument index="0" name="shape_idx" type="int"> + </argument> + <argument index="1" name="enable" type="bool"> </argument> <description> - Set whether this object is pickable. A pickable object can detect the mouse pointer enter/leave it and, if the mouse is inside it, report input events. + Set whether a shape is a trigger. A trigger shape detects collisions, but is otherwise unaffected by physics (i.e. colliding objects will not get blocked). </description> </method> - <method name="is_pickable" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_shape_transform"> + <argument index="0" name="shape_idx" type="int"> + </argument> + <argument index="1" name="transform" type="Matrix32"> + </argument> <description> - Return whether this object is pickable. + Change the shape transform in the collision body. </description> </method> </methods> <signals> - <signal name="mouse_enter"> - <description> - This event fires only once when the mouse pointer enters any shape of this object. - </description> - </signal> <signal name="input_event"> <argument index="0" name="viewport" type="Object"> </argument> @@ -8042,6 +8083,11 @@ This signal triggers when an input event fires over a shape. The first parameter is the viewport where the event took place. The second holds the input event received, and the third the shape of this object where it happened. </description> </signal> + <signal name="mouse_enter"> + <description> + This event fires only once when the mouse pointer enters any shape of this object. + </description> + </signal> <signal name="mouse_exit"> <description> This event fires only once when the mouse pointer exits all shapes of this object. @@ -8057,21 +8103,21 @@ <description> </description> <methods> - <method name="set_build_mode"> - <argument index="0" name="build_mode" type="int"> - </argument> + <method name="get_build_mode" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_build_mode" qualifiers="const"> + <method name="get_collision_object_first_shape" qualifiers="const"> <return type="int"> </return> <description> </description> </method> - <method name="set_depth"> - <argument index="0" name="depth" type="float"> - </argument> + <method name="get_collision_object_last_shape" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> @@ -8081,27 +8127,27 @@ <description> </description> </method> - <method name="set_polygon"> - <argument index="0" name="polygon" type="Vector2Array"> - </argument> - <description> - </description> - </method> <method name="get_polygon" qualifiers="const"> <return type="Vector2Array"> </return> <description> </description> </method> - <method name="get_collision_object_first_shape" qualifiers="const"> - <return type="int"> - </return> + <method name="set_build_mode"> + <argument index="0" name="build_mode" type="int"> + </argument> <description> </description> </method> - <method name="get_collision_object_last_shape" qualifiers="const"> - <return type="int"> - </return> + <method name="set_depth"> + <argument index="0" name="depth" type="float"> + </argument> + <description> + </description> + </method> + <method name="set_polygon"> + <argument index="0" name="polygon" type="Vector2Array"> + </argument> <description> </description> </method> @@ -8117,40 +8163,34 @@ Editor-only class. This is not present when running the game. It's used in the editor to properly edit and position collision shapes in [CollisionObject2D]. This is not accessible from regular code. This class is for editing custom shape polygons. </description> <methods> - <method name="set_polygon"> - <argument index="0" name="polygon" type="Vector2Array"> - </argument> - <description> - Set the array of points forming the polygon. - When editing the point list via the editor, depending on [method get_build_mode], it has to be a list of points (for [code]build_mode==0[/code]), or a list of lines (for [code]build_mode==1[/code]). In the second case, the even elements of the array define the start point of the line, and the odd elements the end point. - </description> - </method> - <method name="get_polygon" qualifiers="const"> - <return type="Vector2Array"> + <method name="get_build_mode" qualifiers="const"> + <return type="int"> </return> <description> - Return the list of points that define the polygon. + Return whether the polygon is a [ConvexPolygonShape2D] ([code]build_mode==0[/code]), or a [ConcavePolygonShape2D] ([code]build_mode==1[/code]). </description> </method> - <method name="set_build_mode"> - <argument index="0" name="build_mode" type="int"> - </argument> + <method name="get_collision_object_first_shape" qualifiers="const"> + <return type="int"> + </return> <description> - Set whether the polygon is to be a [ConvexPolygonShape2D] ([code]build_mode==0[/code]), or a [ConcavePolygonShape2D] ([code]build_mode==1[/code]). + Return the index of the first shape generated by the editor. + When [code]build_mode[/code] is set to generate convex polygons, the shape shown in the editor may be decomposed into many convex polygons. In that case, a range of indexes is needed to directly access the [Shape2D]. + When [code]build_mode[/code] is set to generate concave polygons, there is only one [Shape2D] generated, so the start index and the end index are the same. </description> </method> - <method name="get_build_mode" qualifiers="const"> + <method name="get_collision_object_last_shape" qualifiers="const"> <return type="int"> </return> <description> - Return whether the polygon is a [ConvexPolygonShape2D] ([code]build_mode==0[/code]), or a [ConcavePolygonShape2D] ([code]build_mode==1[/code]). + Return the index of the last shape generated by the editor. </description> </method> - <method name="set_trigger"> - <argument index="0" name="trigger" type="bool"> - </argument> + <method name="get_polygon" qualifiers="const"> + <return type="Vector2Array"> + </return> <description> - Set whether this polygon is a trigger. A trigger polygon detects collisions, but is otherwise unaffected by physics (i.e. colliding objects will not get blocked). + Return the list of points that define the polygon. </description> </method> <method name="is_trigger" qualifiers="const"> @@ -8160,20 +8200,26 @@ Return whether this polygon is a trigger. </description> </method> - <method name="get_collision_object_first_shape" qualifiers="const"> - <return type="int"> - </return> + <method name="set_build_mode"> + <argument index="0" name="build_mode" type="int"> + </argument> <description> - Return the index of the first shape generated by the editor. - When [code]build_mode[/code] is set to generate convex polygons, the shape shown in the editor may be decomposed into many convex polygons. In that case, a range of indexes is needed to directly access the [Shape2D]. - When [code]build_mode[/code] is set to generate concave polygons, there is only one [Shape2D] generated, so the start index and the end index are the same. + Set whether the polygon is to be a [ConvexPolygonShape2D] ([code]build_mode==0[/code]), or a [ConcavePolygonShape2D] ([code]build_mode==1[/code]). </description> </method> - <method name="get_collision_object_last_shape" qualifiers="const"> - <return type="int"> - </return> + <method name="set_polygon"> + <argument index="0" name="polygon" type="Vector2Array"> + </argument> <description> - Return the index of the last shape generated by the editor. + Set the array of points forming the polygon. + When editing the point list via the editor, depending on [method get_build_mode], it has to be a list of points (for [code]build_mode==0[/code]), or a list of lines (for [code]build_mode==1[/code]). In the second case, the even elements of the array define the start point of the line, and the odd elements the end point. + </description> + </method> + <method name="set_trigger"> + <argument index="0" name="trigger" type="bool"> + </argument> + <description> + Set whether this polygon is a trigger. A trigger polygon detects collisions, but is otherwise unaffected by physics (i.e. colliding objects will not get blocked). </description> </method> </methods> @@ -8186,15 +8232,9 @@ <description> </description> <methods> - <method name="resource_changed"> - <argument index="0" name="resource" type="Object"> - </argument> - <description> - </description> - </method> - <method name="set_shape"> - <argument index="0" name="shape" type="Object"> - </argument> + <method name="get_collision_object_shape_index" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> @@ -8204,12 +8244,6 @@ <description> </description> </method> - <method name="set_trigger"> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - </description> - </method> <method name="is_trigger" qualifiers="const"> <return type="bool"> </return> @@ -8220,9 +8254,21 @@ <description> </description> </method> - <method name="get_collision_object_shape_index" qualifiers="const"> - <return type="int"> - </return> + <method name="resource_changed"> + <argument index="0" name="resource" type="Object"> + </argument> + <description> + </description> + </method> + <method name="set_shape"> + <argument index="0" name="shape" type="Object"> + </argument> + <description> + </description> + </method> + <method name="set_trigger"> + <argument index="0" name="enable" type="bool"> + </argument> <description> </description> </method> @@ -8238,11 +8284,11 @@ Editor-only class. This is not present when running the game. It's used in the editor to properly edit and position collision shapes in [CollisionObject2D]. This is not accessible from regular code. </description> <methods> - <method name="set_shape"> - <argument index="0" name="shape" type="Object"> - </argument> + <method name="get_collision_object_shape_index" qualifiers="const"> + <return type="int"> + </return> <description> - Set this shape's [Shape2D]. This will not appear as a node, but can be directly edited as a property. + Return the index of this shape inside its container [CollisionObject2D]. This can be used to directly access the underlying [Shape2D]. </description> </method> <method name="get_shape" qualifiers="const"> @@ -8252,13 +8298,6 @@ Return this shape's [Shape2D]. </description> </method> - <method name="set_trigger"> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - Set whether this shape is a trigger. A trigger shape detects collisions, but is otherwise unaffected by physics (i.e. will not block movement of colliding objects). - </description> - </method> <method name="is_trigger" qualifiers="const"> <return type="bool"> </return> @@ -8266,11 +8305,18 @@ Return whether this shape is a trigger. </description> </method> - <method name="get_collision_object_shape_index" qualifiers="const"> - <return type="int"> - </return> + <method name="set_shape"> + <argument index="0" name="shape" type="Object"> + </argument> <description> - Return the index of this shape inside its container [CollisionObject2D]. This can be used to directly access the underlying [Shape2D]. + Set this shape's [Shape2D]. This will not appear as a node, but can be directly edited as a property. + </description> + </method> + <method name="set_trigger"> + <argument index="0" name="enable" type="bool"> + </argument> + <description> + Set whether this shape is a trigger. A trigger shape detects collisions, but is otherwise unaffected by physics (i.e. will not block movement of colliding objects). </description> </method> </methods> @@ -8285,6 +8331,52 @@ A color is represented as red, green and blue (r,g,b) components. Additionally, "a" represents the alpha component, often used for transparency. Values are in floating point and usually range from 0 to 1. Some methods (such as set_modulate() ) may accept values > 1. </description> <methods> + <method name="Color"> + <return type="Color"> + </return> + <argument index="0" name="r" type="float"> + </argument> + <argument index="1" name="g" type="float"> + </argument> + <argument index="2" name="b" type="float"> + </argument> + <argument index="3" name="a" type="float"> + </argument> + <description> + Construct the color from an RGBA profile. + </description> + </method> + <method name="Color"> + <return type="Color"> + </return> + <argument index="0" name="r" type="float"> + </argument> + <argument index="1" name="g" type="float"> + </argument> + <argument index="2" name="b" type="float"> + </argument> + <description> + Construct the color from an RGBA profile. + </description> + </method> + <method name="Color"> + <return type="Color"> + </return> + <argument index="0" name="from" type="int"> + </argument> + <description> + Construct the color from an RGBA profile. + </description> + </method> + <method name="Color"> + <return type="Color"> + </return> + <argument index="0" name="from" type="String"> + </argument> + <description> + Construct the color from an RGBA profile. + </description> + </method> <method name="blend"> <return type="Color"> </return> @@ -8349,86 +8441,40 @@ Return the HTML hexadecimal color string. </description> </method> - <method name="Color"> - <return type="Color"> - </return> - <argument index="0" name="r" type="float"> - </argument> - <argument index="1" name="g" type="float"> - </argument> - <argument index="2" name="b" type="float"> - </argument> - <argument index="3" name="a" type="float"> - </argument> - <description> - Construct the color from an RGBA profile. - </description> - </method> - <method name="Color"> - <return type="Color"> - </return> - <argument index="0" name="r" type="float"> - </argument> - <argument index="1" name="g" type="float"> - </argument> - <argument index="2" name="b" type="float"> - </argument> - <description> - Construct the color from an RGBA profile. - </description> - </method> - <method name="Color"> - <return type="Color"> - </return> - <argument index="0" name="from" type="int"> - </argument> - <description> - Construct the color from an RGBA profile. - </description> - </method> - <method name="Color"> - <return type="Color"> - </return> - <argument index="0" name="from" type="String"> - </argument> - <description> - Construct the color from an RGBA profile. - </description> - </method> </methods> <members> - <member name="r" type="float"> - Red (0 to 1) + <member name="a" type="float"> + Alpha (0 to 1) </member> - <member name="g" type="float"> - Green (0 to 1) + <member name="a8" type="int"> + Alpha (0 to 255) </member> <member name="b" type="float"> Blue (0 to 1) </member> - <member name="a" type="float"> - Alpha (0 to 1) + <member name="b8" type="int"> + Blue (0 to 255) + </member> + <member name="g" type="float"> + Green (0 to 1) + </member> + <member name="g8" type="int"> + Green (0 to 255) </member> <member name="h" type="float"> Hue (0 to 1) </member> - <member name="s" type="float"> - Saturation (0 to 1) - </member> - <member name="v" type="float"> - Value (0 to 1) + <member name="r" type="float"> + Red (0 to 1) </member> <member name="r8" type="int"> Red (0 to 255) </member> - <member name="g8" type="int"> - Green (0 to 255) - </member> - <member name="b8" type="int"> - Blue (0 to 255) + <member name="s" type="float"> + Saturation (0 to 1) </member> - <member name="a8" type="int"> - Alpha (0 to 255) + <member name="v" type="float"> + Value (0 to 1) </member> </members> <constants> @@ -8442,6 +8488,40 @@ Array of Color, can only contains colors. Optimized for memory usage, can't fragment the memory. </description> <methods> + <method name="ColorArray"> + <return type="ColorArray"> + </return> + <argument index="0" name="from" type="Array"> + </argument> + <description> + Create from a generic array. + </description> + </method> + <method name="append"> + <argument index="0" name="color" type="Color"> + </argument> + <description> + Append an element at the end of the array (alias of [method push_back]). + </description> + </method> + <method name="append_array"> + <argument index="0" name="array" type="ColorArray"> + </argument> + <description> + Append an [ColorArray] at the end of this array. + </description> + </method> + <method name="insert"> + <return type="int"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="color" type="Color"> + </argument> + <description> + Insert a new element at a given position in the array. The position must be valid, or at the end of the array (pos==size()). + </description> + </method> <method name="push_back"> <argument index="0" name="color" type="Color"> </argument> @@ -8449,11 +8529,18 @@ Append a value to the array. </description> </method> + <method name="remove"> + <argument index="0" name="idx" type="int"> + </argument> + <description> + Remove an element from the array by index. + </description> + </method> <method name="resize"> <argument index="0" name="idx" type="int"> </argument> <description> - Resize the array. + Set the size of the [ColorArray]. If larger than the current size it will reserve some space beforehand, and if it is smaller it will cut off the array. </description> </method> <method name="set"> @@ -8462,7 +8549,7 @@ <argument index="1" name="color" type="Color"> </argument> <description> - Set an index in the array. + Change the [Color] at the given index. </description> </method> <method name="size"> @@ -8472,15 +8559,6 @@ Return the array size. </description> </method> - <method name="ColorArray"> - <return type="ColorArray"> - </return> - <argument index="0" name="from" type="Array"> - </argument> - <description> - Create from a generic array. - </description> - </method> </methods> <constants> </constants> @@ -8493,11 +8571,11 @@ This is a simple color picker [Control]. It's useful for selecting a color from an RGB/RGBA colorspace. </description> <methods> - <method name="set_color"> - <argument index="0" name="color" type="Color"> + <method name="add_preset"> + <argument index="0" name="arg0" type="Color"> </argument> <description> - Select the current color. + Adds the current selected to color to a list of colors (presets), the presets will be displayed in the color picker and the user will be able to select them, notice that the presets list is only for this color picker. </description> </method> <method name="get_color" qualifiers="const"> @@ -8507,11 +8585,11 @@ Return the current (edited) color. </description> </method> - <method name="set_raw_mode"> - <argument index="0" name="mode" type="bool"> - </argument> + <method name="is_editing_alpha" qualifiers="const"> + <return type="bool"> + </return> <description> - When set to true, every color channel will be represented as a value from 0 to 1, insetead of 0, 255. + Returns whether the color has transparency or not. </description> </method> <method name="is_raw_mode" qualifiers="const"> @@ -8521,25 +8599,25 @@ Returns whether this color picker is in raw mode or not </description> </method> - <method name="set_edit_alpha"> - <argument index="0" name="show" type="bool"> + <method name="set_color"> + <argument index="0" name="color" type="Color"> </argument> <description> - Set true if you want the color to have an alpha channel (transparency), or false if you want a solid color. + Select the current color. </description> </method> - <method name="is_editing_alpha" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_edit_alpha"> + <argument index="0" name="show" type="bool"> + </argument> <description> - Returns whether the color has transparency or not. + Set true if you want the color to have an alpha channel (transparency), or false if you want a solid color. </description> </method> - <method name="add_preset"> - <argument index="0" name="arg0" type="Color"> + <method name="set_raw_mode"> + <argument index="0" name="mode" type="bool"> </argument> <description> - Adds the current selected to color to a list of colors (presets), the presets will be displayed in the color picker and the user will be able to select them, notice that the presets list is only for this color picker. + When set to true, every color channel will be represented as a value from 0 to 1, insetead of 0, 255. </description> </method> </methods> @@ -8555,20 +8633,20 @@ <constants> </constants> <theme_items> - <theme_item name="value_width" type="int"> - </theme_item> - <theme_item name="value_height" type="int"> + <theme_item name="add_preset" type="Texture"> </theme_item> <theme_item name="color_width" type="int"> </theme_item> - <theme_item name="label_width" type="int"> - </theme_item> <theme_item name="hseparator" type="int"> </theme_item> - <theme_item name="add_preset" type="Texture"> + <theme_item name="label_width" type="int"> </theme_item> <theme_item name="screen_picker" type="Texture"> </theme_item> + <theme_item name="value_height" type="int"> + </theme_item> + <theme_item name="value_width" type="int"> + </theme_item> </theme_items> </class> <class name="ColorPickerButton" inherits="Button" category="Core"> @@ -8579,13 +8657,6 @@ Encapsulates a [ColorPicker] making it accesible by pressing a button, pressing the button will toggle the [ColorPicker] visibility </description> <methods> - <method name="set_color"> - <argument index="0" name="color" type="Color"> - </argument> - <description> - Sets the current color - </description> - </method> <method name="get_color" qualifiers="const"> <return type="Color"> </return> @@ -8593,11 +8664,10 @@ Gets the current color </description> </method> - <method name="set_edit_alpha"> - <argument index="0" name="show" type="bool"> - </argument> + <method name="get_picker"> + <return type="ColorPicker"> + </return> <description> - See [method ColorPicker.set_edit_alpha] </description> </method> <method name="is_editing_alpha" qualifiers="const"> @@ -8607,6 +8677,20 @@ See [method ColorPicker.is_edit_alpha] </description> </method> + <method name="set_color"> + <argument index="0" name="color" type="Color"> + </argument> + <description> + Sets the current color + </description> + </method> + <method name="set_edit_alpha"> + <argument index="0" name="show" type="bool"> + </argument> + <description> + See [method ColorPicker.set_edit_alpha] + </description> + </method> </methods> <signals> <signal name="color_changed"> @@ -8620,28 +8704,28 @@ <constants> </constants> <theme_items> - <theme_item name="hseparation" type="int"> + <theme_item name="disabled" type="StyleBox"> </theme_item> - <theme_item name="font_color_disabled" type="Color"> + <theme_item name="focus" type="StyleBox"> + </theme_item> + <theme_item name="font" type="Font"> </theme_item> <theme_item name="font_color" type="Color"> </theme_item> + <theme_item name="font_color_disabled" type="Color"> + </theme_item> <theme_item name="font_color_hover" type="Color"> </theme_item> <theme_item name="font_color_pressed" type="Color"> </theme_item> - <theme_item name="font" type="Font"> - </theme_item> <theme_item name="hover" type="StyleBox"> </theme_item> - <theme_item name="pressed" type="StyleBox"> - </theme_item> - <theme_item name="focus" type="StyleBox"> - </theme_item> - <theme_item name="disabled" type="StyleBox"> + <theme_item name="hseparation" type="int"> </theme_item> <theme_item name="normal" type="StyleBox"> </theme_item> + <theme_item name="pressed" type="StyleBox"> + </theme_item> </theme_items> </class> <class name="ColorRamp" inherits="Resource" category="Core"> @@ -8661,20 +8745,20 @@ Adds the specified color to the end of the ramp, with the specified offset </description> </method> - <method name="remove_point"> - <argument index="0" name="offset" type="int"> + <method name="get_color" qualifiers="const"> + <return type="Color"> + </return> + <argument index="0" name="point" type="int"> </argument> <description> - Removes the color at the index [i]offset[/i] + Returns the color of the ramp color at index [i]point[/i] </description> </method> - <method name="set_offset"> - <argument index="0" name="point" type="int"> - </argument> - <argument index="1" name="offset" type="float"> - </argument> + <method name="get_colors" qualifiers="const"> + <return type="ColorArray"> + </return> <description> - Sets the offset for the ramp color at index [i]point[/i] + Returns the colors in the ramp </description> </method> <method name="get_offset" qualifiers="const"> @@ -8686,22 +8770,18 @@ Returns the offset of the ramp color at index [i]point[/i] </description> </method> - <method name="set_color"> - <argument index="0" name="point" type="int"> - </argument> - <argument index="1" name="color" type="Color"> - </argument> + <method name="get_offsets" qualifiers="const"> + <return type="RealArray"> + </return> <description> - Sets the color of the ramp color at index [i]point[/i] + Returns the offsets for the colors in this ramp </description> </method> - <method name="get_color" qualifiers="const"> - <return type="Color"> + <method name="get_point_count" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="point" type="int"> - </argument> <description> - Returns the color of the ramp color at index [i]point[/i] + Returns the number of colors in the ramp </description> </method> <method name="interpolate"> @@ -8713,25 +8793,20 @@ Returns the interpolated color specified by [i]offset[/i] </description> </method> - <method name="get_point_count" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the number of colors in the ramp - </description> - </method> - <method name="set_offsets"> - <argument index="0" name="offsets" type="RealArray"> + <method name="remove_point"> + <argument index="0" name="offset" type="int"> </argument> <description> - Sets the offset for the specified amount of elements. Calling this function with a different number of elements than previously defined causes the ramp to resize its colors and offsets array to accomodate the new elements, all new colors will be black by default. + Removes the color at the index [i]offset[/i] </description> </method> - <method name="get_offsets" qualifiers="const"> - <return type="RealArray"> - </return> + <method name="set_color"> + <argument index="0" name="point" type="int"> + </argument> + <argument index="1" name="color" type="Color"> + </argument> <description> - Returns the offsets for the colors in this ramp + Sets the color of the ramp color at index [i]point[/i] </description> </method> <method name="set_colors"> @@ -8741,11 +8816,20 @@ Sets the colors for the specified amount of elements. Calling this function with a different number of elements than previously defined causes the ramp to resize its colors and offsets array to accomodate the new elements. </description> </method> - <method name="get_colors" qualifiers="const"> - <return type="ColorArray"> - </return> + <method name="set_offset"> + <argument index="0" name="point" type="int"> + </argument> + <argument index="1" name="offset" type="float"> + </argument> <description> - Returns the colors in the ramp + Sets the offset for the ramp color at index [i]point[/i] + </description> + </method> + <method name="set_offsets"> + <argument index="0" name="offsets" type="RealArray"> + </argument> + <description> + Sets the offset for the specified amount of elements. Calling this function with a different number of elements than previously defined causes the ramp to resize its colors and offsets array to accomodate the new elements, all new colors will be black by default. </description> </method> </methods> @@ -8760,13 +8844,6 @@ Concave polygon shape resource, which can be set into a [PhysicsBody] or area. This shape is created by feeding a list of triangles. </description> <methods> - <method name="set_faces"> - <argument index="0" name="faces" type="Vector3Array"> - </argument> - <description> - Set the faces (an array of triangles). - </description> - </method> <method name="get_faces" qualifiers="const"> <return type="Vector3Array"> </return> @@ -8774,6 +8851,13 @@ Return the faces (an array of triangles). </description> </method> + <method name="set_faces"> + <argument index="0" name="faces" type="Vector3Array"> + </argument> + <description> + Set the faces (an array of triangles). + </description> + </method> </methods> <constants> </constants> @@ -8787,13 +8871,6 @@ The main difference between a [ConvexPolygonShape2D] and a [ConcavePolygonShape2D] is that a concave polygon assumes it is concave and uses a more complex method of collision detection, and a convex one forces itself to be convex in order to speed up collision detection. </description> <methods> - <method name="set_segments"> - <argument index="0" name="segments" type="Vector2Array"> - </argument> - <description> - Set the array of segments. - </description> - </method> <method name="get_segments" qualifiers="const"> <return type="Vector2Array"> </return> @@ -8801,6 +8878,13 @@ Return the array of segments. </description> </method> + <method name="set_segments"> + <argument index="0" name="segments" type="Vector2Array"> + </argument> + <description> + Set the array of segments. + </description> + </method> </methods> <constants> </constants> @@ -8811,19 +8895,19 @@ <description> </description> <methods> - <method name="set_param"> + <method name="get_param" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="param" type="int"> </argument> - <argument index="1" name="value" type="float"> - </argument> <description> </description> </method> - <method name="get_param" qualifiers="const"> - <return type="float"> - </return> + <method name="set_param"> <argument index="0" name="param" type="int"> </argument> + <argument index="1" name="value" type="float"> + </argument> <description> </description> </method> @@ -8864,15 +8948,20 @@ [/codeblock] </description> <methods> - <method name="set_value"> + <method name="get_section_keys" qualifiers="const"> + <return type="StringArray"> + </return> <argument index="0" name="section" type="String"> </argument> - <argument index="1" name="key" type="String"> - </argument> - <argument index="2" name="value" type="Variant"> - </argument> <description> - Assign a value to the specified key of the the specified section. If the section and/or the key do not exist, they are created. Passing a [code]NULL[/code] value deletes the specified key if it exists (and deletes the section if it ends up empty once the key has been removed). + Return an array of all defined key identifiers in the specified section. + </description> + </method> + <method name="get_sections" qualifiers="const"> + <return type="StringArray"> + </return> + <description> + Return an array of all defined section identifiers. </description> </method> <method name="get_value" qualifiers="const"> @@ -8908,22 +8997,6 @@ Check if the specified section-key pair exists. </description> </method> - <method name="get_sections" qualifiers="const"> - <return type="StringArray"> - </return> - <description> - Return an array of all defined section identifiers. - </description> - </method> - <method name="get_section_keys" qualifiers="const"> - <return type="StringArray"> - </return> - <argument index="0" name="section" type="String"> - </argument> - <description> - Return an array of all defined key identifiers in the specified section. - </description> - </method> <method name="load"> <return type="Error"> </return> @@ -8943,6 +9016,17 @@ The return value is one of the OK, FAILED or ERR_* constants listed in [@Global Scope] (if the save was successful, it returns OK). </description> </method> + <method name="set_value"> + <argument index="0" name="section" type="String"> + </argument> + <argument index="1" name="key" type="String"> + </argument> + <argument index="2" name="value" type="Variant"> + </argument> + <description> + Assign a value to the specified key of the the specified section. If the section and/or the key do not exist, they are created. Passing a [code]NULL[/code] value deletes the specified key if it exists (and deletes the section if it ends up empty once the key has been removed). + </description> + </method> </methods> <constants> </constants> @@ -8975,11 +9059,6 @@ A Control can inherit this to create custom container classes. </description> <methods> - <method name="queue_sort"> - <description> - Queue resort of the contained children. This is called automatically anyway, but can be called upon request. - </description> - </method> <method name="fit_child_in_rect"> <argument index="0" name="child" type="Control"> </argument> @@ -8989,6 +9068,11 @@ Fit a child control in a given rect. This is mainly a helper for creating custom container classes. </description> </method> + <method name="queue_sort"> + <description> + Queue resort of the contained children. This is called automatically anyway, but can be called upon request. + </description> + </method> </methods> <signals> <signal name="sort_children"> @@ -9024,221 +9108,197 @@ Called when an input event reaches the control. </description> </method> - <method name="can_drop_data" qualifiers="virtual"> - <return type="bool"> - </return> - <argument index="0" name="pos" type="Vector2"> - </argument> - <argument index="1" name="data" type="Variant"> - </argument> + <method name="accept_event"> <description> + Handles the event, no other control will receive it and it will not be sent to nodes waiting on [method Node._unhandled_input] or [method Node._unhandled_key_input]. </description> </method> - <method name="drop_data" qualifiers="virtual"> - <argument index="0" name="pos" type="Vector2"> + <method name="add_color_override"> + <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="data" type="Variant"> + <argument index="1" name="color" type="Color"> </argument> <description> </description> </method> - <method name="get_drag_data" qualifiers="virtual"> - <return type="Object"> - </return> - <argument index="0" name="pos" type="Vector2"> + <method name="add_constant_override"> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="constant" type="int"> </argument> <description> + Override a single constant (integer) in the theme of this Control. If constant equals Theme.INVALID_CONSTANT, override is cleared. </description> </method> - <method name="get_minimum_size" qualifiers="virtual"> - <return type="Vector2"> - </return> - <description> - Return the minimum size this Control can shrink to. A control will never be displayed or resized smaller than its minimum size. - </description> - </method> - <method name="accept_event"> - <description> - Handles the event, no other control will receive it and it will not be sent to nodes waiting on [method Node._unhandled_input] or [method Node._unhandled_key_input]. - </description> - </method> - <method name="get_minimum_size" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - Return the minimum size this Control can shrink to. A control will never be displayed or resized smaller than its minimum size. - </description> - </method> - <method name="get_combined_minimum_size" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - </description> - </method> - <method name="set_anchor"> - <argument index="0" name="margin" type="int"> - </argument> - <argument index="1" name="anchor_mode" type="int"> + <method name="add_font_override"> + <argument index="0" name="name" type="String"> </argument> - <argument index="2" name="keep_margin" type="bool" default="false"> + <argument index="1" name="font" type="Font"> </argument> <description> - Change the anchor (ANCHOR_BEGIN, ANCHOR_END, ANCHOR_RATIO) type for a margin (MARGIN_LEFT, MARGIN_TOP, MARGIN_RIGHT, MARGIN_BOTTOM). Changing the anchor mode converts the current margin offset from the previous anchor mode to the new one, so margin offsets ([method set_margin]) must be done after setting anchors, or at the same time ([method set_anchor_and_margin]) - - Additionally, [code]keep_margin[/code] controls whether margins should be left the same, or changed to keep the same position and size on-screen. + Override a single font (font) in the theme of this Control. If font is empty, override is cleared. </description> </method> - <method name="get_anchor" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="margin" type="int"> + <method name="add_icon_override"> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="texture" type="Texture"> </argument> <description> - Return the anchor type (ANCHOR_BEGIN, ANCHOR_END, ANCHOR_RATIO) for a given margin (MARGIN_LEFT, MARGIN_TOP, MARGIN_RIGHT, MARGIN_BOTTOM). + Override a single icon ([Texture]) in the theme of this Control. If texture is empty, override is cleared. </description> </method> - <method name="set_margin"> - <argument index="0" name="margin" type="int"> + <method name="add_shader_override"> + <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="offset" type="float"> + <argument index="1" name="shader" type="Shader"> </argument> <description> - Set a margin offset. Margin can be one of (MARGIN_LEFT, MARGIN_TOP, MARGIN_RIGHT, MARGIN_BOTTOM). Offset value being set depends on the anchor mode. </description> </method> - <method name="set_anchor_and_margin"> - <argument index="0" name="margin" type="int"> - </argument> - <argument index="1" name="anchor_mode" type="int"> + <method name="add_style_override"> + <argument index="0" name="name" type="String"> </argument> - <argument index="2" name="offset" type="float"> + <argument index="1" name="stylebox" type="StyleBox"> </argument> <description> - Change the anchor (ANCHOR_BEGIN, ANCHOR_END, ANCHOR_RATIO) type for a margin (MARGIN_LEFT, MARGIN_TOP, MARGIN_RIGHT, MARGIN_BOTTOM), and also set its offset. This is a helper (see [method set_anchor] and [method set_margin]). + Override a single stylebox ([Stylebox]) in the theme of this Control. If stylebox is empty, override is cleared. </description> </method> - <method name="set_begin"> + <method name="can_drop_data" qualifiers="virtual"> + <return type="bool"> + </return> <argument index="0" name="pos" type="Vector2"> </argument> - <description> - Sets MARGIN_LEFT and MARGIN_TOP at the same time. This is a helper (see [method set_margin]). - </description> - </method> - <method name="set_end"> - <argument index="0" name="pos" type="Vector2"> + <argument index="1" name="data" type="Variant"> </argument> <description> - Sets MARGIN_RIGHT and MARGIN_BOTTOM at the same time. This is a helper (see [method set_margin]). </description> </method> - <method name="set_pos"> + <method name="drop_data" qualifiers="virtual"> <argument index="0" name="pos" type="Vector2"> </argument> - <description> - Move the Control to a new position, relative to the top-left corner of the parent Control, changing all margins if needed and without changing current anchor mode. This is a helper (see [method set_margin]). - </description> - </method> - <method name="set_size"> - <argument index="0" name="size" type="Vector2"> + <argument index="1" name="data" type="Variant"> </argument> <description> - Changes MARGIN_RIGHT and MARGIN_BOTTOM to fit a given size. This is a helper (see [method set_margin]). </description> </method> - <method name="set_custom_minimum_size"> - <argument index="0" name="size" type="Vector2"> + <method name="force_drag"> + <argument index="0" name="data" type="Variant"> + </argument> + <argument index="1" name="preview" type="Object"> </argument> <description> </description> </method> - <method name="set_global_pos"> - <argument index="0" name="pos" type="Vector2"> + <method name="get_anchor" qualifiers="const"> + <return type="int"> + </return> + <argument index="0" name="margin" type="int"> </argument> <description> - Move the Control to a new position, relative to the top-left corner of the [i]window[/i] Control, and without changing current anchor mode. (see [method set_margin]). + Return the anchor type (ANCHOR_BEGIN, ANCHOR_END, ANCHOR_RATIO) for a given margin (MARGIN_LEFT, MARGIN_TOP, MARGIN_RIGHT, MARGIN_BOTTOM). </description> </method> - <method name="set_rotation"> - <argument index="0" name="radians" type="float"> - </argument> + <method name="get_begin" qualifiers="const"> + <return type="Vector2"> + </return> <description> </description> </method> - <method name="set_rotation_deg"> - <argument index="0" name="degrees" type="float"> + <method name="get_color" qualifiers="const"> + <return type="Color"> + </return> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="type" type="String" default=""""> </argument> <description> </description> </method> - <method name="set_scale"> - <argument index="0" name="scale" type="Vector2"> - </argument> + <method name="get_combined_minimum_size" qualifiers="const"> + <return type="Vector2"> + </return> <description> </description> </method> - <method name="get_margin" qualifiers="const"> - <return type="float"> + <method name="get_constant" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="margin" type="int"> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="type" type="String" default=""""> </argument> <description> - Return a margin offset. Margin can be one of (MARGIN_LEFT, MARGIN_TOP, MARGIN_RIGHT, MARGIN_BOTTOM). Offset value being returned depends on the anchor mode. </description> </method> - <method name="get_begin" qualifiers="const"> - <return type="Vector2"> + <method name="get_cursor_shape" qualifiers="const"> + <return type="int"> </return> + <argument index="0" name="pos" type="Vector2" default="Vector2(0,0)"> + </argument> <description> + Return the cursor shape at a certain position in the control. </description> </method> - <method name="get_end" qualifiers="const"> + <method name="get_custom_minimum_size" qualifiers="const"> <return type="Vector2"> </return> <description> - Returns MARGIN_LEFT and MARGIN_TOP at the same time. This is a helper (see [method set_margin]). </description> </method> - <method name="get_pos" qualifiers="const"> - <return type="Vector2"> + <method name="get_default_cursor_shape" qualifiers="const"> + <return type="int"> </return> <description> - Returns the Control position, relative to the top-left corner of the parent Control and independent of the anchor mode. + Return the default cursor shape for this control. See enum CURSOR_* for the list of shapes. </description> </method> - <method name="get_size" qualifiers="const"> - <return type="Vector2"> + <method name="get_drag_data" qualifiers="virtual"> + <return type="Object"> </return> + <argument index="0" name="pos" type="Vector2"> + </argument> <description> - Returns the size of the Control, computed from all margins, however the size returned will [b]never be smaller than the minimum size reported by [method get_minimum_size][/b]. This means that even if end position of the Control rectangle is smaller than the begin position, the Control will still display and interact correctly. (see description, [method get_minimum_size], [method set_margin], [method set_anchor]). </description> </method> - <method name="get_rotation" qualifiers="const"> - <return type="float"> + <method name="get_end" qualifiers="const"> + <return type="Vector2"> </return> <description> + Returns MARGIN_LEFT and MARGIN_TOP at the same time. This is a helper (see [method set_margin]). </description> </method> - <method name="get_rotation_deg" qualifiers="const"> - <return type="float"> + <method name="get_focus_mode" qualifiers="const"> + <return type="int"> </return> <description> + Returns the focus access mode for the control (FOCUS_NONE, FOCUS_CLICK, FOCUS_ALL) (see [method set_focus_mode]). </description> </method> - <method name="get_scale" qualifiers="const"> - <return type="Vector2"> + <method name="get_focus_neighbour" qualifiers="const"> + <return type="NodePath"> </return> + <argument index="0" name="margin" type="int"> + </argument> <description> + Return the forced neighbour for moving the input focus to. When pressing TAB or directional/joypad directions focus is moved to the next control in that direction. However, the neighbour to move to can be forced with this function. </description> </method> - <method name="get_custom_minimum_size" qualifiers="const"> - <return type="Vector2"> + <method name="get_focus_owner" qualifiers="const"> + <return type="Control"> </return> <description> + Return which control is owning the keyboard focus, or null if no one. </description> </method> - <method name="get_parent_area_size" qualifiers="const"> - <return type="Vector2"> + <method name="get_font" qualifiers="const"> + <return type="Font"> </return> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="type" type="String" default=""""> + </argument> <description> </description> </method> @@ -9249,13 +9309,6 @@ Returns the Control position, relative to the top-left corner of the parent Control and independent of the anchor mode. </description> </method> - <method name="get_rect" qualifiers="const"> - <return type="Rect2"> - </return> - <description> - Return position and size of the Control, relative to the top-left corner of the parent Control. This is a helper (see [method get_pos], [method get_size]). - </description> - </method> <method name="get_global_rect" qualifiers="const"> <return type="Rect2"> </return> @@ -9263,105 +9316,112 @@ Return position and size of the Control, relative to the top-left corner of the [i]window[/i] Control. This is a helper (see [method get_global_pos], [method get_size]). </description> </method> - <method name="set_area_as_parent_rect"> - <argument index="0" name="margin" type="int" default="0"> - </argument> + <method name="get_h_size_flags" qualifiers="const"> + <return type="int"> + </return> <description> - Change all margins and anchors, so this Control always takes up the same area as the parent Control. This is a helper (see [method set_anchor], [method set_margin]). + Hint for containers, return horizontal positioning flags. </description> </method> - <method name="show_modal"> - <argument index="0" name="exclusive" type="bool" default="false"> + <method name="get_icon" qualifiers="const"> + <return type="Texture"> + </return> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="type" type="String" default=""""> </argument> <description> - Display a Control as modal. Control must be a subwindow. Modal controls capture the input signals until closed or the area outside them is accessed. When a modal control loses focus, or the ESC key is pressed, they automatically hide. Modal controls are used extensively for popup dialogs and menus. </description> </method> - <method name="set_focus_mode"> - <argument index="0" name="mode" type="int"> + <method name="get_margin" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="margin" type="int"> </argument> <description> - Set the focus access mode for the control (FOCUS_NONE, FOCUS_CLICK, FOCUS_ALL). Only one Control can be focused at the same time, and it will receive keyboard signals. + Return a margin offset. Margin can be one of (MARGIN_LEFT, MARGIN_TOP, MARGIN_RIGHT, MARGIN_BOTTOM). Offset value being returned depends on the anchor mode. </description> </method> - <method name="get_focus_mode" qualifiers="const"> - <return type="int"> + <method name="get_minimum_size" qualifiers="const"> + <return type="Vector2"> </return> <description> - Returns the focus access mode for the control (FOCUS_NONE, FOCUS_CLICK, FOCUS_ALL) (see [method set_focus_mode]). + Return the minimum size this Control can shrink to. A control will never be displayed or resized smaller than its minimum size. </description> </method> - <method name="has_focus" qualifiers="const"> - <return type="bool"> + <method name="get_minimum_size" qualifiers="virtual"> + <return type="Vector2"> </return> <description> - Return whether the Control is the current focused control (see [method set_focus_mode]). + Return the minimum size this Control can shrink to. A control will never be displayed or resized smaller than its minimum size. </description> </method> - <method name="grab_focus"> + <method name="get_parent_area_size" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Steal the focus from another control and become the focused control (see [method set_focus_mode]). </description> </method> - <method name="release_focus"> + <method name="get_parent_control" qualifiers="const"> + <return type="Control"> + </return> <description> - Give up the focus, no other control will be able to receive keyboard input. </description> </method> - <method name="get_focus_owner" qualifiers="const"> - <return type="Control"> + <method name="get_pos" qualifiers="const"> + <return type="Vector2"> </return> <description> - Return which control is owning the keyboard focus, or null if no one. + Returns the Control position, relative to the top-left corner of the parent Control and independent of the anchor mode. </description> </method> - <method name="set_h_size_flags"> - <argument index="0" name="flags" type="int"> - </argument> + <method name="get_rect" qualifiers="const"> + <return type="Rect2"> + </return> <description> - Hint for containers, set horizontal positioning flags. + Return position and size of the Control, relative to the top-left corner of the parent Control. This is a helper (see [method get_pos], [method get_size]). </description> </method> - <method name="get_h_size_flags" qualifiers="const"> - <return type="int"> + <method name="get_rotation" qualifiers="const"> + <return type="float"> </return> <description> - Hint for containers, return horizontal positioning flags. </description> </method> - <method name="set_stretch_ratio"> - <argument index="0" name="ratio" type="float"> - </argument> + <method name="get_rotation_deg" qualifiers="const"> + <return type="float"> + </return> <description> - Hint for containers, set the stretch ratio. This value is relative to other stretch ratio, so if this control has 2 and another has 1, this one will be twice as big. </description> </method> - <method name="get_stretch_ratio" qualifiers="const"> - <return type="float"> + <method name="get_scale" qualifiers="const"> + <return type="Vector2"> </return> <description> - Hint for containers, return the stretch ratio. This value is relative to other stretch ratio, so if this control has 2 and another has 1, this one will be twice as big. </description> </method> - <method name="set_v_size_flags"> - <argument index="0" name="flags" type="int"> - </argument> + <method name="get_size" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Hint for containers, set vertical positioning flags. + Returns the size of the Control, computed from all margins, however the size returned will [b]never be smaller than the minimum size reported by [method get_minimum_size][/b]. This means that even if end position of the Control rectangle is smaller than the begin position, the Control will still display and interact correctly. (see description, [method get_minimum_size], [method set_margin], [method set_anchor]). </description> </method> - <method name="get_v_size_flags" qualifiers="const"> - <return type="int"> + <method name="get_stretch_ratio" qualifiers="const"> + <return type="float"> </return> <description> - Hint for containers, return vertical positioning flags. + Hint for containers, return the stretch ratio. This value is relative to other stretch ratio, so if this control has 2 and another has 1, this one will be twice as big. </description> </method> - <method name="set_theme"> - <argument index="0" name="theme" type="Theme"> + <method name="get_stylebox" qualifiers="const"> + <return type="StyleBox"> + </return> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="type" type="String" default=""""> </argument> <description> - Override whole the [Theme] for this Control and all its children controls. </description> </method> <method name="get_theme" qualifiers="const"> @@ -9371,60 +9431,51 @@ Return a [Theme] override, if one exists (see [method set_theme]). </description> </method> - <method name="add_icon_override"> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="texture" type="Texture"> + <method name="get_tooltip" qualifiers="const"> + <return type="String"> + </return> + <argument index="0" name="atpos" type="Vector2" default="Vector2(0,0)"> </argument> <description> - Override a single icon ([Texture]) in the theme of this Control. If texture is empty, override is cleared. + Return the tooltip, which will appear when the cursor is resting over this control. </description> </method> - <method name="add_shader_override"> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="shader" type="Shader"> - </argument> + <method name="get_v_size_flags" qualifiers="const"> + <return type="int"> + </return> <description> + Hint for containers, return vertical positioning flags. </description> </method> - <method name="add_style_override"> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="stylebox" type="StyleBox"> - </argument> + <method name="grab_click_focus"> <description> - Override a single stylebox ([Stylebox]) in the theme of this Control. If stylebox is empty, override is cleared. </description> </method> - <method name="add_font_override"> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="font" type="Font"> - </argument> + <method name="grab_focus"> <description> - Override a single font (font) in the theme of this Control. If font is empty, override is cleared. + Steal the focus from another control and become the focused control (see [method set_focus_mode]). </description> </method> - <method name="add_color_override"> + <method name="has_color" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="color" type="Color"> + <argument index="1" name="type" type="String" default=""""> </argument> <description> </description> </method> - <method name="add_constant_override"> + <method name="has_color_override" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="constant" type="int"> - </argument> <description> - Override a single constant (integer) in the theme of this Control. If constant equals Theme.INVALID_CONSTANT, override is cleared. </description> </method> - <method name="get_icon" qualifiers="const"> - <return type="Texture"> + <method name="has_constant" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="name" type="String"> </argument> @@ -9433,28 +9484,23 @@ <description> </description> </method> - <method name="get_stylebox" qualifiers="const"> - <return type="StyleBox"> + <method name="has_constant_override" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="type" type="String" default=""""> - </argument> <description> </description> </method> - <method name="get_font" qualifiers="const"> - <return type="Font"> + <method name="has_focus" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="type" type="String" default=""""> - </argument> <description> + Return whether the Control is the current focused control (see [method set_focus_mode]). </description> </method> - <method name="get_color" qualifiers="const"> - <return type="Color"> + <method name="has_font" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="name" type="String"> </argument> @@ -9463,25 +9509,25 @@ <description> </description> </method> - <method name="get_constant" qualifiers="const"> - <return type="int"> + <method name="has_font_override" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="type" type="String" default=""""> - </argument> <description> </description> </method> - <method name="has_icon_override" qualifiers="const"> + <method name="has_icon" qualifiers="const"> <return type="bool"> </return> <argument index="0" name="name" type="String"> </argument> + <argument index="1" name="type" type="String" default=""""> + </argument> <description> </description> </method> - <method name="has_stylebox_override" qualifiers="const"> + <method name="has_icon_override" qualifiers="const"> <return type="bool"> </return> <argument index="0" name="name" type="String"> @@ -9489,15 +9535,17 @@ <description> </description> </method> - <method name="has_font_override" qualifiers="const"> + <method name="has_stylebox" qualifiers="const"> <return type="bool"> </return> <argument index="0" name="name" type="String"> </argument> + <argument index="1" name="type" type="String" default=""""> + </argument> <description> </description> </method> - <method name="has_color_override" qualifiers="const"> + <method name="has_stylebox_override" qualifiers="const"> <return type="bool"> </return> <argument index="0" name="name" type="String"> @@ -9505,84 +9553,70 @@ <description> </description> </method> - <method name="has_constant_override" qualifiers="const"> + <method name="is_ignoring_mouse" qualifiers="const"> <return type="bool"> </return> - <argument index="0" name="name" type="String"> - </argument> <description> + Return if the control is ignoring mouse events (even touchpad events send mouse events). </description> </method> - <method name="has_icon" qualifiers="const"> + <method name="is_stopping_mouse" qualifiers="const"> <return type="bool"> </return> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="type" type="String" default=""""> - </argument> <description> </description> </method> - <method name="has_stylebox" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="type" type="String" default=""""> - </argument> + <method name="minimum_size_changed"> <description> </description> </method> - <method name="has_font" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="type" type="String" default=""""> - </argument> + <method name="release_focus"> <description> + Give up the focus, no other control will be able to receive keyboard input. </description> </method> - <method name="has_color" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="name" type="String"> + <method name="set_anchor"> + <argument index="0" name="margin" type="int"> </argument> - <argument index="1" name="type" type="String" default=""""> + <argument index="1" name="anchor_mode" type="int"> + </argument> + <argument index="2" name="keep_margin" type="bool" default="false"> </argument> <description> + Change the anchor (ANCHOR_BEGIN, ANCHOR_END, ANCHOR_RATIO) type for a margin (MARGIN_LEFT, MARGIN_TOP, MARGIN_RIGHT, MARGIN_BOTTOM). Changing the anchor mode converts the current margin offset from the previous anchor mode to the new one, so margin offsets ([method set_margin]) must be done after setting anchors, or at the same time ([method set_anchor_and_margin]) + + Additionally, [code]keep_margin[/code] controls whether margins should be left the same, or changed to keep the same position and size on-screen. </description> </method> - <method name="has_constant" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="name" type="String"> + <method name="set_anchor_and_margin"> + <argument index="0" name="margin" type="int"> </argument> - <argument index="1" name="type" type="String" default=""""> + <argument index="1" name="anchor_mode" type="int"> + </argument> + <argument index="2" name="offset" type="float"> </argument> <description> + Change the anchor (ANCHOR_BEGIN, ANCHOR_END, ANCHOR_RATIO) type for a margin (MARGIN_LEFT, MARGIN_TOP, MARGIN_RIGHT, MARGIN_BOTTOM), and also set its offset. This is a helper (see [method set_anchor] and [method set_margin]). </description> </method> - <method name="get_parent_control" qualifiers="const"> - <return type="Control"> - </return> + <method name="set_area_as_parent_rect"> + <argument index="0" name="margin" type="int" default="0"> + </argument> <description> + Change all margins and anchors, so this Control always takes up the same area as the parent Control. This is a helper (see [method set_anchor], [method set_margin]). </description> </method> - <method name="set_tooltip"> - <argument index="0" name="tooltip" type="String"> + <method name="set_begin"> + <argument index="0" name="pos" type="Vector2"> </argument> <description> - Set a tooltip, which will appear when the cursor is resting over this control. + Sets MARGIN_LEFT and MARGIN_TOP at the same time. This is a helper (see [method set_margin]). </description> </method> - <method name="get_tooltip" qualifiers="const"> - <return type="String"> - </return> - <argument index="0" name="atpos" type="Vector2" default="Vector2(0,0)"> + <method name="set_custom_minimum_size"> + <argument index="0" name="size" type="Vector2"> </argument> <description> - Return the tooltip, which will appear when the cursor is resting over this control. </description> </method> <method name="set_default_cursor_shape"> @@ -9592,20 +9626,30 @@ Set the default cursor shape for this control. See enum CURSOR_* for the list of shapes. </description> </method> - <method name="get_default_cursor_shape" qualifiers="const"> - <return type="int"> - </return> + <method name="set_drag_forwarding"> + <argument index="0" name="target" type="Control"> + </argument> <description> - Return the default cursor shape for this control. See enum CURSOR_* for the list of shapes. </description> </method> - <method name="get_cursor_shape" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="pos" type="Vector2" default="Vector2(0,0)"> + <method name="set_drag_preview"> + <argument index="0" name="control" type="Control"> </argument> <description> - Return the cursor shape at a certain position in the control. + </description> + </method> + <method name="set_end"> + <argument index="0" name="pos" type="Vector2"> + </argument> + <description> + Sets MARGIN_RIGHT and MARGIN_BOTTOM at the same time. This is a helper (see [method set_margin]). + </description> + </method> + <method name="set_focus_mode"> + <argument index="0" name="mode" type="int"> + </argument> + <description> + Set the focus access mode for the control (FOCUS_NONE, FOCUS_CLICK, FOCUS_ALL). Only one Control can be focused at the same time, and it will receive keyboard signals. </description> </method> <method name="set_focus_neighbour"> @@ -9617,13 +9661,18 @@ Force a neighbour for moving the input focus to. When pressing TAB or directional/joypad directions focus is moved to the next control in that direction. However, the neighbour to move to can be forced with this function. </description> </method> - <method name="get_focus_neighbour" qualifiers="const"> - <return type="NodePath"> - </return> - <argument index="0" name="margin" type="int"> + <method name="set_global_pos"> + <argument index="0" name="pos" type="Vector2"> </argument> <description> - Return the forced neighbour for moving the input focus to. When pressing TAB or directional/joypad directions focus is moved to the next control in that direction. However, the neighbour to move to can be forced with this function. + Move the Control to a new position, relative to the top-left corner of the [i]window[/i] Control, and without changing current anchor mode. (see [method set_margin]). + </description> + </method> + <method name="set_h_size_flags"> + <argument index="0" name="flags" type="int"> + </argument> + <description> + Hint for containers, set horizontal positioning flags. </description> </method> <method name="set_ignore_mouse"> @@ -9633,56 +9682,91 @@ Ignore mouse events on this control (even touchpad events send mouse events). </description> </method> - <method name="is_ignoring_mouse" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_margin"> + <argument index="0" name="margin" type="int"> + </argument> + <argument index="1" name="offset" type="float"> + </argument> <description> - Return if the control is ignoring mouse events (even touchpad events send mouse events). + Set a margin offset. Margin can be one of (MARGIN_LEFT, MARGIN_TOP, MARGIN_RIGHT, MARGIN_BOTTOM). Offset value being set depends on the anchor mode. </description> </method> - <method name="force_drag"> - <argument index="0" name="data" type="Variant"> + <method name="set_pos"> + <argument index="0" name="pos" type="Vector2"> </argument> - <argument index="1" name="preview" type="Object"> + <description> + Move the Control to a new position, relative to the top-left corner of the parent Control, changing all margins if needed and without changing current anchor mode. This is a helper (see [method set_margin]). + </description> + </method> + <method name="set_rotation"> + <argument index="0" name="radians" type="float"> + </argument> + <description> + </description> + </method> + <method name="set_rotation_deg"> + <argument index="0" name="degrees" type="float"> </argument> <description> </description> </method> + <method name="set_scale"> + <argument index="0" name="scale" type="Vector2"> + </argument> + <description> + </description> + </method> + <method name="set_size"> + <argument index="0" name="size" type="Vector2"> + </argument> + <description> + Changes MARGIN_RIGHT and MARGIN_BOTTOM to fit a given size. This is a helper (see [method set_margin]). + </description> + </method> <method name="set_stop_mouse"> <argument index="0" name="stop" type="bool"> </argument> <description> </description> </method> - <method name="is_stopping_mouse" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_stretch_ratio"> + <argument index="0" name="ratio" type="float"> + </argument> <description> + Hint for containers, set the stretch ratio. This value is relative to other stretch ratio, so if this control has 2 and another has 1, this one will be twice as big. </description> </method> - <method name="grab_click_focus"> + <method name="set_theme"> + <argument index="0" name="theme" type="Theme"> + </argument> <description> + Override whole the [Theme] for this Control and all its children controls. </description> </method> - <method name="set_drag_forwarding"> - <argument index="0" name="target" type="Control"> + <method name="set_tooltip"> + <argument index="0" name="tooltip" type="String"> </argument> <description> + Set a tooltip, which will appear when the cursor is resting over this control. </description> </method> - <method name="set_drag_preview"> - <argument index="0" name="control" type="Control"> + <method name="set_v_size_flags"> + <argument index="0" name="flags" type="int"> </argument> <description> + Hint for containers, set vertical positioning flags. </description> </method> - <method name="warp_mouse"> - <argument index="0" name="to_pos" type="Vector2"> + <method name="show_modal"> + <argument index="0" name="exclusive" type="bool" default="false"> </argument> <description> + Display a Control as modal. Control must be a subwindow. Modal controls capture the input signals until closed or the area outside them is accessed. When a modal control loses focus, or the ESC key is pressed, they automatically hide. Modal controls are used extensively for popup dialogs and menus. </description> </method> - <method name="minimum_size_changed"> + <method name="warp_mouse"> + <argument index="0" name="to_pos" type="Vector2"> + </argument> <description> </description> </method> @@ -9693,14 +9777,16 @@ Emitted when keyboard focus is gained. </description> </signal> - <signal name="mouse_enter"> + <signal name="focus_exit"> <description> - Emitted when the mouse enters the control area. + Emitted when the keyboard focus is lost. </description> </signal> - <signal name="resized"> + <signal name="input_event"> + <argument index="0" name="ev" type="InputEvent"> + </argument> <description> - Emitted when the control changed size. + Emitted when an input event is received. Connecting in realtime is recommended for accepting the events. </description> </signal> <signal name="minimum_size_changed"> @@ -9708,30 +9794,28 @@ Emitted when the minimum size of the control changed. </description> </signal> - <signal name="size_flags_changed"> + <signal name="modal_close"> <description> - Emitted when the size flags changed. </description> </signal> - <signal name="focus_exit"> + <signal name="mouse_enter"> <description> - Emitted when the keyboard focus is lost. + Emitted when the mouse enters the control area. </description> </signal> - <signal name="input_event"> - <argument index="0" name="ev" type="InputEvent"> - </argument> + <signal name="mouse_exit"> <description> - Emitted when an input event is received. Connecting in realtime is recommended for accepting the events. + Emitted when the mouse left the control area. </description> </signal> - <signal name="modal_close"> + <signal name="resized"> <description> + Emitted when the control changed size. </description> </signal> - <signal name="mouse_exit"> + <signal name="size_flags_changed"> <description> - Emitted when the mouse left the control area. + Emitted when the size flags changed. </description> </signal> </signals> @@ -9747,39 +9831,23 @@ </constant> <constant name="ANCHOR_CENTER" value="3"> </constant> - <constant name="FOCUS_NONE" value="0"> - Control can't acquire focus. - </constant> - <constant name="FOCUS_CLICK" value="1"> - Control can acquire focus only if clicked. - </constant> - <constant name="FOCUS_ALL" value="2"> - Control can acquire focus if clicked, or by pressing TAB/Directionals in the keyboard from another Control. - </constant> - <constant name="NOTIFICATION_RESIZED" value="40"> - Control changed size (get_size() reports the new size). + <constant name="CURSOR_ARROW" value="0"> </constant> - <constant name="NOTIFICATION_MOUSE_ENTER" value="41"> - Mouse pointer entered the area of the Control. + <constant name="CURSOR_IBEAM" value="1"> </constant> - <constant name="NOTIFICATION_MOUSE_EXIT" value="42"> - Mouse pointer exited the area of the Control. + <constant name="CURSOR_HSIZE" value="10"> </constant> - <constant name="NOTIFICATION_FOCUS_ENTER" value="43"> - Control gained focus. + <constant name="CURSOR_BDIAGSIZE" value="11"> </constant> - <constant name="NOTIFICATION_FOCUS_EXIT" value="44"> - Control lost focus. + <constant name="CURSOR_FDIAGSIZE" value="12"> </constant> - <constant name="NOTIFICATION_THEME_CHANGED" value="45"> - Theme changed. Redrawing is desired. + <constant name="CURSOR_MOVE" value="13"> </constant> - <constant name="NOTIFICATION_MODAL_CLOSE" value="46"> - Modal control was closed. + <constant name="CURSOR_VSPLIT" value="14"> </constant> - <constant name="CURSOR_ARROW" value="0"> + <constant name="CURSOR_HSPLIT" value="15"> </constant> - <constant name="CURSOR_IBEAM" value="1"> + <constant name="CURSOR_HELP" value="16"> </constant> <constant name="CURSOR_POINTING_HAND" value="2"> </constant> @@ -9797,19 +9865,35 @@ </constant> <constant name="CURSOR_VSIZE" value="9"> </constant> - <constant name="CURSOR_HSIZE" value="10"> + <constant name="FOCUS_NONE" value="0"> + Control can't acquire focus. </constant> - <constant name="CURSOR_BDIAGSIZE" value="11"> + <constant name="FOCUS_CLICK" value="1"> + Control can acquire focus only if clicked. </constant> - <constant name="CURSOR_FDIAGSIZE" value="12"> + <constant name="FOCUS_ALL" value="2"> + Control can acquire focus if clicked, or by pressing TAB/Directionals in the keyboard from another Control. </constant> - <constant name="CURSOR_MOVE" value="13"> + <constant name="NOTIFICATION_RESIZED" value="40"> + Control changed size (get_size() reports the new size). </constant> - <constant name="CURSOR_VSPLIT" value="14"> + <constant name="NOTIFICATION_MOUSE_ENTER" value="41"> + Mouse pointer entered the area of the Control. </constant> - <constant name="CURSOR_HSPLIT" value="15"> + <constant name="NOTIFICATION_MOUSE_EXIT" value="42"> + Mouse pointer exited the area of the Control. </constant> - <constant name="CURSOR_HELP" value="16"> + <constant name="NOTIFICATION_FOCUS_ENTER" value="43"> + Control gained focus. + </constant> + <constant name="NOTIFICATION_FOCUS_EXIT" value="44"> + Control lost focus. + </constant> + <constant name="NOTIFICATION_THEME_CHANGED" value="45"> + Theme changed. Redrawing is desired. + </constant> + <constant name="NOTIFICATION_MODAL_CLOSE" value="46"> + Modal control was closed. </constant> <constant name="SIZE_EXPAND" value="1"> </constant> @@ -9827,18 +9911,18 @@ Convex polygon shape resource, which can be set into a [PhysicsBody] or area. </description> <methods> - <method name="set_points"> - <argument index="0" name="points" type="Vector3Array"> - </argument> - <description> - </description> - </method> <method name="get_points" qualifiers="const"> <return type="Vector3Array"> </return> <description> </description> </method> + <method name="set_points"> + <argument index="0" name="points" type="Vector3Array"> + </argument> + <description> + </description> + </method> </methods> <constants> </constants> @@ -9852,6 +9936,13 @@ The main difference between a [ConvexPolygonShape2D] and a [ConcavePolygonShape2D] is that a concave polygon assumes it is concave and uses a more complex method of collision detection, and a convex one forces itself to be convex in order to speed up collision detection. </description> <methods> + <method name="get_points" qualifiers="const"> + <return type="Vector2Array"> + </return> + <description> + Return a list of points in either clockwise or counter clockwise order, forming a convex polygon. + </description> + </method> <method name="set_point_cloud"> <argument index="0" name="point_cloud" type="Vector2Array"> </argument> @@ -9866,13 +9957,6 @@ Set a list of points in either clockwise or counter clockwise order, forming a convex polygon. </description> </method> - <method name="get_points" qualifiers="const"> - <return type="Vector2Array"> - </return> - <description> - Return a list of points in either clockwise or counter clockwise order, forming a convex polygon. - </description> - </method> </methods> <constants> </constants> @@ -9883,7 +9967,7 @@ <description> </description> <methods> - <method name="get_width" qualifiers="const"> + <method name="get_flags" qualifiers="const"> <return type="int"> </return> <description> @@ -9895,32 +9979,18 @@ <description> </description> </method> - <method name="get_rid" qualifiers="const"> - <return type="RID"> + <method name="get_lossy_storage_quality" qualifiers="const"> + <return type="float"> </return> <description> </description> </method> - <method name="set_flags"> - <argument index="0" name="flags" type="int"> - </argument> - <description> - </description> - </method> - <method name="get_flags" qualifiers="const"> - <return type="int"> + <method name="get_rid" qualifiers="const"> + <return type="RID"> </return> <description> </description> </method> - <method name="set_side"> - <argument index="0" name="side" type="int"> - </argument> - <argument index="1" name="image" type="Image"> - </argument> - <description> - </description> - </method> <method name="get_side" qualifiers="const"> <return type="Image"> </return> @@ -9929,37 +9999,53 @@ <description> </description> </method> - <method name="set_storage"> - <argument index="0" name="mode" type="int"> - </argument> + <method name="get_storage" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_storage" qualifiers="const"> + <method name="get_width" qualifiers="const"> <return type="int"> </return> <description> </description> </method> + <method name="set_flags"> + <argument index="0" name="flags" type="int"> + </argument> + <description> + </description> + </method> <method name="set_lossy_storage_quality"> <argument index="0" name="quality" type="float"> </argument> <description> </description> </method> - <method name="get_lossy_storage_quality" qualifiers="const"> - <return type="float"> - </return> + <method name="set_side"> + <argument index="0" name="side" type="int"> + </argument> + <argument index="1" name="image" type="Image"> + </argument> + <description> + </description> + </method> + <method name="set_storage"> + <argument index="0" name="mode" type="int"> + </argument> <description> </description> </method> </methods> <constants> - <constant name="STORAGE_RAW" value="0"> + <constant name="FLAG_MIPMAPS" value="1"> </constant> - <constant name="STORAGE_COMPRESS_LOSSY" value="1"> + <constant name="FLAG_REPEAT" value="2"> </constant> - <constant name="STORAGE_COMPRESS_LOSSLESS" value="2"> + <constant name="FLAG_FILTER" value="4"> + </constant> + <constant name="FLAGS_DEFAULT" value="7"> </constant> <constant name="SIDE_LEFT" value="0"> </constant> @@ -9973,13 +10059,11 @@ </constant> <constant name="SIDE_BACK" value="5"> </constant> - <constant name="FLAG_MIPMAPS" value="1"> - </constant> - <constant name="FLAG_REPEAT" value="2"> + <constant name="STORAGE_RAW" value="0"> </constant> - <constant name="FLAG_FILTER" value="4"> + <constant name="STORAGE_COMPRESS_LOSSY" value="1"> </constant> - <constant name="FLAGS_DEFAULT" value="7"> + <constant name="STORAGE_COMPRESS_LOSSLESS" value="2"> </constant> </constants> </class> @@ -9992,13 +10076,6 @@ It keeps a cache of precalculated points along the curve, to speed further calculations up. </description> <methods> - <method name="get_point_count" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the number of points describing the curve. - </description> - </method> <method name="add_point"> <argument index="0" name="pos" type="Vector2"> </argument> @@ -10013,49 +10090,41 @@ It keeps a cache of precalculated points along the curve, to speed further calcu If "atpos" is given, the point is inserted before the point number "atpos", moving that point (and every point after) after the inserted point. If "atpos" is not given, or is an illegal value (atpos <0 or atpos >= [method get_point_count]), the point will be appended at the end of the point list. </description> </method> - <method name="set_point_pos"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="pos" type="Vector2"> - </argument> + <method name="get_bake_interval" qualifiers="const"> + <return type="float"> + </return> <description> - Sets the position for the vertex "idx". If the index is out of bounds, the function sends an error to the console. + Returns the distance between two adjacent cached points. </description> </method> - <method name="get_point_pos" qualifiers="const"> - <return type="Vector2"> + <method name="get_baked_length" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> - Returns the position of the vertex "idx". If the index is out of bounds, the function sends an error to the console, and returns (0, 0). + Returns the total length of the curve, based on the cached points. Given enough density (see [method set_bake_interval]), it should be approximate enough. </description> </method> - <method name="set_point_in"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="pos" type="Vector2"> - </argument> + <method name="get_baked_points" qualifiers="const"> + <return type="Vector2Array"> + </return> <description> - Sets the position of the control point leading to the vertex "idx". If the index is out of bounds, the function sends an error to the console. + Returns the cache of points as a [Vector2Array]. </description> </method> - <method name="get_point_in" qualifiers="const"> - <return type="Vector2"> + <method name="get_point_count" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> - Returns the position of the control point leading to the vertex "idx". If the index is out of bounds, the function sends an error to the console, and returns (0, 0). + Returns the number of points describing the curve. </description> </method> - <method name="set_point_out"> + <method name="get_point_in" qualifiers="const"> + <return type="Vector2"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="pos" type="Vector2"> - </argument> <description> - Sets the position of the control point leading out of the vertex "idx". If the index is out of bounds, the function sends an error to the console. + Returns the position of the control point leading to the vertex "idx". If the index is out of bounds, the function sends an error to the console, and returns (0, 0). </description> </method> <method name="get_point_out" qualifiers="const"> @@ -10067,11 +10136,13 @@ If "atpos" is given, the point is inserted before the point number "atpos", movi Returns the position of the control point leading out of the vertex "idx". If the index is out of bounds, the function sends an error to the console, and returns (0, 0). </description> </method> - <method name="remove_point"> + <method name="get_point_pos" qualifiers="const"> + <return type="Vector2"> + </return> <argument index="0" name="idx" type="int"> </argument> <description> - Deletes the point "idx" from the curve. Sends an error to the console if "idx" is out of bounds. + Returns the position of the vertex "idx". If the index is out of bounds, the function sends an error to the console, and returns (0, 0). </description> </method> <method name="interpolate" qualifiers="const"> @@ -10086,6 +10157,19 @@ If "atpos" is given, the point is inserted before the point number "atpos", movi If "idx" is out of bounds it is truncated to the first or last vertex, and "t" is ignored. If the curve has no points, the function sends an error to the console, and returns (0, 0). </description> </method> + <method name="interpolate_baked" qualifiers="const"> + <return type="Vector2"> + </return> + <argument index="0" name="offset" type="float"> + </argument> + <argument index="1" name="cubic" type="bool" default="false"> + </argument> + <description> + Returns a point within the curve at position "offset", where "offset" is measured as a pixel distance along the curve. +To do that, it finds the two cached points where the "offset" lies between, then interpolates the values. This interpolation is cubic if "cubic" is set to true, or linear if set to false. +Cubic interpolation tends to follow the curves better, but linear is faster (and often, precise enough). + </description> + </method> <method name="interpolatef" qualifiers="const"> <return type="Vector2"> </return> @@ -10095,45 +10179,45 @@ If "idx" is out of bounds it is truncated to the first or last vertex, and "t" i Returns the position at the vertex "fofs". It calls [method interpolate] using the integer part of fofs as "idx", and its fractional part as "t". </description> </method> - <method name="set_bake_interval"> - <argument index="0" name="distance" type="float"> + <method name="remove_point"> + <argument index="0" name="idx" type="int"> </argument> <description> - Sets the distance in pixels between two adjacent cached points. Changing it forces the cache to be recomputed the next time a xxx_baked_xxx function is called. The less distance, the more points the cache will have, and the more memory it will consume, so use with care. + Deletes the point "idx" from the curve. Sends an error to the console if "idx" is out of bounds. </description> </method> - <method name="get_bake_interval" qualifiers="const"> - <return type="float"> - </return> + <method name="set_bake_interval"> + <argument index="0" name="distance" type="float"> + </argument> <description> - Returns the distance between two adjacent cached points. + Sets the distance in pixels between two adjacent cached points. Changing it forces the cache to be recomputed the next time a xxx_baked_xxx function is called. The less distance, the more points the cache will have, and the more memory it will consume, so use with care. </description> </method> - <method name="get_baked_length" qualifiers="const"> - <return type="float"> - </return> + <method name="set_point_in"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="pos" type="Vector2"> + </argument> <description> - Returns the total length of the curve, based on the cached points. Given enough density (see [method set_bake_interval]), it should be approximate enough. + Sets the position of the control point leading to the vertex "idx". If the index is out of bounds, the function sends an error to the console. </description> </method> - <method name="interpolate_baked" qualifiers="const"> - <return type="Vector2"> - </return> - <argument index="0" name="offset" type="float"> + <method name="set_point_out"> + <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="cubic" type="bool" default="false"> + <argument index="1" name="pos" type="Vector2"> </argument> <description> - Returns a point within the curve at position "offset", where "offset" is measured as a pixel distance along the curve. -To do that, it finds the two cached points where the "offset" lies between, then interpolates the values. This interpolation is cubic if "cubic" is set to true, or linear if set to false. -Cubic interpolation tends to follow the curves better, but linear is faster (and often, precise enough). + Sets the position of the control point leading out of the vertex "idx". If the index is out of bounds, the function sends an error to the console. </description> </method> - <method name="get_baked_points" qualifiers="const"> - <return type="Vector2Array"> - </return> + <method name="set_point_pos"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="pos" type="Vector2"> + </argument> <description> - Returns the cache of points as a [Vector2Array]. + Sets the position for the vertex "idx". If the index is out of bounds, the function sends an error to the console. </description> </method> <method name="tesselate" qualifiers="const"> @@ -10163,13 +10247,6 @@ This approximation makes straight segments between each point, then subdivides t It keeps a cache of precalculated points along the curve, to speed further calculations up. </description> <methods> - <method name="get_point_count" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the number of points describing the curve. - </description> - </method> <method name="add_point"> <argument index="0" name="pos" type="Vector3"> </argument> @@ -10184,50 +10261,39 @@ It keeps a cache of precalculated points along the curve, to speed further calcu If "atpos" is given, the point is inserted before the point number "atpos", moving that point (and every point after) after the inserted point. If "atpos" is not given, or is an illegal value (atpos <0 or atpos >= [method get_point_count]), the point will be appended at the end of the point list. </description> </method> - <method name="set_point_pos"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="pos" type="Vector3"> - </argument> + <method name="get_bake_interval" qualifiers="const"> + <return type="float"> + </return> <description> - Sets the position for the vertex "idx". If the index is out of bounds, the function sends an error to the console. + Returns the distance between two adjacent cached points. </description> </method> - <method name="get_point_pos" qualifiers="const"> - <return type="Vector3"> + <method name="get_baked_length" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> - Returns the position of the vertex "idx". If the index is out of bounds, the function sends an error to the console, and returns (0, 0, 0). + Returns the total length of the curve, based on the cached points. Given enough density (see [method set_bake_interval]), it should be approximate enough. </description> </method> - <method name="set_point_tilt"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="tilt" type="float"> - </argument> + <method name="get_baked_points" qualifiers="const"> + <return type="Vector3Array"> + </return> <description> - Sets the tilt angle in radians for the point "idx". If the index is out of bounds, the function sends an error to the console. -The tilt controls the rotation along the look-at axis an object traveling the path would have. In the case of a curve controlling a [PathFollow], this tilt is an offset over the natural tilt the PathFollow calculates. + Returns the cache of points as a [Vector3Array]. </description> </method> - <method name="get_point_tilt" qualifiers="const"> - <return type="float"> + <method name="get_baked_tilts" qualifiers="const"> + <return type="RealArray"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> - Returns the tilt angle in radians for the point "idx". If the index is out of bounds, the function sends an error to the console, and returns 0. + Returns the cache of tilts as a [RealArray]. </description> </method> - <method name="set_point_in"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="pos" type="Vector3"> - </argument> + <method name="get_point_count" qualifiers="const"> + <return type="int"> + </return> <description> - Sets the position of the control point leading to the vertex "idx". If the index is out of bounds, the function sends an error to the console. + Returns the number of points describing the curve. </description> </method> <method name="get_point_in" qualifiers="const"> @@ -10239,29 +10305,31 @@ The tilt controls the rotation along the look-at axis an object traveling the pa Returns the position of the control point leading to the vertex "idx". If the index is out of bounds, the function sends an error to the console, and returns (0, 0, 0). </description> </method> - <method name="set_point_out"> + <method name="get_point_out" qualifiers="const"> + <return type="Vector3"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="pos" type="Vector3"> - </argument> <description> - Sets the position of the control point leading out of the vertex "idx". If the index is out of bounds, the function sends an error to the console. + Returns the position of the control point leading out of the vertex "idx". If the index is out of bounds, the function sends an error to the console, and returns (0, 0, 0). </description> </method> - <method name="get_point_out" qualifiers="const"> + <method name="get_point_pos" qualifiers="const"> <return type="Vector3"> </return> <argument index="0" name="idx" type="int"> </argument> <description> - Returns the position of the control point leading out of the vertex "idx". If the index is out of bounds, the function sends an error to the console, and returns (0, 0, 0). + Returns the position of the vertex "idx". If the index is out of bounds, the function sends an error to the console, and returns (0, 0, 0). </description> </method> - <method name="remove_point"> + <method name="get_point_tilt" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="idx" type="int"> </argument> <description> - Deletes the point "idx" from the curve. Sends an error to the console if "idx" is out of bounds. + Returns the tilt angle in radians for the point "idx". If the index is out of bounds, the function sends an error to the console, and returns 0. </description> </method> <method name="interpolate" qualifiers="const"> @@ -10276,6 +10344,19 @@ The tilt controls the rotation along the look-at axis an object traveling the pa If "idx" is out of bounds it is truncated to the first or last vertex, and "t" is ignored. If the curve has no points, the function sends an error to the console, and returns (0, 0, 0). </description> </method> + <method name="interpolate_baked" qualifiers="const"> + <return type="Vector3"> + </return> + <argument index="0" name="offset" type="float"> + </argument> + <argument index="1" name="cubic" type="bool" default="false"> + </argument> + <description> + Returns a point within the curve at position "offset", where "offset" is measured as a distance in 3D units along the curve. +To do that, it finds the two cached points where the "offset" lies between, then interpolates the values. This interpolation is cubic if "cubic" is set to true, or linear if set to false. +Cubic interpolation tends to follow the curves better, but linear is faster (and often, precise enough). + </description> + </method> <method name="interpolatef" qualifiers="const"> <return type="Vector3"> </return> @@ -10285,52 +10366,55 @@ If "idx" is out of bounds it is truncated to the first or last vertex, and "t" i Returns the position at the vertex "fofs". It calls [method interpolate] using the integer part of fofs as "idx", and its fractional part as "t". </description> </method> - <method name="set_bake_interval"> - <argument index="0" name="distance" type="float"> + <method name="remove_point"> + <argument index="0" name="idx" type="int"> </argument> <description> - Sets the distance in 3D units between two adjacent cached points. Changing it forces the cache to be recomputed the next time a xxx_baked_xxx function is called. The less distance, the more points the cache will have, and the more memory it will consume, so use with care. + Deletes the point "idx" from the curve. Sends an error to the console if "idx" is out of bounds. </description> </method> - <method name="get_bake_interval" qualifiers="const"> - <return type="float"> - </return> + <method name="set_bake_interval"> + <argument index="0" name="distance" type="float"> + </argument> <description> - Returns the distance between two adjacent cached points. + Sets the distance in 3D units between two adjacent cached points. Changing it forces the cache to be recomputed the next time a xxx_baked_xxx function is called. The less distance, the more points the cache will have, and the more memory it will consume, so use with care. </description> </method> - <method name="get_baked_length" qualifiers="const"> - <return type="float"> - </return> + <method name="set_point_in"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="pos" type="Vector3"> + </argument> <description> - Returns the total length of the curve, based on the cached points. Given enough density (see [method set_bake_interval]), it should be approximate enough. + Sets the position of the control point leading to the vertex "idx". If the index is out of bounds, the function sends an error to the console. </description> </method> - <method name="interpolate_baked" qualifiers="const"> - <return type="Vector3"> - </return> - <argument index="0" name="offset" type="float"> + <method name="set_point_out"> + <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="cubic" type="bool" default="false"> + <argument index="1" name="pos" type="Vector3"> </argument> <description> - Returns a point within the curve at position "offset", where "offset" is measured as a distance in 3D units along the curve. -To do that, it finds the two cached points where the "offset" lies between, then interpolates the values. This interpolation is cubic if "cubic" is set to true, or linear if set to false. -Cubic interpolation tends to follow the curves better, but linear is faster (and often, precise enough). + Sets the position of the control point leading out of the vertex "idx". If the index is out of bounds, the function sends an error to the console. </description> </method> - <method name="get_baked_points" qualifiers="const"> - <return type="Vector3Array"> - </return> + <method name="set_point_pos"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="pos" type="Vector3"> + </argument> <description> - Returns the cache of points as a [Vector3Array]. + Sets the position for the vertex "idx". If the index is out of bounds, the function sends an error to the console. </description> </method> - <method name="get_baked_tilts" qualifiers="const"> - <return type="RealArray"> - </return> + <method name="set_point_tilt"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="tilt" type="float"> + </argument> <description> - Returns the cache of tilts as a [RealArray]. + Sets the tilt angle in radians for the point "idx". If the index is out of bounds, the function sends an error to the console. +The tilt controls the rotation along the look-at axis an object traveling the path would have. In the case of a curve controlling a [PathFollow], this tilt is an offset over the natural tilt the PathFollow calculates. </description> </method> <method name="tesselate" qualifiers="const"> @@ -10359,11 +10443,11 @@ This approximation makes straight segments between each point, then subdivides t Damped spring constraint for 2D physics. This resembles a spring joint that always wants to go back to a given length. </description> <methods> - <method name="set_length"> - <argument index="0" name="length" type="float"> - </argument> + <method name="get_damping" qualifiers="const"> + <return type="float"> + </return> <description> - Set the maximum length of the spring joint. + Return the damping ratio of the spring joint. A value of 0 indicates an undamped spring, while 1 causes the system to reach equilibrium as fast as possible (critical damping). </description> </method> <method name="get_length" qualifiers="const"> @@ -10373,13 +10457,6 @@ This approximation makes straight segments between each point, then subdivides t Return the maximum length of the spring joint. </description> </method> - <method name="set_rest_length"> - <argument index="0" name="rest_length" type="float"> - </argument> - <description> - Set the resting length of the spring joint. The joint will always try to go to back this length when pulled apart. - </description> - </method> <method name="get_rest_length" qualifiers="const"> <return type="float"> </return> @@ -10387,13 +10464,6 @@ This approximation makes straight segments between each point, then subdivides t Return the resting length of the spring joint. The joint will always try to go to back this length when pulled apart. </description> </method> - <method name="set_stiffness"> - <argument index="0" name="stiffness" type="float"> - </argument> - <description> - Set the stiffness of the spring joint. The joint applies a force equal to the stiffness times the distance from its resting length. - </description> - </method> <method name="get_stiffness" qualifiers="const"> <return type="float"> </return> @@ -10408,11 +10478,25 @@ This approximation makes straight segments between each point, then subdivides t Set the damping ratio of the spring joint. A value of 0 indicates an undamped spring, while 1 causes the system to reach equilibrium as fast as possible (critical damping). </description> </method> - <method name="get_damping" qualifiers="const"> - <return type="float"> - </return> + <method name="set_length"> + <argument index="0" name="length" type="float"> + </argument> <description> - Return the damping ratio of the spring joint. A value of 0 indicates an undamped spring, while 1 causes the system to reach equilibrium as fast as possible (critical damping). + Set the maximum length of the spring joint. + </description> + </method> + <method name="set_rest_length"> + <argument index="0" name="rest_length" type="float"> + </argument> + <description> + Set the resting length of the spring joint. The joint will always try to go to back this length when pulled apart. + </description> + </method> + <method name="set_stiffness"> + <argument index="0" name="stiffness" type="float"> + </argument> + <description> + Set the stiffness of the spring joint. The joint applies a force equal to the stiffness times the distance from its resting length. </description> </method> </methods> @@ -10520,31 +10604,31 @@ This approximation makes straight segments between each point, then subdivides t A DirectionalLight is a type of [Light] node that emits light constantly in one direction (the negative z axis of the node). It is used lights with strong intensity that are located far away from the scene to model sunlight or moonlight. The worldspace location of the DirectionalLight transform (origin) is ignored, only the basis is used do determine light direction. </description> <methods> - <method name="set_shadow_mode"> - <argument index="0" name="mode" type="int"> - </argument> - <description> - </description> - </method> <method name="get_shadow_mode" qualifiers="const"> <return type="int"> </return> <description> </description> </method> - <method name="set_shadow_param"> + <method name="get_shadow_param" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="param" type="int"> </argument> - <argument index="1" name="value" type="float"> + <description> + </description> + </method> + <method name="set_shadow_mode"> + <argument index="0" name="mode" type="int"> </argument> <description> </description> </method> - <method name="get_shadow_param" qualifiers="const"> - <return type="float"> - </return> + <method name="set_shadow_param"> <argument index="0" name="param" type="int"> </argument> + <argument index="1" name="value" type="float"> + </argument> <description> </description> </method> @@ -10552,18 +10636,18 @@ This approximation makes straight segments between each point, then subdivides t <constants> <constant name="SHADOW_ORTHOGONAL" value="0"> </constant> - <constant name="SHADOW_PERSPECTIVE" value="1"> - </constant> - <constant name="SHADOW_PARALLEL_2_SPLITS" value="2"> - </constant> - <constant name="SHADOW_PARALLEL_4_SPLITS" value="3"> - </constant> <constant name="SHADOW_PARAM_MAX_DISTANCE" value="0"> </constant> <constant name="SHADOW_PARAM_PSSM_SPLIT_WEIGHT" value="1"> </constant> + <constant name="SHADOW_PERSPECTIVE" value="1"> + </constant> + <constant name="SHADOW_PARALLEL_2_SPLITS" value="2"> + </constant> <constant name="SHADOW_PARAM_PSSM_ZOFFSET_SCALE" value="2"> </constant> + <constant name="SHADOW_PARALLEL_4_SPLITS" value="3"> + </constant> </constants> </class> <class name="Directory" inherits="Reference" category="Core"> @@ -10590,48 +10674,58 @@ This approximation makes straight segments between each point, then subdivides t [/codeblock] </description> <methods> - <method name="open"> + <method name="change_dir"> <return type="Error"> </return> - <argument index="0" name="path" type="String"> + <argument index="0" name="todir" type="String"> </argument> <description> - Open an existing directory of the filesystem. The [i]path[/i] argument can be within the project tree ([code]res://folder[/code]), the user directory ([code]user://folder[/code]) or an absolute path of the user filesystem (e.g. [code]/tmp/folder[/code] or [code]C:\tmp\folder[/code]). + Change the currently opened directory to the one passed as an argument. The argument can be relative to the current directory (e.g. [code]newdir[/code] or [code]../newdir[/code]), or an absolute path (e.g. [code]/tmp/newdir[/code] or [code]res://somedir/newdir[/code]). The method returns one of the error code constants defined in [@Global Scope] (OK or ERR_*). </description> </method> - <method name="list_dir_begin"> - <return type="bool"> + <method name="copy"> + <return type="Error"> </return> + <argument index="0" name="from" type="String"> + </argument> + <argument index="1" name="to" type="String"> + </argument> <description> - Initialise the stream used to list all files and directories using the [method get_next] function, closing the current opened stream if needed. Once the stream has been processed, it should typically be closed with [method list_dir_end]. - Return false if the stream could not be initialised. + Copy the [i]from[/i] file to the [i]to[/i] destination. Both arguments should be paths to files, either relative or absolute. If the destination file exists and is not access-protected, it will be overwritten. + Returns one of the error code constants defined in [@Global Scope] (OK, FAILED or ERR_*). </description> </method> - <method name="get_next"> - <return type="String"> + <method name="current_is_dir" qualifiers="const"> + <return type="bool"> </return> <description> - Return the next element (file or directory) in the current directory (including [code].[/code] and [code]..[/code]). The name of the file or directory is returned (and not its full path). Once the stream has been fully processed, the method returns an empty String and closes the stream automatically (i.e. [method list_dir_end] would not be mandatory in such a case). + Return whether the current item processed with the last [method get_next] call is a directory ([code].[/code] and [code]..[/code] are considered directories). </description> </method> - <method name="current_is_dir" qualifiers="const"> + <method name="dir_exists"> <return type="bool"> </return> + <argument index="0" name="path" type="String"> + </argument> <description> - Return whether the current item processed with the last [method get_next] call is a directory ([code].[/code] and [code]..[/code] are considered directories). + Return whether the target directory exists. The argument can be relative to the current directory, or an absolute path. </description> </method> - <method name="list_dir_end"> + <method name="file_exists"> + <return type="bool"> + </return> + <argument index="0" name="path" type="String"> + </argument> <description> - Close the current stream opened with [method list_dir_begin] (whether it has been fully processed with [method get_next] or not does not matter). + Return whether the target file exists. The argument can be relative to the current directory, or an absolute path. </description> </method> - <method name="get_drive_count"> - <return type="int"> + <method name="get_current_dir"> + <return type="String"> </return> <description> - On Windows, return the number of drives (partitions) mounted on the current filesystem. On other platforms, the method returns 0. + Return the absolute path to the currently opened directory (e.g. [code]res://folder[/code] or [code]C:\tmp\folder[/code]). </description> </method> <method name="get_drive"> @@ -10643,21 +10737,38 @@ This approximation makes straight segments between each point, then subdivides t On Windows, return the name of the drive (partition) passed as an argument (e.g. [code]C:[/code]). On other platforms, or if the requested drive does not existed, the method returns an empty String. </description> </method> - <method name="change_dir"> - <return type="Error"> + <method name="get_drive_count"> + <return type="int"> </return> - <argument index="0" name="todir" type="String"> - </argument> <description> - Change the currently opened directory to the one passed as an argument. The argument can be relative to the current directory (e.g. [code]newdir[/code] or [code]../newdir[/code]), or an absolute path (e.g. [code]/tmp/newdir[/code] or [code]res://somedir/newdir[/code]). - The method returns one of the error code constants defined in [@Global Scope] (OK or ERR_*). + On Windows, return the number of drives (partitions) mounted on the current filesystem. On other platforms, the method returns 0. </description> </method> - <method name="get_current_dir"> + <method name="get_next"> <return type="String"> </return> <description> - Return the absolute path to the currently opened directory (e.g. [code]res://folder[/code] or [code]C:\tmp\folder[/code]). + Return the next element (file or directory) in the current directory (including [code].[/code] and [code]..[/code]). The name of the file or directory is returned (and not its full path). Once the stream has been fully processed, the method returns an empty String and closes the stream automatically (i.e. [method list_dir_end] would not be mandatory in such a case). + </description> + </method> + <method name="get_space_left"> + <return type="int"> + </return> + <description> + On Unix desktop systems, return the available space on the current directory's disk. On other platforms, this information is not available and the method returns 0 or -1. + </description> + </method> + <method name="list_dir_begin"> + <return type="bool"> + </return> + <description> + Initialise the stream used to list all files and directories using the [method get_next] function, closing the current opened stream if needed. Once the stream has been processed, it should typically be closed with [method list_dir_end]. + Return false if the stream could not be initialised. + </description> + </method> + <method name="list_dir_end"> + <description> + Close the current stream opened with [method list_dir_begin] (whether it has been fully processed with [method get_next] or not does not matter). </description> </method> <method name="make_dir"> @@ -10680,41 +10791,24 @@ This approximation makes straight segments between each point, then subdivides t Returns one of the error code constants defined in [@Global Scope] (OK, FAILED or ERR_*). </description> </method> - <method name="file_exists"> - <return type="bool"> - </return> - <argument index="0" name="path" type="String"> - </argument> - <description> - Return whether the target file exists. The argument can be relative to the current directory, or an absolute path. - </description> - </method> - <method name="dir_exists"> - <return type="bool"> + <method name="open"> + <return type="Error"> </return> <argument index="0" name="path" type="String"> </argument> <description> - Return whether the target directory exists. The argument can be relative to the current directory, or an absolute path. - </description> - </method> - <method name="get_space_left"> - <return type="int"> - </return> - <description> - On Unix desktop systems, return the available space on the current directory's disk. On other platforms, this information is not available and the method returns 0 or -1. + Open an existing directory of the filesystem. The [i]path[/i] argument can be within the project tree ([code]res://folder[/code]), the user directory ([code]user://folder[/code]) or an absolute path of the user filesystem (e.g. [code]/tmp/folder[/code] or [code]C:\tmp\folder[/code]). + The method returns one of the error code constants defined in [@Global Scope] (OK or ERR_*). </description> </method> - <method name="copy"> + <method name="remove"> <return type="Error"> </return> - <argument index="0" name="from" type="String"> - </argument> - <argument index="1" name="to" type="String"> + <argument index="0" name="path" type="String"> </argument> <description> - Copy the [i]from[/i] file to the [i]to[/i] destination. Both arguments should be paths to files, either relative or absolute. If the destination file exists and is not access-protected, it will be overwritten. - Returns one of the error code constants defined in [@Global Scope] (OK, FAILED or ERR_*). + Delete the target file or an empty directory. The argument can be relative to the current directory, or an absolute path. If the target directory is not empty, the operation will fail. + Returns one of the error code constants defined in [@Global Scope] (OK or FAILED). </description> </method> <method name="rename"> @@ -10729,16 +10823,6 @@ This approximation makes straight segments between each point, then subdivides t Returns one of the error code constants defined in [@Global Scope] (OK or FAILED). </description> </method> - <method name="remove"> - <return type="Error"> - </return> - <argument index="0" name="path" type="String"> - </argument> - <description> - Delete the target file or an empty directory. The argument can be relative to the current directory, or an absolute path. If the target directory is not empty, the operation will fail. - Returns one of the error code constants defined in [@Global Scope] (OK or FAILED). - </description> - </method> </methods> <constants> </constants> @@ -10749,21 +10833,29 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> <methods> - <method name="set_font_data"> + <method name="add_fallback"> <argument index="0" name="data" type="DynamicFontData"> </argument> <description> </description> </method> - <method name="get_font_data" qualifiers="const"> + <method name="get_fallback" qualifiers="const"> <return type="DynamicFontData"> </return> + <argument index="0" name="idx" type="int"> + </argument> <description> </description> </method> - <method name="set_size"> - <argument index="0" name="data" type="int"> - </argument> + <method name="get_fallback_count" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="get_font_data" qualifiers="const"> + <return type="DynamicFontData"> + </return> <description> </description> </method> @@ -10773,8 +10865,8 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="add_fallback"> - <argument index="0" name="data" type="DynamicFontData"> + <method name="remove_fallback"> + <argument index="0" name="idx" type="int"> </argument> <description> </description> @@ -10787,26 +10879,18 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="get_fallback" qualifiers="const"> - <return type="DynamicFontData"> - </return> - <argument index="0" name="idx" type="int"> + <method name="set_font_data"> + <argument index="0" name="data" type="DynamicFontData"> </argument> <description> </description> </method> - <method name="remove_fallback"> - <argument index="0" name="idx" type="int"> + <method name="set_size"> + <argument index="0" name="data" type="int"> </argument> <description> </description> </method> - <method name="get_fallback_count" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> </methods> <constants> </constants> @@ -10817,6 +10901,18 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> <methods> + <method name="get_font_path" qualifiers="const"> + <return type="String"> + </return> + <description> + </description> + </method> + <method name="set_font_path"> + <argument index="0" name="path" type="String"> + </argument> + <description> + </description> + </method> </methods> <constants> </constants> @@ -10868,13 +10964,19 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> <methods> + <method name="add_filter"> + <argument index="0" name="filter" type="String"> + </argument> + <description> + </description> + </method> <method name="clear_filters"> <description> </description> </method> - <method name="add_filter"> - <argument index="0" name="filter" type="String"> - </argument> + <method name="get_access" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> @@ -10896,38 +10998,36 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="set_current_dir"> - <argument index="0" name="dir" type="String"> - </argument> + <method name="get_display_mode" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="set_current_file"> - <argument index="0" name="file" type="String"> - </argument> + <method name="get_mode" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="set_current_path"> - <argument index="0" name="path" type="String"> - </argument> + <method name="get_vbox"> + <return type="VBoxContainer"> + </return> <description> </description> </method> - <method name="set_mode"> - <argument index="0" name="mode" type="int"> - </argument> + <method name="invalidate"> <description> </description> </method> - <method name="get_mode" qualifiers="const"> - <return type="int"> + <method name="is_overwrite_warning_disabled" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="get_vbox"> - <return type="VBoxContainer"> + <method name="is_showing_hidden_files" qualifiers="const"> + <return type="bool"> </return> <description> </description> @@ -10938,21 +11038,27 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="get_access" qualifiers="const"> - <return type="int"> - </return> + <method name="set_current_dir"> + <argument index="0" name="dir" type="String"> + </argument> <description> </description> </method> - <method name="set_show_hidden_files"> - <argument index="0" name="show" type="bool"> + <method name="set_current_file"> + <argument index="0" name="file" type="String"> </argument> <description> </description> </method> - <method name="is_showing_hidden_files" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_current_path"> + <argument index="0" name="path" type="String"> + </argument> + <description> + </description> + </method> + <method name="set_disable_overwrite_warning"> + <argument index="0" name="disable" type="bool"> + </argument> <description> </description> </method> @@ -10962,24 +11068,20 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="get_display_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_mode"> + <argument index="0" name="mode" type="int"> + </argument> <description> </description> </method> - <method name="invalidate"> + <method name="set_show_hidden_files"> + <argument index="0" name="show" type="bool"> + </argument> <description> </description> </method> </methods> <signals> - <signal name="files_selected"> - <argument index="0" name="paths" type="StringArray"> - </argument> - <description> - </description> - </signal> <signal name="dir_selected"> <argument index="0" name="dir" type="String"> </argument> @@ -10992,8 +11094,20 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </signal> + <signal name="files_selected"> + <argument index="0" name="paths" type="StringArray"> + </argument> + <description> + </description> + </signal> </signals> <constants> + <constant name="ACCESS_RESOURCES" value="0"> + </constant> + <constant name="ACCESS_USERDATA" value="1"> + </constant> + <constant name="ACCESS_FILESYSTEM" value="2"> + </constant> <constant name="MODE_OPEN_FILE" value="0"> </constant> <constant name="MODE_OPEN_FILES" value="1"> @@ -11004,12 +11118,6 @@ This approximation makes straight segments between each point, then subdivides t </constant> <constant name="MODE_SAVE_FILE" value="4"> </constant> - <constant name="ACCESS_RESOURCES" value="0"> - </constant> - <constant name="ACCESS_USERDATA" value="1"> - </constant> - <constant name="ACCESS_FILESYSTEM" value="2"> - </constant> </constants> </class> <class name="EditorImportPlugin" inherits="Reference" category="Core"> @@ -11048,6 +11156,14 @@ This approximation makes straight segments between each point, then subdivides t instead. </description> </method> + <method name="expand_source_path"> + <return type="String"> + </return> + <argument index="0" name="path" type="String"> + </argument> + <description> + </description> + </method> <method name="get_name" qualifiers="virtual"> <return type="String"> </return> @@ -11143,14 +11259,6 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="expand_source_path"> - <return type="String"> - </return> - <argument index="0" name="path" type="String"> - </argument> - <description> - </description> - </method> </methods> <constants> </constants> @@ -11165,6 +11273,105 @@ This approximation makes straight segments between each point, then subdivides t resource type, import plugins and export plugins. </description> <methods> + <method name="add_control_to_bottom_panel"> + <argument index="0" name="control" type="Control"> + </argument> + <argument index="1" name="title" type="String"> + </argument> + <description> + Add a control to the bottom panel (together with + Output, Debug, Animation, etc). + + If your plugin is being removed, also make sure to + remove your control by calling [method + remove_control_from_bottom_panel]. + </description> + </method> + <method name="add_control_to_container"> + <argument index="0" name="container" type="int"> + </argument> + <argument index="1" name="control" type="Control"> + </argument> + <description> + Add a custom control to a container (see + CONTAINER_* enum). There are many locations where + custom controls can be added in the editor UI. + + Please remember that you have to manage the + visibility of your custom controls yourself (and likely + hide it after adding it). + + If your plugin is being removed, also make sure to + remove your custom controls too. + </description> + </method> + <method name="add_control_to_dock"> + <argument index="0" name="slot" type="int"> + </argument> + <argument index="1" name="control" type="Control"> + </argument> + <description> + Add the control to a specific dock slot (see DOCK_* + enum for options). + + If the dock is repositioned and as long as the + plugin is active, the editor will save the dock + position on further sessions. + + If your plugin is being removed, also make sure to + remove your control by calling [method + remove_control_from_docks]. + </description> + </method> + <method name="add_custom_type"> + <argument index="0" name="type" type="String"> + </argument> + <argument index="1" name="base" type="String"> + </argument> + <argument index="2" name="script" type="Script"> + </argument> + <argument index="3" name="icon" type="Texture"> + </argument> + <description> + Add a custom type, which will appear in the list of + nodes or resources. An icon can be optionally + passed. + + When given node or resource is selected, the base + type will be instanced (ie, "Spatial", "Control", + "Resource"), then the script will be loaded and set + to this object. + + You can use the [EditorPlugin.handles] to check if + your custom object is being edited by checking the + script or using 'extends' keyword. + + During run-time, this will be a simple object with a + script so this function does not need to be called + then. + </description> + </method> + <method name="add_export_plugin"> + <argument index="0" name="plugin" type="EditorExportPlugin"> + </argument> + <description> + Add an export plugin. Plugins of this kind can + change files being exported. On exit don't forget to + call [method remove_export_plugin]. + </description> + </method> + <method name="add_import_plugin"> + <argument index="0" name="plugin" type="EditorImportPlugin"> + </argument> + <description> + Add an import plugin. These plugins manage importing + external content (from outside the project) into + formats the engine can understand. + + On exit, don't forget to remove the plugin by + calling [method remove_import_plugin] + </description> + </method> <method name="apply_changes" qualifiers="virtual"> <description> This method is called when the editor is about to @@ -11241,6 +11448,16 @@ This approximation makes straight segments between each point, then subdivides t otherwise false. </description> </method> + <method name="get_base_control"> + <return type="Control"> + </return> + <description> + Get a base control where it's safe to place dialogs. + Many plugins open dialogs and they need a control as + a base to make sure they use the editor icons and + theme. + </description> + </method> <method name="get_breakpoints" qualifiers="virtual"> <return type="StringArray"> </return> @@ -11250,6 +11467,14 @@ This approximation makes straight segments between each point, then subdivides t (script:line), for example: res://path_to_script.gd:25 </description> </method> + <method name="get_editor_settings"> + <return type="EditorSettings"> + </return> + <description> + Get the general settings for the editor (the same + window that appears in the Settings menu). + </description> + </method> <method name="get_name" qualifiers="virtual"> <return type="String"> </return> @@ -11259,6 +11484,14 @@ This approximation makes straight segments between each point, then subdivides t (which by default is 2D, 3D, Script). </description> </method> + <method name="get_selection"> + <return type="EditorSelection"> + </return> + <description> + Get the object that handles the selection of nodes + in the Scene Tree editor. + </description> + </method> <method name="get_state" qualifiers="virtual"> <return type="Dictionary"> </return> @@ -11269,6 +11502,15 @@ This approximation makes straight segments between each point, then subdivides t restored when the tab returns). </description> </method> + <method name="get_undo_redo"> + <return type="UndoRedo"> + </return> + <description> + Get the undo/redo object. Most actions in the editor + can be undoable, so use this object to make sure + this happens when it's worth it. + </description> + </method> <method name="handles" qualifiers="virtual"> <return type="bool"> </return> @@ -11303,61 +11545,13 @@ This approximation makes straight segments between each point, then subdivides t all your editor controls manually. </description> </method> - <method name="set_state" qualifiers="virtual"> - <argument index="0" name="state" type="Dictionary"> - </argument> - <description> - Restore the state saved by [EditorPlugin.get_state]. - </description> - </method> - <method name="add_control_to_container"> - <argument index="0" name="container" type="int"> - </argument> - <argument index="1" name="control" type="Control"> - </argument> - <description> - Add a custom control to a container (see - CONTAINER_* enum). There are many locations where - custom controls can be added in the editor UI. - - Please remember that you have to manage the - visibility of your custom controls yourself (and likely - hide it after adding it). - - If your plugin is being removed, also make sure to - remove your custom controls too. - </description> - </method> - <method name="add_control_to_bottom_panel"> + <method name="remove_control_from_bottom_panel"> <argument index="0" name="control" type="Control"> </argument> - <argument index="1" name="title" type="String"> - </argument> - <description> - Add a control to the bottom panel (together with - Output, Debug, Animation, etc). - - If your plugin is being removed, also make sure to - remove your control by calling [method - remove_control_from_bottom_panel]. - </description> - </method> - <method name="add_control_to_dock"> - <argument index="0" name="slot" type="int"> - </argument> - <argument index="1" name="control" type="Control"> - </argument> <description> - Add the control to a specific dock slot (see DOCK_* - enum for options). - - If the dock is repositioned and as long as the - plugin is active, the editor will save the dock - position on further sessions. - - If your plugin is being removed, also make sure to - remove your control by calling [method - remove_control_from_docks]. + Remove the control from the bottom panel. Don't forget + to call this if you added one, so the editor can + remove it cleanly. </description> </method> <method name="remove_control_from_docks"> @@ -11369,43 +11563,6 @@ This approximation makes straight segments between each point, then subdivides t the layout and remove it cleanly. </description> </method> - <method name="remove_control_from_bottom_panel"> - <argument index="0" name="control" type="Control"> - </argument> - <description> - Remove the control from the bottom panel. Don't forget - to call this if you added one, so the editor can - remove it cleanly. - </description> - </method> - <method name="add_custom_type"> - <argument index="0" name="type" type="String"> - </argument> - <argument index="1" name="base" type="String"> - </argument> - <argument index="2" name="script" type="Script"> - </argument> - <argument index="3" name="icon" type="Texture"> - </argument> - <description> - Add a custom type, which will appear in the list of - nodes or resources. An icon can be optionally - passed. - - When given node or resource is selected, the base - type will be instanced (ie, "Spatial", "Control", - "Resource"), then the script will be loaded and set - to this object. - - You can use the [EditorPlugin.handles] to check if - your custom object is being edited by checking the - script or using 'extends' keyword. - - During run-time, this will be a simple object with a - script so this function does not need to be called - then. - </description> - </method> <method name="remove_custom_type"> <argument index="0" name="type" type="String"> </argument> @@ -11414,16 +11571,12 @@ This approximation makes straight segments between each point, then subdivides t [EditorPlugin.add_custom_type] </description> </method> - <method name="add_import_plugin"> - <argument index="0" name="plugin" type="EditorImportPlugin"> + <method name="remove_export_plugin"> + <argument index="0" name="plugin" type="EditorExportPlugin"> </argument> <description> - Add an import plugin. These plugins manage importing - external content (from outside the project) into - formats the engine can understand. - - On exit, don't forget to remove the plugin by - calling [method remove_import_plugin] + Remove the export plugin, don't forget to call this + on exit. </description> </method> <method name="remove_import_plugin"> @@ -11434,56 +11587,11 @@ This approximation makes straight segments between each point, then subdivides t on exit. </description> </method> - <method name="add_export_plugin"> - <argument index="0" name="plugin" type="EditorExportPlugin"> - </argument> - <description> - Add an export plugin. Plugins of this kind can - change files being exported. On exit don't forget to - call [method remove_export_plugin]. - </description> - </method> - <method name="remove_export_plugin"> - <argument index="0" name="plugin" type="EditorExportPlugin"> + <method name="set_state" qualifiers="virtual"> + <argument index="0" name="state" type="Dictionary"> </argument> <description> - Remove the export plugin, don't forget to call this - on exit. - </description> - </method> - <method name="get_base_control"> - <return type="Control"> - </return> - <description> - Get a base control where it's safe to place dialogs. - Many plugins open dialogs and they need a control as - a base to make sure they use the editor icons and - theme. - </description> - </method> - <method name="get_undo_redo"> - <return type="UndoRedo"> - </return> - <description> - Get the undo/redo object. Most actions in the editor - can be undoable, so use this object to make sure - this happens when it's worth it. - </description> - </method> - <method name="get_selection"> - <return type="EditorSelection"> - </return> - <description> - Get the object that handles the selection of nodes - in the Scene Tree editor. - </description> - </method> - <method name="get_editor_settings"> - <return type="EditorSettings"> - </return> - <description> - Get the general settings for the editor (the same - window that appears in the Settings menu). + Restore the state saved by [EditorPlugin.get_state]. </description> </method> </methods> @@ -11583,11 +11691,6 @@ This approximation makes straight segments between each point, then subdivides t This object manages the SceneTree selection in the editor. </description> <methods> - <method name="clear"> - <description> - Clear the selection. - </description> - </method> <method name="add_node"> <argument index="0" name="node" type="Node"> </argument> @@ -11595,11 +11698,9 @@ This approximation makes straight segments between each point, then subdivides t Add a node to the selection. </description> </method> - <method name="remove_node"> - <argument index="0" name="node" type="Node"> - </argument> + <method name="clear"> <description> - Remove a node from the selection. + Clear the selection. </description> </method> <method name="get_selected_nodes"> @@ -11609,6 +11710,13 @@ This approximation makes straight segments between each point, then subdivides t Get the list of selectes nodes. </description> </method> + <method name="remove_node"> + <argument index="0" name="node" type="Node"> + </argument> + <description> + Remove a node from the selection. + </description> + </method> </methods> <signals> <signal name="selection_changed"> @@ -11645,17 +11753,12 @@ This approximation makes straight segments between each point, then subdivides t Erase a given setting (pass full property path). </description> </method> - <method name="get_settings_path" qualifiers="const"> - <return type="String"> + <method name="get_favorite_dirs" qualifiers="const"> + <return type="StringArray"> </return> <description> - Get the global settings path for the engine. Inside - this path you can find some standard paths such as: - - settings/tmp - used for temporary storage of files - - settings/templates - where export templates are - located + Get the list of favorite directories for this + project. </description> </method> <method name="get_project_settings_path" qualifiers="const"> @@ -11667,35 +11770,40 @@ This approximation makes straight segments between each point, then subdivides t path where project specific settings are saved. </description> </method> - <method name="set_favorite_dirs"> - <argument index="0" name="dirs" type="StringArray"> - </argument> + <method name="get_recent_dirs" qualifiers="const"> + <return type="StringArray"> + </return> <description> - Set the list of favorite directories for this - project. + Get the list of recently visited folders in the file + dialog for this project. </description> </method> - <method name="get_favorite_dirs" qualifiers="const"> - <return type="StringArray"> + <method name="get_settings_path" qualifiers="const"> + <return type="String"> </return> <description> - Get the list of favorite directories for this - project. + Get the global settings path for the engine. Inside + this path you can find some standard paths such as: + + settings/tmp - used for temporary storage of files + + settings/templates - where export templates are + located </description> </method> - <method name="set_recent_dirs"> + <method name="set_favorite_dirs"> <argument index="0" name="dirs" type="StringArray"> </argument> <description> - Set the list of recently visited folders in the file - dialog for this project. + Set the list of favorite directories for this + project. </description> </method> - <method name="get_recent_dirs" qualifiers="const"> - <return type="StringArray"> - </return> + <method name="set_recent_dirs"> + <argument index="0" name="dirs" type="StringArray"> + </argument> <description> - Get the list of recently visited folders in the file + Set the list of recently visited folders in the file dialog for this project. </description> </method> @@ -11719,66 +11827,38 @@ This approximation makes straight segments between each point, then subdivides t [method EditorPlugin.create_spatial_gizmo]. </description> <methods> - <method name="commit_handle" qualifiers="virtual"> - <argument index="0" name="index" type="int"> - </argument> - <argument index="1" name="restore" type="Variant"> - </argument> - <argument index="2" name="cancel" type="bool"> + <method name="add_collision_segments"> + <argument index="0" name="segments" type="Vector3Array"> </argument> <description> - Commit a handle being edited (handles must have been - prevously added by [method add_handles]). - - If the cancel parameter is true, an option to - restore the edited value to the original is - provided. </description> </method> - <method name="get_handle_name" qualifiers="virtual"> - <return type="String"> - </return> - <argument index="0" name="index" type="int"> + <method name="add_collision_triangles"> + <argument index="0" name="triangles" type="TriangleMesh"> </argument> <description> - Get the name of an edited handle (handles must have - been previously added by [method add_handles]). + Add collision triangles to the gizmo for picking. A + [TriangleMesh] can be generated from a regular + [Mesh] too. - Handles can be named for reference to the user when editing. - </description> - </method> - <method name="get_handle_value" qualifiers="virtual"> - <return type="Variant"> - </return> - <argument index="0" name="index" type="int"> - </argument> - <description> - Get actual value of a handle. This value can be - anything and used for eventually undoing the motion - when calling [method commit_handle] - </description> - </method> - <method name="redraw" qualifiers="virtual"> - <description> - This function is called when the Spatial this gizmo - refers to changes (the [method Spatial.update_gizmo] - is called). + Call this function during [method redraw]. </description> </method> - <method name="set_handle" qualifiers="virtual"> - <argument index="0" name="index" type="int"> + <method name="add_handles"> + <argument index="0" name="handles" type="Vector3Array"> </argument> - <argument index="1" name="camera" type="Camera"> + <argument index="1" name="billboard" type="bool" default="false"> </argument> - <argument index="2" name="point" type="Vector2"> + <argument index="2" name="secondary" type="bool" default="false"> </argument> <description> - This function is used when the user drags a gizmo - handle (previously added with [method add_handles]) - in screen coordinates. + Add a list of handles (points) which can be used to + deform the object being edited. - The [Camera] is also provided - so screen coordinates can be converted to raycasts. + There are virtual functions which will be called + upon editing of these handles. + + Call this function during [method redraw]. </description> </method> <method name="add_lines"> @@ -11810,49 +11890,77 @@ This approximation makes straight segments between each point, then subdivides t Call this function during [method redraw]. </description> </method> - <method name="add_collision_segments"> - <argument index="0" name="segments" type="Vector3Array"> + <method name="add_unscaled_billboard"> + <argument index="0" name="material" type="Material"> + </argument> + <argument index="1" name="default_scale" type="float" default="1"> </argument> <description> + Add an unscaled billboard for visualization. + + Call this function during [method redraw]. </description> </method> - <method name="add_collision_triangles"> - <argument index="0" name="triangles" type="TriangleMesh"> + <method name="commit_handle" qualifiers="virtual"> + <argument index="0" name="index" type="int"> + </argument> + <argument index="1" name="restore" type="Variant"> + </argument> + <argument index="2" name="cancel" type="bool"> </argument> <description> - Add collision triangles to the gizmo for picking. A - [TriangleMesh] can be generated from a regular - [Mesh] too. + Commit a handle being edited (handles must have been + prevously added by [method add_handles]). - Call this function during [method redraw]. + If the cancel parameter is true, an option to + restore the edited value to the original is + provided. </description> </method> - <method name="add_unscaled_billboard"> - <argument index="0" name="material" type="Material"> - </argument> - <argument index="1" name="default_scale" type="float" default="1"> + <method name="get_handle_name" qualifiers="virtual"> + <return type="String"> + </return> + <argument index="0" name="index" type="int"> </argument> <description> - Add an unscaled billboard for visualization. + Get the name of an edited handle (handles must have + been previously added by [method add_handles]). - Call this function during [method redraw]. + Handles can be named for reference to the user when editing. </description> </method> - <method name="add_handles"> - <argument index="0" name="handles" type="Vector3Array"> + <method name="get_handle_value" qualifiers="virtual"> + <return type="Variant"> + </return> + <argument index="0" name="index" type="int"> </argument> - <argument index="1" name="billboard" type="bool" default="false"> + <description> + Get actual value of a handle. This value can be + anything and used for eventually undoing the motion + when calling [method commit_handle] + </description> + </method> + <method name="redraw" qualifiers="virtual"> + <description> + This function is called when the Spatial this gizmo + refers to changes (the [method Spatial.update_gizmo] + is called). + </description> + </method> + <method name="set_handle" qualifiers="virtual"> + <argument index="0" name="index" type="int"> </argument> - <argument index="2" name="secondary" type="bool" default="false"> + <argument index="1" name="camera" type="Camera"> + </argument> + <argument index="2" name="point" type="Vector2"> </argument> <description> - Add a list of handles (points) which can be used to - deform the object being edited. - - There are virtual functions which will be called - upon editing of these handles. + This function is used when the user drags a gizmo + handle (previously added with [method add_handles]) + in screen coordinates. - Call this function during [method redraw]. + The [Camera] is also provided + so screen coordinates can be converted to raycasts. </description> </method> <method name="set_spatial_node"> @@ -11875,19 +11983,13 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> <methods> - <method name="set_background"> - <argument index="0" name="bgmode" type="int"> + <method name="fx_get_param" qualifiers="const"> + <argument index="0" name="param" type="int"> </argument> <description> </description> </method> - <method name="get_background" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> - <method name="set_background_param"> + <method name="fx_set_param"> <argument index="0" name="param" type="int"> </argument> <argument index="1" name="value" type="Variant"> @@ -11895,16 +11997,14 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="get_background_param" qualifiers="const"> - <argument index="0" name="param" type="int"> - </argument> + <method name="get_background" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="set_enable_fx"> - <argument index="0" name="effect" type="int"> - </argument> - <argument index="1" name="enabled" type="bool"> + <method name="get_background_param" qualifiers="const"> + <argument index="0" name="param" type="int"> </argument> <description> </description> @@ -11917,7 +12017,13 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="fx_set_param"> + <method name="set_background"> + <argument index="0" name="bgmode" type="int"> + </argument> + <description> + </description> + </method> + <method name="set_background_param"> <argument index="0" name="param" type="int"> </argument> <argument index="1" name="value" type="Variant"> @@ -11925,8 +12031,10 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="fx_get_param" qualifiers="const"> - <argument index="0" name="param" type="int"> + <method name="set_enable_fx"> + <argument index="0" name="effect" type="int"> + </argument> + <argument index="1" name="enabled" type="bool"> </argument> <description> </description> @@ -11935,83 +12043,47 @@ This approximation makes straight segments between each point, then subdivides t <constants> <constant name="BG_KEEP" value="0"> </constant> + <constant name="BG_PARAM_CANVAS_MAX_LAYER" value="0"> + </constant> <constant name="BG_DEFAULT_COLOR" value="1"> </constant> + <constant name="BG_PARAM_COLOR" value="1"> + </constant> <constant name="BG_COLOR" value="2"> </constant> + <constant name="BG_PARAM_TEXTURE" value="2"> + </constant> + <constant name="BG_PARAM_CUBEMAP" value="3"> + </constant> <constant name="BG_TEXTURE" value="3"> </constant> <constant name="BG_CUBEMAP" value="4"> </constant> + <constant name="BG_PARAM_ENERGY" value="4"> + </constant> <constant name="BG_CANVAS" value="5"> </constant> <constant name="BG_MAX" value="6"> </constant> - <constant name="BG_PARAM_CANVAS_MAX_LAYER" value="0"> - </constant> - <constant name="BG_PARAM_COLOR" value="1"> - </constant> - <constant name="BG_PARAM_TEXTURE" value="2"> - </constant> - <constant name="BG_PARAM_CUBEMAP" value="3"> - </constant> - <constant name="BG_PARAM_ENERGY" value="4"> - </constant> <constant name="BG_PARAM_GLOW" value="6"> </constant> <constant name="BG_PARAM_MAX" value="7"> </constant> <constant name="FX_AMBIENT_LIGHT" value="0"> </constant> - <constant name="FX_FXAA" value="1"> - </constant> - <constant name="FX_GLOW" value="2"> - </constant> - <constant name="FX_DOF_BLUR" value="3"> - </constant> - <constant name="FX_HDR" value="4"> - </constant> - <constant name="FX_FOG" value="5"> - </constant> - <constant name="FX_BCS" value="6"> - </constant> - <constant name="FX_SRGB" value="7"> - </constant> - <constant name="FX_MAX" value="8"> - </constant> <constant name="FX_BLUR_BLEND_MODE_ADDITIVE" value="0"> </constant> - <constant name="FX_BLUR_BLEND_MODE_SCREEN" value="1"> - </constant> - <constant name="FX_BLUR_BLEND_MODE_SOFTLIGHT" value="2"> - </constant> <constant name="FX_HDR_TONE_MAPPER_LINEAR" value="0"> </constant> - <constant name="FX_HDR_TONE_MAPPER_LOG" value="1"> - </constant> - <constant name="FX_HDR_TONE_MAPPER_REINHARDT" value="2"> - </constant> - <constant name="FX_HDR_TONE_MAPPER_REINHARDT_AUTOWHITE" value="3"> - </constant> <constant name="FX_PARAM_AMBIENT_LIGHT_COLOR" value="0"> </constant> - <constant name="FX_PARAM_AMBIENT_LIGHT_ENERGY" value="1"> - </constant> - <constant name="FX_PARAM_GLOW_BLUR_PASSES" value="2"> - </constant> - <constant name="FX_PARAM_GLOW_BLUR_SCALE" value="3"> - </constant> - <constant name="FX_PARAM_GLOW_BLUR_STRENGTH" value="4"> - </constant> - <constant name="FX_PARAM_GLOW_BLUR_BLEND_MODE" value="5"> - </constant> - <constant name="FX_PARAM_GLOW_BLOOM" value="6"> + <constant name="FX_BLUR_BLEND_MODE_SCREEN" value="1"> </constant> - <constant name="FX_PARAM_GLOW_BLOOM_TRESHOLD" value="7"> + <constant name="FX_FXAA" value="1"> </constant> - <constant name="FX_PARAM_DOF_BLUR_PASSES" value="8"> + <constant name="FX_HDR_TONE_MAPPER_LOG" value="1"> </constant> - <constant name="FX_PARAM_DOF_BLUR_BEGIN" value="9"> + <constant name="FX_PARAM_AMBIENT_LIGHT_ENERGY" value="1"> </constant> <constant name="FX_PARAM_DOF_BLUR_RANGE" value="10"> </constant> @@ -12033,12 +12105,20 @@ This approximation makes straight segments between each point, then subdivides t </constant> <constant name="FX_PARAM_FOG_BEGIN" value="19"> </constant> - <constant name="FX_PARAM_FOG_ATTENUATION" value="22"> + <constant name="FX_BLUR_BLEND_MODE_SOFTLIGHT" value="2"> + </constant> + <constant name="FX_GLOW" value="2"> + </constant> + <constant name="FX_HDR_TONE_MAPPER_REINHARDT" value="2"> + </constant> + <constant name="FX_PARAM_GLOW_BLUR_PASSES" value="2"> </constant> <constant name="FX_PARAM_FOG_BEGIN_COLOR" value="20"> </constant> <constant name="FX_PARAM_FOG_END_COLOR" value="21"> </constant> + <constant name="FX_PARAM_FOG_ATTENUATION" value="22"> + </constant> <constant name="FX_PARAM_FOG_BG" value="23"> </constant> <constant name="FX_PARAM_BCS_BRIGHTNESS" value="24"> @@ -12049,6 +12129,34 @@ This approximation makes straight segments between each point, then subdivides t </constant> <constant name="FX_PARAM_MAX" value="27"> </constant> + <constant name="FX_DOF_BLUR" value="3"> + </constant> + <constant name="FX_HDR_TONE_MAPPER_REINHARDT_AUTOWHITE" value="3"> + </constant> + <constant name="FX_PARAM_GLOW_BLUR_SCALE" value="3"> + </constant> + <constant name="FX_HDR" value="4"> + </constant> + <constant name="FX_PARAM_GLOW_BLUR_STRENGTH" value="4"> + </constant> + <constant name="FX_FOG" value="5"> + </constant> + <constant name="FX_PARAM_GLOW_BLUR_BLEND_MODE" value="5"> + </constant> + <constant name="FX_BCS" value="6"> + </constant> + <constant name="FX_PARAM_GLOW_BLOOM" value="6"> + </constant> + <constant name="FX_PARAM_GLOW_BLOOM_TRESHOLD" value="7"> + </constant> + <constant name="FX_SRGB" value="7"> + </constant> + <constant name="FX_MAX" value="8"> + </constant> + <constant name="FX_PARAM_DOF_BLUR_PASSES" value="8"> + </constant> + <constant name="FX_PARAM_DOF_BLUR_BEGIN" value="9"> + </constant> </constants> </class> <class name="EventPlayer" inherits="Node" category="Core"> @@ -12060,71 +12168,71 @@ This approximation makes straight segments between each point, then subdivides t Currently, only MOD, S3M, IT, and XM music is supported. </description> <methods> - <method name="set_stream"> - <argument index="0" name="stream" type="EventStream"> + <method name="get_channel_last_note_time" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="channel" type="int"> </argument> <description> - Set the [EventStream] this player will play. + Return the time at which the last note of a given channel in the stream plays. </description> </method> - <method name="get_stream" qualifiers="const"> - <return type="EventStream"> + <method name="get_channel_volume" qualifiers="const"> + <return type="float"> </return> + <argument index="0" name="channel" type="int"> + </argument> <description> - Return the currently assigned stream. - </description> - </method> - <method name="play"> - <description> - Play the currently assigned stream. + Return the volume scale for an individual channel of the stream. </description> </method> - <method name="stop"> + <method name="get_length" qualifiers="const"> + <return type="float"> + </return> <description> - Stop playing. + Return the song length. May be in seconds, but depends on the stream type. </description> </method> - <method name="is_playing" qualifiers="const"> - <return type="bool"> + <method name="get_loop_count" qualifiers="const"> + <return type="int"> </return> <description> - Return whether this player is playing. + Return the number of times the playback has looped. </description> </method> - <method name="set_paused"> - <argument index="0" name="paused" type="bool"> - </argument> + <method name="get_pitch_scale" qualifiers="const"> + <return type="float"> + </return> <description> - Pause stream playback. + Return the pitch scale factor for this player. </description> </method> - <method name="is_paused" qualifiers="const"> - <return type="bool"> + <method name="get_pos" qualifiers="const"> + <return type="float"> </return> <description> - Return whether the playback is currently paused. + Return the playback position. May be in seconds, but depends on the stream type. </description> </method> - <method name="set_loop"> - <argument index="0" name="enabled" type="bool"> - </argument> + <method name="get_stream" qualifiers="const"> + <return type="EventStream"> + </return> <description> - Set whether the stream will be restarted at the end. + Return the currently assigned stream. </description> </method> - <method name="has_loop" qualifiers="const"> - <return type="bool"> + <method name="get_stream_name" qualifiers="const"> + <return type="String"> </return> <description> - Return whether this player will be restart the playback at the end. + Return the name of the currently assigned stream. This is not the file name, but a field inside the file. If no stream is assigned, if returns "<No Stream>". </description> </method> - <method name="set_volume"> - <argument index="0" name="volume" type="float"> - </argument> + <method name="get_tempo_scale" qualifiers="const"> + <return type="float"> + </return> <description> - Set the playback volume for this player. This is a float between 0.0 (silent) and 1.0 (full volume). Values over 1.0 may amplify sound even more, but may introduce distortion. Negative values may just invert the output waveform, which produces no audible difference. - The effect of these special values ultimately depends on the low-level implementation of the file format being played. + Return the tempo multiplier. </description> </method> <method name="get_volume" qualifiers="const"> @@ -12134,67 +12242,44 @@ This approximation makes straight segments between each point, then subdivides t Return the playback volume for this player. </description> </method> - <method name="set_pitch_scale"> - <argument index="0" name="pitch_scale" type="float"> - </argument> - <description> - Set the pitch multiplier for all sounds coming from this stream. A value of 2.0 shifts all pitches one octave up, and a value of 0.5 shifts pitches one octave down. - </description> - </method> - <method name="get_pitch_scale" qualifiers="const"> + <method name="get_volume_db" qualifiers="const"> <return type="float"> </return> <description> - Return the pitch scale factor for this player. - </description> - </method> - <method name="set_tempo_scale"> - <argument index="0" name="tempo_scale" type="float"> - </argument> - <description> - Set the tempo multiplier. This allows to slow down or speed up the music, without affecting its pitch. + Return the playback volume for this player, in decibels. </description> </method> - <method name="get_tempo_scale" qualifiers="const"> - <return type="float"> + <method name="has_autoplay" qualifiers="const"> + <return type="bool"> </return> <description> - Return the tempo multiplier. - </description> - </method> - <method name="set_volume_db"> - <argument index="0" name="db" type="float"> - </argument> - <description> - Set the playback volume for this player, in decibels. This is a float between -80.0 (silent) and 0.0 (full volume). Values under -79.0 get truncated to -80, but values over 0.0 do not, so the warnings for over amplifying (see [method set_volume]) still apply. + Return whether this player will start playing as soon as it enters the scene tree. </description> </method> - <method name="get_volume_db" qualifiers="const"> - <return type="float"> + <method name="has_loop" qualifiers="const"> + <return type="bool"> </return> <description> - Return the playback volume for this player, in decibels. + Return whether this player will be restart the playback at the end. </description> </method> - <method name="get_stream_name" qualifiers="const"> - <return type="String"> + <method name="is_paused" qualifiers="const"> + <return type="bool"> </return> <description> - Return the name of the currently assigned stream. This is not the file name, but a field inside the file. If no stream is assigned, if returns "<No Stream>". + Return whether the playback is currently paused. </description> </method> - <method name="get_loop_count" qualifiers="const"> - <return type="int"> + <method name="is_playing" qualifiers="const"> + <return type="bool"> </return> <description> - Return the number of times the playback has looped. + Return whether this player is playing. </description> </method> - <method name="get_pos" qualifiers="const"> - <return type="float"> - </return> + <method name="play"> <description> - Return the playback position. May be in seconds, but depends on the stream type. + Play the currently assigned stream. </description> </method> <method name="seek_pos"> @@ -12204,13 +12289,6 @@ This approximation makes straight segments between each point, then subdivides t Set the playback position. May be in seconds, but depends on the stream type. </description> </method> - <method name="get_length" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the song length. May be in seconds, but depends on the stream type. - </description> - </method> <method name="set_autoplay"> <argument index="0" name="enabled" type="bool"> </argument> @@ -12218,13 +12296,6 @@ This approximation makes straight segments between each point, then subdivides t Set whether this player will start playing as soon as it enters the scene tree. </description> </method> - <method name="has_autoplay" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return whether this player will start playing as soon as it enters the scene tree. - </description> - </method> <method name="set_channel_volume"> <argument index="0" name="channel" type="int"> </argument> @@ -12235,22 +12306,59 @@ This approximation makes straight segments between each point, then subdivides t Many stream formats are multichannel, so this allows to affect only a part of the music. </description> </method> - <method name="get_channel_volume" qualifiers="const"> - <return type="float"> - </return> - <argument index="0" name="channel" type="int"> + <method name="set_loop"> + <argument index="0" name="enabled" type="bool"> </argument> <description> - Return the volume scale for an individual channel of the stream. + Set whether the stream will be restarted at the end. </description> </method> - <method name="get_channel_last_note_time" qualifiers="const"> - <return type="float"> - </return> - <argument index="0" name="channel" type="int"> + <method name="set_paused"> + <argument index="0" name="paused" type="bool"> </argument> <description> - Return the time at which the last note of a given channel in the stream plays. + Pause stream playback. + </description> + </method> + <method name="set_pitch_scale"> + <argument index="0" name="pitch_scale" type="float"> + </argument> + <description> + Set the pitch multiplier for all sounds coming from this stream. A value of 2.0 shifts all pitches one octave up, and a value of 0.5 shifts pitches one octave down. + </description> + </method> + <method name="set_stream"> + <argument index="0" name="stream" type="EventStream"> + </argument> + <description> + Set the [EventStream] this player will play. + </description> + </method> + <method name="set_tempo_scale"> + <argument index="0" name="tempo_scale" type="float"> + </argument> + <description> + Set the tempo multiplier. This allows to slow down or speed up the music, without affecting its pitch. + </description> + </method> + <method name="set_volume"> + <argument index="0" name="volume" type="float"> + </argument> + <description> + Set the playback volume for this player. This is a float between 0.0 (silent) and 1.0 (full volume). Values over 1.0 may amplify sound even more, but may introduce distortion. Negative values may just invert the output waveform, which produces no audible difference. + The effect of these special values ultimately depends on the low-level implementation of the file format being played. + </description> + </method> + <method name="set_volume_db"> + <argument index="0" name="db" type="float"> + </argument> + <description> + Set the playback volume for this player, in decibels. This is a float between -80.0 (silent) and 0.0 (full volume). Values under -79.0 get truncated to -80, but values over 0.0 do not, so the warnings for over amplifying (see [method set_volume]) still apply. + </description> + </method> + <method name="stop"> + <description> + Stop playing. </description> </method> </methods> @@ -12289,281 +12397,353 @@ This approximation makes straight segments between each point, then subdivides t </class> <class name="File" inherits="Reference" category="Core"> <brief_description> + Type to handle file reading and writing operations. </brief_description> <description> + File type. This is used to permanently store data into the user device's file system and to read from it. This can be used to store game save data or player configuration files, for example. + + Here's a sample on how to write and read from a file: + + [codeblock] + func save(content): + var file = File.new() + file.open("user://save_game.dat", file.WRITE) + file.store_string(content) + file.close() + + func load(): + var file = File.new() + file.open("user://save_game.dat", file.READ) + var content = file.get_as_text() + file.close() + return content + [/codeblock] </description> <methods> - <method name="open_encrypted"> - <return type="int"> + <method name="close"> + <description> + Close the currently opened file. + </description> + </method> + <method name="eof_reached" qualifiers="const"> + <return type="bool"> + </return> + <description> + Return whether the file cursor reached the end of the file. + </description> + </method> + <method name="file_exists" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="path" type="String"> </argument> - <argument index="1" name="mode_flags" type="int"> - </argument> - <argument index="2" name="key" type="RawArray"> - </argument> <description> + Get whether or not the file in the specified path exists. </description> </method> - <method name="open_encrypted_with_pass"> + <method name="get_16" qualifiers="const"> <return type="int"> </return> - <argument index="0" name="path" type="String"> - </argument> - <argument index="1" name="mode_flags" type="int"> - </argument> - <argument index="2" name="pass" type="String"> - </argument> <description> + Get the next 16 bits from the file as an integer. </description> </method> - <method name="open"> + <method name="get_32" qualifiers="const"> <return type="int"> </return> - <argument index="0" name="path" type="String"> - </argument> - <argument index="1" name="flags" type="int"> - </argument> <description> + Get the next 32 bits from the file as an integer. </description> </method> - <method name="close"> + <method name="get_64" qualifiers="const"> + <return type="int"> + </return> <description> + Get the next 64 bits from the file as an integer. </description> </method> - <method name="is_open" qualifiers="const"> - <return type="bool"> + <method name="get_8" qualifiers="const"> + <return type="int"> </return> <description> + Get the next 8 bits from the file as an integer. </description> </method> - <method name="seek"> - <argument index="0" name="pos" type="int"> - </argument> + <method name="get_as_text" qualifiers="const"> + <return type="String"> + </return> <description> + Get the whole file as a [String]. </description> </method> - <method name="seek_end"> - <argument index="0" name="pos" type="int" default="0"> + <method name="get_buffer" qualifiers="const"> + <return type="RawArray"> + </return> + <argument index="0" name="len" type="int"> </argument> <description> + Get next len bytes of the file as a [RawArray]. </description> </method> - <method name="get_pos" qualifiers="const"> - <return type="int"> + <method name="get_csv_line" qualifiers="const"> + <return type="StringArray"> </return> + <argument index="0" name="delim" type="String" default="",""> + </argument> <description> + Get the next value of the file in CSV (Comma Separated Values) format. You can pass a different delimiter to use other than the default "," (comma). </description> </method> - <method name="get_len" qualifiers="const"> - <return type="int"> + <method name="get_double" qualifiers="const"> + <return type="float"> </return> <description> + Get the next 64 bits from the file as a floating point number. </description> </method> - <method name="eof_reached" qualifiers="const"> + <method name="get_endian_swap"> <return type="bool"> </return> <description> + Get whether endian swap is enabled for this file. </description> </method> - <method name="get_8" qualifiers="const"> - <return type="int"> + <method name="get_error" qualifiers="const"> + <return type="Error"> </return> <description> + Get the last error that happened when trying to perform operations. Compare with the [code]ERR_FILE_*[/code] constants from [@Global Scope]. </description> </method> - <method name="get_16" qualifiers="const"> - <return type="int"> + <method name="get_float" qualifiers="const"> + <return type="float"> </return> <description> + Get the next 32 bits from the file as a floating point number. </description> </method> - <method name="get_32" qualifiers="const"> + <method name="get_len" qualifiers="const"> <return type="int"> </return> <description> + Return the size of the file in bytes. </description> </method> - <method name="get_64" qualifiers="const"> - <return type="int"> + <method name="get_line" qualifiers="const"> + <return type="String"> </return> <description> + Get the next line of the file as a [String]. </description> </method> - <method name="get_float" qualifiers="const"> - <return type="float"> + <method name="get_md5" qualifiers="const"> + <return type="String"> + </return> + <argument index="0" name="path" type="String"> + </argument> + <description> + Return a md5 String representing the file at the given path or an empty [String] on failure. + </description> + </method> + <method name="get_pascal_string"> + <return type="String"> </return> <description> + Get a [String] saved in Pascal format from the file. </description> </method> - <method name="get_double" qualifiers="const"> - <return type="float"> + <method name="get_pos" qualifiers="const"> + <return type="int"> </return> <description> + Return the file cursor position. </description> </method> <method name="get_real" qualifiers="const"> <return type="float"> </return> <description> + Get the next bits from the file as a floating point number. </description> </method> - <method name="get_buffer" qualifiers="const"> - <return type="RawArray"> + <method name="get_sha256" qualifiers="const"> + <return type="String"> </return> - <argument index="0" name="len" type="int"> + <argument index="0" name="path" type="String"> </argument> <description> + Return a sha256 String representing the file at the given path or an empty [String] on failure. </description> </method> - <method name="get_line" qualifiers="const"> - <return type="String"> - </return> + <method name="get_var" qualifiers="const"> <description> + Get the next Variant value from the file. </description> </method> - <method name="get_as_text" qualifiers="const"> - <return type="String"> + <method name="is_open" qualifiers="const"> + <return type="bool"> </return> <description> + Return whether the file is currently opened. </description> </method> - <method name="get_md5" qualifiers="const"> - <return type="String"> + <method name="open"> + <return type="int"> </return> <argument index="0" name="path" type="String"> </argument> + <argument index="1" name="flags" type="int"> + </argument> <description> - Returns on success, a md5 String representing the file of the given path. - else, empty String "". + Open the file for writing or reading, depending on the flags. </description> </method> - <method name="get_endian_swap"> - <return type="bool"> + <method name="open_encrypted"> + <return type="int"> </return> - <description> - </description> - </method> - <method name="set_endian_swap"> - <argument index="0" name="enable" type="bool"> + <argument index="0" name="path" type="String"> + </argument> + <argument index="1" name="mode_flags" type="int"> + </argument> + <argument index="2" name="key" type="RawArray"> </argument> <description> + Open an encrypted file in write or read mode. You need to pass a binary key to encrypt/decrypt it. </description> </method> - <method name="get_error" qualifiers="const"> - <return type="Error"> + <method name="open_encrypted_with_pass"> + <return type="int"> </return> + <argument index="0" name="path" type="String"> + </argument> + <argument index="1" name="mode_flags" type="int"> + </argument> + <argument index="2" name="pass" type="String"> + </argument> <description> + Open an encrypted file in write or read mode. You need to pass a password to encrypt/decrypt it. </description> </method> - <method name="get_var" qualifiers="const"> + <method name="seek"> + <argument index="0" name="pos" type="int"> + </argument> <description> + Change the file reading/writing cursor to the specified position (in bytes from the beginning of the file). </description> </method> - <method name="get_csv_line" qualifiers="const"> - <return type="StringArray"> - </return> - <argument index="0" name="delim" type="String" default="",""> + <method name="seek_end"> + <argument index="0" name="pos" type="int" default="0"> </argument> <description> + Change the file reading/writing cursor to the specified position (in bytes from the end of the file). Note that this is an offset, so you should use negative numbers or the cursor will be at the end of the file. </description> </method> - <method name="store_8"> - <argument index="0" name="value" type="int"> + <method name="set_endian_swap"> + <argument index="0" name="enable" type="bool"> </argument> <description> + Set whether to swap the endianess of the file. Enable this if you're dealing with files written in big endian machines. + + Note that this is about the file format, not CPU type. This is always reseted to [code]false[/code] whenever you open the file. </description> </method> <method name="store_16"> <argument index="0" name="value" type="int"> </argument> <description> + Store an integer as 16 bits in the file. </description> </method> <method name="store_32"> <argument index="0" name="value" type="int"> </argument> <description> + Store an integer as 32 bits in the file. </description> </method> <method name="store_64"> <argument index="0" name="value" type="int"> </argument> <description> + Store an integer as 64 bits in the file. </description> </method> - <method name="store_float"> - <argument index="0" name="value" type="float"> + <method name="store_8"> + <argument index="0" name="value" type="int"> </argument> <description> + Store an integer as 8 bits in the file. </description> </method> - <method name="store_double"> - <argument index="0" name="value" type="float"> + <method name="store_buffer"> + <argument index="0" name="buffer" type="RawArray"> </argument> <description> + Store the given array of bytes in the file. </description> </method> - <method name="store_real"> + <method name="store_double"> <argument index="0" name="value" type="float"> </argument> <description> + Store a floating point number as 64 bits in the file. </description> </method> - <method name="store_buffer"> - <argument index="0" name="buffer" type="RawArray"> + <method name="store_float"> + <argument index="0" name="value" type="float"> </argument> <description> + Store a floating point number as 32 bits in the file. </description> </method> <method name="store_line"> <argument index="0" name="line" type="String"> </argument> <description> + Store the given [String] as a line in the file. </description> </method> - <method name="store_string"> + <method name="store_pascal_string"> <argument index="0" name="string" type="String"> </argument> <description> + Store the given [String] as a line in the file in Pascal format (i.e. also store the length of the string). </description> </method> - <method name="store_var"> - <argument index="0" name="value" type="Variant"> + <method name="store_real"> + <argument index="0" name="value" type="float"> </argument> <description> + Store a floating point number in the file. </description> </method> - <method name="store_pascal_string"> + <method name="store_string"> <argument index="0" name="string" type="String"> </argument> <description> + Store the given [String] in the file. </description> </method> - <method name="get_pascal_string"> - <return type="String"> - </return> - <description> - </description> - </method> - <method name="file_exists" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="path" type="String"> + <method name="store_var"> + <argument index="0" name="value" type="Variant"> </argument> <description> + Store any Variant value in the file. </description> </method> </methods> <constants> <constant name="READ" value="1"> - </constant> - <constant name="WRITE" value="2"> + Open the file for reading. </constant> <constant name="READ_WRITE" value="3"> + Open the file for reading and writing, without truncating the file. + </constant> + <constant name="WRITE" value="2"> + Open the file for writing. Create it if the file not exists and truncate if it exists. </constant> <constant name="WRITE_READ" value="7"> + Open the file for reading and writing. Create it if the file not exists and truncate if it exists. </constant> </constants> </class> @@ -12575,16 +12755,23 @@ This approximation makes straight segments between each point, then subdivides t FileDialog is a preset dialog used to choose files and directories in the filesystem. It supports filter masks. </description> <methods> + <method name="add_filter"> + <argument index="0" name="filter" type="String"> + </argument> + <description> + Add a custom filter. Filter format is: "mask ; description", example (C++): dialog->add_filter("*.png ; PNG Images"); + </description> + </method> <method name="clear_filters"> <description> Clear all the added filters in the dialog. </description> </method> - <method name="add_filter"> - <argument index="0" name="filter" type="String"> - </argument> + <method name="get_access" qualifiers="const"> + <return type="int"> + </return> <description> - Add a custom filter. Filter format is: "mask ; description", example (C++): dialog->add_filter("*.png ; PNG Images"); + Return the file access permission of the dialog. </description> </method> <method name="get_current_dir" qualifiers="const"> @@ -12608,34 +12795,6 @@ This approximation makes straight segments between each point, then subdivides t Get the current selected path (directory and file) of the file dialog (empty if none). </description> </method> - <method name="set_current_dir"> - <argument index="0" name="dir" type="String"> - </argument> - <description> - Set the current working directory of the file dialog. - </description> - </method> - <method name="set_current_file"> - <argument index="0" name="file" type="String"> - </argument> - <description> - Set the current selected file name of the file dialog. - </description> - </method> - <method name="set_current_path"> - <argument index="0" name="path" type="String"> - </argument> - <description> - Set the current selected file path of the file dialog. - </description> - </method> - <method name="set_mode"> - <argument index="0" name="mode" type="int"> - </argument> - <description> - Set the file dialog mode from the MODE_* enum. - </description> - </method> <method name="get_mode" qualifiers="const"> <return type="int"> </return> @@ -12650,6 +12809,18 @@ This approximation makes straight segments between each point, then subdivides t Return the vertical box container of the dialog, custom controls can be added to it. </description> </method> + <method name="invalidate"> + <description> + Invalidate and update the current dialog content list. + </description> + </method> + <method name="is_showing_hidden_files" qualifiers="const"> + <return type="bool"> + </return> + <description> + Return true if the diaog allows show hidden files. + </description> + </method> <method name="set_access"> <argument index="0" name="access" type="int"> </argument> @@ -12657,41 +12828,43 @@ This approximation makes straight segments between each point, then subdivides t Set the file access permission of the dialog(Must be one of [ACCESS_RESOURCES], [ACCESS_USERDATA] or [ACCESS_FILESYSTEM]). </description> </method> - <method name="get_access" qualifiers="const"> - <return type="int"> - </return> + <method name="set_current_dir"> + <argument index="0" name="dir" type="String"> + </argument> <description> - Return the file access permission of the dialog. + Set the current working directory of the file dialog. </description> </method> - <method name="set_show_hidden_files"> - <argument index="0" name="show" type="bool"> + <method name="set_current_file"> + <argument index="0" name="file" type="String"> </argument> <description> - Set the dialog should show hidden files. + Set the current selected file name of the file dialog. </description> </method> - <method name="is_showing_hidden_files" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_current_path"> + <argument index="0" name="path" type="String"> + </argument> <description> - Return true if the diaog allows show hidden files. + Set the current selected file path of the file dialog. </description> </method> - <method name="invalidate"> + <method name="set_mode"> + <argument index="0" name="mode" type="int"> + </argument> <description> - Invalidate and update the current dialog content list. + Set the file dialog mode from the MODE_* enum. </description> </method> - </methods> - <signals> - <signal name="files_selected"> - <argument index="0" name="paths" type="StringArray"> + <method name="set_show_hidden_files"> + <argument index="0" name="show" type="bool"> </argument> <description> - Event emitted when the user selects multiple files. + Set the dialog should show hidden files. </description> - </signal> + </method> + </methods> + <signals> <signal name="dir_selected"> <argument index="0" name="dir" type="String"> </argument> @@ -12706,8 +12879,24 @@ This approximation makes straight segments between each point, then subdivides t Event emitted when the user selects a file (double clicks it or presses the OK button). </description> </signal> + <signal name="files_selected"> + <argument index="0" name="paths" type="StringArray"> + </argument> + <description> + Event emitted when the user selects multiple files. + </description> + </signal> </signals> <constants> + <constant name="ACCESS_RESOURCES" value="0"> + The dialog allows the selection of file and directory. + </constant> + <constant name="ACCESS_USERDATA" value="1"> + The dialog allows ascess files under [Resource] path(res://) . + </constant> + <constant name="ACCESS_FILESYSTEM" value="2"> + The dialog allows ascess files in whole file system. + </constant> <constant name="MODE_OPEN_FILE" value="0"> The dialog allows the selection of one, and only one file. </constant> @@ -12723,15 +12912,6 @@ This approximation makes straight segments between each point, then subdivides t <constant name="MODE_SAVE_FILE" value="4"> The dialog will warn when a file exists. </constant> - <constant name="ACCESS_RESOURCES" value="0"> - The dialog allows the selection of file and directory. - </constant> - <constant name="ACCESS_USERDATA" value="1"> - The dialog allows ascess files under [Resource] path(res://) . - </constant> - <constant name="ACCESS_FILESYSTEM" value="2"> - The dialog allows ascess files in whole file system. - </constant> </constants> <theme_items> <theme_item name="files_disabled" type="Color"> @@ -12750,13 +12930,18 @@ This approximation makes straight segments between each point, then subdivides t FixedMaterial is a simple type of material [Resource], which contains a fixed amount of parameters. It is the only type of material supported in fixed-pipeline devices and APIs. It is also an often a better alternative to [ShaderMaterial] for most simple use cases. </description> <methods> - <method name="set_parameter"> - <argument index="0" name="param" type="int"> - </argument> - <argument index="1" name="value" type="Variant"> + <method name="get_fixed_flag" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="flag" type="int"> </argument> <description> - Set a parameter, parameters are defined in the PARAM_* enum. The type of each parameter may change, so it's best to check the enum. + </description> + </method> + <method name="get_light_shader" qualifiers="const"> + <return type="int"> + </return> + <description> </description> </method> <method name="get_parameter" qualifiers="const"> @@ -12766,40 +12951,35 @@ This approximation makes straight segments between each point, then subdivides t Return a parameter, parameters are defined in the PARAM_* enum. The type of each parameter may change, so it's best to check the enum. </description> </method> - <method name="set_texture"> - <argument index="0" name="param" type="int"> - </argument> - <argument index="1" name="texture" type="Texture"> - </argument> + <method name="get_point_size" qualifiers="const"> + <return type="float"> + </return> <description> - Set a texture. Textures change parameters per texel and are mapped to the model depending on the texcoord mode (see [method set_texcoord_mode]). </description> </method> - <method name="get_texture" qualifiers="const"> - <return type="Texture"> + <method name="get_texcoord_mode" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="param" type="int"> </argument> <description> - Return a texture. Textures change parameters per texel and are mapped to the model depending on the texcoord mode (see [method set_texcoord_mode]). + Return the texture coordinate mode. Each texture param (from the PARAM_* enum) has one. It defines how the textures are mapped to the object. </description> </method> - <method name="set_texcoord_mode"> + <method name="get_texture" qualifiers="const"> + <return type="Texture"> + </return> <argument index="0" name="param" type="int"> </argument> - <argument index="1" name="mode" type="int"> - </argument> <description> - Set the texture coordinate mode. Each texture param (from the PARAM_* enum) has one. It defines how the textures are mapped to the object. + Return a texture. Textures change parameters per texel and are mapped to the model depending on the texcoord mode (see [method set_texcoord_mode]). </description> </method> - <method name="get_texcoord_mode" qualifiers="const"> - <return type="int"> + <method name="get_uv_transform" qualifiers="const"> + <return type="Transform"> </return> - <argument index="0" name="param" type="int"> - </argument> <description> - Return the texture coordinate mode. Each texture param (from the PARAM_* enum) has one. It defines how the textures are mapped to the object. + Returns the special transform used to post-transform UV coordinates of the uv_xform texcoord mode: TEXCOORD_UV_TRANSFORM. </description> </method> <method name="set_fixed_flag"> @@ -12810,54 +12990,70 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="get_fixed_flag" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="flag" type="int"> + <method name="set_light_shader"> + <argument index="0" name="shader" type="int"> </argument> <description> </description> </method> - <method name="set_uv_transform"> - <argument index="0" name="transform" type="Transform"> + <method name="set_parameter"> + <argument index="0" name="param" type="int"> + </argument> + <argument index="1" name="value" type="Variant"> </argument> <description> - Sets a special transform used to post-transform UV coordinates of the uv_xform texcoord mode: TEXCOORD_UV_TRANSFORM. - </description> - </method> - <method name="get_uv_transform" qualifiers="const"> - <return type="Transform"> - </return> - <description> - Returns the special transform used to post-transform UV coordinates of the uv_xform texcoord mode: TEXCOORD_UV_TRANSFORM. + Set a parameter, parameters are defined in the PARAM_* enum. The type of each parameter may change, so it's best to check the enum. </description> </method> - <method name="set_light_shader"> - <argument index="0" name="shader" type="int"> + <method name="set_point_size"> + <argument index="0" name="size" type="float"> </argument> <description> </description> </method> - <method name="get_light_shader" qualifiers="const"> - <return type="int"> - </return> + <method name="set_texcoord_mode"> + <argument index="0" name="param" type="int"> + </argument> + <argument index="1" name="mode" type="int"> + </argument> <description> + Set the texture coordinate mode. Each texture param (from the PARAM_* enum) has one. It defines how the textures are mapped to the object. </description> </method> - <method name="set_point_size"> - <argument index="0" name="size" type="float"> + <method name="set_texture"> + <argument index="0" name="param" type="int"> + </argument> + <argument index="1" name="texture" type="Texture"> </argument> <description> + Set a texture. Textures change parameters per texel and are mapped to the model depending on the texcoord mode (see [method set_texcoord_mode]). </description> </method> - <method name="get_point_size" qualifiers="const"> - <return type="float"> - </return> + <method name="set_uv_transform"> + <argument index="0" name="transform" type="Transform"> + </argument> <description> + Sets a special transform used to post-transform UV coordinates of the uv_xform texcoord mode: TEXCOORD_UV_TRANSFORM. </description> </method> </methods> <constants> + <constant name="FLAG_USE_ALPHA" value="0"> + </constant> + <constant name="FLAG_USE_COLOR_ARRAY" value="1"> + </constant> + <constant name="FLAG_USE_POINT_SIZE" value="2"> + </constant> + <constant name="FLAG_DISCARD_ALPHA" value="3"> + </constant> + <constant name="LIGHT_SHADER_LAMBERT" value="0"> + </constant> + <constant name="LIGHT_SHADER_WRAP" value="1"> + </constant> + <constant name="LIGHT_SHADER_VELVET" value="2"> + </constant> + <constant name="LIGHT_SHADER_TOON" value="3"> + </constant> <constant name="PARAM_DIFFUSE" value="0"> Diffuse Lighting (light scattered from surface). </constant> @@ -12884,8 +13080,6 @@ This approximation makes straight segments between each point, then subdivides t <constant name="PARAM_MAX" value="8"> Maximum amount of parameters. </constant> - <constant name="TEXCOORD_SPHERE" value="3"> - </constant> <constant name="TEXCOORD_UV" value="0"> Read texture coordinates from the UV array. </constant> @@ -12895,21 +13089,7 @@ This approximation makes straight segments between each point, then subdivides t <constant name="TEXCOORD_UV2" value="2"> Read texture coordinates from the UV2 array. </constant> - <constant name="FLAG_USE_ALPHA" value="0"> - </constant> - <constant name="FLAG_USE_COLOR_ARRAY" value="1"> - </constant> - <constant name="FLAG_USE_POINT_SIZE" value="2"> - </constant> - <constant name="FLAG_DISCARD_ALPHA" value="3"> - </constant> - <constant name="LIGHT_SHADER_LAMBERT" value="0"> - </constant> - <constant name="LIGHT_SHADER_WRAP" value="1"> - </constant> - <constant name="LIGHT_SHADER_VELVET" value="2"> - </constant> - <constant name="LIGHT_SHADER_TOON" value="3"> + <constant name="TEXCOORD_SPHERE" value="3"> </constant> </constants> </class> @@ -12936,6 +13116,23 @@ This approximation makes straight segments between each point, then subdivides t Draw "string" into a canvas item using the font at a given "pos" position, with "modulate" color, and optionally clipping the width. "pos" specifies the baseline, not the top. To draw from the top, [i]ascent[/i] must be added to the Y axis. </description> </method> + <method name="draw_char" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="canvas_item" type="RID"> + </argument> + <argument index="1" name="pos" type="Vector2"> + </argument> + <argument index="2" name="char" type="int"> + </argument> + <argument index="3" name="next" type="int" default="-1"> + </argument> + <argument index="4" name="modulate" type="Color" default="Color(1,1,1,1)"> + </argument> + <description> + Draw character "char" into a canvas item using the font at a given "pos" position, with "modulate" color, and optionally kerning if "next" is passed. clipping the width. "pos" specifies the baseline, not the top. To draw from the top, [i]ascent[/i] must be added to the Y axis. The width used by the character is returned, making this function useful for drawing strings character by character. + </description> + </method> <method name="get_ascent" qualifiers="const"> <return type="float"> </return> @@ -12957,12 +13154,6 @@ This approximation makes straight segments between each point, then subdivides t Return the total font height (ascent plus descent) in pixels. </description> </method> - <method name="is_distance_field_hint" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> <method name="get_string_size" qualifiers="const"> <return type="Vector2"> </return> @@ -12972,21 +13163,10 @@ This approximation makes straight segments between each point, then subdivides t Return the size of a string, taking kerning and advance into account. </description> </method> - <method name="draw_char" qualifiers="const"> - <return type="float"> + <method name="is_distance_field_hint" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="canvas_item" type="RID"> - </argument> - <argument index="1" name="pos" type="Vector2"> - </argument> - <argument index="2" name="char" type="int"> - </argument> - <argument index="3" name="next" type="int" default="-1"> - </argument> - <argument index="4" name="modulate" type="Color" default="Color(1,1,1,1)"> - </argument> <description> - Draw character "char" into a canvas item using the font at a given "pos" position, with "modulate" color, and optionally kerning if "next" is passed. clipping the width. "pos" specifies the baseline, not the top. To draw from the top, [i]ascent[/i] must be added to the Y axis. The width used by the character is returned, making this function useful for drawing strings character by character. </description> </method> </methods> @@ -13023,14 +13203,14 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="set_instance"> - <argument index="0" name="instance" type="Object"> + <method name="set_function"> + <argument index="0" name="name" type="String"> </argument> <description> </description> </method> - <method name="set_function"> - <argument index="0" name="name" type="String"> + <method name="set_instance"> + <argument index="0" name="instance" type="Object"> </argument> <description> </description> @@ -13045,19 +13225,19 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> <methods> - <method name="resume"> - <return type="Variant"> + <method name="is_valid" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="arg" type="Variant" default="NULL"> - </argument> <description> + Should put children to the top left corner instead of center of the container. </description> </method> - <method name="is_valid" qualifiers="const"> - <return type="bool"> + <method name="resume"> + <return type="Variant"> </return> + <argument index="0" name="arg" type="Variant" default="NULL"> + </argument> <description> - Should put children to the top left corner instead of center of the container. </description> </method> </methods> @@ -13084,16 +13264,16 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> <methods> - <method name="new"> - <description> - </description> - </method> <method name="get_as_byte_code" qualifiers="const"> <return type="RawArray"> </return> <description> </description> </method> + <method name="new"> + <description> + </description> + </method> </methods> <constants> </constants> @@ -13104,31 +13284,31 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> <methods> - <method name="set_param_x"> - <argument index="0" name="param" type="int"> - </argument> - <argument index="1" name="value" type="float"> + <method name="get_flag_x" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="flag" type="int"> </argument> <description> </description> </method> - <method name="get_param_x" qualifiers="const"> - <return type="float"> + <method name="get_flag_y" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="param" type="int"> + <argument index="0" name="flag" type="int"> </argument> <description> </description> </method> - <method name="set_param_y"> - <argument index="0" name="param" type="int"> - </argument> - <argument index="1" name="value" type="float"> + <method name="get_flag_z" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="flag" type="int"> </argument> <description> </description> </method> - <method name="get_param_y" qualifiers="const"> + <method name="get_param_x" qualifiers="const"> <return type="float"> </return> <argument index="0" name="param" type="int"> @@ -13136,11 +13316,11 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="set_param_z"> + <method name="get_param_y" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="param" type="int"> </argument> - <argument index="1" name="value" type="float"> - </argument> <description> </description> </method> @@ -13160,15 +13340,15 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="get_flag_x" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_flag_y"> <argument index="0" name="flag" type="int"> </argument> + <argument index="1" name="value" type="bool"> + </argument> <description> </description> </method> - <method name="set_flag_y"> + <method name="set_flag_z"> <argument index="0" name="flag" type="int"> </argument> <argument index="1" name="value" type="bool"> @@ -13176,51 +13356,43 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="get_flag_y" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="flag" type="int"> + <method name="set_param_x"> + <argument index="0" name="param" type="int"> + </argument> + <argument index="1" name="value" type="float"> </argument> <description> </description> </method> - <method name="set_flag_z"> - <argument index="0" name="flag" type="int"> + <method name="set_param_y"> + <argument index="0" name="param" type="int"> </argument> - <argument index="1" name="value" type="bool"> + <argument index="1" name="value" type="float"> </argument> <description> </description> </method> - <method name="get_flag_z" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="flag" type="int"> + <method name="set_param_z"> + <argument index="0" name="param" type="int"> + </argument> + <argument index="1" name="value" type="float"> </argument> <description> </description> </method> </methods> <constants> - <constant name="PARAM_LINEAR_LOWER_LIMIT" value="0"> - </constant> - <constant name="PARAM_LINEAR_UPPER_LIMIT" value="1"> - </constant> - <constant name="PARAM_LINEAR_LIMIT_SOFTNESS" value="2"> - </constant> - <constant name="PARAM_LINEAR_RESTITUTION" value="3"> - </constant> - <constant name="PARAM_LINEAR_DAMPING" value="4"> + <constant name="FLAG_ENABLE_LINEAR_LIMIT" value="0"> </constant> - <constant name="PARAM_ANGULAR_LOWER_LIMIT" value="5"> + <constant name="FLAG_ENABLE_ANGULAR_LIMIT" value="1"> </constant> - <constant name="PARAM_ANGULAR_UPPER_LIMIT" value="6"> + <constant name="FLAG_ENABLE_MOTOR" value="2"> </constant> - <constant name="PARAM_ANGULAR_LIMIT_SOFTNESS" value="7"> + <constant name="FLAG_MAX" value="3"> </constant> - <constant name="PARAM_ANGULAR_DAMPING" value="8"> + <constant name="PARAM_LINEAR_LOWER_LIMIT" value="0"> </constant> - <constant name="PARAM_ANGULAR_RESTITUTION" value="9"> + <constant name="PARAM_LINEAR_UPPER_LIMIT" value="1"> </constant> <constant name="PARAM_ANGULAR_FORCE_LIMIT" value="10"> </constant> @@ -13232,13 +13404,21 @@ This approximation makes straight segments between each point, then subdivides t </constant> <constant name="PARAM_MAX" value="14"> </constant> - <constant name="FLAG_ENABLE_LINEAR_LIMIT" value="0"> + <constant name="PARAM_LINEAR_LIMIT_SOFTNESS" value="2"> </constant> - <constant name="FLAG_ENABLE_ANGULAR_LIMIT" value="1"> + <constant name="PARAM_LINEAR_RESTITUTION" value="3"> </constant> - <constant name="FLAG_ENABLE_MOTOR" value="2"> + <constant name="PARAM_LINEAR_DAMPING" value="4"> </constant> - <constant name="FLAG_MAX" value="3"> + <constant name="PARAM_ANGULAR_LOWER_LIMIT" value="5"> + </constant> + <constant name="PARAM_ANGULAR_UPPER_LIMIT" value="6"> + </constant> + <constant name="PARAM_ANGULAR_LIMIT_SOFTNESS" value="7"> + </constant> + <constant name="PARAM_ANGULAR_DAMPING" value="8"> + </constant> + <constant name="PARAM_ANGULAR_RESTITUTION" value="9"> </constant> </constants> </class> @@ -13256,7 +13436,7 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="build_cylinder_planes"> + <method name="build_capsule_planes"> <return type="Array"> </return> <argument index="0" name="radius" type="float"> @@ -13265,12 +13445,14 @@ This approximation makes straight segments between each point, then subdivides t </argument> <argument index="2" name="sides" type="int"> </argument> - <argument index="3" name="axis" type="int" default="2"> + <argument index="3" name="lats" type="int"> + </argument> + <argument index="4" name="axis" type="int" default="2"> </argument> <description> </description> </method> - <method name="build_capsule_planes"> + <method name="build_cylinder_planes"> <return type="Array"> </return> <argument index="0" name="radius" type="float"> @@ -13279,35 +13461,33 @@ This approximation makes straight segments between each point, then subdivides t </argument> <argument index="2" name="sides" type="int"> </argument> - <argument index="3" name="lats" type="int"> - </argument> - <argument index="4" name="axis" type="int" default="2"> + <argument index="3" name="axis" type="int" default="2"> </argument> <description> </description> </method> - <method name="segment_intersects_circle"> - <return type="float"> + <method name="get_closest_point_to_segment"> + <return type="Vector3"> </return> - <argument index="0" name="segment_from" type="Vector2"> - </argument> - <argument index="1" name="segment_to" type="Vector2"> + <argument index="0" name="point" type="Vector3"> </argument> - <argument index="2" name="circle_pos" type="Vector2"> + <argument index="1" name="s1" type="Vector3"> </argument> - <argument index="3" name="circle_radius" type="float"> + <argument index="2" name="s2" type="Vector3"> </argument> <description> </description> </method> - <method name="segment_intersects_segment_2d"> - <argument index="0" name="from_a" type="Vector2"> + <method name="get_closest_points_between_segments"> + <return type="Vector3Array"> + </return> + <argument index="0" name="p1" type="Vector3"> </argument> - <argument index="1" name="to_a" type="Vector2"> + <argument index="1" name="p2" type="Vector3"> </argument> - <argument index="2" name="from_b" type="Vector2"> + <argument index="2" name="q1" type="Vector3"> </argument> - <argument index="3" name="to_b" type="Vector2"> + <argument index="3" name="q2" type="Vector3"> </argument> <description> </description> @@ -13326,36 +13506,32 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="get_closest_points_between_segments"> - <return type="Vector3Array"> + <method name="get_uv84_normal_bit"> + <return type="int"> </return> - <argument index="0" name="p1" type="Vector3"> - </argument> - <argument index="1" name="p2" type="Vector3"> - </argument> - <argument index="2" name="q1" type="Vector3"> - </argument> - <argument index="3" name="q2" type="Vector3"> + <argument index="0" name="normal" type="Vector3"> </argument> <description> </description> </method> - <method name="get_closest_point_to_segment"> - <return type="Vector3"> + <method name="make_atlas"> + <return type="Dictionary"> </return> - <argument index="0" name="point" type="Vector3"> - </argument> - <argument index="1" name="s1" type="Vector3"> - </argument> - <argument index="2" name="s2" type="Vector3"> + <argument index="0" name="sizes" type="Vector2Array"> </argument> <description> </description> </method> - <method name="get_uv84_normal_bit"> - <return type="int"> + <method name="point_is_inside_triangle" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="normal" type="Vector3"> + <argument index="0" name="point" type="Vector2"> + </argument> + <argument index="1" name="a" type="Vector2"> + </argument> + <argument index="2" name="b" type="Vector2"> + </argument> + <argument index="3" name="c" type="Vector2"> </argument> <description> </description> @@ -13374,30 +13550,28 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="segment_intersects_triangle"> - <argument index="0" name="from" type="Vector3"> - </argument> - <argument index="1" name="to" type="Vector3"> + <method name="segment_intersects_circle"> + <return type="float"> + </return> + <argument index="0" name="segment_from" type="Vector2"> </argument> - <argument index="2" name="a" type="Vector3"> + <argument index="1" name="segment_to" type="Vector2"> </argument> - <argument index="3" name="b" type="Vector3"> + <argument index="2" name="circle_pos" type="Vector2"> </argument> - <argument index="4" name="c" type="Vector3"> + <argument index="3" name="circle_radius" type="float"> </argument> <description> </description> </method> - <method name="segment_intersects_sphere"> + <method name="segment_intersects_convex"> <return type="Vector3Array"> </return> <argument index="0" name="from" type="Vector3"> </argument> <argument index="1" name="to" type="Vector3"> </argument> - <argument index="2" name="spos" type="Vector3"> - </argument> - <argument index="3" name="sradius" type="float"> + <argument index="2" name="planes" type="Array"> </argument> <description> </description> @@ -13416,28 +13590,42 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="segment_intersects_convex"> + <method name="segment_intersects_segment_2d"> + <argument index="0" name="from_a" type="Vector2"> + </argument> + <argument index="1" name="to_a" type="Vector2"> + </argument> + <argument index="2" name="from_b" type="Vector2"> + </argument> + <argument index="3" name="to_b" type="Vector2"> + </argument> + <description> + </description> + </method> + <method name="segment_intersects_sphere"> <return type="Vector3Array"> </return> <argument index="0" name="from" type="Vector3"> </argument> <argument index="1" name="to" type="Vector3"> </argument> - <argument index="2" name="planes" type="Array"> + <argument index="2" name="spos" type="Vector3"> + </argument> + <argument index="3" name="sradius" type="float"> </argument> <description> </description> </method> - <method name="point_is_inside_triangle" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="point" type="Vector2"> + <method name="segment_intersects_triangle"> + <argument index="0" name="from" type="Vector3"> </argument> - <argument index="1" name="a" type="Vector2"> + <argument index="1" name="to" type="Vector3"> </argument> - <argument index="2" name="b" type="Vector2"> + <argument index="2" name="a" type="Vector3"> </argument> - <argument index="3" name="c" type="Vector2"> + <argument index="3" name="b" type="Vector3"> + </argument> + <argument index="4" name="c" type="Vector3"> </argument> <description> </description> @@ -13450,14 +13638,6 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="make_atlas"> - <return type="Dictionary"> - </return> - <argument index="0" name="sizes" type="Vector2Array"> - </argument> - <description> - </description> - </method> </methods> <constants> </constants> @@ -13470,81 +13650,72 @@ This approximation makes straight segments between each point, then subdivides t Base node for geometry based visual instances. Shares some common functionality like visibility and custom materials. </description> <methods> - <method name="set_material_override"> - <argument index="0" name="material" type="Object"> - </argument> - <description> - Set the material override for the whole geometry. - </description> - </method> - <method name="get_material_override" qualifiers="const"> - <return type="Object"> + <method name="get_baked_light_texture_id" qualifiers="const"> + <return type="int"> </return> <description> - Return the material override for the whole geometry. </description> </method> - <method name="set_flag"> - <argument index="0" name="flag" type="int"> - </argument> - <argument index="1" name="value" type="bool"> - </argument> + <method name="get_cast_shadows_setting" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_flag" qualifiers="const"> - <return type="bool"> + <method name="get_draw_range_begin" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="flag" type="int"> - </argument> <description> </description> </method> - <method name="set_cast_shadows_setting"> - <argument index="0" name="shadow_casting_setting" type="int"> - </argument> + <method name="get_draw_range_end" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_cast_shadows_setting" qualifiers="const"> - <return type="int"> + <method name="get_extra_cull_margin" qualifiers="const"> + <return type="float"> </return> <description> </description> </method> - <method name="set_draw_range_begin"> - <argument index="0" name="mode" type="float"> + <method name="get_flag" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="flag" type="int"> </argument> <description> </description> </method> - <method name="get_draw_range_begin" qualifiers="const"> - <return type="float"> + <method name="get_material_override" qualifiers="const"> + <return type="Object"> </return> <description> + Return the material override for the whole geometry. </description> </method> - <method name="set_draw_range_end"> - <argument index="0" name="mode" type="float"> + <method name="set_baked_light_texture_id"> + <argument index="0" name="id" type="int"> </argument> <description> </description> </method> - <method name="get_draw_range_end" qualifiers="const"> - <return type="float"> - </return> + <method name="set_cast_shadows_setting"> + <argument index="0" name="shadow_casting_setting" type="int"> + </argument> <description> </description> </method> - <method name="set_baked_light_texture_id"> - <argument index="0" name="id" type="int"> + <method name="set_draw_range_begin"> + <argument index="0" name="mode" type="float"> </argument> <description> </description> </method> - <method name="get_baked_light_texture_id" qualifiers="const"> - <return type="int"> - </return> + <method name="set_draw_range_end"> + <argument index="0" name="mode" type="float"> + </argument> <description> </description> </method> @@ -13554,24 +13725,33 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="get_extra_cull_margin" qualifiers="const"> - <return type="float"> - </return> + <method name="set_flag"> + <argument index="0" name="flag" type="int"> + </argument> + <argument index="1" name="value" type="bool"> + </argument> + <description> + </description> + </method> + <method name="set_material_override"> + <argument index="0" name="material" type="Object"> + </argument> <description> + Set the material override for the whole geometry. </description> </method> </methods> <constants> <constant name="FLAG_VISIBLE" value="0"> </constant> - <constant name="FLAG_CAST_SHADOW" value="3"> - </constant> - <constant name="FLAG_RECEIVE_SHADOWS" value="4"> - </constant> <constant name="FLAG_BILLBOARD" value="1"> </constant> <constant name="FLAG_BILLBOARD_FIX_Y" value="2"> </constant> + <constant name="FLAG_CAST_SHADOW" value="3"> + </constant> + <constant name="FLAG_RECEIVE_SHADOWS" value="4"> + </constant> <constant name="FLAG_DEPH_SCALE" value="5"> </constant> <constant name="FLAG_VISIBLE_IN_ALL_ROOMS" value="6"> @@ -13596,74 +13776,80 @@ This approximation makes straight segments between each point, then subdivides t Contains global variables accessible from everywhere. Use the normal [Object] API, such as "Globals.get(variable)", "Globals.set(variable,value)" or "Globals.has(variable)" to access them. Variables stored in engine.cfg are also loaded into globals, making this object very useful for reading custom game configuration options. </description> <methods> - <method name="has" qualifiers="const"> - <return type="bool"> - </return> + <method name="clear"> <argument index="0" name="name" type="String"> </argument> <description> - Return true if a configuration value is present. + Clear the whole configuration (not recommended, may break things). </description> </method> - <method name="set_order"> + <method name="get_order" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="pos" type="int"> - </argument> <description> - Set the order of a configuration value (influences when saved to the config file). + Return the order of a configuration value (influences when saved to the config file). </description> </method> - <method name="get_order" qualifiers="const"> - <return type="int"> + <method name="get_singleton" qualifiers="const"> + <return type="Object"> </return> <argument index="0" name="name" type="String"> </argument> <description> - Return the order of a configuration value (influences when saved to the config file). </description> </method> - <method name="set_persisting"> - <argument index="0" name="name" type="String"> + <method name="globalize_path" qualifiers="const"> + <return type="String"> + </return> + <argument index="0" name="path" type="String"> </argument> - <argument index="1" name="enable" type="bool"> + <description> + Convert a localized path (res://) to a full native OS path. + </description> + </method> + <method name="has" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="name" type="String"> </argument> <description> - If set to true, this value can be saved to the configuration file. This is useful for editors. + Return true if a configuration value is present. </description> </method> - <method name="is_persisting" qualifiers="const"> + <method name="has_singleton" qualifiers="const"> <return type="bool"> </return> <argument index="0" name="name" type="String"> </argument> <description> - If returns true, this value can be saved to the configuration file. This is useful for editors. </description> </method> - <method name="clear"> + <method name="is_persisting" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="name" type="String"> </argument> <description> - Clear the whole configuration (not recommended, may break things). + If returns true, this value can be saved to the configuration file. This is useful for editors. </description> </method> - <method name="localize_path" qualifiers="const"> - <return type="String"> + <method name="load_resource_pack"> + <return type="bool"> </return> - <argument index="0" name="path" type="String"> + <argument index="0" name="pack" type="String"> </argument> <description> - Convert a path to a localized path (res:// path). </description> </method> - <method name="globalize_path" qualifiers="const"> + <method name="localize_path" qualifiers="const"> <return type="String"> </return> <argument index="0" name="path" type="String"> </argument> <description> - Convert a localized path (res://) to a full native OS path. + Convert a path to a localized path (res:// path). </description> </method> <method name="save"> @@ -13672,36 +13858,30 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="has_singleton" qualifiers="const"> - <return type="bool"> + <method name="save_custom"> + <return type="int"> </return> - <argument index="0" name="name" type="String"> + <argument index="0" name="file" type="String"> </argument> <description> </description> </method> - <method name="get_singleton" qualifiers="const"> - <return type="Object"> - </return> + <method name="set_order"> <argument index="0" name="name" type="String"> </argument> - <description> - </description> - </method> - <method name="load_resource_pack"> - <return type="bool"> - </return> - <argument index="0" name="pack" type="String"> + <argument index="1" name="pos" type="int"> </argument> <description> + Set the order of a configuration value (influences when saved to the config file). </description> </method> - <method name="save_custom"> - <return type="int"> - </return> - <argument index="0" name="file" type="String"> + <method name="set_persisting"> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="enable" type="bool"> </argument> <description> + If set to true, this value can be saved to the configuration file. This is useful for editors. </description> </method> </methods> @@ -13732,21 +13912,6 @@ This approximation makes straight segments between each point, then subdivides t Create a connection between 'from_port' slot of 'from' GraphNode and 'to_port' slot of 'to' GraphNode. If the connection already exists, no connection is created. </description> </method> - <method name="is_node_connected"> - <return type="bool"> - </return> - <argument index="0" name="from" type="String"> - </argument> - <argument index="1" name="from_port" type="int"> - </argument> - <argument index="2" name="to" type="String"> - </argument> - <argument index="3" name="to_port" type="int"> - </argument> - <description> - Return true if the 'from_port' slot of 'from' GraphNode is connected to the 'to_port' slot of 'to' GraphNode. - </description> - </method> <method name="disconnect_node"> <argument index="0" name="from" type="String"> </argument> @@ -13774,13 +13939,6 @@ This approximation makes straight segments between each point, then subdivides t Return the scroll offset. </description> </method> - <method name="set_zoom"> - <argument index="0" name="p_zoom" type="float"> - </argument> - <description> - Set the zoom value of the GraphEdit. Zoom value is between [0.01; 1.728]. - </description> - </method> <method name="get_zoom" qualifiers="const"> <return type="float"> </return> @@ -13788,11 +13946,19 @@ This approximation makes straight segments between each point, then subdivides t Return the current zoom value. </description> </method> - <method name="set_right_disconnects"> - <argument index="0" name="enable" type="bool"> + <method name="is_node_connected"> + <return type="bool"> + </return> + <argument index="0" name="from" type="String"> + </argument> + <argument index="1" name="from_port" type="int"> + </argument> + <argument index="2" name="to" type="String"> + </argument> + <argument index="3" name="to_port" type="int"> </argument> <description> - Enable the disconnection of existing connections in the visual GraphEdit by left-clicking a connection and releasing into the void. + Return true if the 'from_port' slot of 'from' GraphNode is connected to the 'to_port' slot of 'to' GraphNode. </description> </method> <method name="is_right_disconnects_enabled" qualifiers="const"> @@ -13802,31 +13968,33 @@ This approximation makes straight segments between each point, then subdivides t Return true is the disconnection of connections is enable in the visual GraphEdit. False otherwise. </description> </method> - </methods> - <signals> - <signal name="delete_nodes_request"> - <description> - Signal sent when a GraphNode is attempted to be removed from the GraphEdit. - </description> - </signal> - <signal name="duplicate_nodes_request"> + <method name="set_right_disconnects"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Signal sent when a GraphNode is attempted to be duplicated in the GraphEdit. + Enable the disconnection of existing connections in the visual GraphEdit by left-clicking a connection and releasing into the void. </description> - </signal> - <signal name="popup_request"> - <argument index="0" name="p_position" type="Vector2"> + </method> + <method name="set_zoom"> + <argument index="0" name="p_zoom" type="float"> </argument> <description> - Signal sent when a popup is requested. Happens on right-clicking in the GraphEdit. 'p_position' is the position of the mouse pointer when the signal is sent. + Set the zoom value of the GraphEdit. Zoom value is between [0.01; 1.728]. </description> - </signal> + </method> + </methods> + <signals> <signal name="_begin_node_move"> <description> Signal sent at the beginning of a GraphNode movement. </description> </signal> - <signal name="disconnection_request"> + <signal name="_end_node_move"> + <description> + Signal sent at the end of a GraphNode movement. + </description> + </signal> + <signal name="connection_request"> <argument index="0" name="from" type="String"> </argument> <argument index="1" name="from_slot" type="int"> @@ -13836,10 +14004,15 @@ This approximation makes straight segments between each point, then subdivides t <argument index="3" name="to_slot" type="int"> </argument> <description> - Signal sent to the GraphEdit when the connection between 'from_slot' slot of 'from' GraphNode and 'to_slot' slot of 'to' GraphNode is attempted to be removed. + Signal sent to the GraphEdit when the connection between 'from_slot' slot of 'from' GraphNode and 'to_slot' slot of 'to' GraphNode is attempted to be created. </description> </signal> - <signal name="connection_request"> + <signal name="delete_nodes_request"> + <description> + Signal sent when a GraphNode is attempted to be removed from the GraphEdit. + </description> + </signal> + <signal name="disconnection_request"> <argument index="0" name="from" type="String"> </argument> <argument index="1" name="from_slot" type="int"> @@ -13849,25 +14022,32 @@ This approximation makes straight segments between each point, then subdivides t <argument index="3" name="to_slot" type="int"> </argument> <description> - Signal sent to the GraphEdit when the connection between 'from_slot' slot of 'from' GraphNode and 'to_slot' slot of 'to' GraphNode is attempted to be created. + Signal sent to the GraphEdit when the connection between 'from_slot' slot of 'from' GraphNode and 'to_slot' slot of 'to' GraphNode is attempted to be removed. </description> </signal> - <signal name="_end_node_move"> + <signal name="duplicate_nodes_request"> <description> - Signal sent at the end of a GraphNode movement. + Signal sent when a GraphNode is attempted to be duplicated in the GraphEdit. + </description> + </signal> + <signal name="popup_request"> + <argument index="0" name="p_position" type="Vector2"> + </argument> + <description> + Signal sent when a popup is requested. Happens on right-clicking in the GraphEdit. 'p_position' is the position of the mouse pointer when the signal is sent. </description> </signal> </signals> <constants> </constants> <theme_items> - <theme_item name="more" type="Texture"> - </theme_item> - <theme_item name="reset" type="Texture"> + <theme_item name="bg" type="StyleBox"> </theme_item> <theme_item name="minus" type="Texture"> </theme_item> - <theme_item name="bg" type="StyleBox"> + <theme_item name="more" type="Texture"> + </theme_item> + <theme_item name="reset" type="Texture"> </theme_item> </theme_items> </class> @@ -13879,110 +14059,84 @@ This approximation makes straight segments between each point, then subdivides t A GraphNode is a container defined by a title. It can have 1 or more input and output slots, which can be enabled (shown) or disabled (not shown) and have different (incompatible) types. Colors can also be assigned to slots. A tuple of input and output slots is defined for each GUI element included in the GraphNode. Input and output connections are left and right slots, but only enabled slots are counted as connections. </description> <methods> - <method name="set_title"> - <argument index="0" name="title" type="String"> - </argument> - <description> - Set the title of the GraphNode. - </description> - </method> - <method name="get_title" qualifiers="const"> - <return type="String"> - </return> + <method name="clear_all_slots"> <description> - Return the title of the GraphNode. + Disable all input and output slots of the GraphNode. </description> </method> - <method name="set_slot"> + <method name="clear_slot"> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="enable_left" type="bool"> - </argument> - <argument index="2" name="type_left" type="int"> - </argument> - <argument index="3" name="color_left" type="Color"> - </argument> - <argument index="4" name="enable_right" type="bool"> - </argument> - <argument index="5" name="type_right" type="int"> - </argument> - <argument index="6" name="color_right" type="Color"> - </argument> <description> - Set the tuple of input/output slots defined by 'idx' ID. 'left' slots are input, 'right' are output. 'type' is an integer defining the type of the slot. Refer to description for the compatibility between slot types. + Disable input and output slot whose index is 'idx'. </description> </method> - <method name="clear_slot"> + <method name="get_connection_input_color"> + <return type="Color"> + </return> <argument index="0" name="idx" type="int"> </argument> <description> - Disable input and output slot whose index is 'idx'. + Return the color of the input connection 'idx'. </description> </method> - <method name="clear_all_slots"> + <method name="get_connection_input_count"> + <return type="int"> + </return> <description> - Disable all input and output slots of the GraphNode. + Return the number of enabled input slots (connections) to the GraphNode. </description> </method> - <method name="is_slot_enabled_left" qualifiers="const"> - <return type="bool"> + <method name="get_connection_input_pos"> + <return type="Vector2"> </return> <argument index="0" name="idx" type="int"> </argument> <description> - Return true if left (input) slot 'idx' is enabled. False otherwise. + Return the position of the input connection 'idx'. </description> </method> - <method name="get_slot_type_left" qualifiers="const"> + <method name="get_connection_input_type"> <return type="int"> </return> <argument index="0" name="idx" type="int"> </argument> <description> - Return the (integer) type of left (input) 'idx' slot. + Return the type of the input connection 'idx'. </description> </method> - <method name="get_slot_color_left" qualifiers="const"> + <method name="get_connection_output_color"> <return type="Color"> </return> <argument index="0" name="idx" type="int"> </argument> <description> - Return the color set to 'idx' left (input) slot. + Return the color of the output connection 'idx'. </description> </method> - <method name="is_slot_enabled_right" qualifiers="const"> - <return type="bool"> + <method name="get_connection_output_count"> + <return type="int"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> - Return true if right (output) slot 'idx' is enabled. False otherwise. + Return the number of enabled output slots (connections) of the GraphNode. </description> </method> - <method name="get_slot_type_right" qualifiers="const"> - <return type="int"> + <method name="get_connection_output_pos"> + <return type="Vector2"> </return> <argument index="0" name="idx" type="int"> </argument> <description> - Return the (integer) type of right (output) 'idx' slot. + Return the position of the output connection 'idx'. </description> </method> - <method name="get_slot_color_right" qualifiers="const"> - <return type="Color"> + <method name="get_connection_output_type"> + <return type="int"> </return> <argument index="0" name="idx" type="int"> </argument> <description> - Return the color set to 'idx' right (output) slot. - </description> - </method> - <method name="set_offset"> - <argument index="0" name="offset" type="Vector2"> - </argument> - <description> - Set the offset of the GraphNode. + Return the type of the output connection 'idx'. </description> </method> <method name="get_offset" qualifiers="const"> @@ -13992,72 +14146,79 @@ This approximation makes straight segments between each point, then subdivides t Return the offset of the GraphNode. </description> </method> - <method name="get_connection_output_count"> - <return type="int"> + <method name="get_slot_color_left" qualifiers="const"> + <return type="Color"> </return> + <argument index="0" name="idx" type="int"> + </argument> <description> - Return the number of enabled output slots (connections) of the GraphNode. + Return the color set to 'idx' left (input) slot. </description> </method> - <method name="get_connection_input_count"> - <return type="int"> + <method name="get_slot_color_right" qualifiers="const"> + <return type="Color"> </return> + <argument index="0" name="idx" type="int"> + </argument> <description> - Return the number of enabled input slots (connections) to the GraphNode. + Return the color set to 'idx' right (output) slot. </description> </method> - <method name="get_connection_output_pos"> - <return type="Vector2"> + <method name="get_slot_type_left" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="idx" type="int"> </argument> <description> - Return the position of the output connection 'idx'. + Return the (integer) type of left (input) 'idx' slot. </description> </method> - <method name="get_connection_output_type"> + <method name="get_slot_type_right" qualifiers="const"> <return type="int"> </return> <argument index="0" name="idx" type="int"> </argument> <description> - Return the type of the output connection 'idx'. + Return the (integer) type of right (output) 'idx' slot. </description> </method> - <method name="get_connection_output_color"> - <return type="Color"> + <method name="get_title" qualifiers="const"> + <return type="String"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> - Return the color of the output connection 'idx'. + Return the title of the GraphNode. </description> </method> - <method name="get_connection_input_pos"> - <return type="Vector2"> + <method name="is_close_button_visible" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> - Return the position of the input connection 'idx'. + Returns true if the close button is shown. False otherwise. </description> </method> - <method name="get_connection_input_type"> - <return type="int"> + <method name="is_slot_enabled_left" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="idx" type="int"> </argument> <description> - Return the type of the input connection 'idx'. + Return true if left (input) slot 'idx' is enabled. False otherwise. </description> </method> - <method name="get_connection_input_color"> - <return type="Color"> + <method name="is_slot_enabled_right" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="idx" type="int"> </argument> <description> - Return the color of the input connection 'idx'. + Return true if right (output) slot 'idx' is enabled. False otherwise. + </description> + </method> + <method name="set_offset"> + <argument index="0" name="offset" type="Vector2"> + </argument> + <description> + Set the offset of the GraphNode. </description> </method> <method name="set_show_close_button"> @@ -14067,20 +14228,34 @@ This approximation makes straight segments between each point, then subdivides t Show the close button on the GraphNode if 'show' is true (disabled by default). If enabled, a connection on the signal close_request is needed for the close button to work. </description> </method> - <method name="is_close_button_visible" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_slot"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="enable_left" type="bool"> + </argument> + <argument index="2" name="type_left" type="int"> + </argument> + <argument index="3" name="color_left" type="Color"> + </argument> + <argument index="4" name="enable_right" type="bool"> + </argument> + <argument index="5" name="type_right" type="int"> + </argument> + <argument index="6" name="color_right" type="Color"> + </argument> <description> - Returns true if the close button is shown. False otherwise. + Set the tuple of input/output slots defined by 'idx' ID. 'left' slots are input, 'right' are output. 'type' is an integer defining the type of the slot. Refer to description for the compatibility between slot types. </description> </method> - </methods> - <signals> - <signal name="raise_request"> + <method name="set_title"> + <argument index="0" name="title" type="String"> + </argument> <description> - Signal sent when the GraphNode is requested to be displayed over other ones. Happens on focusing (clicking into) the GraphNode. + Set the title of the GraphNode. </description> - </signal> + </method> + </methods> + <signals> <signal name="close_request"> <description> Signal sent on closing the GraphNode. @@ -14100,33 +14275,38 @@ This approximation makes straight segments between each point, then subdivides t Signal sent when the GraphNode is moved. </description> </signal> + <signal name="raise_request"> + <description> + Signal sent when the GraphNode is requested to be displayed over other ones. Happens on focusing (clicking into) the GraphNode. + </description> + </signal> </signals> <constants> </constants> <theme_items> - <theme_item name="port_offset" type="int"> + <theme_item name="close" type="Texture"> </theme_item> <theme_item name="close_offset" type="int"> </theme_item> - <theme_item name="separation" type="int"> + <theme_item name="defaultfocus" type="StyleBox"> </theme_item> - <theme_item name="title_offset" type="int"> + <theme_item name="defaultframe" type="StyleBox"> </theme_item> - <theme_item name="title_color" type="Color"> + <theme_item name="frame" type="StyleBox"> </theme_item> <theme_item name="port" type="Texture"> </theme_item> - <theme_item name="close" type="Texture"> + <theme_item name="port_offset" type="int"> </theme_item> - <theme_item name="title_font" type="Font"> + <theme_item name="selectedframe" type="StyleBox"> </theme_item> - <theme_item name="frame" type="StyleBox"> + <theme_item name="separation" type="int"> </theme_item> - <theme_item name="selectedframe" type="StyleBox"> + <theme_item name="title_color" type="Color"> </theme_item> - <theme_item name="defaultfocus" type="StyleBox"> + <theme_item name="title_font" type="Font"> </theme_item> - <theme_item name="defaultframe" type="StyleBox"> + <theme_item name="title_offset" type="int"> </theme_item> </theme_items> </class> @@ -14138,13 +14318,6 @@ This approximation makes straight segments between each point, then subdivides t Grid container will arrange its children in a grid like structure, the grid columns are specified using the [method set_columns] method and the number of rows will be equal to the number of children in the container divided by the number of columns, for example: if the container has 5 children, and 2 columns, there will be 3 rows in the container. Notice that grid layout will preserve the columns and rows for every size of the container. </description> <methods> - <method name="set_columns"> - <argument index="0" name="columns" type="int"> - </argument> - <description> - Sets the numbers of columns in the container, then reorder its children to accommodate the new layout - </description> - </method> <method name="get_columns" qualifiers="const"> <return type="int"> </return> @@ -14152,14 +14325,21 @@ This approximation makes straight segments between each point, then subdivides t Returns the number of columns in this container </description> </method> + <method name="set_columns"> + <argument index="0" name="columns" type="int"> + </argument> + <description> + Sets the numbers of columns in the container, then reorder its children to accommodate the new layout + </description> + </method> </methods> <constants> </constants> <theme_items> - <theme_item name="vseparation" type="int"> - </theme_item> <theme_item name="hseparation" type="int"> </theme_item> + <theme_item name="vseparation" type="int"> + </theme_item> </theme_items> </class> <class name="GridMap" inherits="Spatial" category="Core"> @@ -14168,64 +14348,98 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> <methods> - <method name="set_theme"> - <argument index="0" name="theme" type="MeshLibrary"> + <method name="area_get_bounds" qualifiers="const"> + <return type="AABB"> + </return> + <argument index="0" name="area" type="int"> </argument> <description> </description> </method> - <method name="get_theme" qualifiers="const"> - <return type="MeshLibrary"> + <method name="area_get_name" qualifiers="const"> + <return type="String"> </return> + <argument index="0" name="area" type="int"> + </argument> <description> </description> </method> - <method name="set_bake"> - <argument index="0" name="enable" type="bool"> + <method name="area_get_portal_disable_color" qualifiers="const"> + <return type="Color"> + </return> + <argument index="0" name="area" type="int"> </argument> <description> </description> </method> - <method name="is_baking_enabled" qualifiers="const"> - <return type="bool"> + <method name="area_get_portal_disable_distance" qualifiers="const"> + <return type="float"> </return> + <argument index="0" name="area" type="int"> + </argument> <description> </description> </method> - <method name="set_cell_size"> - <argument index="0" name="size" type="float"> + <method name="area_is_exterior_portal" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="area" type="int"> </argument> <description> </description> </method> - <method name="get_cell_size" qualifiers="const"> - <return type="float"> - </return> + <method name="area_set_exterior_portal"> + <argument index="0" name="area" type="int"> + </argument> + <argument index="1" name="enable" type="bool"> + </argument> <description> </description> </method> - <method name="set_octant_size"> - <argument index="0" name="size" type="int"> + <method name="area_set_name"> + <argument index="0" name="area" type="int"> + </argument> + <argument index="1" name="name" type="String"> </argument> <description> </description> </method> - <method name="get_octant_size" qualifiers="const"> - <return type="int"> - </return> + <method name="area_set_portal_disable_color"> + <argument index="0" name="area" type="int"> + </argument> + <argument index="1" name="color" type="Color"> + </argument> <description> </description> </method> - <method name="set_cell_item"> - <argument index="0" name="x" type="int"> + <method name="area_set_portal_disable_distance"> + <argument index="0" name="area" type="int"> </argument> - <argument index="1" name="y" type="int"> + <argument index="1" name="distance" type="float"> </argument> - <argument index="2" name="z" type="int"> + <description> + </description> + </method> + <method name="bake_geometry"> + <description> + </description> + </method> + <method name="clear"> + <description> + </description> + </method> + <method name="create_area"> + <return type="int"> + </return> + <argument index="0" name="id" type="int"> </argument> - <argument index="3" name="item" type="int"> + <argument index="1" name="area" type="AABB"> </argument> - <argument index="4" name="orientation" type="int" default="0"> + <description> + </description> + </method> + <method name="erase_area"> + <argument index="0" name="area" type="int"> </argument> <description> </description> @@ -14254,15 +14468,9 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="resource_changed"> - <argument index="0" name="resource" type="Object"> - </argument> - <description> - </description> - </method> - <method name="set_center_x"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_cell_size" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> @@ -14272,137 +14480,119 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="set_center_y"> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - </description> - </method> <method name="get_center_y" qualifiers="const"> <return type="bool"> </return> <description> </description> </method> - <method name="set_center_z"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_center_z" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="get_center_z" qualifiers="const"> - <return type="bool"> + <method name="get_octant_size" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="set_clip"> - <argument index="0" name="enabled" type="bool"> - </argument> - <argument index="1" name="clipabove" type="bool" default="true"> - </argument> - <argument index="2" name="floor" type="int" default="0"> - </argument> - <argument index="3" name="axis" type="int" default="0"> - </argument> + <method name="get_theme" qualifiers="const"> + <return type="MeshLibrary"> + </return> <description> </description> </method> - <method name="create_area"> + <method name="get_unused_area_id" qualifiers="const"> <return type="int"> </return> - <argument index="0" name="id" type="int"> - </argument> - <argument index="1" name="area" type="AABB"> - </argument> <description> </description> </method> - <method name="area_get_bounds" qualifiers="const"> - <return type="AABB"> + <method name="is_baking_enabled" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="area" type="int"> - </argument> <description> </description> </method> - <method name="area_set_exterior_portal"> - <argument index="0" name="area" type="int"> - </argument> - <argument index="1" name="enable" type="bool"> - </argument> + <method name="is_using_baked_light" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="area_set_name"> - <argument index="0" name="area" type="int"> - </argument> - <argument index="1" name="name" type="String"> + <method name="resource_changed"> + <argument index="0" name="resource" type="Object"> </argument> <description> </description> </method> - <method name="area_get_name" qualifiers="const"> - <return type="String"> - </return> - <argument index="0" name="area" type="int"> + <method name="set_bake"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="area_is_exterior_portal" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="area" type="int"> + <method name="set_cell_item"> + <argument index="0" name="x" type="int"> + </argument> + <argument index="1" name="y" type="int"> + </argument> + <argument index="2" name="z" type="int"> + </argument> + <argument index="3" name="item" type="int"> + </argument> + <argument index="4" name="orientation" type="int" default="0"> </argument> <description> </description> </method> - <method name="area_set_portal_disable_distance"> - <argument index="0" name="area" type="int"> - </argument> - <argument index="1" name="distance" type="float"> + <method name="set_cell_size"> + <argument index="0" name="size" type="float"> </argument> <description> </description> </method> - <method name="area_get_portal_disable_distance" qualifiers="const"> - <return type="float"> - </return> - <argument index="0" name="area" type="int"> + <method name="set_center_x"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="area_set_portal_disable_color"> - <argument index="0" name="area" type="int"> - </argument> - <argument index="1" name="color" type="Color"> + <method name="set_center_y"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="area_get_portal_disable_color" qualifiers="const"> - <return type="Color"> - </return> - <argument index="0" name="area" type="int"> + <method name="set_center_z"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="erase_area"> - <argument index="0" name="area" type="int"> + <method name="set_clip"> + <argument index="0" name="enabled" type="bool"> + </argument> + <argument index="1" name="clipabove" type="bool" default="true"> + </argument> + <argument index="2" name="floor" type="int" default="0"> + </argument> + <argument index="3" name="axis" type="int" default="0"> </argument> <description> </description> </method> - <method name="get_unused_area_id" qualifiers="const"> - <return type="int"> - </return> + <method name="set_octant_size"> + <argument index="0" name="size" type="int"> + </argument> <description> </description> </method> - <method name="bake_geometry"> + <method name="set_theme"> + <argument index="0" name="theme" type="MeshLibrary"> + </argument> <description> </description> </method> @@ -14412,16 +14602,6 @@ This approximation makes straight segments between each point, then subdivides t <description> </description> </method> - <method name="is_using_baked_light" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> - <method name="clear"> - <description> - </description> - </method> </methods> <constants> <constant name="INVALID_CELL_ITEM" value="-1"> @@ -14436,11 +14616,11 @@ This approximation makes straight segments between each point, then subdivides t Groove constraint for 2D physics. This is useful for making a body "slide" through a segment placed in another. </description> <methods> - <method name="set_length"> - <argument index="0" name="length" type="float"> - </argument> + <method name="get_initial_offset" qualifiers="const"> + <return type="float"> + </return> <description> - Set the length of the groove. + Set the final offset of the groove on body A. </description> </method> <method name="get_length" qualifiers="const"> @@ -14457,11 +14637,11 @@ This approximation makes straight segments between each point, then subdivides t Set the initial offset of the groove on body A. </description> </method> - <method name="get_initial_offset" qualifiers="const"> - <return type="float"> - </return> + <method name="set_length"> + <argument index="0" name="length" type="float"> + </argument> <description> - Set the final offset of the groove on body A. + Set the length of the groove. </description> </method> </methods> @@ -14498,24 +14678,24 @@ This approximation makes straight segments between each point, then subdivides t <theme_items> <theme_item name="button_separator" type="int"> </theme_item> - <theme_item name="icon_separator" type="int"> + <theme_item name="focus" type="StyleBox"> </theme_item> - <theme_item name="font_color_selected" type="Color"> + <theme_item name="font" type="Font"> </theme_item> <theme_item name="font_color" type="Color"> </theme_item> - <theme_item name="font_selected" type="Font"> + <theme_item name="font_color_selected" type="Color"> </theme_item> - <theme_item name="font" type="Font"> + <theme_item name="font_selected" type="Font"> </theme_item> <theme_item name="hover" type="StyleBox"> </theme_item> - <theme_item name="focus" type="StyleBox"> - </theme_item> - <theme_item name="selected" type="StyleBox"> + <theme_item name="icon_separator" type="int"> </theme_item> <theme_item name="normal" type="StyleBox"> </theme_item> + <theme_item name="selected" type="StyleBox"> + </theme_item> </theme_items> </class> <class name="HScrollBar" inherits="ScrollBar" category="Core"> @@ -14530,22 +14710,22 @@ This approximation makes straight segments between each point, then subdivides t <constants> </constants> <theme_items> - <theme_item name="increment_hilite" type="Texture"> + <theme_item name="decrement" type="Texture"> </theme_item> <theme_item name="decrement_hilite" type="Texture"> </theme_item> - <theme_item name="increment" type="Texture"> - </theme_item> - <theme_item name="decrement" type="Texture"> + <theme_item name="grabber" type="StyleBox"> </theme_item> <theme_item name="grabber_hilite" type="StyleBox"> </theme_item> - <theme_item name="grabber" type="StyleBox"> + <theme_item name="increment" type="Texture"> </theme_item> - <theme_item name="scroll_focus" type="StyleBox"> + <theme_item name="increment_hilite" type="Texture"> </theme_item> <theme_item name="scroll" type="StyleBox"> </theme_item> + <theme_item name="scroll_focus" type="StyleBox"> + </theme_item> </theme_items> </class> <class name="HSeparator" inherits="Separator" category="Core"> @@ -14578,17 +14758,17 @@ This approximation makes straight segments between each point, then subdivides t <constants> </constants> <theme_items> - <theme_item name="tick" type="Texture"> - </theme_item> - <theme_item name="grabber_hilite" type="Texture"> + <theme_item name="focus" type="StyleBox"> </theme_item> <theme_item name="grabber" type="Texture"> </theme_item> + <theme_item name="grabber_hilite" type="Texture"> + </theme_item> <theme_item name="grabber_hilite" type="StyleBox"> </theme_item> <theme_item name="slider" type="StyleBox"> </theme_item> - <theme_item name="focus" type="StyleBox"> + <theme_item name="tick" type="Texture"> </theme_item> </theme_items> </class> @@ -14606,11 +14786,11 @@ This approximation makes straight segments between each point, then subdivides t <theme_items> <theme_item name="autohide" type="int"> </theme_item> - <theme_item name="separation" type="int"> + <theme_item name="bg" type="StyleBox"> </theme_item> <theme_item name="grabber" type="Texture"> </theme_item> - <theme_item name="bg" type="StyleBox"> + <theme_item name="separation" type="int"> </theme_item> </theme_items> </class> @@ -14623,6 +14803,11 @@ This approximation makes straight segments between each point, then subdivides t Can be reused to connect to different hosts and make many requests. </description> <methods> + <method name="close"> + <description> + Cloces the current connection, allows for reusal of [HTTPClient]. + </description> + </method> <method name="connect"> <return type="Error"> </return> @@ -14640,13 +14825,6 @@ This approximation makes straight segments between each point, then subdivides t verify_host will check the SSL identity of the host if set to true. </description> </method> - <method name="set_connection"> - <argument index="0" name="connection" type="StreamPeer"> - </argument> - <description> - Set connection to use, for this client. - </description> - </method> <method name="get_connection" qualifiers="const"> <return type="StreamPeer"> </return> @@ -14654,67 +14832,41 @@ This approximation makes straight segments between each point, then subdivides t Return current connection. </description> </method> - <method name="request_raw"> + <method name="get_response_body_length" qualifiers="const"> <return type="int"> </return> - <argument index="0" name="method" type="int"> - </argument> - <argument index="1" name="url" type="String"> - </argument> - <argument index="2" name="headers" type="StringArray"> - </argument> - <argument index="3" name="body" type="RawArray"> - </argument> <description> - Sends a raw request to the connected host. The url is what is normally behind the hostname, i.e. in [code]http://somehost.com/index.php[/code], url would be "index.php". - Headers are HTTP request headers. - Sends body raw, as a byte array, does not encode it in any way. + Return the response's body length. </description> </method> - <method name="request"> + <method name="get_response_code" qualifiers="const"> <return type="int"> </return> - <argument index="0" name="method" type="int"> - </argument> - <argument index="1" name="url" type="String"> - </argument> - <argument index="2" name="headers" type="StringArray"> - </argument> - <argument index="3" name="body" type="String" default=""""> - </argument> <description> - Sends a request to the connected host. The url is what is normally behind the hostname, i.e. in [code]http://somehost.com/index.php[/code], url would be "index.php". - Headers are HTTP request headers. - To create a POST request with query strings to push to the server, do: - [codeblock] - var fields = {"username" : "user", "password" : "pass"} - var queryString = httpClient.query_string_from_dict(fields) - var headers = ["Content-Type: application/x-www-form-urlencoded", "Content-Length: " + str(queryString.length())] - var result = httpClient.request(httpClient.METHOD_POST, "index.php", headers, queryString) - [/codeblock] + Return the HTTP status code of the response. </description> </method> - <method name="send_body_text"> - <return type="int"> + <method name="get_response_headers"> + <return type="StringArray"> </return> - <argument index="0" name="body" type="String"> - </argument> <description> - Stub function + Return the response headers. </description> </method> - <method name="send_body_data"> - <return type="int"> + <method name="get_response_headers_as_dictionary"> + <return type="Dictionary"> </return> - <argument index="0" name="body" type="RawArray"> - </argument> <description> - Stub function + Returns all response headers as dictionary where the case-sensitivity of the keys and values is kept like the server delivers it. A value is a simple String, this string can have more than one value where "; " is used as separator. +Structure: ("key":"value1; value2") +Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </description> </method> - <method name="close"> + <method name="get_status" qualifiers="const"> + <return type="int"> + </return> <description> - Cloces the current connection, allows for reusal of [HTTPClient]. + Returns a status string like STATUS_REQUESTING. Need to call [method poll] in order to get status updates. </description> </method> <method name="has_response" qualifiers="const"> @@ -14724,41 +14876,39 @@ This approximation makes straight segments between each point, then subdivides t Return whether this [HTTPClient] has a response available. </description> </method> - <method name="is_response_chunked" qualifiers="const"> + <method name="is_blocking_mode_enabled" qualifiers="const"> <return type="bool"> </return> <description> - Return whether this [HTTPClient] has a response that is chunked. - </description> - </method> - <method name="get_response_code" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the HTTP status code of the response. + Return whether blocking mode is enabled. </description> </method> - <method name="get_response_headers"> - <return type="StringArray"> + <method name="is_response_chunked" qualifiers="const"> + <return type="bool"> </return> <description> - Return the response headers. + Return whether this [HTTPClient] has a response that is chunked. </description> </method> - <method name="get_response_headers_as_dictionary"> - <return type="Dictionary"> + <method name="poll"> + <return type="Error"> </return> <description> - Returns all response headers as dictionary where the case-sensitivity of the keys and values is kept like the server delivers it. A value is a simple String, this string can have more than one value where "; " is used as separator. -Structure: ("key":"value1; value2") -Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) + This needs to be called in order to have any request processed. Check results with [method get_status] </description> </method> - <method name="get_response_body_length" qualifiers="const"> - <return type="int"> + <method name="query_string_from_dict"> + <return type="String"> </return> + <argument index="0" name="fields" type="Dictionary"> + </argument> <description> - Return the response's body length. + Generates a GET/POST application/x-www-form-urlencoded style query string from a provided dictionary, e.g.: + [codeblock] + var fields = {"username": "user", "password": "pass"} + String queryString = httpClient.query_string_from_dict(fields) + returns:= "username=user&password=pass" + [/codeblock] </description> </method> <method name="read_response_body_chunk"> @@ -14768,53 +14918,83 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Reads one chunk from the response. </description> </method> - <method name="set_read_chunk_size"> - <argument index="0" name="bytes" type="int"> + <method name="request"> + <return type="int"> + </return> + <argument index="0" name="method" type="int"> + </argument> + <argument index="1" name="url" type="String"> + </argument> + <argument index="2" name="headers" type="StringArray"> + </argument> + <argument index="3" name="body" type="String" default=""""> </argument> <description> - Sets the size of the buffer used and maximum bytes to read per iteration. see [method read_response_body_chunk] + Sends a request to the connected host. The url is what is normally behind the hostname, i.e. in [code]http://somehost.com/index.php[/code], url would be "index.php". + Headers are HTTP request headers. + To create a POST request with query strings to push to the server, do: + [codeblock] + var fields = {"username" : "user", "password" : "pass"} + var queryString = httpClient.query_string_from_dict(fields) + var headers = ["Content-Type: application/x-www-form-urlencoded", "Content-Length: " + str(queryString.length())] + var result = httpClient.request(httpClient.METHOD_POST, "index.php", headers, queryString) + [/codeblock] </description> </method> - <method name="set_blocking_mode"> - <argument index="0" name="enabled" type="bool"> + <method name="request_raw"> + <return type="int"> + </return> + <argument index="0" name="method" type="int"> + </argument> + <argument index="1" name="url" type="String"> + </argument> + <argument index="2" name="headers" type="StringArray"> + </argument> + <argument index="3" name="body" type="RawArray"> </argument> <description> - If set to true, execution will block until all data is read from the response. + Sends a raw request to the connected host. The url is what is normally behind the hostname, i.e. in [code]http://somehost.com/index.php[/code], url would be "index.php". + Headers are HTTP request headers. + Sends body raw, as a byte array, does not encode it in any way. </description> </method> - <method name="is_blocking_mode_enabled" qualifiers="const"> - <return type="bool"> + <method name="send_body_data"> + <return type="int"> </return> + <argument index="0" name="body" type="RawArray"> + </argument> <description> - Return whether blocking mode is enabled. + Stub function </description> </method> - <method name="get_status" qualifiers="const"> + <method name="send_body_text"> <return type="int"> </return> + <argument index="0" name="body" type="String"> + </argument> <description> - Returns a status string like STATUS_REQUESTING. Need to call [method poll] in order to get status updates. + Stub function </description> </method> - <method name="poll"> - <return type="Error"> - </return> + <method name="set_blocking_mode"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> - This needs to be called in order to have any request processed. Check results with [method get_status] + If set to true, execution will block until all data is read from the response. </description> </method> - <method name="query_string_from_dict"> - <return type="String"> - </return> - <argument index="0" name="fields" type="Dictionary"> + <method name="set_connection"> + <argument index="0" name="connection" type="StreamPeer"> </argument> <description> - Generates a GET/POST application/x-www-form-urlencoded style query string from a provided dictionary, e.g.: - [codeblock] - var fields = {"username": "user", "password": "pass"} - String queryString = httpClient.query_string_from_dict(fields) - returns:= "username=user&password=pass" - [/codeblock] + Set connection to use, for this client. + </description> + </method> + <method name="set_read_chunk_size"> + <argument index="0" name="bytes" type="int"> + </argument> + <description> + Sets the size of the buffer used and maximum bytes to read per iteration. see [method read_response_body_chunk] </description> </method> </methods> @@ -14837,26 +15017,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="METHOD_MAX" value="8"> </constant> - <constant name="STATUS_DISCONNECTED" value="0"> - </constant> - <constant name="STATUS_RESOLVING" value="1"> - </constant> - <constant name="STATUS_CANT_RESOLVE" value="2"> - </constant> - <constant name="STATUS_CONNECTING" value="3"> - </constant> - <constant name="STATUS_CANT_CONNECT" value="4"> - </constant> - <constant name="STATUS_CONNECTED" value="5"> - </constant> - <constant name="STATUS_REQUESTING" value="6"> - </constant> - <constant name="STATUS_BODY" value="7"> - </constant> - <constant name="STATUS_CONNECTION_ERROR" value="8"> - </constant> - <constant name="STATUS_SSL_HANDSHAKE_ERROR" value="9"> - </constant> <constant name="RESPONSE_CONTINUE" value="100"> </constant> <constant name="RESPONSE_SWITCHING_PROTOCOLS" value="101"> @@ -14955,6 +15115,26 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="RESPONSE_NOT_EXTENDED" value="510"> </constant> + <constant name="STATUS_DISCONNECTED" value="0"> + </constant> + <constant name="STATUS_RESOLVING" value="1"> + </constant> + <constant name="STATUS_CANT_RESOLVE" value="2"> + </constant> + <constant name="STATUS_CONNECTING" value="3"> + </constant> + <constant name="STATUS_CANT_CONNECT" value="4"> + </constant> + <constant name="STATUS_CONNECTED" value="5"> + </constant> + <constant name="STATUS_REQUESTING" value="6"> + </constant> + <constant name="STATUS_BODY" value="7"> + </constant> + <constant name="STATUS_CONNECTION_ERROR" value="8"> + </constant> + <constant name="STATUS_SSL_HANDSHAKE_ERROR" value="9"> + </constant> </constants> </class> <class name="HTTPRequest" inherits="Node" category="Core"> @@ -14966,101 +15146,101 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Can be used to make HTTP requests or download files via HTTP. </description> <methods> - <method name="request"> - <return type="int"> - </return> - <argument index="0" name="url" type="String"> - </argument> - <argument index="1" name="custom_headers" type="StringArray" default="StringArray()"> - </argument> - <argument index="2" name="ssl_validate_domain" type="bool" default="true"> - </argument> + <method name="cancel_request"> <description> - Make a HTTP GET request. The url is the complete url including "http://" or "https://" which will be parsed for a host and a port. - The custom_headers are HTTP request headers which will be used. If User-Agent is not specified a Godot specific will be used. - The ssl_validate_domain specifies if in case of HTTPS the server certificate should be verified. + Cancel the current request. </description> </method> - <method name="cancel_request"> + <method name="get_body_size" qualifiers="const"> + <return type="int"> + </return> <description> - Cancel the current request. + Return the response body length. </description> </method> - <method name="get_http_client_status" qualifiers="const"> + <method name="get_body_size_limit" qualifiers="const"> <return type="int"> </return> <description> - Return the current status of the underlying [HTTPClient]. + Return current body size limit. </description> </method> - <method name="set_use_threads"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_download_file" qualifiers="const"> + <return type="String"> + </return> <description> - Make this HTTPRequest use threads. + Return the file this request will download into. </description> </method> - <method name="is_using_threads" qualifiers="const"> - <return type="bool"> + <method name="get_downloaded_bytes" qualifiers="const"> + <return type="int"> </return> <description> - Whether this request is using threads. + Return the amount of bytes this HTTPRequest downloaded. </description> </method> - <method name="set_body_size_limit"> - <argument index="0" name="bytes" type="int"> - </argument> + <method name="get_http_client_status" qualifiers="const"> + <return type="int"> + </return> <description> - Set the response body size limit. + Return the current status of the underlying [HTTPClient]. </description> </method> - <method name="get_body_size_limit" qualifiers="const"> + <method name="get_max_redirects" qualifiers="const"> <return type="int"> </return> <description> - Return current body size limit. + Return the maximum amount of redirects that will be followed. </description> </method> - <method name="set_max_redirects"> - <argument index="0" name="amount" type="int"> - </argument> + <method name="is_using_threads" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the maximum amount of redirects the request will follow. + Whether this request is using threads. </description> </method> - <method name="get_max_redirects" qualifiers="const"> + <method name="request"> <return type="int"> </return> + <argument index="0" name="url" type="String"> + </argument> + <argument index="1" name="custom_headers" type="StringArray" default="StringArray()"> + </argument> + <argument index="2" name="ssl_validate_domain" type="bool" default="true"> + </argument> <description> - Return the maximum amount of redirects that will be followed. + Make a HTTP GET request. The url is the complete url including "http://" or "https://" which will be parsed for a host and a port. + The custom_headers are HTTP request headers which will be used. If User-Agent is not specified a Godot specific will be used. + The ssl_validate_domain specifies if in case of HTTPS the server certificate should be verified. </description> </method> - <method name="set_download_file"> - <argument index="0" name="path" type="String"> + <method name="set_body_size_limit"> + <argument index="0" name="bytes" type="int"> </argument> <description> - Set the file to download into. Outputs the response body into the file. + Set the response body size limit. </description> </method> - <method name="get_download_file" qualifiers="const"> - <return type="String"> - </return> + <method name="set_download_file"> + <argument index="0" name="path" type="String"> + </argument> <description> - Return the file this request will download into. + Set the file to download into. Outputs the response body into the file. </description> </method> - <method name="get_downloaded_bytes" qualifiers="const"> - <return type="int"> - </return> + <method name="set_max_redirects"> + <argument index="0" name="amount" type="int"> + </argument> <description> - Return the amount of bytes this HTTPRequest downloaded. + Set the maximum amount of redirects the request will follow. </description> </method> - <method name="get_body_size" qualifiers="const"> - <return type="int"> - </return> + <method name="set_use_threads"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Return the response body length. + Make this HTTPRequest use threads. </description> </method> </methods> @@ -15085,6 +15265,12 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="RESULT_CHUNKED_BODY_SIZE_MISMATCH" value="1"> </constant> + <constant name="RESULT_DOWNLOAD_FILE_WRITE_ERROR" value="10"> + HTTPRequest couldn't write to the download file. + </constant> + <constant name="RESULT_REDIRECT_LIMIT_REACHED" value="11"> + Request reached it's maximum redirect limit, see [method set_max_redirects]. + </constant> <constant name="RESULT_CANT_CONNECT" value="2"> Request failed while connecting. </constant> @@ -15109,12 +15295,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <constant name="RESULT_DOWNLOAD_FILE_CANT_OPEN" value="9"> HTTPRequest couldn't open the download file. </constant> - <constant name="RESULT_DOWNLOAD_FILE_WRITE_ERROR" value="10"> - HTTPRequest couldn't write to the download file. - </constant> - <constant name="RESULT_REDIRECT_LIMIT_REACHED" value="11"> - Request reached it's maximum redirect limit, see [method set_max_redirects]. - </constant> </constants> </class> <class name="HingeJoint" inherits="Joint" category="Core"> @@ -15123,10 +15303,10 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="set_param"> - <argument index="0" name="param" type="int"> - </argument> - <argument index="1" name="value" type="float"> + <method name="get_flag" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="flag" type="int"> </argument> <description> </description> @@ -15147,16 +15327,22 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_flag" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="flag" type="int"> + <method name="set_param"> + <argument index="0" name="param" type="int"> + </argument> + <argument index="1" name="value" type="float"> </argument> <description> </description> </method> </methods> <constants> + <constant name="FLAG_USE_LIMIT" value="0"> + </constant> + <constant name="FLAG_ENABLE_MOTOR" value="1"> + </constant> + <constant name="FLAG_MAX" value="2"> + </constant> <constant name="PARAM_BIAS" value="0"> </constant> <constant name="PARAM_LIMIT_UPPER" value="1"> @@ -15175,12 +15361,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="PARAM_MAX" value="8"> </constant> - <constant name="FLAG_USE_LIMIT" value="0"> - </constant> - <constant name="FLAG_ENABLE_MOTOR" value="1"> - </constant> - <constant name="FLAG_MAX" value="2"> - </constant> </constants> </class> <class name="IP" inherits="Object" category="Core"> @@ -15191,57 +15371,59 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) IP contains some support functions for the IPv4 protocol. TCP/IP support is in different classes (see [StreamPeerTCP] and [TCP_Server]). IP provides hostname resolution support, both blocking and threaded. </description> <methods> - <method name="resolve_hostname"> - <return type="String"> - </return> - <argument index="0" name="host" type="String"> + <method name="erase_resolve_item"> + <argument index="0" name="id" type="int"> </argument> <description> - Resolve a given hostname, blocking. Resolved hostname is returned as an IP. + Erase a queue ID, removing it from the queue if needed. This should be used after a queue is completed to free it and enable more queries to happen. </description> </method> - <method name="resolve_hostname_queue_item"> - <return type="int"> + <method name="get_local_addresses" qualifiers="const"> + <return type="Array"> </return> - <argument index="0" name="host" type="String"> - </argument> <description> - Create a queue item for resolving a given hostname. The queue ID is returned, or RESOLVER_INVALID_ID on error. </description> </method> - <method name="get_resolve_item_status" qualifiers="const"> - <return type="int"> + <method name="get_resolve_item_address" qualifiers="const"> + <return type="String"> </return> <argument index="0" name="id" type="int"> </argument> <description> - Return the status of hostname queued for resolving, given it's queue ID. Returned status can be any of the RESOLVER_STATUS_* enumeration. + Return a resolved item address, or an empty string if an error happened or resolution didn't happen yet (see [method get_resolve_item_status]). </description> </method> - <method name="get_resolve_item_address" qualifiers="const"> - <return type="String"> + <method name="get_resolve_item_status" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="id" type="int"> </argument> <description> - Return a resolved item address, or an empty string if an error happened or resolution didn't happen yet (see [method get_resolve_item_status]). + Return the status of hostname queued for resolving, given it's queue ID. Returned status can be any of the RESOLVER_STATUS_* enumeration. </description> </method> - <method name="erase_resolve_item"> - <argument index="0" name="id" type="int"> + <method name="resolve_hostname"> + <return type="String"> + </return> + <argument index="0" name="host" type="String"> </argument> <description> - Erase a queue ID, removing it from the queue if needed. This should be used after a queue is completed to free it and enable more queries to happen. + Resolve a given hostname, blocking. Resolved hostname is returned as an IP. </description> </method> - <method name="get_local_addresses" qualifiers="const"> - <return type="Array"> + <method name="resolve_hostname_queue_item"> + <return type="int"> </return> + <argument index="0" name="host" type="String"> + </argument> <description> + Create a queue item for resolving a given hostname. The queue ID is returned, or RESOLVER_INVALID_ID on error. </description> </method> </methods> <constants> + <constant name="RESOLVER_INVALID_ID" value="-1"> + </constant> <constant name="RESOLVER_STATUS_NONE" value="0"> </constant> <constant name="RESOLVER_STATUS_WAITING" value="1"> @@ -15252,8 +15434,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="RESOLVER_MAX_QUERIES" value="32"> </constant> - <constant name="RESOLVER_INVALID_ID" value="-1"> - </constant> </constants> </class> <class name="IP_Unix" inherits="IP" category="Core"> @@ -15274,6 +15454,21 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Built in native image datatype. Contains image data, which can be converted to a texture, and several functions to interact with it. </description> <methods> + <method name="Image"> + <return type="Image"> + </return> + <argument index="0" name="width" type="int"> + </argument> + <argument index="1" name="height" type="int"> + </argument> + <argument index="2" name="mipmaps" type="bool"> + </argument> + <argument index="3" name="format" type="int"> + </argument> + <description> + Create an empty image of a specific size and format. + </description> + </method> <method name="blit_rect"> <argument index="0" name="src" type="Image"> </argument> @@ -15446,21 +15641,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Save this [Image] as a png. </description> </method> - <method name="Image"> - <return type="Image"> - </return> - <argument index="0" name="width" type="int"> - </argument> - <argument index="1" name="height" type="int"> - </argument> - <argument index="2" name="mipmaps" type="bool"> - </argument> - <argument index="3" name="format" type="int"> - </argument> - <description> - Create an empty image of a specific size and format. - </description> - </method> </methods> <constants> <constant name="COMPRESS_BC" value="0"> @@ -15475,22 +15655,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="FORMAT_INTENSITY" value="1"> </constant> - <constant name="FORMAT_GRAYSCALE_ALPHA" value="2"> - </constant> - <constant name="FORMAT_RGB" value="3"> - </constant> - <constant name="FORMAT_RGBA" value="4"> - </constant> - <constant name="FORMAT_INDEXED" value="5"> - </constant> - <constant name="FORMAT_INDEXED_ALPHA" value="6"> - </constant> - <constant name="FORMAT_YUV_422" value="7"> - </constant> - <constant name="FORMAT_YUV_444" value="8"> - </constant> - <constant name="FORMAT_BC1" value="9"> - </constant> <constant name="FORMAT_BC2" value="10"> </constant> <constant name="FORMAT_BC3" value="11"> @@ -15511,12 +15675,28 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="FORMAT_ATC" value="19"> </constant> + <constant name="FORMAT_GRAYSCALE_ALPHA" value="2"> + </constant> <constant name="FORMAT_ATC_ALPHA_EXPLICIT" value="20"> </constant> <constant name="FORMAT_ATC_ALPHA_INTERPOLATED" value="21"> </constant> <constant name="FORMAT_CUSTOM" value="22"> </constant> + <constant name="FORMAT_RGB" value="3"> + </constant> + <constant name="FORMAT_RGBA" value="4"> + </constant> + <constant name="FORMAT_INDEXED" value="5"> + </constant> + <constant name="FORMAT_INDEXED_ALPHA" value="6"> + </constant> + <constant name="FORMAT_YUV_422" value="7"> + </constant> + <constant name="FORMAT_YUV_444" value="8"> + </constant> + <constant name="FORMAT_BC1" value="9"> + </constant> <constant name="INTERPOLATE_NEAREST" value="0"> </constant> <constant name="INTERPOLATE_BILINEAR" value="1"> @@ -15557,25 +15737,8 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Create a new [ImageTexture] from an [Image] with "flags" from [Texture].FLAG_*. </description> </method> - <method name="get_format" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the format of the [ImageTexture], one of [Image].FORMAT_*. - </description> - </method> - <method name="load"> - <argument index="0" name="path" type="String"> - </argument> - <description> - Load an [ImageTexure]. - </description> - </method> - <method name="set_data"> - <argument index="0" name="image" type="Image"> - </argument> + <method name="fix_alpha_edges"> <description> - Set the [Image] of this [ImageTexture]. </description> </method> <method name="get_data" qualifiers="const"> @@ -15585,11 +15748,18 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the [Image] of this [ImageTexture]. </description> </method> - <method name="set_storage"> - <argument index="0" name="mode" type="int"> - </argument> + <method name="get_format" qualifiers="const"> + <return type="int"> + </return> <description> - Set the storage type. One of [ImageTexture].STORAGE_*. + Return the format of the [ImageTexture], one of [Image].FORMAT_*. + </description> + </method> + <method name="get_lossy_storage_quality" qualifiers="const"> + <return type="float"> + </return> + <description> + Return the storage quality for [ImageTexture].STORAGE_COMPRESS_LOSSY. </description> </method> <method name="get_storage" qualifiers="const"> @@ -15599,21 +15769,14 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the storage type. One of [ImageTexture].STORAGE_*. </description> </method> - <method name="set_lossy_storage_quality"> - <argument index="0" name="quality" type="float"> + <method name="load"> + <argument index="0" name="path" type="String"> </argument> <description> - Set the storage quality in case of [ImageTexture].STORAGE_COMPRESS_LOSSY. - </description> - </method> - <method name="get_lossy_storage_quality" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the storage quality for [ImageTexture].STORAGE_COMPRESS_LOSSY. + Load an [ImageTexure]. </description> </method> - <method name="fix_alpha_edges"> + <method name="normal_to_xy"> <description> </description> </method> @@ -15621,12 +15784,18 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="normal_to_xy"> + <method name="set_data"> + <argument index="0" name="image" type="Image"> + </argument> <description> + Set the [Image] of this [ImageTexture]. </description> </method> - <method name="shrink_x2_and_keep_size"> + <method name="set_lossy_storage_quality"> + <argument index="0" name="quality" type="float"> + </argument> <description> + Set the storage quality in case of [ImageTexture].STORAGE_COMPRESS_LOSSY. </description> </method> <method name="set_size_override"> @@ -15635,6 +15804,17 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> + <method name="set_storage"> + <argument index="0" name="mode" type="int"> + </argument> + <description> + Set the storage type. One of [ImageTexture].STORAGE_*. + </description> + </method> + <method name="shrink_x2_and_keep_size"> + <description> + </description> + </method> </methods> <constants> <constant name="STORAGE_RAW" value="0"> @@ -15654,65 +15834,65 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="begin"> - <argument index="0" name="primitive" type="int"> + <method name="add_sphere"> + <argument index="0" name="lats" type="int"> </argument> - <argument index="1" name="texture" type="Texture"> + <argument index="1" name="lons" type="int"> + </argument> + <argument index="2" name="radius" type="float"> </argument> <description> </description> </method> - <method name="set_normal"> - <argument index="0" name="normal" type="Vector3"> + <method name="add_vertex"> + <argument index="0" name="pos" type="Vector3"> </argument> <description> </description> </method> - <method name="set_tangent"> - <argument index="0" name="tangent" type="Plane"> + <method name="begin"> + <argument index="0" name="primitive" type="int"> + </argument> + <argument index="1" name="texture" type="Texture"> </argument> <description> </description> </method> - <method name="set_color"> - <argument index="0" name="color" type="Color"> - </argument> + <method name="clear"> <description> </description> </method> - <method name="set_uv"> - <argument index="0" name="uv" type="Vector2"> - </argument> + <method name="end"> <description> </description> </method> - <method name="set_uv2"> - <argument index="0" name="uv" type="Vector2"> + <method name="set_color"> + <argument index="0" name="color" type="Color"> </argument> <description> </description> </method> - <method name="add_vertex"> - <argument index="0" name="pos" type="Vector3"> + <method name="set_normal"> + <argument index="0" name="normal" type="Vector3"> </argument> <description> </description> </method> - <method name="add_sphere"> - <argument index="0" name="lats" type="int"> - </argument> - <argument index="1" name="lons" type="int"> - </argument> - <argument index="2" name="radius" type="float"> + <method name="set_tangent"> + <argument index="0" name="tangent" type="Plane"> </argument> <description> </description> </method> - <method name="end"> + <method name="set_uv"> + <argument index="0" name="uv" type="Vector2"> + </argument> <description> </description> </method> - <method name="clear"> + <method name="set_uv2"> + <argument index="0" name="uv" type="Vector2"> + </argument> <description> </description> </method> @@ -15728,42 +15908,18 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) A Singleton that deals with inputs. This includes key presses, mouse buttons and movement, joysticks, and input actions. </description> <methods> - <method name="is_key_pressed"> - <return type="bool"> - </return> - <argument index="0" name="scancode" type="int"> - </argument> - <description> - Returns true or false depending on whether the key is pressed or not. You can pass KEY_*, which are pre-defined constants listed in [@Global Scope]. - </description> - </method> - <method name="is_mouse_button_pressed"> - <return type="bool"> - </return> - <argument index="0" name="button" type="int"> - </argument> - <description> - Returns true or false depending on whether mouse button is pressed or not. You can pass BUTTON_*, which are pre-defined constants listed in [@Global Scope]. - </description> - </method> - <method name="is_joy_button_pressed"> - <return type="bool"> - </return> - <argument index="0" name="device" type="int"> - </argument> - <argument index="1" name="button" type="int"> + <method name="action_press"> + <argument index="0" name="action" type="String"> </argument> <description> - Returns if the joystick button at the given index is currently pressed. (see JOY_* constants in [@Global Scope]) + This will simulate pressing the specificed action. </description> </method> - <method name="is_action_pressed"> - <return type="bool"> - </return> + <method name="action_release"> <argument index="0" name="action" type="String"> </argument> <description> - Returns true or false depending on whether the action event is pressed. Actions and their events can be set in the Project Settings / Input Map tab. Or be set with [InputMap]. + If the specified action is already pressed, this will release it. </description> </method> <method name="add_joy_mapping"> @@ -15775,20 +15931,11 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Add a new mapping entry (in SDL2 format) to the mapping database. Optionally update already connected devices. </description> </method> - <method name="remove_joy_mapping"> - <argument index="0" name="guid" type="String"> - </argument> - <description> - Removes all mappings from the internal db that match the given uid. - </description> - </method> - <method name="is_joy_known"> - <return type="bool"> + <method name="get_accelerometer"> + <return type="Vector3"> </return> - <argument index="0" name="device" type="int"> - </argument> <description> - Returns if the specified device is known by the system. This means that it sets all button and axis indices exactly as defined in the JOY_* constants (see [@Global Scope]). Unknown joysticks are not expected to match these constants, but you can still retrieve events from them. + If the device has an accelerometer, this will return the movement. </description> </method> <method name="get_joy_axis"> @@ -15802,15 +15949,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Returns the current value of the joystick axis at given index (see JOY_* constants in [@Global Scope]) </description> </method> - <method name="get_joy_name"> - <return type="String"> - </return> - <argument index="0" name="device" type="int"> - </argument> - <description> - Returns the name of the joystick at the specified device index - </description> - </method> <method name="get_joy_guid" qualifiers="const"> <return type="String"> </return> @@ -15820,13 +15958,13 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Returns a SDL2 compatible device guid on platforms that use gamepad remapping. Returns "Default Gamepad" otherwise. </description> </method> - <method name="get_joy_vibration_strength"> - <return type="Vector2"> + <method name="get_joy_name"> + <return type="String"> </return> <argument index="0" name="device" type="int"> </argument> <description> - Returns the strength of the joystick vibration: x is the strength of the weak motor, and y is the strength of the strong motor. + Returns the name of the joystick at the specified device index </description> </method> <method name="get_joy_vibration_duration"> @@ -15837,11 +15975,14 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> Returns the duration of the current vibration effect in seconds. </description> - <method name="get_accelerometer"> - <return type="Vector3"> + </method> + <method name="get_joy_vibration_strength"> + <return type="Vector2"> </return> + <argument index="0" name="device" type="int"> + </argument> <description> - If the device has an accelerometer, this will return the movement. + Returns the strength of the joystick vibration: x is the strength of the weak motor, and y is the strength of the strong motor. </description> </method> <method name="get_magnetometer"> @@ -15851,73 +15992,79 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) If the device has a magnetometer, this will return the magnetic field strength in micro-Tesla for all axes. </description> </method> - <method name="get_mouse_speed" qualifiers="const"> - <return type="Vector2"> + <method name="get_mouse_button_mask" qualifiers="const"> + <return type="int"> </return> <description> - Returns the mouse speed. + Returns mouse buttons as a bitmask. If multiple mouse buttons are pressed at the same time the bits are added together. </description> </method> - <method name="get_mouse_button_mask" qualifiers="const"> + <method name="get_mouse_mode" qualifiers="const"> <return type="int"> </return> <description> - Returns mouse buttons as a bitmask. If multiple mouse buttons are pressed at the same time the bits are added together. + Return the mouse mode. See the constants for more information. </description> </method> - <method name="set_mouse_mode"> - <argument index="0" name="mode" type="int"> - </argument> + <method name="get_mouse_speed" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Set the mouse mode. See the constants for more information. + Returns the mouse speed. </description> </method> - <method name="get_mouse_mode" qualifiers="const"> - <return type="int"> + <method name="is_action_pressed"> + <return type="bool"> </return> + <argument index="0" name="action" type="String"> + </argument> <description> - Return the mouse mode. See the constants for more information. + Returns true or false depending on whether the action event is pressed. Actions and their events can be set in the Project Settings / Input Map tab. Or be set with [InputMap]. </description> </method> - <method name="start_joy_vibration"> + <method name="is_joy_button_pressed"> + <return type="bool"> + </return> <argument index="0" name="device" type="int"> </argument> - <argument index="1" name="weak_magnitude" type="float"> - </argument> - <argument index="2" name="strong_magnitude" type="float"> - </argument> - <argument index="3" name="duration" type="float"> + <argument index="1" name="button" type="int"> </argument> <description> - Starts to vibrate the joystick. Joysticks usually come with two rumble motors, a strong and a weak one. weak_magnitude is the strength of the weak motor (between 0 and 1) and strong_magnitude is the strength of the strong motor (between 0 and 1). duration is the duration of the effect in seconds (a duration of 0 will play the vibration indefinitely). + Returns if the joystick button at the given index is currently pressed. (see JOY_* constants in [@Global Scope]) </description> </method> - <method name="stop_joy_vibration"> + <method name="is_joy_known"> + <return type="bool"> + </return> <argument index="0" name="device" type="int"> </argument> <description> - Stops the vibration of the joystick. + Returns if the specified device is known by the system. This means that it sets all button and axis indices exactly as defined in the JOY_* constants (see [@Global Scope]). Unknown joysticks are not expected to match these constants, but you can still retrieve events from them. </description> </method> - <method name="warp_mouse_pos"> - <argument index="0" name="to" type="Vector2"> + <method name="is_key_pressed"> + <return type="bool"> + </return> + <argument index="0" name="scancode" type="int"> </argument> <description> - Sets the mouse position to the specified vector. + Returns true or false depending on whether the key is pressed or not. You can pass KEY_*, which are pre-defined constants listed in [@Global Scope]. </description> </method> - <method name="action_press"> - <argument index="0" name="action" type="String"> + <method name="is_mouse_button_pressed"> + <return type="bool"> + </return> + <argument index="0" name="button" type="int"> </argument> <description> - This will simulate pressing the specificed action. + Returns true or false depending on whether mouse button is pressed or not. You can pass BUTTON_*, which are pre-defined constants listed in [@Global Scope]. </description> </method> - <method name="action_release"> - <argument index="0" name="action" type="String"> + <method name="remove_joy_mapping"> + <argument index="0" name="guid" type="String"> </argument> <description> - If the specified action is already pressed, this will release it. + Removes all mappings from the internal db that match the given uid. </description> </method> <method name="set_custom_mouse_cursor"> @@ -15929,6 +16076,40 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Set a custom mouse cursor image, which is only visible inside the game window. The hotspot can also be specified. </description> </method> + <method name="set_mouse_mode"> + <argument index="0" name="mode" type="int"> + </argument> + <description> + Set the mouse mode. See the constants for more information. + </description> + </method> + <method name="start_joy_vibration"> + <argument index="0" name="device" type="int"> + </argument> + <argument index="1" name="weak_magnitude" type="float"> + </argument> + <argument index="2" name="strong_magnitude" type="float"> + </argument> + <argument index="3" name="duration" type="float" default="0"> + </argument> + <description> + Starts to vibrate the joystick. Joysticks usually come with two rumble motors, a strong and a weak one. weak_magnitude is the strength of the weak motor (between 0 and 1) and strong_magnitude is the strength of the strong motor (between 0 and 1). duration is the duration of the effect in seconds (a duration of 0 will play the vibration indefinitely). + </description> + </method> + <method name="stop_joy_vibration"> + <argument index="0" name="device" type="int"> + </argument> + <description> + Stops the vibration of the joystick. + </description> + </method> + <method name="warp_mouse_pos"> + <argument index="0" name="to" type="Vector2"> + </argument> + <description> + Sets the mouse position to the specified vector. + </description> + </method> </methods> <signals> <signal name="joy_connection_changed"> @@ -16020,16 +16201,21 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </method> </methods> <members> - <member name="type" type="int"> + <member name="ID" type="int"> </member> <member name="device" type="int"> </member> - <member name="ID" type="int"> + <member name="type" type="int"> </member> </members> <constants> - <constant name="NONE" value="0"> - Empty input event. + <constant name="ACTION" value="8"> + </constant> + <constant name="JOYSTICK_MOTION" value="4"> + Joystick motion event. + </constant> + <constant name="JOYSTICK_BUTTON" value="5"> + Joystick button event. </constant> <constant name="KEY" value="1"> Key event. @@ -16040,18 +16226,13 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <constant name="MOUSE_BUTTON" value="3"> Mouse button event. </constant> - <constant name="JOYSTICK_MOTION" value="4"> - Joystick motion event. - </constant> - <constant name="JOYSTICK_BUTTON" value="5"> - Joystick button event. + <constant name="NONE" value="0"> + Empty input event. </constant> <constant name="SCREEN_TOUCH" value="6"> </constant> <constant name="SCREEN_DRAG" value="7"> </constant> - <constant name="ACTION" value="8"> - </constant> </constants> </class> <class name="InputEventAction" category="Built-In Types"> @@ -16106,15 +16287,19 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </method> </methods> <members> - <member name="type" type="int"> + <member name="ID" type="int"> </member> <member name="device" type="int"> </member> - <member name="ID" type="int"> + <member name="type" type="int"> </member> </members> <constants> - <constant name="NONE" value="0"> + <constant name="ACTION" value="8"> + </constant> + <constant name="JOYSTICK_MOTION" value="4"> + </constant> + <constant name="JOYSTICK_BUTTON" value="5"> </constant> <constant name="KEY" value="1"> </constant> @@ -16122,16 +16307,12 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="MOUSE_BUTTON" value="3"> </constant> - <constant name="JOYSTICK_MOTION" value="4"> - </constant> - <constant name="JOYSTICK_BUTTON" value="5"> + <constant name="NONE" value="0"> </constant> <constant name="SCREEN_TOUCH" value="6"> </constant> <constant name="SCREEN_DRAG" value="7"> </constant> - <constant name="ACTION" value="8"> - </constant> </constants> </class> <class name="InputEventJoystickButton" category="Built-In Types"> @@ -16186,21 +16367,25 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </method> </methods> <members> - <member name="type" type="int"> - </member> - <member name="device" type="int"> - </member> <member name="ID" type="int"> </member> <member name="button_index" type="int"> </member> + <member name="device" type="int"> + </member> <member name="pressed" type="bool"> </member> <member name="pressure" type="float"> </member> + <member name="type" type="int"> + </member> </members> <constants> - <constant name="NONE" value="0"> + <constant name="ACTION" value="8"> + </constant> + <constant name="JOYSTICK_MOTION" value="4"> + </constant> + <constant name="JOYSTICK_BUTTON" value="5"> </constant> <constant name="KEY" value="1"> </constant> @@ -16208,16 +16393,12 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="MOUSE_BUTTON" value="3"> </constant> - <constant name="JOYSTICK_MOTION" value="4"> - </constant> - <constant name="JOYSTICK_BUTTON" value="5"> + <constant name="NONE" value="0"> </constant> <constant name="SCREEN_TOUCH" value="6"> </constant> <constant name="SCREEN_DRAG" value="7"> </constant> - <constant name="ACTION" value="8"> - </constant> </constants> </class> <class name="InputEventJoystickMotion" category="Built-In Types"> @@ -16272,19 +16453,23 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </method> </methods> <members> - <member name="type" type="int"> - </member> - <member name="device" type="int"> - </member> <member name="ID" type="int"> </member> <member name="axis" type="int"> </member> + <member name="device" type="int"> + </member> + <member name="type" type="int"> + </member> <member name="value" type="float"> </member> </members> <constants> - <constant name="NONE" value="0"> + <constant name="ACTION" value="8"> + </constant> + <constant name="JOYSTICK_MOTION" value="4"> + </constant> + <constant name="JOYSTICK_BUTTON" value="5"> </constant> <constant name="KEY" value="1"> </constant> @@ -16292,16 +16477,12 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="MOUSE_BUTTON" value="3"> </constant> - <constant name="JOYSTICK_MOTION" value="4"> - </constant> - <constant name="JOYSTICK_BUTTON" value="5"> + <constant name="NONE" value="0"> </constant> <constant name="SCREEN_TOUCH" value="6"> </constant> <constant name="SCREEN_DRAG" value="7"> </constant> - <constant name="ACTION" value="8"> - </constant> </constants> </class> <class name="InputEventKey" category="Built-In Types"> @@ -16356,31 +16537,35 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </method> </methods> <members> - <member name="type" type="int"> - </member> - <member name="device" type="int"> - </member> <member name="ID" type="int"> </member> - <member name="shift" type="bool"> - </member> <member name="alt" type="bool"> </member> <member name="control" type="bool"> </member> + <member name="device" type="int"> + </member> + <member name="echo" type="bool"> + </member> <member name="meta" type="bool"> </member> <member name="pressed" type="bool"> </member> - <member name="echo" type="bool"> - </member> <member name="scancode" type="int"> </member> + <member name="shift" type="bool"> + </member> + <member name="type" type="int"> + </member> <member name="unicode" type="int"> </member> </members> <constants> - <constant name="NONE" value="0"> + <constant name="ACTION" value="8"> + </constant> + <constant name="JOYSTICK_MOTION" value="4"> + </constant> + <constant name="JOYSTICK_BUTTON" value="5"> </constant> <constant name="KEY" value="1"> </constant> @@ -16388,16 +16573,12 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="MOUSE_BUTTON" value="3"> </constant> - <constant name="JOYSTICK_MOTION" value="4"> - </constant> - <constant name="JOYSTICK_BUTTON" value="5"> + <constant name="NONE" value="0"> </constant> <constant name="SCREEN_TOUCH" value="6"> </constant> <constant name="SCREEN_DRAG" value="7"> </constant> - <constant name="ACTION" value="8"> - </constant> </constants> </class> <class name="InputEventMouseButton" category="Built-In Types"> @@ -16452,43 +16633,47 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </method> </methods> <members> - <member name="type" type="int"> - </member> - <member name="device" type="int"> - </member> <member name="ID" type="int"> </member> - <member name="shift" type="bool"> - </member> <member name="alt" type="bool"> </member> - <member name="control" type="bool"> - </member> - <member name="meta" type="bool"> + <member name="button_index" type="int"> </member> <member name="button_mask" type="int"> </member> - <member name="x" type="int"> + <member name="control" type="bool"> </member> - <member name="y" type="int"> + <member name="device" type="int"> </member> - <member name="pos" type="Vector2"> + <member name="doubleclick" type="bool"> + </member> + <member name="global_pos" type="Vector2"> </member> <member name="global_x" type="int"> </member> <member name="global_y" type="int"> </member> - <member name="global_pos" type="Vector2"> + <member name="meta" type="bool"> </member> - <member name="button_index" type="int"> + <member name="pos" type="Vector2"> </member> <member name="pressed" type="bool"> </member> - <member name="doubleclick" type="bool"> + <member name="shift" type="bool"> + </member> + <member name="type" type="int"> + </member> + <member name="x" type="int"> + </member> + <member name="y" type="int"> </member> </members> <constants> - <constant name="NONE" value="0"> + <constant name="ACTION" value="8"> + </constant> + <constant name="JOYSTICK_MOTION" value="4"> + </constant> + <constant name="JOYSTICK_BUTTON" value="5"> </constant> <constant name="KEY" value="1"> </constant> @@ -16496,16 +16681,12 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="MOUSE_BUTTON" value="3"> </constant> - <constant name="JOYSTICK_MOTION" value="4"> - </constant> - <constant name="JOYSTICK_BUTTON" value="5"> + <constant name="NONE" value="0"> </constant> <constant name="SCREEN_TOUCH" value="6"> </constant> <constant name="SCREEN_DRAG" value="7"> </constant> - <constant name="ACTION" value="8"> - </constant> </constants> </class> <class name="InputEventMouseMotion" category="Built-In Types"> @@ -16560,49 +16741,53 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </method> </methods> <members> - <member name="type" type="int"> - </member> - <member name="device" type="int"> - </member> <member name="ID" type="int"> </member> - <member name="shift" type="bool"> - </member> <member name="alt" type="bool"> </member> - <member name="control" type="bool"> - </member> - <member name="meta" type="bool"> - </member> <member name="button_mask" type="int"> </member> - <member name="x" type="int"> + <member name="control" type="bool"> </member> - <member name="y" type="int"> + <member name="device" type="int"> </member> - <member name="pos" type="Vector2"> + <member name="global_pos" type="Vector2"> </member> <member name="global_x" type="int"> </member> <member name="global_y" type="int"> </member> - <member name="global_pos" type="Vector2"> + <member name="meta" type="bool"> + </member> + <member name="pos" type="Vector2"> + </member> + <member name="relative_pos" type="Vector2"> </member> <member name="relative_x" type="int"> </member> <member name="relative_y" type="int"> </member> - <member name="relative_pos" type="Vector2"> + <member name="shift" type="bool"> + </member> + <member name="speed" type="Vector2"> </member> <member name="speed_x" type="float"> </member> <member name="speed_y" type="float"> </member> - <member name="speed" type="Vector2"> + <member name="type" type="int"> + </member> + <member name="x" type="int"> + </member> + <member name="y" type="int"> </member> </members> <constants> - <constant name="NONE" value="0"> + <constant name="ACTION" value="8"> + </constant> + <constant name="JOYSTICK_MOTION" value="4"> + </constant> + <constant name="JOYSTICK_BUTTON" value="5"> </constant> <constant name="KEY" value="1"> </constant> @@ -16610,16 +16795,12 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="MOUSE_BUTTON" value="3"> </constant> - <constant name="JOYSTICK_MOTION" value="4"> - </constant> - <constant name="JOYSTICK_BUTTON" value="5"> + <constant name="NONE" value="0"> </constant> <constant name="SCREEN_TOUCH" value="6"> </constant> <constant name="SCREEN_DRAG" value="7"> </constant> - <constant name="ACTION" value="8"> - </constant> </constants> </class> <class name="InputEventScreenDrag" category="Built-In Types"> @@ -16674,35 +16855,39 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </method> </methods> <members> - <member name="type" type="int"> + <member name="ID" type="int"> </member> <member name="device" type="int"> </member> - <member name="ID" type="int"> - </member> <member name="index" type="int"> </member> - <member name="x" type="float"> - </member> - <member name="y" type="float"> - </member> <member name="pos" type="Vector2"> </member> + <member name="relative_pos" type="Vector2"> + </member> <member name="relative_x" type="float"> </member> <member name="relative_y" type="float"> </member> - <member name="relative_pos" type="Vector2"> + <member name="speed" type="Vector2"> </member> <member name="speed_x" type="float"> </member> <member name="speed_y" type="float"> </member> - <member name="speed" type="Vector2"> + <member name="type" type="int"> + </member> + <member name="x" type="float"> + </member> + <member name="y" type="float"> </member> </members> <constants> - <constant name="NONE" value="0"> + <constant name="ACTION" value="8"> + </constant> + <constant name="JOYSTICK_MOTION" value="4"> + </constant> + <constant name="JOYSTICK_BUTTON" value="5"> </constant> <constant name="KEY" value="1"> </constant> @@ -16710,16 +16895,12 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="MOUSE_BUTTON" value="3"> </constant> - <constant name="JOYSTICK_MOTION" value="4"> - </constant> - <constant name="JOYSTICK_BUTTON" value="5"> + <constant name="NONE" value="0"> </constant> <constant name="SCREEN_TOUCH" value="6"> </constant> <constant name="SCREEN_DRAG" value="7"> </constant> - <constant name="ACTION" value="8"> - </constant> </constants> </class> <class name="InputEventScreenTouch" category="Built-In Types"> @@ -16774,25 +16955,29 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </method> </methods> <members> - <member name="type" type="int"> + <member name="ID" type="int"> </member> <member name="device" type="int"> </member> - <member name="ID" type="int"> - </member> <member name="index" type="int"> </member> - <member name="x" type="float"> - </member> - <member name="y" type="float"> - </member> <member name="pos" type="Vector2"> </member> <member name="pressed" type="bool"> </member> + <member name="type" type="int"> + </member> + <member name="x" type="float"> + </member> + <member name="y" type="float"> + </member> </members> <constants> - <constant name="NONE" value="0"> + <constant name="ACTION" value="8"> + </constant> + <constant name="JOYSTICK_MOTION" value="4"> + </constant> + <constant name="JOYSTICK_BUTTON" value="5"> </constant> <constant name="KEY" value="1"> </constant> @@ -16800,16 +16985,12 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="MOUSE_BUTTON" value="3"> </constant> - <constant name="JOYSTICK_MOTION" value="4"> - </constant> - <constant name="JOYSTICK_BUTTON" value="5"> + <constant name="NONE" value="0"> </constant> <constant name="SCREEN_TOUCH" value="6"> </constant> <constant name="SCREEN_DRAG" value="7"> </constant> - <constant name="ACTION" value="8"> - </constant> </constants> </class> <class name="InputMap" inherits="Object" category="Core"> @@ -16820,38 +17001,33 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Singleton that manages actions. InputMap has a list of the actions used in InputEvent, which can be modified. </description> <methods> - <method name="has_action" qualifiers="const"> - <return type="bool"> - </return> + <method name="action_add_event"> <argument index="0" name="action" type="String"> </argument> + <argument index="1" name="event" type="InputEvent"> + </argument> <description> - Whether this InputMap has an action with name "action". + Add an [InputEvent] to action. This [InputEvent] will trigger the action. </description> </method> - <method name="get_action_id" qualifiers="const"> - <return type="int"> - </return> + <method name="action_erase_event"> <argument index="0" name="action" type="String"> </argument> - <description> - Return the id of an action. - </description> - </method> - <method name="get_action_from_id" qualifiers="const"> - <return type="String"> - </return> - <argument index="0" name="id" type="int"> + <argument index="1" name="event" type="InputEvent"> </argument> <description> - Return the action from an id. + Remove an [InputEvent] from an action. </description> </method> - <method name="get_actions"> - <return type="Array"> + <method name="action_has_event"> + <return type="bool"> </return> + <argument index="0" name="action" type="String"> + </argument> + <argument index="1" name="event" type="InputEvent"> + </argument> <description> - Return an [Array] of all actions in the [InputMap]. + Whether an action has an [InputEvent] associated with it. </description> </method> <method name="add_action"> @@ -16868,33 +17044,32 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Remove an action from the [InputMap]. </description> </method> - <method name="action_add_event"> - <argument index="0" name="action" type="String"> + <method name="event_is_action" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="event" type="InputEvent"> </argument> - <argument index="1" name="event" type="InputEvent"> + <argument index="1" name="action" type="String"> </argument> <description> - Add an [InputEvent] to action. This [InputEvent] will trigger the action. </description> </method> - <method name="action_has_event"> - <return type="bool"> + <method name="get_action_from_id" qualifiers="const"> + <return type="String"> </return> - <argument index="0" name="action" type="String"> - </argument> - <argument index="1" name="event" type="InputEvent"> + <argument index="0" name="id" type="int"> </argument> <description> - Whether an action has an [InputEvent] associated with it. + Return the action from an id. </description> </method> - <method name="action_erase_event"> + <method name="get_action_id" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="action" type="String"> </argument> - <argument index="1" name="event" type="InputEvent"> - </argument> <description> - Remove an [InputEvent] from an action. + Return the id of an action. </description> </method> <method name="get_action_list"> @@ -16906,14 +17081,20 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return an [Array] of [InputEvent]s associated with an action. </description> </method> - <method name="event_is_action" qualifiers="const"> + <method name="get_actions"> + <return type="Array"> + </return> + <description> + Return an [Array] of all actions in the [InputMap]. + </description> + </method> + <method name="has_action" qualifiers="const"> <return type="bool"> </return> - <argument index="0" name="event" type="InputEvent"> - </argument> - <argument index="1" name="action" type="String"> + <argument index="0" name="action" type="String"> </argument> <description> + Whether this InputMap has an action with name "action". </description> </method> <method name="load_from_globals"> @@ -16931,18 +17112,18 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="replace_by_instance"> - <argument index="0" name="custom_scene" type="PackedScene" default="NULL"> - </argument> - <description> - </description> - </method> <method name="get_instance_path" qualifiers="const"> <return type="String"> </return> <description> </description> </method> + <method name="replace_by_instance"> + <argument index="0" name="custom_scene" type="PackedScene" default="NULL"> + </argument> + <description> + </description> + </method> </methods> <constants> </constants> @@ -16955,6 +17136,40 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Integer Array. Array of integers. Can only contain integers. Optimized for memory usage, can't fragment the memory. </description> <methods> + <method name="IntArray"> + <return type="IntArray"> + </return> + <argument index="0" name="from" type="Array"> + </argument> + <description> + Create from a generic array. + </description> + </method> + <method name="append"> + <argument index="0" name="integer" type="int"> + </argument> + <description> + Append an element at the end of the array (alias of [method push_back]). + </description> + </method> + <method name="append_array"> + <argument index="0" name="array" type="IntArray"> + </argument> + <description> + Append an [IntArray] at the end of this array. + </description> + </method> + <method name="insert"> + <return type="int"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="integer" type="int"> + </argument> + <description> + Insert a new int at a given position in the array. The position must be valid, or at the end of the array (pos==size()). + </description> + </method> <method name="push_back"> <argument index="0" name="integer" type="int"> </argument> @@ -16962,11 +17177,18 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Append a value to the array. </description> </method> + <method name="remove"> + <argument index="0" name="idx" type="int"> + </argument> + <description> + Remove an element from the array by index. + </description> + </method> <method name="resize"> <argument index="0" name="idx" type="int"> </argument> <description> - Resize the array. + Set the size of the [IntArray]. If larger than the current size it will reserve some space beforehand, and if it is smaller it will cut off the array. </description> </method> <method name="set"> @@ -16975,7 +17197,7 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <argument index="1" name="integer" type="int"> </argument> <description> - Set an index in the array. + Change the int at the given index. </description> </method> <method name="size"> @@ -16985,15 +17207,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the array size. </description> </method> - <method name="IntArray"> - <return type="IntArray"> - </return> - <argument index="0" name="from" type="Array"> - </argument> - <description> - Create from a generic array. - </description> - </method> </methods> <constants> </constants> @@ -17004,9 +17217,9 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="set_target_path"> - <argument index="0" name="target_path" type="NodePath"> - </argument> + <method name="get_speed" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> @@ -17016,33 +17229,33 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="set_target"> - <argument index="0" name="target" type="Camera"> - </argument> + <method name="is_interpolation_enabled" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="set_speed"> - <argument index="0" name="speed" type="float"> + <method name="set_interpolation_enabled"> + <argument index="0" name="target_path" type="bool"> </argument> <description> </description> </method> - <method name="get_speed" qualifiers="const"> - <return type="float"> - </return> + <method name="set_speed"> + <argument index="0" name="speed" type="float"> + </argument> <description> </description> </method> - <method name="set_interpolation_enabled"> - <argument index="0" name="target_path" type="bool"> + <method name="set_target"> + <argument index="0" name="target" type="Camera"> </argument> <description> </description> </method> - <method name="is_interpolation_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_target_path"> + <argument index="0" name="target_path" type="NodePath"> + </argument> <description> </description> </method> @@ -17056,21 +17269,15 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="set_bone_name"> - <argument index="0" name="ik_bone" type="String"> - </argument> - <description> - </description> - </method> <method name="get_bone_name" qualifiers="const"> <return type="String"> </return> <description> </description> </method> - <method name="set_iterations"> - <argument index="0" name="iterations" type="int"> - </argument> + <method name="get_chain_size" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> @@ -17080,39 +17287,45 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="set_chain_size"> - <argument index="0" name="chain_size" type="int"> - </argument> + <method name="get_precision" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_chain_size" qualifiers="const"> - <return type="int"> + <method name="get_speed" qualifiers="const"> + <return type="float"> </return> <description> </description> </method> - <method name="set_precision"> - <argument index="0" name="precision" type="float"> + <method name="set_bone_name"> + <argument index="0" name="ik_bone" type="String"> </argument> <description> </description> </method> - <method name="get_precision" qualifiers="const"> - <return type="float"> - </return> + <method name="set_chain_size"> + <argument index="0" name="chain_size" type="int"> + </argument> <description> </description> </method> - <method name="set_speed"> - <argument index="0" name="speed" type="float"> + <method name="set_iterations"> + <argument index="0" name="iterations" type="int"> </argument> <description> </description> </method> - <method name="get_speed" qualifiers="const"> - <return type="float"> - </return> + <method name="set_precision"> + <argument index="0" name="precision" type="float"> + </argument> + <description> + </description> + </method> + <method name="set_speed"> + <argument index="0" name="speed" type="float"> + </argument> <description> </description> </method> @@ -17126,6 +17339,14 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> + <method name="add_icon_item"> + <argument index="0" name="icon" type="Texture"> + </argument> + <argument index="1" name="selectable" type="bool" default="true"> + </argument> + <description> + </description> + </method> <method name="add_item"> <argument index="0" name="text" type="String"> </argument> @@ -17136,99 +17357,81 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="add_icon_item"> - <argument index="0" name="icon" type="Texture"> - </argument> - <argument index="1" name="selectable" type="bool" default="true"> - </argument> + <method name="clear"> <description> </description> </method> - <method name="set_item_text"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="text" type="String"> - </argument> + <method name="ensure_current_is_visible"> <description> </description> </method> - <method name="get_item_text" qualifiers="const"> - <return type="String"> + <method name="get_allow_rmb_select" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> </description> </method> - <method name="set_item_icon"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="icon" type="Texture"> - </argument> + <method name="get_fixed_column_width" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_item_icon" qualifiers="const"> - <return type="Texture"> + <method name="get_fixed_icon_size" qualifiers="const"> + <return type="Vector2"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> </description> </method> - <method name="set_item_icon_region"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="rect" type="Rect2"> - </argument> + <method name="get_icon_mode" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_item_icon_region" qualifiers="const"> - <return type="Rect2"> + <method name="get_icon_scale" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> </description> </method> - <method name="set_item_selectable"> - <argument index="0" name="idx" type="int"> + <method name="get_item_at_pos" qualifiers="const"> + <return type="int"> + </return> + <argument index="0" name="pos" type="Vector2"> </argument> - <argument index="1" name="selectable" type="bool"> + <argument index="1" name="exact" type="bool" default="false"> </argument> <description> </description> </method> - <method name="is_item_selectable" qualifiers="const"> - <return type="bool"> + <method name="get_item_count" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> </description> </method> - <method name="set_item_disabled"> + <method name="get_item_custom_bg_color" qualifiers="const"> + <return type="Color"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="disabled" type="bool"> - </argument> <description> </description> </method> - <method name="is_item_disabled" qualifiers="const"> - <return type="bool"> + <method name="get_item_icon" qualifiers="const"> + <return type="Texture"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="set_item_metadata"> + <method name="get_item_icon_region" qualifiers="const"> + <return type="Rect2"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="metadata" type="Variant"> - </argument> <description> </description> </method> @@ -17238,53 +17441,49 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="set_item_custom_bg_color"> + <method name="get_item_text" qualifiers="const"> + <return type="String"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="custom_bg_color" type="Color"> - </argument> <description> </description> </method> - <method name="get_item_custom_bg_color" qualifiers="const"> - <return type="Color"> + <method name="get_item_tooltip" qualifiers="const"> + <return type="String"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="set_item_tooltip"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="tooltip" type="String"> - </argument> + <method name="get_max_columns" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_item_tooltip" qualifiers="const"> - <return type="String"> + <method name="get_max_text_lines" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> </description> </method> - <method name="select"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="single" type="bool" default="true"> - </argument> + <method name="get_select_mode" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="unselect"> + <method name="is_item_disabled" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="is_selected" qualifiers="const"> + <method name="is_item_selectable" qualifiers="const"> <return type="bool"> </return> <argument index="0" name="idx" type="int"> @@ -17292,148 +17491,162 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_item_count" qualifiers="const"> + <method name="is_same_column_width" qualifiers="const"> <return type="int"> </return> <description> </description> </method> - <method name="remove_item"> + <method name="is_selected" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="clear"> + <method name="remove_item"> + <argument index="0" name="idx" type="int"> + </argument> <description> </description> </method> - <method name="sort_items_by_text"> + <method name="select"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="single" type="bool" default="true"> + </argument> <description> </description> </method> - <method name="set_fixed_column_width"> - <argument index="0" name="width" type="int"> + <method name="set_allow_rmb_select"> + <argument index="0" name="allow" type="bool"> </argument> <description> </description> </method> - <method name="get_fixed_column_width" qualifiers="const"> - <return type="int"> - </return> + <method name="set_fixed_column_width"> + <argument index="0" name="width" type="int"> + </argument> <description> </description> </method> - <method name="set_same_column_width"> - <argument index="0" name="enable" type="bool"> + <method name="set_fixed_icon_size"> + <argument index="0" name="size" type="Vector2"> </argument> <description> </description> </method> - <method name="is_same_column_width" qualifiers="const"> - <return type="int"> - </return> + <method name="set_icon_mode"> + <argument index="0" name="mode" type="int"> + </argument> <description> </description> </method> - <method name="set_max_text_lines"> - <argument index="0" name="lines" type="int"> + <method name="set_icon_scale"> + <argument index="0" name="scale" type="float"> </argument> <description> </description> </method> - <method name="get_max_text_lines" qualifiers="const"> - <return type="int"> - </return> + <method name="set_item_custom_bg_color"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="custom_bg_color" type="Color"> + </argument> <description> </description> </method> - <method name="set_max_columns"> - <argument index="0" name="amount" type="int"> + <method name="set_item_disabled"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="disabled" type="bool"> </argument> <description> </description> </method> - <method name="get_max_columns" qualifiers="const"> - <return type="int"> - </return> + <method name="set_item_icon"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="icon" type="Texture"> + </argument> <description> </description> </method> - <method name="set_select_mode"> - <argument index="0" name="mode" type="int"> + <method name="set_item_icon_region"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="rect" type="Rect2"> </argument> <description> </description> </method> - <method name="get_select_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_item_metadata"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="metadata" type="Variant"> + </argument> <description> </description> </method> - <method name="set_icon_mode"> - <argument index="0" name="mode" type="int"> + <method name="set_item_selectable"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="selectable" type="bool"> </argument> <description> </description> </method> - <method name="get_icon_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_item_text"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="text" type="String"> + </argument> <description> </description> </method> - <method name="set_fixed_icon_size"> - <argument index="0" name="size" type="Vector2"> + <method name="set_item_tooltip"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="tooltip" type="String"> </argument> <description> </description> </method> - <method name="get_fixed_icon_size" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_max_columns"> + <argument index="0" name="amount" type="int"> + </argument> <description> </description> </method> - <method name="set_icon_scale"> - <argument index="0" name="scale" type="float"> + <method name="set_max_text_lines"> + <argument index="0" name="lines" type="int"> </argument> <description> </description> </method> - <method name="get_icon_scale" qualifiers="const"> - <return type="float"> - </return> + <method name="set_same_column_width"> + <argument index="0" name="enable" type="bool"> + </argument> <description> </description> </method> - <method name="set_allow_rmb_select"> - <argument index="0" name="allow" type="bool"> + <method name="set_select_mode"> + <argument index="0" name="mode" type="int"> </argument> <description> </description> </method> - <method name="get_allow_rmb_select" qualifiers="const"> - <return type="bool"> - </return> + <method name="sort_items_by_text"> <description> </description> </method> - <method name="get_item_at_pos" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="pos" type="Vector2"> - </argument> - <argument index="1" name="exact" type="bool" default="false"> + <method name="unselect"> + <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="ensure_current_is_visible"> - <description> - </description> - </method> </methods> <signals> <signal name="item_activated"> @@ -17442,25 +17655,25 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </signal> - <signal name="multi_selected"> + <signal name="item_rmb_selected"> <argument index="0" name="index" type="int"> </argument> - <argument index="1" name="selected" type="bool"> + <argument index="1" name="atpos" type="Vector2"> </argument> <description> </description> </signal> - <signal name="item_rmb_selected"> + <signal name="item_selected"> <argument index="0" name="index" type="int"> </argument> - <argument index="1" name="atpos" type="Vector2"> - </argument> <description> </description> </signal> - <signal name="item_selected"> + <signal name="multi_selected"> <argument index="0" name="index" type="int"> </argument> + <argument index="1" name="selected" type="bool"> + </argument> <description> </description> </signal> @@ -17476,33 +17689,33 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> </constants> <theme_items> - <theme_item name="vseparation" type="int"> - </theme_item> - <theme_item name="line_separation" type="int"> + <theme_item name="bg" type="StyleBox"> </theme_item> - <theme_item name="icon_margin" type="int"> + <theme_item name="bg_focus" type="StyleBox"> </theme_item> - <theme_item name="hseparation" type="int"> + <theme_item name="cursor" type="StyleBox"> </theme_item> - <theme_item name="guide_color" type="Color"> + <theme_item name="cursor_unfocused" type="StyleBox"> </theme_item> - <theme_item name="font_color_selected" type="Color"> + <theme_item name="font" type="Font"> </theme_item> <theme_item name="font_color" type="Color"> </theme_item> - <theme_item name="font" type="Font"> + <theme_item name="font_color_selected" type="Color"> </theme_item> - <theme_item name="cursor" type="StyleBox"> + <theme_item name="guide_color" type="Color"> </theme_item> - <theme_item name="selected_focus" type="StyleBox"> + <theme_item name="hseparation" type="int"> </theme_item> - <theme_item name="bg_focus" type="StyleBox"> + <theme_item name="icon_margin" type="int"> </theme_item> - <theme_item name="cursor_unfocused" type="StyleBox"> + <theme_item name="line_separation" type="int"> </theme_item> <theme_item name="selected" type="StyleBox"> </theme_item> - <theme_item name="bg" type="StyleBox"> + <theme_item name="selected_focus" type="StyleBox"> + </theme_item> + <theme_item name="vseparation" type="int"> </theme_item> </theme_items> </class> @@ -17512,9 +17725,9 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="set_node_a"> - <argument index="0" name="node" type="NodePath"> - </argument> + <method name="get_exclude_nodes_from_collision" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> @@ -17524,24 +17737,12 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="set_node_b"> - <argument index="0" name="node" type="NodePath"> - </argument> - <description> - </description> - </method> <method name="get_node_b" qualifiers="const"> <return type="NodePath"> </return> <description> </description> </method> - <method name="set_solver_priority"> - <argument index="0" name="priority" type="int"> - </argument> - <description> - </description> - </method> <method name="get_solver_priority" qualifiers="const"> <return type="int"> </return> @@ -17554,9 +17755,21 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_exclude_nodes_from_collision" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_node_a"> + <argument index="0" name="node" type="NodePath"> + </argument> + <description> + </description> + </method> + <method name="set_node_b"> + <argument index="0" name="node" type="NodePath"> + </argument> + <description> + </description> + </method> + <method name="set_solver_priority"> + <argument index="0" name="priority" type="int"> + </argument> <description> </description> </method> @@ -17572,25 +17785,23 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Base node for all joint constraints in 2D physics. Joints take 2 bodies and apply a custom constraint. </description> <methods> - <method name="set_node_a"> - <argument index="0" name="node" type="NodePath"> - </argument> + <method name="get_bias" qualifiers="const"> + <return type="float"> + </return> <description> - Set the path to the A node for the joint. Must be of type [PhysicsBody2D]. </description> </method> - <method name="get_node_a" qualifiers="const"> - <return type="NodePath"> + <method name="get_exclude_nodes_from_collision" qualifiers="const"> + <return type="bool"> </return> <description> - Return the path to the A node for the joint. </description> </method> - <method name="set_node_b"> - <argument index="0" name="node" type="NodePath"> - </argument> + <method name="get_node_a" qualifiers="const"> + <return type="NodePath"> + </return> <description> - Set the path to the B node for the joint. Must be of type [PhysicsBody2D]. + Return the path to the A node for the joint. </description> </method> <method name="get_node_b" qualifiers="const"> @@ -17606,22 +17817,24 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_bias" qualifiers="const"> - <return type="float"> - </return> + <method name="set_exclude_nodes_from_collision"> + <argument index="0" name="enable" type="bool"> + </argument> <description> </description> </method> - <method name="set_exclude_nodes_from_collision"> - <argument index="0" name="enable" type="bool"> + <method name="set_node_a"> + <argument index="0" name="node" type="NodePath"> </argument> <description> + Set the path to the A node for the joint. Must be of type [PhysicsBody2D]. </description> </method> - <method name="get_exclude_nodes_from_collision" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_node_b"> + <argument index="0" name="node" type="NodePath"> + </argument> <description> + Set the path to the B node for the joint. Must be of type [PhysicsBody2D]. </description> </method> </methods> @@ -17638,52 +17851,55 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Kinematic Characters: KinematicBody also has an api for moving objects (the [method move] method) while performing collision tests. This makes them really useful to implement characters that collide against a world, but that don't require advanced physics. </description> <methods> - <method name="move"> - <return type="Vector3"> + <method name="can_collide_with_character_bodies" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="rel_vec" type="Vector3"> - </argument> <description> - Move the body in the given direction, stopping if there is an obstacle. The returned vector is how much movement was remaining before being stopped. + Return if this body can collide with character bodies. </description> </method> - <method name="move_to"> - <return type="Vector3"> + <method name="can_collide_with_kinematic_bodies" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="position" type="Vector3"> - </argument> <description> - Move the body to the given position. This is not a teleport, and the body will stop if there is an obstacle. The returned vector is how much movement was remaining before being stopped. + Return if this body can collide with kinematic bodies. </description> </method> - <method name="can_teleport_to"> + <method name="can_collide_with_rigid_bodies" qualifiers="const"> <return type="bool"> </return> - <argument index="0" name="position" type="Vector3"> - </argument> <description> - Returns whether the KinematicBody can be teleported to the destination given as an argument, checking all collision shapes of the body against potential colliders at the destination. + Return if this body can collide with rigid bodies. </description> </method> - <method name="is_colliding" qualifiers="const"> + <method name="can_collide_with_static_bodies" qualifiers="const"> <return type="bool"> </return> <description> - Return whether the body is colliding with another. + Return if this body can collide with static bodies. </description> </method> - <method name="get_collision_pos" qualifiers="const"> - <return type="Vector3"> + <method name="can_teleport_to"> + <return type="bool"> </return> + <argument index="0" name="position" type="Vector3"> + </argument> <description> - Return the point in space where the body is touching another. If there is no collision, this method will return (0,0,0), so collisions must be checked first with [method is_colliding]. + Returns whether the KinematicBody can be teleported to the destination given as an argument, checking all collision shapes of the body against potential colliders at the destination. </description> </method> - <method name="get_collision_normal" qualifiers="const"> - <return type="Vector3"> + <method name="get_collider" qualifiers="const"> + <return type="Object"> </return> <description> - Return the normal of the surface the body collided with. This is useful to implement sliding along a surface. + Return the body that collided with this one. + </description> + </method> + <method name="get_collider_shape" qualifiers="const"> + <return type="int"> + </return> + <description> + Return the shape index from the body that collided with this one. If there is no collision, this method will return 0, so collisions must be checked first with [method is_colliding]. </description> </method> <method name="get_collider_velocity" qualifiers="const"> @@ -17693,74 +17909,78 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the velocity of the body that collided with this one. </description> </method> - <method name="get_collider" qualifiers="const"> - <return type="Object"> + <method name="get_collision_margin" qualifiers="const"> + <return type="float"> </return> <description> - Return the body that collided with this one. + Return the collision margin for this object. </description> </method> - <method name="get_collider_shape" qualifiers="const"> - <return type="int"> + <method name="get_collision_normal" qualifiers="const"> + <return type="Vector3"> </return> <description> - Return the shape index from the body that collided with this one. If there is no collision, this method will return 0, so collisions must be checked first with [method is_colliding]. + Return the normal of the surface the body collided with. This is useful to implement sliding along a surface. </description> </method> - <method name="set_collide_with_static_bodies"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_collision_pos" qualifiers="const"> + <return type="Vector3"> + </return> <description> - Set if this body should collide with static bodies. + Return the point in space where the body is touching another. If there is no collision, this method will return (0,0,0), so collisions must be checked first with [method is_colliding]. </description> </method> - <method name="can_collide_with_static_bodies" qualifiers="const"> + <method name="is_colliding" qualifiers="const"> <return type="bool"> </return> <description> - Return if this body can collide with static bodies. + Return whether the body is colliding with another. </description> </method> - <method name="set_collide_with_kinematic_bodies"> - <argument index="0" name="enable" type="bool"> + <method name="move"> + <return type="Vector3"> + </return> + <argument index="0" name="rel_vec" type="Vector3"> </argument> <description> - Set if this body should collide with kinematic bodies. + Move the body in the given direction, stopping if there is an obstacle. The returned vector is how much movement was remaining before being stopped. </description> </method> - <method name="can_collide_with_kinematic_bodies" qualifiers="const"> - <return type="bool"> + <method name="move_to"> + <return type="Vector3"> </return> + <argument index="0" name="position" type="Vector3"> + </argument> <description> - Return if this body can collide with kinematic bodies. + Move the body to the given position. This is not a teleport, and the body will stop if there is an obstacle. The returned vector is how much movement was remaining before being stopped. </description> </method> - <method name="set_collide_with_rigid_bodies"> + <method name="set_collide_with_character_bodies"> <argument index="0" name="enable" type="bool"> </argument> <description> - Set if this body should collide with rigid bodies. + Set if this body should collide with character bodies. </description> </method> - <method name="can_collide_with_rigid_bodies" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_collide_with_kinematic_bodies"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Return if this body can collide with rigid bodies. + Set if this body should collide with kinematic bodies. </description> </method> - <method name="set_collide_with_character_bodies"> + <method name="set_collide_with_rigid_bodies"> <argument index="0" name="enable" type="bool"> </argument> <description> - Set if this body should collide with character bodies. + Set if this body should collide with rigid bodies. </description> </method> - <method name="can_collide_with_character_bodies" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_collide_with_static_bodies"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Return if this body can collide with character bodies. + Set if this body should collide with static bodies. </description> </method> <method name="set_collision_margin"> @@ -17770,13 +17990,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Set the collision margin for this object. A collision margin is an amount that all shapes will grow when computing collisions, to account for numerical imprecision. </description> </method> - <method name="get_collision_margin" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the collision margin for this object. - </description> - </method> </methods> <constants> </constants> @@ -17791,50 +18004,46 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Kinematic Characters: KinematicBody2D also has an api for moving objects (the [method move] method) while performing collision tests. This makes them really useful to implement characters that collide against a world, but that don't require advanced physics. </description> <methods> - <method name="move"> - <return type="Vector2"> + <method name="get_collider" qualifiers="const"> + <return type="Object"> </return> - <argument index="0" name="rel_vec" type="Vector2"> - </argument> <description> - Move the body in the given direction, stopping if there is an obstacle. The returned vector is how much movement was remaining before being stopped. + Return the body that collided with this one. </description> </method> - <method name="move_to"> - <return type="Vector2"> + <method name="get_collider_metadata" qualifiers="const"> + <return type="Variant"> </return> - <argument index="0" name="position" type="Vector2"> - </argument> <description> - Move the body to the given position. This is not a teleport, and the body will stop if there is an obstacle. The returned vector is how much movement was remaining before being stopped. + Return the metadata of the shape that collided with this body. If there is no collision, it will return 0, so collisions must be checked first with [method is_colliding]. Additionally, this metadata can not be set with [method Object.set_meta], it must be set with [method Physics2DServer.body_set_shape_metadata]. </description> </method> - <method name="test_move"> - <return type="bool"> + <method name="get_collider_shape" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="rel_vec" type="Vector2"> - </argument> <description> - Return true if there would be a collision if the body moved in the given direction. + Return the shape index from the body that collided with this one. If there is no collision, this method will return 0, so collisions must be checked first with [method is_colliding]. </description> </method> - <method name="get_travel" qualifiers="const"> + <method name="get_collider_velocity" qualifiers="const"> <return type="Vector2"> </return> <description> - Return the last movement done by the body. + Return the velocity of the body that collided with this one. </description> </method> - <method name="revert_motion"> + <method name="get_collision_margin" qualifiers="const"> + <return type="float"> + </return> <description> - Undo the last movement done by the body. + Return the collision margin for this object. </description> </method> - <method name="is_colliding" qualifiers="const"> - <return type="bool"> + <method name="get_collision_normal" qualifiers="const"> + <return type="Vector2"> </return> <description> - Return whether the body is colliding with another. + Return the normal of the surface the body collided with. This is useful to implement sliding along a surface. </description> </method> <method name="get_collision_pos" qualifiers="const"> @@ -17844,39 +18053,41 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the point in space where the body is touching another. If there is no collision, this method will return (0,0), so collisions must be checked first with [method is_colliding]. </description> </method> - <method name="get_collision_normal" qualifiers="const"> + <method name="get_travel" qualifiers="const"> <return type="Vector2"> </return> <description> - Return the normal of the surface the body collided with. This is useful to implement sliding along a surface. + Return the last movement done by the body. </description> </method> - <method name="get_collider_velocity" qualifiers="const"> - <return type="Vector2"> + <method name="is_colliding" qualifiers="const"> + <return type="bool"> </return> <description> - Return the velocity of the body that collided with this one. + Return whether the body is colliding with another. </description> </method> - <method name="get_collider" qualifiers="const"> - <return type="Object"> + <method name="move"> + <return type="Vector2"> </return> + <argument index="0" name="rel_vec" type="Vector2"> + </argument> <description> - Return the body that collided with this one. + Move the body in the given direction, stopping if there is an obstacle. The returned vector is how much movement was remaining before being stopped. </description> </method> - <method name="get_collider_shape" qualifiers="const"> - <return type="int"> + <method name="move_to"> + <return type="Vector2"> </return> + <argument index="0" name="position" type="Vector2"> + </argument> <description> - Return the shape index from the body that collided with this one. If there is no collision, this method will return 0, so collisions must be checked first with [method is_colliding]. + Move the body to the given position. This is not a teleport, and the body will stop if there is an obstacle. The returned vector is how much movement was remaining before being stopped. </description> </method> - <method name="get_collider_metadata" qualifiers="const"> - <return type="Variant"> - </return> + <method name="revert_motion"> <description> - Return the metadata of the shape that collided with this body. If there is no collision, it will return 0, so collisions must be checked first with [method is_colliding]. Additionally, this metadata can not be set with [method Object.set_meta], it must be set with [method Physics2DServer.body_set_shape_metadata]. + Undo the last movement done by the body. </description> </method> <method name="set_collision_margin"> @@ -17886,11 +18097,13 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Set the collision margin for this object. A collision margin is an amount (in pixels) that all shapes will grow when computing collisions, to account for numerical imprecision. </description> </method> - <method name="get_collision_margin" qualifiers="const"> - <return type="float"> + <method name="test_move"> + <return type="bool"> </return> + <argument index="0" name="rel_vec" type="Vector2"> + </argument> <description> - Return the collision margin for this object. + Return true if there would be a collision if the body moved in the given direction. </description> </method> </methods> @@ -17905,39 +18118,46 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Label is a control that displays formatted text, optionally autowrapping it to the [Control] area. It inherits from range to be able to scroll wrapped text vertically. </description> <methods> - <method name="set_align"> - <argument index="0" name="align" type="int"> - </argument> + <method name="get_align" qualifiers="const"> + <return type="int"> + </return> <description> - Sets the alignment mode to any of the ALIGN_* enumeration values. + Return the alignment mode (any of the ALIGN_* enumeration values). </description> </method> - <method name="get_align" qualifiers="const"> + <method name="get_line_count" qualifiers="const"> <return type="int"> </return> <description> - Return the alignment mode (any of the ALIGN_* enumeration values). + Return the amount of lines. </description> </method> - <method name="set_valign"> - <argument index="0" name="valign" type="int"> - </argument> + <method name="get_line_height" qualifiers="const"> + <return type="int"> + </return> <description> - Sets the vertical alignment mode to any of the VALIGN_* enumeration values. + Return the height of a line. </description> </method> - <method name="get_valign" qualifiers="const"> + <method name="get_lines_skipped" qualifiers="const"> <return type="int"> </return> <description> - Return the vertical alignment mode (any of the VALIGN_* enumeration values). + Return the the number of lines to skipped before displaying. </description> </method> - <method name="set_text"> - <argument index="0" name="text" type="String"> - </argument> + <method name="get_max_lines_visible" qualifiers="const"> + <return type="int"> + </return> <description> - Set the label text. Text can contain newlines. + Return the restricted number of lines to display. Returns -1 if unrestricted. + </description> + </method> + <method name="get_percent_visible" qualifiers="const"> + <return type="float"> + </return> + <description> + Return the restricted number of characters to display (as a percentage of the total text). </description> </method> <method name="get_text" qualifiers="const"> @@ -17947,39 +18167,39 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the label text. Text can contain newlines. </description> </method> - <method name="set_autowrap"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_total_character_count" qualifiers="const"> + <return type="int"> + </return> <description> - Set [i]autowrap[/i] mode. When enabled, autowrap will fit text to the control width, breaking sentences when they exceed the available horizontal space. When disabled, the label minimum width becomes the width of the longest row, and the minimum height large enough to fit all rows. + Return the total length of the text. </description> </method> - <method name="has_autowrap" qualifiers="const"> - <return type="bool"> + <method name="get_valign" qualifiers="const"> + <return type="int"> </return> <description> - Return the state of the [i]autowrap[/i] mode (see [method set_autowrap]). + Return the vertical alignment mode (any of the VALIGN_* enumeration values). </description> </method> - <method name="set_clip_text"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_visible_characters" qualifiers="const"> + <return type="int"> + </return> <description> - Cuts off the rest of the text if it is too wide. + Return the restricted number of characters to display. Returns -1 if unrestricted. </description> </method> - <method name="is_clipping_text" qualifiers="const"> + <method name="has_autowrap" qualifiers="const"> <return type="bool"> </return> <description> - Return true if text would be cut off if it is too wide. + Return the state of the [i]autowrap[/i] mode (see [method set_autowrap]). </description> </method> - <method name="set_uppercase"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="is_clipping_text" qualifiers="const"> + <return type="bool"> + </return> <description> - Display text in all capitals. + Return true if text would be cut off if it is too wide. </description> </method> <method name="is_uppercase" qualifiers="const"> @@ -17989,39 +18209,39 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return true if text is displayed in all capitals. </description> </method> - <method name="get_line_height" qualifiers="const"> - <return type="int"> - </return> + <method name="set_align"> + <argument index="0" name="align" type="int"> + </argument> <description> - Return the height of a line. + Sets the alignment mode to any of the ALIGN_* enumeration values. </description> </method> - <method name="get_line_count" qualifiers="const"> - <return type="int"> - </return> + <method name="set_autowrap"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Return the amount of lines. + Set [i]autowrap[/i] mode. When enabled, autowrap will fit text to the control width, breaking sentences when they exceed the available horizontal space. When disabled, the label minimum width becomes the width of the longest row, and the minimum height large enough to fit all rows. </description> </method> - <method name="get_total_character_count" qualifiers="const"> - <return type="int"> - </return> + <method name="set_clip_text"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Return the total length of the text. + Cuts off the rest of the text if it is too wide. </description> </method> - <method name="set_visible_characters"> - <argument index="0" name="amount" type="int"> + <method name="set_lines_skipped"> + <argument index="0" name="lines_skipped" type="int"> </argument> <description> - Restricts the number of characters to display. Set to -1 to disable. + Sets the number of lines to skip before displaying. Useful for scrolling text. </description> </method> - <method name="get_visible_characters" qualifiers="const"> - <return type="int"> - </return> + <method name="set_max_lines_visible"> + <argument index="0" name="lines_visible" type="int"> + </argument> <description> - Return the restricted number of characters to display. Returns -1 if unrestricted. + Restricts the number of lines to display. Set to -1 to disable. </description> </method> <method name="set_percent_visible"> @@ -18031,39 +18251,32 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Restricts the number of characters to display (as a percentage of the total text). </description> </method> - <method name="get_percent_visible" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the restricted number of characters to display (as a percentage of the total text). - </description> - </method> - <method name="set_lines_skipped"> - <argument index="0" name="lines_skipped" type="int"> + <method name="set_text"> + <argument index="0" name="text" type="String"> </argument> <description> - Sets the number of lines to skip before displaying. Useful for scrolling text. + Set the label text. Text can contain newlines. </description> </method> - <method name="get_lines_skipped" qualifiers="const"> - <return type="int"> - </return> + <method name="set_uppercase"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Return the the number of lines to skipped before displaying. + Display text in all capitals. </description> </method> - <method name="set_max_lines_visible"> - <argument index="0" name="lines_visible" type="int"> + <method name="set_valign"> + <argument index="0" name="valign" type="int"> </argument> <description> - Restricts the number of lines to display. Set to -1 to disable. + Sets the vertical alignment mode to any of the VALIGN_* enumeration values. </description> </method> - <method name="get_max_lines_visible" qualifiers="const"> - <return type="int"> - </return> + <method name="set_visible_characters"> + <argument index="0" name="amount" type="int"> + </argument> <description> - Return the restricted number of lines to display. Returns -1 if unrestricted. + Restricts the number of characters to display. Set to -1 to disable. </description> </method> </methods> @@ -18094,19 +18307,19 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> </constants> <theme_items> - <theme_item name="shadow_offset_x" type="int"> + <theme_item name="font" type="Font"> </theme_item> - <theme_item name="line_spacing" type="int"> + <theme_item name="font_color" type="Color"> </theme_item> - <theme_item name="shadow_offset_y" type="int"> + <theme_item name="font_color_shadow" type="Color"> </theme_item> - <theme_item name="shadow_as_outline" type="int"> + <theme_item name="line_spacing" type="int"> </theme_item> - <theme_item name="font_color" type="Color"> + <theme_item name="shadow_as_outline" type="int"> </theme_item> - <theme_item name="font_color_shadow" type="Color"> + <theme_item name="shadow_offset_x" type="int"> </theme_item> - <theme_item name="font" type="Font"> + <theme_item name="shadow_offset_y" type="int"> </theme_item> </theme_items> </class> @@ -18130,31 +18343,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Add another [Texture] to this [LargeTexture], starting on offset "ofs". </description> </method> - <method name="set_piece_offset"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="ofs" type="Vector2"> - </argument> - <description> - Set the offset of the piece with index "idx" to "ofs". - </description> - </method> - <method name="set_piece_texture"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="texture" type="Texture"> - </argument> - <description> - Set the [Texture] of the piece with index "idx" to "ofs". - </description> - </method> - <method name="set_size"> - <argument index="0" name="size" type="Vector2"> - </argument> - <description> - Set the size of this [LargeTexture]. - </description> - </method> <method name="clear"> <description> Clear the [LargeTexture]. @@ -18185,6 +18373,31 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the [Texture] of the piece with index "idx". </description> </method> + <method name="set_piece_offset"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="ofs" type="Vector2"> + </argument> + <description> + Set the offset of the piece with index "idx" to "ofs". + </description> + </method> + <method name="set_piece_texture"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="texture" type="Texture"> + </argument> + <description> + Set the [Texture] of the piece with index "idx" to "ofs". + </description> + </method> + <method name="set_size"> + <argument index="0" name="size" type="Vector2"> + </argument> + <description> + Set the size of this [LargeTexture]. + </description> + </method> </methods> <constants> </constants> @@ -18197,41 +18410,37 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Light is the abstract base class for light nodes, so it shouldn't be used directly (It can't be instanced). Other types of light nodes inherit from it. Light contains the common variables and parameters used for lighting. </description> <methods> - <method name="set_parameter"> - <argument index="0" name="variable" type="int"> - </argument> - <argument index="1" name="value" type="float"> - </argument> + <method name="get_bake_mode" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_parameter" qualifiers="const"> - <return type="float"> + <method name="get_color" qualifiers="const"> + <return type="Color"> </return> - <argument index="0" name="variable" type="int"> + <argument index="0" name="color" type="int"> </argument> <description> </description> </method> - <method name="set_color"> - <argument index="0" name="color" type="int"> - </argument> - <argument index="1" name="value" type="Color"> - </argument> + <method name="get_operator" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_color" qualifiers="const"> - <return type="Color"> + <method name="get_parameter" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="color" type="int"> + <argument index="0" name="variable" type="int"> </argument> <description> </description> </method> - <method name="set_project_shadows"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_projector" qualifiers="const"> + <return type="Texture"> + </return> <description> </description> </method> @@ -18241,93 +18450,97 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="set_projector"> - <argument index="0" name="projector" type="Texture"> - </argument> + <method name="is_editor_only" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="get_projector" qualifiers="const"> - <return type="Texture"> + <method name="is_enabled" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="set_operator"> - <argument index="0" name="operator" type="int"> + <method name="set_bake_mode"> + <argument index="0" name="bake_mode" type="int"> </argument> <description> </description> </method> - <method name="get_operator" qualifiers="const"> - <return type="int"> - </return> + <method name="set_color"> + <argument index="0" name="color" type="int"> + </argument> + <argument index="1" name="value" type="Color"> + </argument> <description> </description> </method> - <method name="set_bake_mode"> - <argument index="0" name="bake_mode" type="int"> + <method name="set_editor_only"> + <argument index="0" name="editor_only" type="bool"> </argument> <description> </description> </method> - <method name="get_bake_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_enabled"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> </description> </method> - <method name="set_enabled"> - <argument index="0" name="enabled" type="bool"> + <method name="set_operator"> + <argument index="0" name="operator" type="int"> </argument> <description> </description> </method> - <method name="is_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_parameter"> + <argument index="0" name="variable" type="int"> + </argument> + <argument index="1" name="value" type="float"> + </argument> <description> </description> </method> - <method name="set_editor_only"> - <argument index="0" name="editor_only" type="bool"> + <method name="set_project_shadows"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="is_editor_only" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_projector"> + <argument index="0" name="projector" type="Texture"> + </argument> <description> </description> </method> </methods> <constants> - <constant name="PARAM_RADIUS" value="2"> + <constant name="BAKE_MODE_DISABLED" value="0"> </constant> - <constant name="PARAM_ENERGY" value="3"> + <constant name="BAKE_MODE_INDIRECT" value="1"> </constant> - <constant name="PARAM_ATTENUATION" value="4"> + <constant name="BAKE_MODE_INDIRECT_AND_SHADOWS" value="2"> </constant> - <constant name="PARAM_SPOT_ANGLE" value="1"> + <constant name="BAKE_MODE_FULL" value="3"> </constant> - <constant name="PARAM_SPOT_ATTENUATION" value="0"> + <constant name="COLOR_DIFFUSE" value="0"> </constant> - <constant name="PARAM_SHADOW_DARKENING" value="5"> + <constant name="COLOR_SPECULAR" value="1"> </constant> - <constant name="PARAM_SHADOW_Z_OFFSET" value="6"> + <constant name="PARAM_SPOT_ATTENUATION" value="0"> </constant> - <constant name="COLOR_DIFFUSE" value="0"> + <constant name="PARAM_SPOT_ANGLE" value="1"> </constant> - <constant name="COLOR_SPECULAR" value="1"> + <constant name="PARAM_RADIUS" value="2"> </constant> - <constant name="BAKE_MODE_DISABLED" value="0"> + <constant name="PARAM_ENERGY" value="3"> </constant> - <constant name="BAKE_MODE_INDIRECT" value="1"> + <constant name="PARAM_ATTENUATION" value="4"> </constant> - <constant name="BAKE_MODE_INDIRECT_AND_SHADOWS" value="2"> + <constant name="PARAM_SHADOW_DARKENING" value="5"> </constant> - <constant name="BAKE_MODE_FULL" value="3"> + <constant name="PARAM_SHADOW_Z_OFFSET" value="6"> </constant> </constants> </class> @@ -18339,95 +18552,95 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Node that casts light in a 2D environment. Light is defined by a (usually grayscale) texture, a color, an energy value, a mode (see constants), and various other parameters (range and shadows-related). Note that Light2D can be used as a mask. </description> <methods> - <method name="set_enabled"> - <argument index="0" name="enabled" type="bool"> - </argument> + <method name="get_color" qualifiers="const"> + <return type="Color"> + </return> <description> - Switches the Light2D on or off, depending on the 'enabled' parameter. + Return the color of the Light2D. </description> </method> - <method name="is_enabled" qualifiers="const"> - <return type="bool"> + <method name="get_energy" qualifiers="const"> + <return type="float"> </return> <description> - Return true if the Light2D is enabled, false if it is not. + Return the energy value of the Light2D. </description> </method> - <method name="set_texture"> - <argument index="0" name="texture" type="Object"> - </argument> + <method name="get_height" qualifiers="const"> + <return type="float"> + </return> <description> - Set the texture of the Light2D. + Return the height of the Light2D. Used with 2D normalmapping. </description> </method> - <method name="get_texture" qualifiers="const"> - <return type="Object"> + <method name="get_item_mask" qualifiers="const"> + <return type="int"> </return> <description> - Return the texture of the Light2D. + Return the item mask of the Light2D. </description> </method> - <method name="set_texture_offset"> - <argument index="0" name="texture_offset" type="Vector2"> - </argument> + <method name="get_item_shadow_mask" qualifiers="const"> + <return type="int"> + </return> <description> - Set the offset of the light texture. + Return the item shadow mask of the Light2D. </description> </method> - <method name="get_texture_offset" qualifiers="const"> - <return type="Vector2"> + <method name="get_layer_range_max" qualifiers="const"> + <return type="int"> </return> <description> - Return the offset of the light texture. + Set the maximum layer value of objects of the scene that are affected by the Light2D. </description> </method> - <method name="set_color"> - <argument index="0" name="color" type="Color"> - </argument> + <method name="get_layer_range_min" qualifiers="const"> + <return type="int"> + </return> <description> - Set the color of the Light2D. + Get the minimum layer value of objects of the scene that are affected by the Light2D. </description> </method> - <method name="get_color" qualifiers="const"> - <return type="Color"> + <method name="get_mode" qualifiers="const"> + <return type="int"> </return> <description> - Return the color of the Light2D. + Return the current mode set to the Light2D. </description> </method> - <method name="set_height"> - <argument index="0" name="height" type="float"> - </argument> + <method name="get_shadow_buffer_size" qualifiers="const"> + <return type="int"> + </return> <description> - Set the height of the Light2D. Used with 2D normalmapping. + Return the shadow buffer size. </description> </method> - <method name="get_height" qualifiers="const"> - <return type="float"> + <method name="get_shadow_color" qualifiers="const"> + <return type="Color"> </return> <description> - Return the height of the Light2D. Used with 2D normalmapping. + Return the color of casted shadows for this Light2D. </description> </method> - <method name="set_energy"> - <argument index="0" name="energy" type="float"> - </argument> + <method name="get_shadow_esm_multiplier" qualifiers="const"> + <return type="float"> + </return> <description> - Set the energy value of the Light2D. The bigger the value, the stronger the light. + Return the Exponential Shadow Multiplier (ESM) value of the Light2D. </description> </method> - <method name="get_energy" qualifiers="const"> - <return type="float"> + <method name="get_texture" qualifiers="const"> + <return type="Object"> </return> <description> - Return the energy value of the Light2D. + Return the texture of the Light2D. </description> </method> - <method name="set_texture_scale"> - <argument index="0" name="texture_scale" type="float"> - </argument> + <method name="get_texture_offset" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Set the scale value of the light texture. + Return the offset of the light texture. </description> </method> <method name="get_texture_scale" qualifiers="const"> @@ -18437,11 +18650,11 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the scale value of the light texture. </description> </method> - <method name="set_z_range_min"> - <argument index="0" name="z" type="int"> - </argument> + <method name="get_z_range_max" qualifiers="const"> + <return type="int"> + </return> <description> - Set the minimum Z value that objects of the scene have to be in order to be affected by the Light2D. + Get the maximum Z value that objects of the scene can be in order to be affected by the Light2D. </description> </method> <method name="get_z_range_min" qualifiers="const"> @@ -18451,46 +18664,46 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Get the minimum Z value that objects of the scene have to be in order to be affected by the Light2D. </description> </method> - <method name="set_z_range_max"> - <argument index="0" name="z" type="int"> - </argument> + <method name="is_enabled" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the maximum Z value that objects of the scene can be in order to be affected by the Light2D. + Return true if the Light2D is enabled, false if it is not. </description> </method> - <method name="get_z_range_max" qualifiers="const"> - <return type="int"> + <method name="is_shadow_enabled" qualifiers="const"> + <return type="bool"> </return> <description> - Get the maximum Z value that objects of the scene can be in order to be affected by the Light2D. + Return true if shadow casting is enabled for this Light2D, else return false. </description> </method> - <method name="set_layer_range_min"> - <argument index="0" name="layer" type="int"> + <method name="set_color"> + <argument index="0" name="color" type="Color"> </argument> <description> - Set the minimum layer value of objects of the scene that are affected by the Light2D. + Set the color of the Light2D. </description> </method> - <method name="get_layer_range_min" qualifiers="const"> - <return type="int"> - </return> + <method name="set_enabled"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> - Get the minimum layer value of objects of the scene that are affected by the Light2D. + Switches the Light2D on or off, depending on the 'enabled' parameter. </description> </method> - <method name="set_layer_range_max"> - <argument index="0" name="layer" type="int"> + <method name="set_energy"> + <argument index="0" name="energy" type="float"> </argument> <description> - Set the maximum layer value of objects of the scene that are affected by the Light2D. + Set the energy value of the Light2D. The bigger the value, the stronger the light. </description> </method> - <method name="get_layer_range_max" qualifiers="const"> - <return type="int"> - </return> + <method name="set_height"> + <argument index="0" name="height" type="float"> + </argument> <description> - Set the maximum layer value of objects of the scene that are affected by the Light2D. + Set the height of the Light2D. Used with 2D normalmapping. </description> </method> <method name="set_item_mask"> @@ -18500,13 +18713,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Set the item mask of the Light2D to 'item_mask' value. </description> </method> - <method name="get_item_mask" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the item mask of the Light2D. - </description> - </method> <method name="set_item_shadow_mask"> <argument index="0" name="item_shadow_mask" type="int"> </argument> @@ -18514,11 +18720,18 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Set the item shadow mask to 'item_shadow_mask' value. </description> </method> - <method name="get_item_shadow_mask" qualifiers="const"> - <return type="int"> - </return> + <method name="set_layer_range_max"> + <argument index="0" name="layer" type="int"> + </argument> <description> - Return the item shadow mask of the Light2D. + Set the maximum layer value of objects of the scene that are affected by the Light2D. + </description> + </method> + <method name="set_layer_range_min"> + <argument index="0" name="layer" type="int"> + </argument> + <description> + Set the minimum layer value of objects of the scene that are affected by the Light2D. </description> </method> <method name="set_mode"> @@ -18528,67 +18741,67 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Set the behaviour mode of the Light2D. Use constants defined in the constants section. </description> </method> - <method name="get_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_shadow_buffer_size"> + <argument index="0" name="size" type="int"> + </argument> <description> - Return the current mode set to the Light2D. + Set the shadow buffer size. </description> </method> - <method name="set_shadow_enabled"> - <argument index="0" name="enabled" type="bool"> + <method name="set_shadow_color"> + <argument index="0" name="shadow_color" type="Color"> </argument> <description> - Enable or disable shadows casting from this Light2D according to the 'enabled' parameter. + Set the color of casted shadows for this Light2D. </description> </method> - <method name="is_shadow_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_shadow_enabled"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> - Return true if shadow casting is enabled for this Light2D, else return false. + Enable or disable shadows casting from this Light2D according to the 'enabled' parameter. </description> </method> - <method name="set_shadow_buffer_size"> - <argument index="0" name="size" type="int"> + <method name="set_shadow_esm_multiplier"> + <argument index="0" name="multiplier" type="float"> </argument> <description> - Set the shadow buffer size. + Set the Exponential Shadow Multiplier (ESM) value of the Light2D. </description> </method> - <method name="get_shadow_buffer_size" qualifiers="const"> - <return type="int"> - </return> + <method name="set_texture"> + <argument index="0" name="texture" type="Object"> + </argument> <description> - Return the shadow buffer size. + Set the texture of the Light2D. </description> </method> - <method name="set_shadow_esm_multiplier"> - <argument index="0" name="multiplier" type="float"> + <method name="set_texture_offset"> + <argument index="0" name="texture_offset" type="Vector2"> </argument> <description> - Set the Exponential Shadow Multiplier (ESM) value of the Light2D. + Set the offset of the light texture. </description> </method> - <method name="get_shadow_esm_multiplier" qualifiers="const"> - <return type="float"> - </return> + <method name="set_texture_scale"> + <argument index="0" name="texture_scale" type="float"> + </argument> <description> - Return the Exponential Shadow Multiplier (ESM) value of the Light2D. + Set the scale value of the light texture. </description> </method> - <method name="set_shadow_color"> - <argument index="0" name="shadow_color" type="Color"> + <method name="set_z_range_max"> + <argument index="0" name="z" type="int"> </argument> <description> - Set the color of casted shadows for this Light2D. + Set the maximum Z value that objects of the scene can be in order to be affected by the Light2D. </description> </method> - <method name="get_shadow_color" qualifiers="const"> - <return type="Color"> - </return> + <method name="set_z_range_min"> + <argument index="0" name="z" type="int"> + </argument> <description> - Return the color of casted shadows for this Light2D. + Set the minimum Z value that objects of the scene have to be in order to be affected by the Light2D. </description> </method> </methods> @@ -18615,11 +18828,11 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Occludes light cast by a Light2D, thus casting shadows. The LightOccluder2D must be provided with a shape (see OccluderPolygon2D) that allows the shadow to be computed. This shape affects the resulting shadow, while the shape of the representating asset shadowed does not actually affect shadows. </description> <methods> - <method name="set_occluder_polygon"> - <argument index="0" name="polygon" type="OccluderPolygon2D"> - </argument> + <method name="get_occluder_light_mask" qualifiers="const"> + <return type="int"> + </return> <description> - Set the OccluderPolygon2D that defines the LightOccluder2D. + Return the light mask of the LightOccluder2D. </description> </method> <method name="get_occluder_polygon" qualifiers="const"> @@ -18636,11 +18849,11 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Set the LightOccluder2D light mask. The LightOccluder2D will cast shadows only from Light2Ds that belong to the same light mask(s). </description> </method> - <method name="get_occluder_light_mask" qualifiers="const"> - <return type="int"> - </return> + <method name="set_occluder_polygon"> + <argument index="0" name="polygon" type="OccluderPolygon2D"> + </argument> <description> - Return the light mask of the LightOccluder2D. + Set the OccluderPolygon2D that defines the LightOccluder2D. </description> </method> </methods> @@ -18655,10 +18868,16 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) LineEdit provides a single line string editor, used for text fields. </description> <methods> - <method name="set_align"> - <argument index="0" name="align" type="int"> + <method name="append_at_cursor"> + <argument index="0" name="text" type="String"> </argument> <description> + Append text at cursor, scrolling the [LineEdit] when needed. + </description> + </method> + <method name="clear"> + <description> + Clear the [LineEdit] text. </description> </method> <method name="get_align" qualifiers="const"> @@ -18667,21 +18886,24 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="clear"> + <method name="get_cursor_pos" qualifiers="const"> + <return type="int"> + </return> <description> - Clear the [LineEdit] text. + Return the cursor position inside the [LineEdit]. </description> </method> - <method name="select_all"> + <method name="get_max_length" qualifiers="const"> + <return type="int"> + </return> <description> - Select the whole string. + Return the maximum amount of characters the [LineEdit] can edit. If 0 is returned, no limit exists. </description> </method> - <method name="set_text"> - <argument index="0" name="text" type="String"> - </argument> + <method name="get_menu" qualifiers="const"> + <return type="PopupMenu"> + </return> <description> - Set the text in the [LineEdit], clearing the existing one and the selection. </description> </method> <method name="get_text" qualifiers="const"> @@ -18691,103 +18913,94 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the text in the [LineEdit]. </description> </method> - <method name="set_cursor_pos"> - <argument index="0" name="pos" type="int"> - </argument> + <method name="is_editable" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the cursor position inside the [LineEdit], causing it to scroll if needed. + Return the [i]editable[/i] status of the [LineEdit] (see [method set_editable]). </description> </method> - <method name="get_cursor_pos" qualifiers="const"> - <return type="int"> + <method name="is_secret" qualifiers="const"> + <return type="bool"> </return> <description> - Return the cursor position inside the [LineEdit]. + Return the [i]secret[/i] status of the [LineEdit] (see [method set_secret]). </description> </method> - <method name="set_max_length"> - <argument index="0" name="chars" type="int"> + <method name="menu_option"> + <argument index="0" name="option" type="int"> </argument> <description> - Set the maximum amount of characters the [LineEdit] can edit, and cropping existing text in case it exceeds that limit. Setting 0 removes the limit. </description> </method> - <method name="get_max_length" qualifiers="const"> - <return type="int"> - </return> + <method name="select"> + <argument index="0" name="from" type="int" default="0"> + </argument> + <argument index="1" name="to" type="int" default="-1"> + </argument> <description> - Return the maximum amount of characters the [LineEdit] can edit. If 0 is returned, no limit exists. </description> </method> - <method name="append_at_cursor"> - <argument index="0" name="text" type="String"> - </argument> + <method name="select_all"> <description> - Append text at cursor, scrolling the [LineEdit] when needed. + Select the whole string. </description> </method> - <method name="set_editable"> - <argument index="0" name="enabled" type="bool"> + <method name="set_align"> + <argument index="0" name="align" type="int"> </argument> <description> - Set the [i]editable[/i] status of the [LineEdit]. When disabled, existing text can't be modified and new text can't be added. </description> </method> - <method name="is_editable" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_cursor_pos"> + <argument index="0" name="pos" type="int"> + </argument> <description> - Return the [i]editable[/i] status of the [LineEdit] (see [method set_editable]). + Set the cursor position inside the [LineEdit], causing it to scroll if needed. </description> </method> - <method name="set_secret"> + <method name="set_editable"> <argument index="0" name="enabled" type="bool"> </argument> <description> - Set the [i]secret[/i] status of the [LineEdit]. When enabled, every character is displayed as "*". - </description> - </method> - <method name="is_secret" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return the [i]secret[/i] status of the [LineEdit] (see [method set_secret]). + Set the [i]editable[/i] status of the [LineEdit]. When disabled, existing text can't be modified and new text can't be added. </description> </method> - <method name="select"> - <argument index="0" name="from" type="int" default="0"> - </argument> - <argument index="1" name="to" type="int" default="-1"> + <method name="set_max_length"> + <argument index="0" name="chars" type="int"> </argument> <description> + Set the maximum amount of characters the [LineEdit] can edit, and cropping existing text in case it exceeds that limit. Setting 0 removes the limit. </description> </method> - <method name="menu_option"> - <argument index="0" name="option" type="int"> + <method name="set_secret"> + <argument index="0" name="enabled" type="bool"> </argument> <description> + Set the [i]secret[/i] status of the [LineEdit]. When enabled, every character is displayed as "*". </description> </method> - <method name="get_menu" qualifiers="const"> - <return type="PopupMenu"> - </return> + <method name="set_text"> + <argument index="0" name="text" type="String"> + </argument> <description> + Set the text in the [LineEdit], clearing the existing one and the selection. </description> </method> </methods> <signals> - <signal name="text_entered"> + <signal name="text_changed"> <argument index="0" name="text" type="String"> </argument> <description> - This signal is emitted when the user presses KEY_ENTER on the [LineEdit]. This signal is often used as an alternate confirmation mechanism in dialogs. + When the text changes, this signal is emitted. </description> </signal> - <signal name="text_changed"> + <signal name="text_entered"> <argument index="0" name="text" type="String"> </argument> <description> - When the text changes, this signal is emitted. + This signal is emitted when the user presses KEY_ENTER on the [LineEdit]. This signal is often used as an alternate confirmation mechanism in dialogs. </description> </signal> </signals> @@ -18816,23 +19029,23 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> </constants> <theme_items> - <theme_item name="minimum_spaces" type="int"> + <theme_item name="cursor_color" type="Color"> </theme_item> - <theme_item name="selection_color" type="Color"> + <theme_item name="focus" type="StyleBox"> </theme_item> - <theme_item name="cursor_color" type="Color"> + <theme_item name="font" type="Font"> + </theme_item> + <theme_item name="font_color" type="Color"> </theme_item> <theme_item name="font_color_selected" type="Color"> </theme_item> - <theme_item name="font_color" type="Color"> + <theme_item name="minimum_spaces" type="int"> </theme_item> - <theme_item name="font" type="Font"> + <theme_item name="normal" type="StyleBox"> </theme_item> <theme_item name="read_only" type="StyleBox"> </theme_item> - <theme_item name="focus" type="StyleBox"> - </theme_item> - <theme_item name="normal" type="StyleBox"> + <theme_item name="selection_color" type="Color"> </theme_item> </theme_items> </class> @@ -18844,11 +19057,11 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Line shape for 2D collision objects. It works like a 2D plane and will not allow any body to go to the negative side. Not recommended for rigid bodies, and usually not recommended for static bodies either because it forces checks against it on every frame. </description> <methods> - <method name="set_normal"> - <argument index="0" name="normal" type="Vector2"> - </argument> + <method name="get_d" qualifiers="const"> + <return type="float"> + </return> <description> - Set the line normal. + Return the line distance from the origin. </description> </method> <method name="get_normal" qualifiers="const"> @@ -18865,11 +19078,11 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Set the line distance from the origin. </description> </method> - <method name="get_d" qualifiers="const"> - <return type="float"> - </return> + <method name="set_normal"> + <argument index="0" name="normal" type="Vector2"> + </argument> <description> - Return the line distance from the origin. + Set the line normal. </description> </method> </methods> @@ -18884,13 +19097,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) This kind of buttons are primarily used when the interaction with the button causes a context change (like linking to a web page). </description> <methods> - <method name="set_text"> - <argument index="0" name="text" type="String"> - </argument> - <description> - Sets the text of the button. - </description> - </method> <method name="get_text" qualifiers="const"> <return type="String"> </return> @@ -18898,13 +19104,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Returns the text of the button. </description> </method> - <method name="set_underline_mode"> - <argument index="0" name="underline_mode" type="int"> - </argument> - <description> - Sets the underline mode for this button, the argument must be one of the [LinkButton] constants (see constants section). - </description> - </method> <method name="get_underline_mode" qualifiers="const"> <return type="int"> </return> @@ -18912,6 +19111,20 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Returns the underline mode for this button. </description> </method> + <method name="set_text"> + <argument index="0" name="text" type="String"> + </argument> + <description> + Sets the text of the button. + </description> + </method> + <method name="set_underline_mode"> + <argument index="0" name="underline_mode" type="int"> + </argument> + <description> + Sets the underline mode for this button, the argument must be one of the [LinkButton] constants (see constants section). + </description> + </method> </methods> <constants> <constant name="UNDERLINE_MODE_ALWAYS" value="0"> @@ -18922,7 +19135,7 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> </constants> <theme_items> - <theme_item name="underline_spacing" type="int"> + <theme_item name="font" type="Font"> </theme_item> <theme_item name="font_color" type="Color"> </theme_item> @@ -18930,7 +19143,7 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </theme_item> <theme_item name="font_color_pressed" type="Color"> </theme_item> - <theme_item name="font" type="Font"> + <theme_item name="underline_spacing" type="int"> </theme_item> </theme_items> </class> @@ -18940,11 +19153,13 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="make_current"> + <method name="clear_current"> <description> </description> </method> - <method name="clear_current"> + <method name="get_listener_transform" qualifiers="const"> + <return type="Transform"> + </return> <description> </description> </method> @@ -18954,9 +19169,7 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_listener_transform" qualifiers="const"> - <return type="Transform"> - </return> + <method name="make_current"> <description> </description> </method> @@ -19012,14 +19225,14 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="input_event"> - <argument index="0" name="ev" type="InputEvent"> - </argument> + <method name="finish"> <description> </description> </method> - <method name="input_text"> - <argument index="0" name="text" type="String"> + <method name="idle"> + <return type="bool"> + </return> + <argument index="0" name="delta" type="float"> </argument> <description> </description> @@ -19028,23 +19241,23 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="iteration"> - <return type="bool"> - </return> - <argument index="0" name="delta" type="float"> + <method name="input_event"> + <argument index="0" name="ev" type="InputEvent"> </argument> <description> </description> </method> - <method name="idle"> - <return type="bool"> - </return> - <argument index="0" name="delta" type="float"> + <method name="input_text"> + <argument index="0" name="text" type="String"> </argument> <description> </description> </method> - <method name="finish"> + <method name="iteration"> + <return type="bool"> + </return> + <argument index="0" name="delta" type="float"> + </argument> <description> </description> </method> @@ -19078,13 +19291,13 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <constants> </constants> <theme_items> - <theme_item name="margin_right" type="int"> - </theme_item> - <theme_item name="margin_top" type="int"> + <theme_item name="margin_bottom" type="int"> </theme_item> <theme_item name="margin_left" type="int"> </theme_item> - <theme_item name="margin_bottom" type="int"> + <theme_item name="margin_right" type="int"> + </theme_item> + <theme_item name="margin_top" type="int"> </theme_item> </theme_items> </class> @@ -19094,10 +19307,18 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="variant_to_base64"> + <method name="base64_to_raw"> + <return type="RawArray"> + </return> + <argument index="0" name="base64_str" type="String"> + </argument> + <description> + </description> + </method> + <method name="base64_to_utf8"> <return type="String"> </return> - <argument index="0" name="variant" type="Variant"> + <argument index="0" name="base64_str" type="String"> </argument> <description> </description> @@ -19118,14 +19339,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="base64_to_raw"> - <return type="RawArray"> - </return> - <argument index="0" name="base64_str" type="String"> - </argument> - <description> - </description> - </method> <method name="utf8_to_base64"> <return type="String"> </return> @@ -19134,10 +19347,10 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="base64_to_utf8"> + <method name="variant_to_base64"> <return type="String"> </return> - <argument index="0" name="base64_str" type="String"> + <argument index="0" name="variant" type="Variant"> </argument> <description> </description> @@ -19154,13 +19367,17 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Material is a base [Resource] used for coloring and shading geometry. All materials inherit from it and almost all [VisualInstance] derived nodes carry a Material. A few flags and parameters are shared between all material types and are configured here. </description> <methods> - <method name="set_flag"> - <argument index="0" name="flag" type="int"> - </argument> - <argument index="1" name="enable" type="bool"> - </argument> + <method name="get_blend_mode" qualifiers="const"> + <return type="int"> + </return> + <description> + Return blend mode for the material, which can be one of BLEND_MODE_MIX (default), BLEND_MODE_ADD, BLEND_MODE_SUB. Keep in mind that only BLEND_MODE_MIX ensures that the material [i]may[/i] be opaque, any other blend mode will render with alpha blending enabled in raster-based [VisualServer] implementations. + </description> + </method> + <method name="get_depth_draw_mode" qualifiers="const"> + <return type="int"> + </return> <description> - Set a [Material] flag, which toggles on or off a behavior when rendering. See enumeration FLAG_* for a list. </description> </method> <method name="get_flag" qualifiers="const"> @@ -19172,48 +19389,65 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return a [Material] flag, which toggles on or off a behavior when rendering. See enumeration FLAG_* for a list. </description> </method> - <method name="set_blend_mode"> - <argument index="0" name="mode" type="int"> - </argument> - <description> - Set blend mode for the material, which can be one of BLEND_MODE_MIX (default), BLEND_MODE_ADD, BLEND_MODE_SUB. Keep in mind that only BLEND_MODE_MIX ensures that the material [i]may[/i] be opaque, any other blend mode will render with alpha blending enabled in raster-based [VisualServer] implementations. - </description> - </method> - <method name="get_blend_mode" qualifiers="const"> - <return type="int"> + <method name="get_line_width" qualifiers="const"> + <return type="float"> </return> <description> - Return blend mode for the material, which can be one of BLEND_MODE_MIX (default), BLEND_MODE_ADD, BLEND_MODE_SUB. Keep in mind that only BLEND_MODE_MIX ensures that the material [i]may[/i] be opaque, any other blend mode will render with alpha blending enabled in raster-based [VisualServer] implementations. + Return the line width for geometry drawn with FLAG_WIREFRAME enabled, or LINE primitives. Note that not all hardware or VisualServer backends support this (like DirectX). </description> </method> - <method name="set_line_width"> - <argument index="0" name="width" type="float"> + <method name="set_blend_mode"> + <argument index="0" name="mode" type="int"> </argument> <description> - Set the line width for geometry drawn with FLAG_WIREFRAME enabled, or LINE primitives. Note that not all hardware or VisualServer backends support this (like DirectX). + Set blend mode for the material, which can be one of BLEND_MODE_MIX (default), BLEND_MODE_ADD, BLEND_MODE_SUB. Keep in mind that only BLEND_MODE_MIX ensures that the material [i]may[/i] be opaque, any other blend mode will render with alpha blending enabled in raster-based [VisualServer] implementations. </description> </method> - <method name="get_line_width" qualifiers="const"> - <return type="float"> - </return> + <method name="set_depth_draw_mode"> + <argument index="0" name="mode" type="int"> + </argument> <description> - Return the line width for geometry drawn with FLAG_WIREFRAME enabled, or LINE primitives. Note that not all hardware or VisualServer backends support this (like DirectX). </description> </method> - <method name="set_depth_draw_mode"> - <argument index="0" name="mode" type="int"> + <method name="set_flag"> + <argument index="0" name="flag" type="int"> + </argument> + <argument index="1" name="enable" type="bool"> </argument> <description> + Set a [Material] flag, which toggles on or off a behavior when rendering. See enumeration FLAG_* for a list. </description> </method> - <method name="get_depth_draw_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_line_width"> + <argument index="0" name="width" type="float"> + </argument> <description> + Set the line width for geometry drawn with FLAG_WIREFRAME enabled, or LINE primitives. Note that not all hardware or VisualServer backends support this (like DirectX). </description> </method> </methods> <constants> + <constant name="BLEND_MODE_MIX" value="0"> + Use the regular alpha blending equation (source and dest colors are faded) (default). + </constant> + <constant name="BLEND_MODE_ADD" value="1"> + Use additive blending equation, often used for particle effects such as fire or light decals. + </constant> + <constant name="BLEND_MODE_SUB" value="2"> + Use subtractive blending equation, often used for some smoke effects or types of glass. + </constant> + <constant name="BLEND_MODE_MUL" value="3"> + </constant> + <constant name="BLEND_MODE_PREMULT_ALPHA" value="4"> + </constant> + <constant name="DEPTH_DRAW_ALWAYS" value="0"> + </constant> + <constant name="DEPTH_DRAW_OPAQUE_ONLY" value="1"> + </constant> + <constant name="DEPTH_DRAW_OPAQUE_PRE_PASS_ALPHA" value="2"> + </constant> + <constant name="DEPTH_DRAW_NEVER" value="3"> + </constant> <constant name="FLAG_VISIBLE" value="0"> Geometry is visible when this flag is enabled (default). </constant> @@ -19235,27 +19469,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <constant name="FLAG_MAX" value="7"> Maximum amount of flags. </constant> - <constant name="DEPTH_DRAW_ALWAYS" value="0"> - </constant> - <constant name="DEPTH_DRAW_OPAQUE_ONLY" value="1"> - </constant> - <constant name="DEPTH_DRAW_OPAQUE_PRE_PASS_ALPHA" value="2"> - </constant> - <constant name="DEPTH_DRAW_NEVER" value="3"> - </constant> - <constant name="BLEND_MODE_MIX" value="0"> - Use the regular alpha blending equation (source and dest colors are faded) (default). - </constant> - <constant name="BLEND_MODE_ADD" value="1"> - Use additive blending equation, often used for particle effects such as fire or light decals. - </constant> - <constant name="BLEND_MODE_SUB" value="2"> - Use subtractive blending equation, often used for some smoke effects or types of glass. - </constant> - <constant name="BLEND_MODE_MUL" value="3"> - </constant> - <constant name="BLEND_MODE_PREMULT_ALPHA" value="4"> - </constant> </constants> </class> <class name="MaterialShader" inherits="Shader" category="Core"> @@ -19286,6 +19499,39 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) 3x3 matrix used for 3D rotation and scale. Contains 3 vector fields x,y and z. Can also be accessed as array of 3D vectors. Almost always used as orthogonal basis for a [Transform]. </description> <methods> + <method name="Matrix3"> + <return type="Matrix3"> + </return> + <argument index="0" name="from" type="Quat"> + </argument> + <description> + Create a matrix from a quaternion. + </description> + </method> + <method name="Matrix3"> + <return type="Matrix3"> + </return> + <argument index="0" name="axis" type="Vector3"> + </argument> + <argument index="1" name="phi" type="float"> + </argument> + <description> + Create a matrix from an axis vector and an angle. + </description> + </method> + <method name="Matrix3"> + <return type="Matrix3"> + </return> + <argument index="0" name="x_axis" type="Vector3"> + </argument> + <argument index="1" name="y_axis" type="Vector3"> + </argument> + <argument index="2" name="z_axis" type="Vector3"> + </argument> + <description> + Create a matrix from 3 axis vectors. + </description> + </method> <method name="determinant"> <return type="float"> </return> @@ -19398,39 +19644,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return a vector transformed by the transposed matrix and return it. </description> </method> - <method name="Matrix3"> - <return type="Matrix3"> - </return> - <argument index="0" name="x_axis" type="Vector3"> - </argument> - <argument index="1" name="y_axis" type="Vector3"> - </argument> - <argument index="2" name="z_axis" type="Vector3"> - </argument> - <description> - Create a matrix from 3 axis vectors. - </description> - </method> - <method name="Matrix3"> - <return type="Matrix3"> - </return> - <argument index="0" name="axis" type="Vector3"> - </argument> - <argument index="1" name="phi" type="float"> - </argument> - <description> - Create a matrix from an axis vector and an angle. - </description> - </method> - <method name="Matrix3"> - <return type="Matrix3"> - </return> - <argument index="0" name="from" type="Quat"> - </argument> - <description> - Create a matrix from a quaternion. - </description> - </method> </methods> <members> <member name="x" type="Vector3"> @@ -19451,6 +19664,36 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) 3x2 Matrix for 2D transforms. </description> <methods> + <method name="Matrix32"> + <return type="Matrix32"> + </return> + <argument index="0" name="from" type="Transform"> + </argument> + <description> + </description> + </method> + <method name="Matrix32"> + <return type="Matrix32"> + </return> + <argument index="0" name="x_axis" type="Vector2"> + </argument> + <argument index="1" name="y_axis" type="Vector2"> + </argument> + <argument index="2" name="origin" type="Vector2"> + </argument> + <description> + </description> + </method> + <method name="Matrix32"> + <return type="Matrix32"> + </return> + <argument index="0" name="rot" type="float"> + </argument> + <argument index="1" name="pos" type="Vector2"> + </argument> + <description> + </description> + </method> <method name="affine_inverse"> <return type="Matrix32"> </return> @@ -19553,44 +19796,14 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="Matrix32"> - <return type="Matrix32"> - </return> - <argument index="0" name="rot" type="float"> - </argument> - <argument index="1" name="pos" type="Vector2"> - </argument> - <description> - </description> - </method> - <method name="Matrix32"> - <return type="Matrix32"> - </return> - <argument index="0" name="x_axis" type="Vector2"> - </argument> - <argument index="1" name="y_axis" type="Vector2"> - </argument> - <argument index="2" name="origin" type="Vector2"> - </argument> - <description> - </description> - </method> - <method name="Matrix32"> - <return type="Matrix32"> - </return> - <argument index="0" name="from" type="Transform"> - </argument> - <description> - </description> - </method> </methods> <members> + <member name="o" type="Vector2"> + </member> <member name="x" type="Vector2"> </member> <member name="y" type="Vector2"> </member> - <member name="o" type="Vector2"> - </member> </members> <constants> </constants> @@ -19620,28 +19833,28 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <constants> </constants> <theme_items> - <theme_item name="hseparation" type="int"> + <theme_item name="disabled" type="StyleBox"> </theme_item> - <theme_item name="font_color_disabled" type="Color"> + <theme_item name="focus" type="StyleBox"> + </theme_item> + <theme_item name="font" type="Font"> </theme_item> <theme_item name="font_color" type="Color"> </theme_item> + <theme_item name="font_color_disabled" type="Color"> + </theme_item> <theme_item name="font_color_hover" type="Color"> </theme_item> <theme_item name="font_color_pressed" type="Color"> </theme_item> - <theme_item name="font" type="Font"> - </theme_item> <theme_item name="hover" type="StyleBox"> </theme_item> - <theme_item name="pressed" type="StyleBox"> - </theme_item> - <theme_item name="focus" type="StyleBox"> - </theme_item> - <theme_item name="disabled" type="StyleBox"> + <theme_item name="hseparation" type="int"> </theme_item> <theme_item name="normal" type="StyleBox"> </theme_item> + <theme_item name="pressed" type="StyleBox"> + </theme_item> </theme_items> </class> <class name="Mesh" inherits="Resource" category="Core"> @@ -19658,17 +19871,22 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_morph_target_count" qualifiers="const"> - <return type="int"> - </return> + <method name="add_surface"> + <argument index="0" name="primitive" type="int"> + </argument> + <argument index="1" name="arrays" type="Array"> + </argument> + <argument index="2" name="morph_arrays" type="Array" default="Array()"> + </argument> + <argument index="3" name="alphasort" type="bool" default="false"> + </argument> <description> + Create a new surface ([method get_surface_count] that will become surf_idx for this. + Surfaces are created to be rendered using a "primitive", which may be PRIMITIVE_POINTS, PRIMITIVE_LINES, PRIMITIVE_LINE_STRIP, PRIMITIVE_LINE_LOOP, PRIMITIVE_TRIANGLES, PRIMITIVE_TRIANGLE_STRIP, PRIMITIVE_TRIANGLE_FAN. (As a note, when using indices, it is recommended to only use just points, lines or triangles). + The format of a surface determines which arrays it will allocate and hold, so "format" is a combination of ARRAY_FORMAT_* mask constants ORed together. ARRAY_FORMAT_VERTEX must be always present. "array_len" determines the amount of vertices in the array (not primitives!). if ARRAY_FORMAT_INDEX is in the format mask, then it means that an index array will be allocated and "index_array_len" must be passed. </description> </method> - <method name="get_morph_target_name" qualifiers="const"> - <return type="String"> - </return> - <argument index="0" name="index" type="int"> - </argument> + <method name="center_geometry"> <description> </description> </method> @@ -19676,9 +19894,15 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="set_morph_target_mode"> - <argument index="0" name="mode" type="int"> - </argument> + <method name="get_custom_aabb" qualifiers="const"> + <return type="AABB"> + </return> + <description> + </description> + </method> + <method name="get_morph_target_count" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> @@ -19688,19 +19912,12 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="add_surface"> - <argument index="0" name="primitive" type="int"> - </argument> - <argument index="1" name="arrays" type="Array"> - </argument> - <argument index="2" name="morph_arrays" type="Array" default="Array()"> - </argument> - <argument index="3" name="alphasort" type="bool" default="false"> + <method name="get_morph_target_name" qualifiers="const"> + <return type="String"> + </return> + <argument index="0" name="index" type="int"> </argument> <description> - Create a new surface ([method get_surface_count] that will become surf_idx for this. - Surfaces are created to be rendered using a "primitive", which may be PRIMITIVE_POINTS, PRIMITIVE_LINES, PRIMITIVE_LINE_STRIP, PRIMITIVE_LINE_LOOP, PRIMITIVE_TRIANGLES, PRIMITIVE_TRIANGLE_STRIP, PRIMITIVE_TRIANGLE_FAN. (As a note, when using indices, it is recommended to only use just points, lines or triangles). - The format of a surface determines which arrays it will allocate and hold, so "format" is a combination of ARRAY_FORMAT_* mask constants ORed together. ARRAY_FORMAT_VERTEX must be always present. "array_len" determines the amount of vertices in the array (not primitives!). if ARRAY_FORMAT_INDEX is in the format mask, then it means that an index array will be allocated and "index_array_len" must be passed. </description> </method> <method name="get_surface_count" qualifiers="const"> @@ -19710,20 +19927,20 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the amount of surfaces that the [Mesh] holds. </description> </method> - <method name="surface_remove"> - <argument index="0" name="surf_idx" type="int"> + <method name="regen_normalmaps"> + <description> + </description> + </method> + <method name="set_custom_aabb"> + <argument index="0" name="aabb" type="AABB"> </argument> <description> - Remove a surface at position surf_idx, shifting greater surfaces one surf_idx slot down. </description> </method> - <method name="surface_get_array_len" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="surf_idx" type="int"> + <method name="set_morph_target_mode"> + <argument index="0" name="mode" type="int"> </argument> <description> - Return the length in vertices of the vertex array in the requested surface (see [method add_surface]). </description> </method> <method name="surface_get_array_index_len" qualifiers="const"> @@ -19735,31 +19952,22 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the length in indices of the index array in the requested surface (see [method add_surface]). </description> </method> - <method name="surface_get_format" qualifiers="const"> + <method name="surface_get_array_len" qualifiers="const"> <return type="int"> </return> <argument index="0" name="surf_idx" type="int"> </argument> <description> - Return the format mask of the requested surface (see [method add_surface]). + Return the length in vertices of the vertex array in the requested surface (see [method add_surface]). </description> </method> - <method name="surface_get_primitive_type" qualifiers="const"> + <method name="surface_get_format" qualifiers="const"> <return type="int"> </return> <argument index="0" name="surf_idx" type="int"> </argument> <description> - Return the primitive type of the requested surface (see [method add_surface]). - </description> - </method> - <method name="surface_set_material"> - <argument index="0" name="surf_idx" type="int"> - </argument> - <argument index="1" name="material" type="Material"> - </argument> - <description> - Set a [Material] for a given surface. Surface will be rendered using this material. + Return the format mask of the requested surface (see [method add_surface]). </description> </method> <method name="surface_get_material" qualifiers="const"> @@ -19771,14 +19979,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return a [Material] in a given surface. Surface is rendered using this material. </description> </method> - <method name="surface_set_name"> - <argument index="0" name="surf_idx" type="int"> - </argument> - <argument index="1" name="name" type="String"> - </argument> - <description> - </description> - </method> <method name="surface_get_name" qualifiers="const"> <return type="String"> </return> @@ -19787,87 +19987,100 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="center_geometry"> + <method name="surface_get_primitive_type" qualifiers="const"> + <return type="int"> + </return> + <argument index="0" name="surf_idx" type="int"> + </argument> <description> + Return the primitive type of the requested surface (see [method add_surface]). </description> </method> - <method name="regen_normalmaps"> + <method name="surface_remove"> + <argument index="0" name="surf_idx" type="int"> + </argument> <description> + Remove a surface at position surf_idx, shifting greater surfaces one surf_idx slot down. </description> </method> - <method name="set_custom_aabb"> - <argument index="0" name="aabb" type="AABB"> + <method name="surface_set_material"> + <argument index="0" name="surf_idx" type="int"> + </argument> + <argument index="1" name="material" type="Material"> </argument> <description> + Set a [Material] for a given surface. Surface will be rendered using this material. </description> </method> - <method name="get_custom_aabb" qualifiers="const"> - <return type="AABB"> - </return> + <method name="surface_set_name"> + <argument index="0" name="surf_idx" type="int"> + </argument> + <argument index="1" name="name" type="String"> + </argument> <description> </description> </method> </methods> <constants> - <constant name="NO_INDEX_ARRAY" value="-1"> - Default value used for index_array_len when no indices are present. - </constant> - <constant name="ARRAY_WEIGHTS_SIZE" value="4"> - Amount of weights/bone indices per vertex (always 4). - </constant> <constant name="ARRAY_VERTEX" value="0"> Vertex array (array of [Vector3] vertices). </constant> + <constant name="ARRAY_FORMAT_VERTEX" value="1"> + Array format will include vertices (mandatory). + </constant> <constant name="ARRAY_NORMAL" value="1"> Normal array (array of [Vector3] normals). </constant> + <constant name="ARRAY_FORMAT_WEIGHTS" value="128"> + Array format will include bone weights. + </constant> + <constant name="ARRAY_FORMAT_TEX_UV" value="16"> + Array format will include UVs. + </constant> + <constant name="ARRAY_FORMAT_NORMAL" value="2"> + Array format will include normals + </constant> <constant name="ARRAY_TANGENT" value="2"> Tangent array, array of groups of 4 floats. first 3 floats determine the tangent, and the last the binormal direction as -1 or 1. </constant> + <constant name="ARRAY_FORMAT_INDEX" value="256"> + Index array will be used. + </constant> <constant name="ARRAY_COLOR" value="3"> Vertex array (array of [Color] colors). </constant> + <constant name="ARRAY_FORMAT_TEX_UV2" value="32"> + Array format will include another set of UVs. + </constant> + <constant name="ARRAY_FORMAT_TANGENT" value="4"> + Array format will include tangents + </constant> <constant name="ARRAY_TEX_UV" value="4"> UV array (array of [Vector3] UVs or float array of groups of 2 floats (u,v)). </constant> + <constant name="ARRAY_WEIGHTS_SIZE" value="4"> + Amount of weights/bone indices per vertex (always 4). + </constant> <constant name="ARRAY_TEX_UV2" value="5"> Second UV array (array of [Vector3] UVs or float array of groups of 2 floats (u,v)). </constant> <constant name="ARRAY_BONES" value="6"> Array of bone indices, as a float array. Each element in groups of 4 floats. </constant> + <constant name="ARRAY_FORMAT_BONES" value="64"> + Array format will include bone indices. + </constant> <constant name="ARRAY_WEIGHTS" value="7"> Array of bone weights, as a float array. Each element in groups of 4 floats. </constant> - <constant name="ARRAY_INDEX" value="8"> - Array of integers, used as indices referencing vertices. No index can be beyond the vertex array size. - </constant> - <constant name="ARRAY_FORMAT_VERTEX" value="1"> - Array format will include vertices (mandatory). - </constant> - <constant name="ARRAY_FORMAT_NORMAL" value="2"> - Array format will include normals - </constant> - <constant name="ARRAY_FORMAT_TANGENT" value="4"> - Array format will include tangents - </constant> <constant name="ARRAY_FORMAT_COLOR" value="8"> Array format will include a color array. </constant> - <constant name="ARRAY_FORMAT_TEX_UV" value="16"> - Array format will include UVs. - </constant> - <constant name="ARRAY_FORMAT_TEX_UV2" value="32"> - Array format will include another set of UVs. - </constant> - <constant name="ARRAY_FORMAT_BONES" value="64"> - Array format will include bone indices. - </constant> - <constant name="ARRAY_FORMAT_WEIGHTS" value="128"> - Array format will include bone weights. + <constant name="ARRAY_INDEX" value="8"> + Array of integers, used as indices referencing vertices. No index can be beyond the vertex array size. </constant> - <constant name="ARRAY_FORMAT_INDEX" value="256"> - Index array will be used. + <constant name="NO_INDEX_ARRAY" value="-1"> + Default value used for index_array_len when no indices are present. </constant> <constant name="PRIMITIVE_POINTS" value="0"> Render array as points (one vertex equals one point). @@ -19902,39 +20115,51 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="create_from_surface"> + <method name="commit_to_surface"> <return type="int"> </return> <argument index="0" name="mesh" type="Object"> </argument> - <argument index="1" name="surface" type="int"> - </argument> <description> </description> </method> - <method name="commit_to_surface"> + <method name="create_from_surface"> <return type="int"> </return> <argument index="0" name="mesh" type="Object"> </argument> + <argument index="1" name="surface" type="int"> + </argument> <description> </description> </method> - <method name="get_format" qualifiers="const"> + <method name="get_edge_count" qualifiers="const"> <return type="int"> </return> <description> </description> </method> - <method name="get_vertex_count" qualifiers="const"> - <return type="int"> + <method name="get_edge_faces" qualifiers="const"> + <return type="IntArray"> </return> + <argument index="0" name="idx" type="int"> + </argument> <description> </description> </method> - <method name="get_edge_count" qualifiers="const"> + <method name="get_edge_meta" qualifiers="const"> + <argument index="0" name="idx" type="int"> + </argument> + <description> + </description> + </method> + <method name="get_edge_vertex" qualifiers="const"> <return type="int"> </return> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="vertex" type="int"> + </argument> <description> </description> </method> @@ -19944,15 +20169,23 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="set_vertex"> + <method name="get_face_edge" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="vertex" type="Vector3"> + <argument index="1" name="edge" type="int"> </argument> <description> </description> </method> - <method name="get_vertex" qualifiers="const"> + <method name="get_face_meta" qualifiers="const"> + <argument index="0" name="idx" type="int"> + </argument> + <description> + </description> + </method> + <method name="get_face_normal" qualifiers="const"> <return type="Vector3"> </return> <argument index="0" name="idx" type="int"> @@ -19960,107 +20193,109 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="set_vertex_normal"> + <method name="get_face_vertex" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="normal" type="Vector3"> + <argument index="1" name="vertex" type="int"> </argument> <description> </description> </method> - <method name="get_vertex_normal" qualifiers="const"> - <return type="Vector3"> + <method name="get_format" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> </description> </method> - <method name="set_vertex_tangent"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="tangent" type="Plane"> - </argument> + <method name="get_material" qualifiers="const"> + <return type="Object"> + </return> <description> </description> </method> - <method name="get_vertex_tangent" qualifiers="const"> - <return type="Plane"> + <method name="get_vertex" qualifiers="const"> + <return type="Vector3"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="set_vertex_uv"> + <method name="get_vertex_bones" qualifiers="const"> + <return type="IntArray"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="uv" type="Vector2"> - </argument> <description> </description> </method> - <method name="get_vertex_uv" qualifiers="const"> - <return type="Vector2"> + <method name="get_vertex_color" qualifiers="const"> + <return type="Color"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="set_vertex_uv2"> + <method name="get_vertex_count" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="get_vertex_edges" qualifiers="const"> + <return type="IntArray"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="uv2" type="Vector2"> - </argument> <description> </description> </method> - <method name="get_vertex_uv2" qualifiers="const"> - <return type="Vector2"> + <method name="get_vertex_faces" qualifiers="const"> + <return type="IntArray"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="set_vertex_color"> + <method name="get_vertex_meta" qualifiers="const"> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="color" type="Color"> - </argument> <description> </description> </method> - <method name="get_vertex_color" qualifiers="const"> - <return type="Color"> + <method name="get_vertex_normal" qualifiers="const"> + <return type="Vector3"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="set_vertex_bones"> + <method name="get_vertex_tangent" qualifiers="const"> + <return type="Plane"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="bones" type="IntArray"> - </argument> <description> </description> </method> - <method name="get_vertex_bones" qualifiers="const"> - <return type="IntArray"> + <method name="get_vertex_uv" qualifiers="const"> + <return type="Vector2"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="set_vertex_weights"> + <method name="get_vertex_uv2" qualifiers="const"> + <return type="Vector2"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="weights" type="RealArray"> - </argument> <description> </description> </method> @@ -20072,7 +20307,7 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="set_vertex_meta"> + <method name="set_edge_meta"> <argument index="0" name="idx" type="int"> </argument> <argument index="1" name="meta" type="Variant"> @@ -20080,114 +20315,92 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_vertex_meta" qualifiers="const"> + <method name="set_face_meta"> <argument index="0" name="idx" type="int"> </argument> - <description> - </description> - </method> - <method name="get_vertex_edges" qualifiers="const"> - <return type="IntArray"> - </return> - <argument index="0" name="idx" type="int"> + <argument index="1" name="meta" type="Variant"> </argument> <description> </description> </method> - <method name="get_vertex_faces" qualifiers="const"> - <return type="IntArray"> - </return> - <argument index="0" name="idx" type="int"> + <method name="set_material"> + <argument index="0" name="material" type="Material"> </argument> <description> </description> </method> - <method name="get_edge_vertex" qualifiers="const"> - <return type="int"> - </return> + <method name="set_vertex"> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="vertex" type="int"> + <argument index="1" name="vertex" type="Vector3"> </argument> <description> </description> </method> - <method name="get_edge_faces" qualifiers="const"> - <return type="IntArray"> - </return> + <method name="set_vertex_bones"> <argument index="0" name="idx" type="int"> </argument> + <argument index="1" name="bones" type="IntArray"> + </argument> <description> </description> </method> - <method name="set_edge_meta"> + <method name="set_vertex_color"> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="meta" type="Variant"> + <argument index="1" name="color" type="Color"> </argument> <description> </description> </method> - <method name="get_edge_meta" qualifiers="const"> + <method name="set_vertex_meta"> <argument index="0" name="idx" type="int"> </argument> + <argument index="1" name="meta" type="Variant"> + </argument> <description> </description> </method> - <method name="get_face_vertex" qualifiers="const"> - <return type="int"> - </return> + <method name="set_vertex_normal"> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="vertex" type="int"> + <argument index="1" name="normal" type="Vector3"> </argument> <description> </description> </method> - <method name="get_face_edge" qualifiers="const"> - <return type="int"> - </return> + <method name="set_vertex_tangent"> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="edge" type="int"> + <argument index="1" name="tangent" type="Plane"> </argument> <description> </description> </method> - <method name="set_face_meta"> + <method name="set_vertex_uv"> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="meta" type="Variant"> + <argument index="1" name="uv" type="Vector2"> </argument> <description> </description> </method> - <method name="get_face_meta" qualifiers="const"> + <method name="set_vertex_uv2"> <argument index="0" name="idx" type="int"> </argument> + <argument index="1" name="uv2" type="Vector2"> + </argument> <description> </description> </method> - <method name="get_face_normal" qualifiers="const"> - <return type="Vector3"> - </return> + <method name="set_vertex_weights"> <argument index="0" name="idx" type="int"> </argument> - <description> - </description> - </method> - <method name="set_material"> - <argument index="0" name="material" type="Material"> + <argument index="1" name="weights" type="RealArray"> </argument> <description> </description> </method> - <method name="get_material" qualifiers="const"> - <return type="Object"> - </return> - <description> - </description> - </method> </methods> <constants> </constants> @@ -20200,45 +20413,45 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) MeshInstance is a [Node] that takes a [Mesh] resource and adds it to the current scenario by creating an instance of it. This is the class most often used to get 3D geometry rendered and can be used to instance a single [Mesh] in many places. This allows to reuse geometry and save on resources. When a [Mesh] has to be instanced more than thousands of times at close proximity, consider using a [MultiMesh] in a [MultiMeshInstance] instead. </description> <methods> - <method name="set_mesh"> - <argument index="0" name="mesh" type="Mesh"> - </argument> + <method name="create_convex_collision"> <description> - Set the [Mesh] resource for the instance. </description> </method> - <method name="get_mesh" qualifiers="const"> - <return type="Mesh"> - </return> + <method name="create_trimesh_collision"> <description> - Return the current [Mesh] resource for the instance. + This helper creates a [StaticBody] child [Node] using the mesh geometry as collision. It's mainly used for testing. </description> </method> - <method name="set_skeleton_path"> - <argument index="0" name="skeleton_path" type="NodePath"> - </argument> + <method name="get_aabb" qualifiers="const"> + <return type="AABB"> + </return> <description> + Return the AABB of the mesh, in local coordinates. </description> </method> - <method name="get_skeleton_path"> - <return type="NodePath"> + <method name="get_mesh" qualifiers="const"> + <return type="Mesh"> </return> <description> + Return the current [Mesh] resource for the instance. </description> </method> - <method name="get_aabb" qualifiers="const"> - <return type="AABB"> + <method name="get_skeleton_path"> + <return type="NodePath"> </return> <description> - Return the AABB of the mesh, in local coordinates. </description> </method> - <method name="create_trimesh_collision"> + <method name="set_mesh"> + <argument index="0" name="mesh" type="Mesh"> + </argument> <description> - This helper creates a [StaticBody] child [Node] using the mesh geometry as collision. It's mainly used for testing. + Set the [Mesh] resource for the instance. </description> </method> - <method name="create_convex_collision"> + <method name="set_skeleton_path"> + <argument index="0" name="skeleton_path" type="NodePath"> + </argument> <description> </description> </method> @@ -20254,45 +20467,32 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Library of meshes. Contains a list of [Mesh] resources, each with name and ID. Useful for GridMap or painting Terrain. </description> <methods> - <method name="create_item"> - <argument index="0" name="id" type="int"> - </argument> + <method name="clear"> <description> - Create a new item in the library, supplied an id. + Clear the library. </description> </method> - <method name="set_item_name"> + <method name="create_item"> <argument index="0" name="id" type="int"> </argument> - <argument index="1" name="name" type="String"> - </argument> <description> - Set the name of the item. - </description> - </method> - <method name="set_item_mesh"> - <argument index="0" name="id" type="int"> - </argument> - <argument index="1" name="mesh" type="Mesh"> - </argument> - <description> - Set the mesh of the item. + Create a new item in the library, supplied an id. </description> </method> - <method name="set_item_navmesh"> - <argument index="0" name="id" type="int"> - </argument> - <argument index="1" name="navmesh" type="NavigationMesh"> - </argument> + <method name="get_item_list" qualifiers="const"> + <return type="IntArray"> + </return> <description> + Return the list of items. </description> </method> - <method name="set_item_shape"> + <method name="get_item_mesh" qualifiers="const"> + <return type="Mesh"> + </return> <argument index="0" name="id" type="int"> </argument> - <argument index="1" name="shape" type="Shape"> - </argument> <description> + Return the mesh of the item. </description> </method> <method name="get_item_name" qualifiers="const"> @@ -20304,15 +20504,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the name of the item. </description> </method> - <method name="get_item_mesh" qualifiers="const"> - <return type="Mesh"> - </return> - <argument index="0" name="id" type="int"> - </argument> - <description> - Return the mesh of the item. - </description> - </method> <method name="get_item_navmesh" qualifiers="const"> <return type="NavigationMesh"> </return> @@ -20329,6 +20520,13 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> + <method name="get_last_unused_item_id" qualifiers="const"> + <return type="int"> + </return> + <description> + Get an unused id for a new item. + </description> + </method> <method name="remove_item"> <argument index="0" name="id" type="int"> </argument> @@ -20336,23 +20534,38 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Remove the item. </description> </method> - <method name="clear"> + <method name="set_item_mesh"> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="mesh" type="Mesh"> + </argument> <description> - Clear the library. + Set the mesh of the item. </description> </method> - <method name="get_item_list" qualifiers="const"> - <return type="IntArray"> - </return> + <method name="set_item_name"> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="name" type="String"> + </argument> <description> - Return the list of items. + Set the name of the item. </description> </method> - <method name="get_last_unused_item_id" qualifiers="const"> - <return type="int"> - </return> + <method name="set_item_navmesh"> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="navmesh" type="NavigationMesh"> + </argument> + <description> + </description> + </method> + <method name="set_item_shape"> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="shape" type="Shape"> + </argument> <description> - Get an unused id for a new item. </description> </method> </methods> @@ -20370,25 +20583,25 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Since instances may have any behavior, the AABB used for visibility must be provided by the user, or generated with [method generate_aabb]. </description> <methods> - <method name="set_mesh"> - <argument index="0" name="mesh" type="Mesh"> - </argument> + <method name="generate_aabb"> <description> - Set the [Mesh] resource to be drawn in multiple instances. + Generate a new visibility AABB, using mesh AABB and instance transforms. Since instance information is stored in the [VisualServer], this function is VERY SLOW and must NOT be used often. </description> </method> - <method name="get_mesh" qualifiers="const"> - <return type="Mesh"> + <method name="get_aabb" qualifiers="const"> + <return type="AABB"> </return> <description> - Return the [Mesh] resource drawn as multiple instances. + Return the visibility AABB. </description> </method> - <method name="set_instance_count"> - <argument index="0" name="count" type="int"> + <method name="get_instance_color" qualifiers="const"> + <return type="Color"> + </return> + <argument index="0" name="instance" type="int"> </argument> <description> - Set the amount of instances that is going to be drawn. Changing this number will erase all the existing instance transform and color data. + Get the color of a specific instance. </description> </method> <method name="get_instance_count" qualifiers="const"> @@ -20398,22 +20611,27 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the amount of instances that is going to be drawn. </description> </method> - <method name="set_instance_transform"> + <method name="get_instance_transform" qualifiers="const"> + <return type="Transform"> + </return> <argument index="0" name="instance" type="int"> </argument> - <argument index="1" name="transform" type="Transform"> - </argument> <description> - Set the transform for a specific instance. + Return the transform of a specific instance. </description> </method> - <method name="get_instance_transform" qualifiers="const"> - <return type="Transform"> + <method name="get_mesh" qualifiers="const"> + <return type="Mesh"> </return> - <argument index="0" name="instance" type="int"> + <description> + Return the [Mesh] resource drawn as multiple instances. + </description> + </method> + <method name="set_aabb"> + <argument index="0" name="visibility_aabb" type="AABB"> </argument> <description> - Return the transform of a specific instance. + Set the visibility AABB. If not provided, MultiMesh will not be visible. </description> </method> <method name="set_instance_color"> @@ -20425,32 +20643,27 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Set the color of a specific instance. </description> </method> - <method name="get_instance_color" qualifiers="const"> - <return type="Color"> - </return> - <argument index="0" name="instance" type="int"> + <method name="set_instance_count"> + <argument index="0" name="count" type="int"> </argument> <description> - Get the color of a specific instance. + Set the amount of instances that is going to be drawn. Changing this number will erase all the existing instance transform and color data. </description> </method> - <method name="set_aabb"> - <argument index="0" name="visibility_aabb" type="AABB"> + <method name="set_instance_transform"> + <argument index="0" name="instance" type="int"> + </argument> + <argument index="1" name="transform" type="Transform"> </argument> <description> - Set the visibility AABB. If not provided, MultiMesh will not be visible. - </description> - </method> - <method name="get_aabb" qualifiers="const"> - <return type="AABB"> - </return> - <description> - Return the visibility AABB. + Set the transform for a specific instance. </description> </method> - <method name="generate_aabb"> + <method name="set_mesh"> + <argument index="0" name="mesh" type="Mesh"> + </argument> <description> - Generate a new visibility AABB, using mesh AABB and instance transforms. Since instance information is stored in the [VisualServer], this function is VERY SLOW and must NOT be used often. + Set the [Mesh] resource to be drawn in multiple instances. </description> </method> </methods> @@ -20465,13 +20678,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) MultiMeshInstance is a [Node] that takes a [MultiMesh] resource and adds it to the current scenario by creating an instance of it (yes, this is an instance of instances). </description> <methods> - <method name="set_multimesh"> - <argument index="0" name="multimesh" type="Object"> - </argument> - <description> - Set the [MultiMesh] to be instance. - </description> - </method> <method name="get_multimesh" qualifiers="const"> <return type="Object"> </return> @@ -20479,28 +20685,40 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the [MultiMesh] that is used for instancing. </description> </method> + <method name="set_multimesh"> + <argument index="0" name="multimesh" type="Object"> + </argument> + <description> + Set the [MultiMesh] to be instance. + </description> + </method> </methods> <constants> </constants> </class> <class name="Mutex" inherits="Reference" category="Core"> <brief_description> + A synchronization Mutex. </brief_description> <description> + A synchronization Mutex. Element used in multi-threadding. Basically a binary [Semaphore]. Guarantees that only one thread has this lock, can be used to protect a critical section. </description> <methods> <method name="lock"> <description> + Lock this [Mutex], blocks until it is unlocked by the current owner. </description> </method> <method name="try_lock"> <return type="Error"> </return> <description> + Try locking this [Mutex], does not block. Returns [OK] on success else [ERR_BUSY]. </description> </method> <method name="unlock"> <description> + Unlock this [Mutex], leaving it to others threads. </description> </method> </methods> @@ -20513,89 +20731,89 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="navmesh_create"> - <return type="int"> + <method name="get_closest_point"> + <return type="Vector3"> </return> - <argument index="0" name="mesh" type="NavigationMesh"> - </argument> - <argument index="1" name="xform" type="Transform"> - </argument> - <argument index="2" name="owner" type="Object" default="NULL"> + <argument index="0" name="to_point" type="Vector3"> </argument> <description> </description> </method> - <method name="navmesh_set_transform"> - <argument index="0" name="id" type="int"> - </argument> - <argument index="1" name="xform" type="Transform"> + <method name="get_closest_point_normal"> + <return type="Vector3"> + </return> + <argument index="0" name="to_point" type="Vector3"> </argument> <description> </description> </method> - <method name="navmesh_remove"> - <argument index="0" name="id" type="int"> + <method name="get_closest_point_owner"> + <return type="Object"> + </return> + <argument index="0" name="to_point" type="Vector3"> </argument> <description> </description> </method> - <method name="get_simple_path"> - <return type="Vector3Array"> + <method name="get_closest_point_to_segment"> + <return type="Vector3"> </return> <argument index="0" name="start" type="Vector3"> </argument> <argument index="1" name="end" type="Vector3"> </argument> - <argument index="2" name="optimize" type="bool" default="true"> + <argument index="2" name="use_collision" type="bool" default="false"> </argument> <description> </description> </method> - <method name="get_closest_point_to_segment"> - <return type="Vector3"> + <method name="get_simple_path"> + <return type="Vector3Array"> </return> <argument index="0" name="start" type="Vector3"> </argument> <argument index="1" name="end" type="Vector3"> </argument> - <argument index="2" name="use_collision" type="bool" default="false"> + <argument index="2" name="optimize" type="bool" default="true"> </argument> <description> </description> </method> - <method name="get_closest_point"> + <method name="get_up_vector" qualifiers="const"> <return type="Vector3"> </return> - <argument index="0" name="to_point" type="Vector3"> - </argument> <description> </description> </method> - <method name="get_closest_point_normal"> - <return type="Vector3"> + <method name="navmesh_create"> + <return type="int"> </return> - <argument index="0" name="to_point" type="Vector3"> + <argument index="0" name="mesh" type="NavigationMesh"> + </argument> + <argument index="1" name="xform" type="Transform"> + </argument> + <argument index="2" name="owner" type="Object" default="NULL"> </argument> <description> </description> </method> - <method name="get_closest_point_owner"> - <return type="Object"> - </return> - <argument index="0" name="to_point" type="Vector3"> + <method name="navmesh_remove"> + <argument index="0" name="id" type="int"> </argument> <description> </description> </method> - <method name="set_up_vector"> - <argument index="0" name="up" type="Vector3"> + <method name="navmesh_set_transform"> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="xform" type="Transform"> </argument> <description> </description> </method> - <method name="get_up_vector" qualifiers="const"> - <return type="Vector3"> - </return> + <method name="set_up_vector"> + <argument index="0" name="up" type="Vector3"> + </argument> <description> </description> </method> @@ -20609,28 +20827,18 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="navpoly_create"> - <return type="int"> + <method name="get_closest_point"> + <return type="Vector2"> </return> - <argument index="0" name="mesh" type="NavigationPolygon"> - </argument> - <argument index="1" name="xform" type="Matrix32"> - </argument> - <argument index="2" name="owner" type="Object" default="NULL"> - </argument> - <description> - </description> - </method> - <method name="navpoly_set_transform"> - <argument index="0" name="id" type="int"> - </argument> - <argument index="1" name="xform" type="Matrix32"> + <argument index="0" name="to_point" type="Vector2"> </argument> <description> </description> </method> - <method name="navpoly_remove"> - <argument index="0" name="id" type="int"> + <method name="get_closest_point_owner"> + <return type="Object"> + </return> + <argument index="0" name="to_point" type="Vector2"> </argument> <description> </description> @@ -20647,18 +20855,28 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_closest_point"> - <return type="Vector2"> + <method name="navpoly_create"> + <return type="int"> </return> - <argument index="0" name="to_point" type="Vector2"> + <argument index="0" name="mesh" type="NavigationPolygon"> + </argument> + <argument index="1" name="xform" type="Matrix32"> + </argument> + <argument index="2" name="owner" type="Object" default="NULL"> </argument> <description> </description> </method> - <method name="get_closest_point_owner"> - <return type="Object"> - </return> - <argument index="0" name="to_point" type="Vector2"> + <method name="navpoly_remove"> + <argument index="0" name="id" type="int"> + </argument> + <description> + </description> + </method> + <method name="navpoly_set_transform"> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="xform" type="Matrix32"> </argument> <description> </description> @@ -20673,20 +20891,20 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="set_vertices"> - <argument index="0" name="vertices" type="Vector3Array"> + <method name="add_polygon"> + <argument index="0" name="polygon" type="IntArray"> </argument> <description> </description> </method> - <method name="get_vertices" qualifiers="const"> - <return type="Vector3Array"> - </return> + <method name="clear_polygons"> <description> </description> </method> - <method name="add_polygon"> - <argument index="0" name="polygon" type="IntArray"> + <method name="get_polygon"> + <return type="IntArray"> + </return> + <argument index="0" name="idx" type="int"> </argument> <description> </description> @@ -20697,15 +20915,15 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_polygon"> - <return type="IntArray"> + <method name="get_vertices" qualifiers="const"> + <return type="Vector3Array"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> </description> </method> - <method name="clear_polygons"> + <method name="set_vertices"> + <argument index="0" name="vertices" type="Vector3Array"> + </argument> <description> </description> </method> @@ -20719,14 +20937,14 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="set_navigation_mesh"> - <argument index="0" name="navmesh" type="Object"> - </argument> + <method name="get_navigation_mesh" qualifiers="const"> + <return type="Object"> + </return> <description> </description> </method> - <method name="get_navigation_mesh" qualifiers="const"> - <return type="Object"> + <method name="is_enabled" qualifiers="const"> + <return type="bool"> </return> <description> </description> @@ -20737,9 +20955,9 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="is_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_navigation_mesh"> + <argument index="0" name="navmesh" type="Object"> + </argument> <description> </description> </method> @@ -20753,15 +20971,17 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="set_vertices"> - <argument index="0" name="vertices" type="Vector2Array"> + <method name="add_outline"> + <argument index="0" name="outline" type="Vector2Array"> </argument> <description> </description> </method> - <method name="get_vertices" qualifiers="const"> - <return type="Vector2Array"> - </return> + <method name="add_outline_at_index"> + <argument index="0" name="outline" type="Vector2Array"> + </argument> + <argument index="1" name="index" type="int"> + </argument> <description> </description> </method> @@ -20771,17 +20991,7 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_polygon_count" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> - <method name="get_polygon"> - <return type="IntArray"> - </return> - <argument index="0" name="idx" type="int"> - </argument> + <method name="clear_outlines"> <description> </description> </method> @@ -20789,16 +20999,10 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="add_outline"> - <argument index="0" name="outline" type="Vector2Array"> - </argument> - <description> - </description> - </method> - <method name="add_outline_at_index"> - <argument index="0" name="outline" type="Vector2Array"> - </argument> - <argument index="1" name="index" type="int"> + <method name="get_outline" qualifiers="const"> + <return type="Vector2Array"> + </return> + <argument index="0" name="idx" type="int"> </argument> <description> </description> @@ -20809,19 +21013,27 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="set_outline"> + <method name="get_polygon"> + <return type="IntArray"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="outline" type="Vector2Array"> - </argument> <description> </description> </method> - <method name="get_outline" qualifiers="const"> + <method name="get_polygon_count" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="get_vertices" qualifiers="const"> <return type="Vector2Array"> </return> - <argument index="0" name="idx" type="int"> - </argument> + <description> + </description> + </method> + <method name="make_polygons_from_outlines"> <description> </description> </method> @@ -20831,11 +21043,17 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="clear_outlines"> + <method name="set_outline"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="outline" type="Vector2Array"> + </argument> <description> </description> </method> - <method name="make_polygons_from_outlines"> + <method name="set_vertices"> + <argument index="0" name="vertices" type="Vector2Array"> + </argument> <description> </description> </method> @@ -20849,14 +21067,14 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="set_navigation_polygon"> - <argument index="0" name="navpoly" type="NavigationPolygon"> - </argument> + <method name="get_navigation_polygon" qualifiers="const"> + <return type="NavigationPolygon"> + </return> <description> </description> </method> - <method name="get_navigation_polygon" qualifiers="const"> - <return type="NavigationPolygon"> + <method name="is_enabled" qualifiers="const"> + <return type="bool"> </return> <description> </description> @@ -20867,9 +21085,9 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="is_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_navigation_polygon"> + <argument index="0" name="navpoly" type="NavigationPolygon"> + </argument> <description> </description> </method> @@ -20884,169 +21102,169 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </description> <methods> <method name="Nil"> - <argument index="0" name="from" type="bool"> + <argument index="0" name="from" type="ColorArray"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="int"> + <argument index="0" name="from" type="Vector3Array"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="float"> + <argument index="0" name="from" type="Vector2Array"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="String"> + <argument index="0" name="from" type="StringArray"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="Vector2"> + <argument index="0" name="from" type="RealArray"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="Rect2"> + <argument index="0" name="from" type="IntArray"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="Vector3"> + <argument index="0" name="from" type="RawArray"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="Matrix32"> + <argument index="0" name="from" type="Array"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="Plane"> + <argument index="0" name="from" type="Dictionary"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="Quat"> + <argument index="0" name="from" type="InputEvent"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="AABB"> + <argument index="0" name="from" type="Object"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="Matrix3"> + <argument index="0" name="from" type="RID"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="Transform"> + <argument index="0" name="from" type="NodePath"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="Color"> + <argument index="0" name="from" type="Image"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="Image"> + <argument index="0" name="from" type="Color"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="NodePath"> + <argument index="0" name="from" type="Transform"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="RID"> + <argument index="0" name="from" type="Matrix3"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="Object"> + <argument index="0" name="from" type="AABB"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="InputEvent"> + <argument index="0" name="from" type="Quat"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="Dictionary"> + <argument index="0" name="from" type="Plane"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="Array"> + <argument index="0" name="from" type="Matrix32"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="RawArray"> + <argument index="0" name="from" type="Vector3"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="IntArray"> + <argument index="0" name="from" type="Rect2"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="RealArray"> + <argument index="0" name="from" type="Vector2"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="StringArray"> + <argument index="0" name="from" type="String"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="Vector2Array"> + <argument index="0" name="from" type="float"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="Vector3Array"> + <argument index="0" name="from" type="int"> </argument> <description> </description> </method> <method name="Nil"> - <argument index="0" name="from" type="ColorArray"> + <argument index="0" name="from" type="bool"> </argument> <description> </description> @@ -21119,35 +21337,60 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Called when any key input happens that was not handled by something else. </description> </method> - <method name="set_name"> - <argument index="0" name="name" type="String"> + <method name="add_child"> + <argument index="0" name="node" type="Node"> + </argument> + <argument index="1" name="legible_unique_name" type="bool" default="false"> </argument> <description> - Set the name of the [Node]. Name must be unique within parent, and setting an already existing name will cause for the node to be automatically renamed. + Add a child [Node]. Nodes can have as many children as they want, but every child must have a unique name. Children nodes are automatically deleted when the parent node is deleted, so deleting a whole scene is performed by deleting its topmost node. + The optional boolean argument enforces creating child node with human-readable names, based on the name of node being instanced instead of its type only. </description> </method> - <method name="get_name" qualifiers="const"> - <return type="String"> + <method name="add_to_group"> + <argument index="0" name="group" type="String"> + </argument> + <argument index="1" name="persistent" type="bool" default="false"> + </argument> + <description> + Add a node to a group. Groups are helpers to name and organize group of nodes, like for example: "Enemies", "Collectables", etc. A [Node] can be in any number of groups. Nodes can be assigned a group at any time, but will not be added to it until they are inside the scene tree (see [method is_inside_tree]). + </description> + </method> + <method name="can_process" qualifiers="const"> + <return type="bool"> </return> <description> - Return the name of the [Node]. Name is be unique within parent. + Return true if the node can process. </description> </method> - <method name="add_child"> - <argument index="0" name="node" type="Node"> + <method name="duplicate" qualifiers="const"> + <return type="Node"> + </return> + <argument index="0" name="use_instancing" type="bool" default="false"> </argument> - <argument index="1" name="legible_unique_name" type="bool" default="false"> + <description> + </description> + </method> + <method name="find_node" qualifiers="const"> + <return type="Node"> + </return> + <argument index="0" name="mask" type="String"> + </argument> + <argument index="1" name="recursive" type="bool" default="true"> + </argument> + <argument index="2" name="owned" type="bool" default="true"> </argument> <description> - Add a child [Node]. Nodes can have as many children as they want, but every child must have a unique name. Children nodes are automatically deleted when the parent node is deleted, so deleting a whole scene is performed by deleting its topmost node. - The optional boolean argument enforces creating child node with human-readable names, based on the name of node being instanced instead of its type only. + Find a descendant of this node whose name matches [code]mask[/code] as in [method String.match] (i.e. case sensitive, but '*' matches zero or more characters and '?' matches any single character except '.'). Note that it does not match against the full path, just against individual node names. </description> </method> - <method name="remove_child"> - <argument index="0" name="node" type="Node"> + <method name="get_child" qualifiers="const"> + <return type="Node"> + </return> + <argument index="0" name="idx" type="int"> </argument> <description> - Remove a child [Node]. Node is NOT deleted and will have to be deleted manually. + Return a children node by it's index (see [method get_child_count]). This method is often used for iterating all children of a node. </description> </method> <method name="get_child_count" qualifiers="const"> @@ -21163,23 +21406,40 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_child" qualifiers="const"> - <return type="Node"> + <method name="get_filename" qualifiers="const"> + <return type="String"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> - Return a children node by it's index (see [method get_child_count]). This method is often used for iterating all children of a node. + Return a filename that may be containedA node can contained by the node. When a scene is instanced from a file, it topmost node contains the filename from where it was loaded (see [method set_filename]). </description> </method> - <method name="has_node" qualifiers="const"> - <return type="bool"> + <method name="get_fixed_process_delta_time" qualifiers="const"> + <return type="float"> + </return> + <description> + Return the time elapsed since the last fixed frame. This is always the same in fixed processing unless the frames per second is changed in [OS]. + </description> + </method> + <method name="get_groups" qualifiers="const"> + <return type="Array"> </return> - <argument index="0" name="path" type="NodePath"> - </argument> <description> </description> </method> + <method name="get_index" qualifiers="const"> + <return type="int"> + </return> + <description> + Get the node index in the parent (assuming it has a parent). + </description> + </method> + <method name="get_name" qualifiers="const"> + <return type="String"> + </return> + <description> + Return the name of the [Node]. Name is be unique within parent. + </description> + </method> <method name="get_node" qualifiers="const"> <return type="Node"> </return> @@ -21204,34 +21464,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) - get_node("/root/MyGame") </description> </method> - <method name="get_parent" qualifiers="const"> - <return type="Node"> - </return> - <description> - Return the parent [Node] of the current [Node], or an empty Object if the node lacks a parent. - </description> - </method> - <method name="find_node" qualifiers="const"> - <return type="Node"> - </return> - <argument index="0" name="mask" type="String"> - </argument> - <argument index="1" name="recursive" type="bool" default="true"> - </argument> - <argument index="2" name="owned" type="bool" default="true"> - </argument> - <description> - Find a descendant of this node whose name matches [code]mask[/code] as in [method String.match] (i.e. case sensitive, but '*' matches zero or more characters and '?' matches any single character except '.'). Note that it does not match against the full path, just against individual node names. - </description> - </method> - <method name="has_node_and_resource" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="path" type="NodePath"> - </argument> - <description> - </description> - </method> <method name="get_node_and_resource"> <return type="Array"> </return> @@ -21240,28 +21472,18 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="is_inside_tree" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> - <method name="is_a_parent_of" qualifiers="const"> - <return type="bool"> + <method name="get_owner" qualifiers="const"> + <return type="Node"> </return> - <argument index="0" name="node" type="Node"> - </argument> <description> - Return [i]true[/i] if the "node" argument is a direct or indirect child of the current node, otherwise return [i]false[/i]. + Get the node owner (see [method set_owner]). </description> </method> - <method name="is_greater_than" qualifiers="const"> - <return type="bool"> + <method name="get_parent" qualifiers="const"> + <return type="Node"> </return> - <argument index="0" name="node" type="Node"> - </argument> <description> - Return [i]true[/i] if "node" occurs later in the scene hierarchy than the current node, otherwise return [i]false[/i]. + Return the parent [Node] of the current [Node], or an empty Object if the node lacks a parent. </description> </method> <method name="get_path" qualifiers="const"> @@ -21280,271 +21502,267 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the relative path from the current node to the specified node in "node" argument. Both nodes must be in the same scene, or else the function will fail. </description> </method> - <method name="add_to_group"> - <argument index="0" name="group" type="String"> - </argument> - <argument index="1" name="persistent" type="bool" default="false"> - </argument> + <method name="get_pause_mode" qualifiers="const"> + <return type="int"> + </return> <description> - Add a node to a group. Groups are helpers to name and organize group of nodes, like for example: "Enemies", "Collectables", etc. A [Node] can be in any number of groups. Nodes can be assigned a group at any time, but will not be added to it until they are inside the scene tree (see [method is_inside_tree]). </description> </method> - <method name="remove_from_group"> - <argument index="0" name="group" type="String"> - </argument> + <method name="get_position_in_parent" qualifiers="const"> + <return type="int"> + </return> <description> - Remove a node from a group. </description> </method> - <method name="is_in_group" qualifiers="const"> - <return type="bool"> + <method name="get_process_delta_time" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="group" type="String"> - </argument> <description> + Return the time elapsed (in seconds) since the last process callback. This is almost always different each time. </description> </method> - <method name="move_child"> - <argument index="0" name="child_node" type="Node"> - </argument> - <argument index="1" name="to_pos" type="int"> - </argument> + <method name="get_scene_instance_load_placeholder" qualifiers="const"> + <return type="bool"> + </return> <description> - Move a child node to a different position (order) amongst the other children. Since calls, signals, etc are performed by tree order, changing the order of children nodes may be useful. </description> </method> - <method name="get_groups" qualifiers="const"> - <return type="Array"> + <method name="get_tree" qualifiers="const"> + <return type="SceneTree"> </return> <description> </description> </method> - <method name="raise"> + <method name="get_viewport" qualifiers="const"> + <return type="Object"> + </return> <description> - Move this node to the top of the array of nodes of the parent node. This is often useful on GUIs ([Control]), because their order of drawing fully depends on their order in the tree. </description> </method> - <method name="set_owner"> - <argument index="0" name="owner" type="Node"> + <method name="has_node" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="path" type="NodePath"> </argument> <description> - Set the node owner. A node can have any other node as owner (as long as a valid parent, grandparent, etc ascending in the tree). When saving a node (using SceneSaver) all the nodes it owns will be saved with it. This allows to create complex SceneTrees, with instancing and subinstancing. </description> </method> - <method name="get_owner" qualifiers="const"> - <return type="Node"> + <method name="has_node_and_resource" qualifiers="const"> + <return type="bool"> </return> + <argument index="0" name="path" type="NodePath"> + </argument> <description> - Get the node owner (see [method set_owner]). </description> </method> - <method name="remove_and_skip"> + <method name="is_a_parent_of" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="node" type="Node"> + </argument> <description> - Remove a node and set all its children as children of the parent node (if exists). All even subscriptions that pass by the removed node will be unsubscribed. + Return [i]true[/i] if the "node" argument is a direct or indirect child of the current node, otherwise return [i]false[/i]. </description> </method> - <method name="get_index" qualifiers="const"> - <return type="int"> + <method name="is_fixed_processing" qualifiers="const"> + <return type="bool"> </return> <description> - Get the node index in the parent (assuming it has a parent). + Return true if fixed processing is enabled (see [method set_fixed_process]). </description> </method> - <method name="print_tree"> + <method name="is_greater_than" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="node" type="Node"> + </argument> <description> - Print the scene to stdout. Used mainly for debugging purposes. + Return [i]true[/i] if "node" occurs later in the scene hierarchy than the current node, otherwise return [i]false[/i]. </description> </method> - <method name="set_filename"> - <argument index="0" name="filename" type="String"> + <method name="is_in_group" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="group" type="String"> </argument> <description> - A node can contain a filename. This filename should not be changed by the user, unless writing editors and tools. When a scene is instanced from a file, it topmost node contains the filename from where it was loaded. </description> </method> - <method name="get_filename" qualifiers="const"> - <return type="String"> + <method name="is_inside_tree" qualifiers="const"> + <return type="bool"> </return> <description> - Return a filename that may be containedA node can contained by the node. When a scene is instanced from a file, it topmost node contains the filename from where it was loaded (see [method set_filename]). </description> </method> - <method name="propagate_notification"> - <argument index="0" name="what" type="int"> - </argument> + <method name="is_processing" qualifiers="const"> + <return type="bool"> + </return> <description> - Notify the current node and all its children recursively by calling notification() in all of them. + Return whether processing is enabled in the current node (see [method set_process]). </description> </method> - <method name="set_fixed_process"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="is_processing_input" qualifiers="const"> + <return type="bool"> + </return> <description> - Enables or disables node fixed framerate processing. When a node is being processed, it will receive a NOTIFICATION_PROCESS at a fixed (usually 60 fps, check [OS] to change that) interval (and the [method _fixed_process] callback will be called if exists). It is common to check how much time was elapsed since the previous frame by calling [method get_fixed_process_delta_time]. + Return true if the node is processing input (see [method set_process_input]). </description> </method> - <method name="get_fixed_process_delta_time" qualifiers="const"> - <return type="float"> + <method name="is_processing_unhandled_input" qualifiers="const"> + <return type="bool"> </return> <description> - Return the time elapsed since the last fixed frame. This is always the same in fixed processing unless the frames per second is changed in [OS]. + Return true if the node is processing unhandled input (see [method set_process_unhandled_input]). </description> </method> - <method name="is_fixed_processing" qualifiers="const"> + <method name="is_processing_unhandled_key_input" qualifiers="const"> <return type="bool"> </return> <description> - Return true if fixed processing is enabled (see [method set_fixed_process]). </description> </method> - <method name="set_process"> - <argument index="0" name="enable" type="bool"> + <method name="move_child"> + <argument index="0" name="child_node" type="Node"> + </argument> + <argument index="1" name="to_pos" type="int"> </argument> <description> - Enables or disables node processing. When a node is being processed, it will receive a NOTIFICATION_PROCESS on every drawn frame (and the [method _process] callback will be called if exists). It is common to check how much time was elapsed since the previous frame by calling [method get_process_delta_time]. + Move a child node to a different position (order) amongst the other children. Since calls, signals, etc are performed by tree order, changing the order of children nodes may be useful. </description> </method> - <method name="get_process_delta_time" qualifiers="const"> - <return type="float"> - </return> + <method name="print_stray_nodes"> <description> - Return the time elapsed (in seconds) since the last process callback. This is almost always different each time. </description> </method> - <method name="is_processing" qualifiers="const"> - <return type="bool"> - </return> + <method name="print_tree"> <description> - Return whether processing is enabled in the current node (see [method set_process]). + Print the scene to stdout. Used mainly for debugging purposes. </description> </method> - <method name="set_process_input"> - <argument index="0" name="enable" type="bool"> + <method name="propagate_notification"> + <argument index="0" name="what" type="int"> </argument> <description> - Enable input processing for node. This is not required for GUI controls! It hooks up the node to receive all input (see [method _input]). + Notify the current node and all its children recursively by calling notification() in all of them. </description> </method> - <method name="is_processing_input" qualifiers="const"> - <return type="bool"> - </return> + <method name="queue_free"> <description> - Return true if the node is processing input (see [method set_process_input]). </description> </method> - <method name="set_process_unhandled_input"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="raise"> <description> - Enable unhandled input processing for node. This is not required for GUI controls! It hooks up the node to receive all input that was not previously handled before (usually by a [Control]). (see [method _unhandled_input]). + Move this node to the top of the array of nodes of the parent node. This is often useful on GUIs ([Control]), because their order of drawing fully depends on their order in the tree. </description> </method> - <method name="is_processing_unhandled_input" qualifiers="const"> - <return type="bool"> - </return> + <method name="remove_and_skip"> <description> - Return true if the node is processing unhandled input (see [method set_process_unhandled_input]). + Remove a node and set all its children as children of the parent node (if exists). All even subscriptions that pass by the removed node will be unsubscribed. </description> </method> - <method name="set_process_unhandled_key_input"> - <argument index="0" name="enable" type="bool"> + <method name="remove_child"> + <argument index="0" name="node" type="Node"> </argument> <description> + Remove a child [Node]. Node is NOT deleted and will have to be deleted manually. </description> </method> - <method name="is_processing_unhandled_key_input" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> - <method name="set_pause_mode"> - <argument index="0" name="mode" type="int"> + <method name="remove_from_group"> + <argument index="0" name="group" type="String"> </argument> <description> + Remove a node from a group. </description> </method> - <method name="get_pause_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="replace_by"> + <argument index="0" name="node" type="Node"> + </argument> + <argument index="1" name="keep_data" type="bool" default="false"> + </argument> <description> + Replace a node in a scene by a given one. Subscriptions that pass through this node will be lost. </description> </method> - <method name="can_process" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_filename"> + <argument index="0" name="filename" type="String"> + </argument> <description> - Return true if the node can process. + A node can contain a filename. This filename should not be changed by the user, unless writing editors and tools. When a scene is instanced from a file, it topmost node contains the filename from where it was loaded. </description> </method> - <method name="print_stray_nodes"> + <method name="set_fixed_process"> + <argument index="0" name="enable" type="bool"> + </argument> <description> + Enables or disables node fixed framerate processing. When a node is being processed, it will receive a NOTIFICATION_PROCESS at a fixed (usually 60 fps, check [OS] to change that) interval (and the [method _fixed_process] callback will be called if exists). It is common to check how much time was elapsed since the previous frame by calling [method get_fixed_process_delta_time]. </description> </method> - <method name="get_position_in_parent" qualifiers="const"> - <return type="int"> - </return> + <method name="set_name"> + <argument index="0" name="name" type="String"> + </argument> <description> + Set the name of the [Node]. Name must be unique within parent, and setting an already existing name will cause for the node to be automatically renamed. </description> </method> - <method name="get_tree" qualifiers="const"> - <return type="SceneTree"> - </return> + <method name="set_owner"> + <argument index="0" name="owner" type="Node"> + </argument> <description> + Set the node owner. A node can have any other node as owner (as long as a valid parent, grandparent, etc ascending in the tree). When saving a node (using SceneSaver) all the nodes it owns will be saved with it. This allows to create complex SceneTrees, with instancing and subinstancing. </description> </method> - <method name="duplicate" qualifiers="const"> - <return type="Node"> - </return> - <argument index="0" name="use_instancing" type="bool" default="false"> + <method name="set_pause_mode"> + <argument index="0" name="mode" type="int"> </argument> <description> </description> </method> - <method name="replace_by"> - <argument index="0" name="node" type="Node"> - </argument> - <argument index="1" name="keep_data" type="bool" default="false"> + <method name="set_process"> + <argument index="0" name="enable" type="bool"> </argument> <description> - Replace a node in a scene by a given one. Subscriptions that pass through this node will be lost. + Enables or disables node processing. When a node is being processed, it will receive a NOTIFICATION_PROCESS on every drawn frame (and the [method _process] callback will be called if exists). It is common to check how much time was elapsed since the previous frame by calling [method get_process_delta_time]. </description> </method> - <method name="set_scene_instance_load_placeholder"> - <argument index="0" name="load_placeholder" type="bool"> + <method name="set_process_input"> + <argument index="0" name="enable" type="bool"> </argument> <description> + Enable input processing for node. This is not required for GUI controls! It hooks up the node to receive all input (see [method _input]). </description> </method> - <method name="get_scene_instance_load_placeholder" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_process_unhandled_input"> + <argument index="0" name="enable" type="bool"> + </argument> <description> + Enable unhandled input processing for node. This is not required for GUI controls! It hooks up the node to receive all input that was not previously handled before (usually by a [Control]). (see [method _unhandled_input]). </description> </method> - <method name="get_viewport" qualifiers="const"> - <return type="Object"> - </return> + <method name="set_process_unhandled_key_input"> + <argument index="0" name="enable" type="bool"> + </argument> <description> </description> </method> - <method name="queue_free"> + <method name="set_scene_instance_load_placeholder"> + <argument index="0" name="load_placeholder" type="bool"> + </argument> <description> </description> </method> </methods> <signals> - <signal name="renamed"> + <signal name="enter_tree"> <description> - Emitted when the node is renamed. </description> </signal> - <signal name="enter_tree"> + <signal name="exit_tree"> <description> </description> </signal> - <signal name="exit_tree"> + <signal name="renamed"> <description> + Emitted when the node is renamed. </description> </signal> </signals> @@ -21557,6 +21775,10 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="NOTIFICATION_READY" value="13"> </constant> + <constant name="NOTIFICATION_PAUSED" value="14"> + </constant> + <constant name="NOTIFICATION_UNPAUSED" value="15"> + </constant> <constant name="NOTIFICATION_FIXED_PROCESS" value="16"> </constant> <constant name="NOTIFICATION_PROCESS" value="17"> @@ -21568,10 +21790,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <constant name="NOTIFICATION_UNPARENTED" value="19"> Notification received when a node is unparented (parent removed it from the list of children). </constant> - <constant name="NOTIFICATION_PAUSED" value="14"> - </constant> - <constant name="NOTIFICATION_UNPAUSED" value="15"> - </constant> <constant name="NOTIFICATION_INSTANCED" value="20"> </constant> <constant name="NOTIFICATION_DRAG_BEGIN" value="21"> @@ -21594,32 +21812,27 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Base node for 2D system. Node2D contains a position, rotation and scale, which is used to position and animate. It can alternatively be used with a custom 2D transform ([Matrix32]). A tree of Node2Ds allows complex hierarchies for animation and positioning. </description> <methods> - <method name="set_pos"> - <argument index="0" name="pos" type="Vector2"> - </argument> - <description> - Set the position of the 2D node. - </description> - </method> - <method name="set_rot"> - <argument index="0" name="radians" type="float"> + <method name="edit_set_pivot"> + <argument index="0" name="pivot" type="Vector2"> </argument> <description> - Set the rotation of the 2D node. + Set the pivot position of the 2D node to 'pivot' value. This method is implemented only in some nodes that inherit Node2D. </description> </method> - <method name="set_rotd"> - <argument index="0" name="degrees" type="float"> + <method name="get_angle_to" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="point" type="Vector2"> </argument> <description> - Set the rotation of the 2D node. + Return the rotation angle in radians needed for the 2d node to point at 'point' position. </description> </method> - <method name="set_scale"> - <argument index="0" name="scale" type="Vector2"> - </argument> + <method name="get_global_pos" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Set the scale of the 2D node. + Return the global position of the 2D node. </description> </method> <method name="get_pos" qualifiers="const"> @@ -21629,6 +21842,15 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the position of the 2D node. </description> </method> + <method name="get_relative_transform_to_parent" qualifiers="const"> + <return type="Matrix32"> + </return> + <argument index="0" name="parent" type="Object"> + </argument> + <description> + Return the transform [Matrix32] calculated relatively to the parent of this 2D node. + </description> + </method> <method name="get_rot" qualifiers="const"> <return type="float"> </return> @@ -21649,11 +21871,32 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the scale of the 2D node. </description> </method> - <method name="rotate"> - <argument index="0" name="radians" type="float"> + <method name="get_z" qualifiers="const"> + <return type="int"> + </return> + <description> + Return the Z-index of the 2D node. + </description> + </method> + <method name="global_translate"> + <argument index="0" name="offset" type="Vector2"> </argument> <description> - Apply a 'radians' rotation to the 2D node, starting from its current rotation. + Apply a global translation of 'offset' to the 2D node, starting from its current global position. + </description> + </method> + <method name="is_z_relative" qualifiers="const"> + <return type="bool"> + </return> + <description> + Return true if the Z-index value of this 2D node is relative to its parent's. Else, return false. + </description> + </method> + <method name="look_at"> + <argument index="0" name="point" type="Vector2"> + </argument> + <description> + Rotate the 2d node so it points at 'point' position. </description> </method> <method name="move_local_x"> @@ -21674,18 +21917,11 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Apply a local translation on Y axis to the 2D node according to the 'delta' of the process. If 'scaled' is false, the movement is normalized. </description> </method> - <method name="translate"> - <argument index="0" name="offset" type="Vector2"> - </argument> - <description> - Apply a local translation of 'offset' to the 2D node, starting from its current local position. - </description> - </method> - <method name="global_translate"> - <argument index="0" name="offset" type="Vector2"> + <method name="rotate"> + <argument index="0" name="radians" type="float"> </argument> <description> - Apply a global translation of 'offset' to the 2D node, starting from its current global position. + Apply a 'radians' rotation to the 2D node, starting from its current rotation. </description> </method> <method name="scale"> @@ -21702,20 +21938,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Set the global position of the 2D node to 'pos'. </description> </method> - <method name="get_global_pos" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - Return the global position of the 2D node. - </description> - </method> - <method name="set_transform"> - <argument index="0" name="xform" type="Matrix32"> - </argument> - <description> - Set the local transform [Matrix32] of the 2D node. - </description> - </method> <method name="set_global_transform"> <argument index="0" name="xform" type="Matrix32"> </argument> @@ -21723,64 +21945,60 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Set the global transform [Matrix32] of the 2D node. </description> </method> - <method name="look_at"> - <argument index="0" name="point" type="Vector2"> + <method name="set_pos"> + <argument index="0" name="pos" type="Vector2"> </argument> <description> - Rotate the 2d node so it points at 'point' position. + Set the position of the 2D node. </description> </method> - <method name="get_angle_to" qualifiers="const"> - <return type="float"> - </return> - <argument index="0" name="point" type="Vector2"> + <method name="set_rot"> + <argument index="0" name="radians" type="float"> </argument> <description> - Return the rotation angle in radians needed for the 2d node to point at 'point' position. + Set the rotation of the 2D node. </description> </method> - <method name="set_z"> - <argument index="0" name="z" type="int"> + <method name="set_rotd"> + <argument index="0" name="degrees" type="float"> </argument> <description> - Set the Z-index value of the 2D node. + Set the rotation of the 2D node. </description> </method> - <method name="get_z" qualifiers="const"> - <return type="int"> - </return> + <method name="set_scale"> + <argument index="0" name="scale" type="Vector2"> + </argument> <description> - Return the Z-index of the 2D node. + Set the scale of the 2D node. </description> </method> - <method name="set_z_as_relative"> - <argument index="0" name="enable" type="bool"> + <method name="set_transform"> + <argument index="0" name="xform" type="Matrix32"> </argument> <description> - Set the Z-index value as relative to the parent node of this 2D node. Thus, if this 2D node's Z-index value is 2 and its parent's effective Z-index is 3, then the effective Z-index value of this 2D node would be 3 + 2 = 5. + Set the local transform [Matrix32] of the 2D node. </description> </method> - <method name="is_z_relative" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_z"> + <argument index="0" name="z" type="int"> + </argument> <description> - Return true if the Z-index value of this 2D node is relative to its parent's. Else, return false. + Set the Z-index value of the 2D node. </description> </method> - <method name="edit_set_pivot"> - <argument index="0" name="pivot" type="Vector2"> + <method name="set_z_as_relative"> + <argument index="0" name="enable" type="bool"> </argument> <description> - Set the pivot position of the 2D node to 'pivot' value. This method is implemented only in some nodes that inherit Node2D. + Set the Z-index value as relative to the parent node of this 2D node. Thus, if this 2D node's Z-index value is 2 and its parent's effective Z-index is 3, then the effective Z-index value of this 2D node would be 3 + 2 = 5. </description> </method> - <method name="get_relative_transform_to_parent" qualifiers="const"> - <return type="Matrix32"> - </return> - <argument index="0" name="parent" type="Object"> + <method name="translate"> + <argument index="0" name="offset" type="Vector2"> </argument> <description> - Return the transform [Matrix32] calculated relatively to the parent of this 2D node. + Apply a local translation of 'offset' to the 2D node, starting from its current local position. </description> </method> </methods> @@ -21797,6 +22015,15 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) A [NodePath] is made up of a list of node names, a list of "subnode" (resource) names, and the name of a property in the final node or resource. </description> <methods> + <method name="NodePath"> + <return type="NodePath"> + </return> + <argument index="0" name="from" type="String"> + </argument> + <description> + Create a NodePath from a string, e.g. "Path2D/PathFollow2D/Sprite:texture:size". A path is absolute if it starts with a slash. Absolute paths are only valid in the global scene tree, not within individual scenes. In a relative path, [code]"."[/code] and [code]".."[/code] indicate the current node and its parent. + </description> + </method> <method name="get_name"> <return type="String"> </return> @@ -21850,15 +22077,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return true if the node path is empty. </description> </method> - <method name="NodePath"> - <return type="NodePath"> - </return> - <argument index="0" name="from" type="String"> - </argument> - <description> - Create a NodePath from a string, e.g. "Path2D/PathFollow2D/Sprite:texture:size". A path is absolute if it starts with a slash. Absolute paths are only valid in the global scene tree, not within individual scenes. In a relative path, [code]"."[/code] and [code]".."[/code] indicate the current node and its parent. - </description> - </method> </methods> <constants> </constants> @@ -21880,243 +22098,188 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) -Command Line </description> <methods> - <method name="set_clipboard"> - <argument index="0" name="clipboard" type="String"> - </argument> - <description> - Set clipboard to the OS. - </description> - </method> - <method name="get_clipboard" qualifiers="const"> - <return type="String"> - </return> - <description> - Get clipboard from the host OS. - </description> - </method> - <method name="set_video_mode"> - <argument index="0" name="size" type="Vector2"> - </argument> - <argument index="1" name="fullscreen" type="bool"> - </argument> - <argument index="2" name="resizable" type="bool"> - </argument> - <argument index="3" name="screen" type="int" default="0"> + <method name="alert"> + <argument index="0" name="text" type="String"> </argument> - <description> - Change the video mode. - </description> - </method> - <method name="get_video_mode_size" qualifiers="const"> - <return type="Vector2"> - </return> - <argument index="0" name="screen" type="int" default="0"> + <argument index="1" name="title" type="String" default=""Alert!""> </argument> <description> - Return the current video mode size. </description> </method> - <method name="is_video_mode_fullscreen" qualifiers="const"> + <method name="can_draw" qualifiers="const"> <return type="bool"> </return> - <argument index="0" name="screen" type="int" default="0"> - </argument> <description> - Return true if the current video mode is fullscreen. + Return true if the host OS allows drawing. </description> </method> - <method name="is_video_mode_resizable" qualifiers="const"> + <method name="can_use_threads" qualifiers="const"> <return type="bool"> </return> - <argument index="0" name="screen" type="int" default="0"> - </argument> <description> - Return true if the window is resizable. </description> </method> - <method name="get_fullscreen_mode_list" qualifiers="const"> - <return type="Array"> - </return> - <argument index="0" name="screen" type="int" default="0"> + <method name="delay_msec" qualifiers="const"> + <argument index="0" name="msec" type="int"> </argument> <description> - Return the list of fullscreen modes. - </description> - </method> - <method name="get_screen_count" qualifiers="const"> - <return type="int"> - </return> - <description> - Returns the number of displays attached to the host machine + Delay executing of the current thread by given milliseconds. </description> </method> - <method name="get_current_screen" qualifiers="const"> - <return type="int"> - </return> + <method name="delay_usec" qualifiers="const"> + <argument index="0" name="usec" type="int"> + </argument> <description> - Returns the current screen index (0 padded). + Delay executing of the current thread by given microseconds. </description> </method> - <method name="set_current_screen"> - <argument index="0" name="screen" type="int"> + <method name="dump_memory_to_file"> + <argument index="0" name="file" type="String"> </argument> <description> </description> </method> - <method name="get_screen_position" qualifiers="const"> - <return type="Vector2"> - </return> - <argument index="0" name="screen" type="int" default="0"> + <method name="dump_resources_to_file"> + <argument index="0" name="file" type="String"> </argument> <description> </description> </method> - <method name="get_screen_size" qualifiers="const"> - <return type="Vector2"> + <method name="execute"> + <return type="int"> </return> - <argument index="0" name="screen" type="int" default="0"> + <argument index="0" name="path" type="String"> + </argument> + <argument index="1" name="arguments" type="StringArray"> + </argument> + <argument index="2" name="blocking" type="bool"> + </argument> + <argument index="3" name="output" type="Array" default="Array()"> </argument> <description> - Returns the dimensions in pixels of the specified screen. + Execute the binary file in given path, optionally blocking until it returns. A process ID is returned. </description> </method> - <method name="get_screen_dpi" qualifiers="const"> + <method name="find_scancode_from_string" qualifiers="const"> <return type="int"> </return> - <argument index="0" name="screen" type="int" default="0"> + <argument index="0" name="string" type="String"> </argument> <description> </description> </method> - <method name="get_window_position" qualifiers="const"> - <return type="Vector2"> + <method name="get_borderless_window" qualifiers="const"> + <return type="bool"> </return> <description> - Returns the window position relative to the screen, the origin is the top left corner, +Y axis goes to the bottom and +X axis goes to the right. </description> </method> - <method name="set_window_position"> - <argument index="0" name="position" type="Vector2"> - </argument> + <method name="get_clipboard" qualifiers="const"> + <return type="String"> + </return> <description> - Sets the position of the window to the specified position (this function could be restricted by the window manager, meaning that there could be some unreachable areas of the screen). + Get clipboard from the host OS. </description> </method> - <method name="get_window_size" qualifiers="const"> - <return type="Vector2"> + <method name="get_cmdline_args"> + <return type="StringArray"> </return> <description> - Returns the size of the window (without counting window manager decorations). + Return the commandline passed to the engine. </description> </method> - <method name="set_window_size"> - <argument index="0" name="size" type="Vector2"> - </argument> + <method name="get_current_screen" qualifiers="const"> + <return type="int"> + </return> <description> - Sets the window size to the specified size. + Returns the current screen index (0 padded). </description> </method> - <method name="set_window_fullscreen"> - <argument index="0" name="enabled" type="bool"> - </argument> + <method name="get_custom_level" qualifiers="const"> + <return type="String"> + </return> <description> - Sets window fullscreen mode to the [i]enabled[/i] argument, [i]enabled[/i] is a toggle for the fullscreen mode, calling the function with [i]enabled[/i] true when the screen is not on fullscreen mode will cause the screen to go to fullscreen mode, calling the function with [i]enabled[/i] false when the screen is in fullscreen mode will cause the window to exit the fullscreen mode. </description> </method> - <method name="is_window_fullscreen" qualifiers="const"> - <return type="bool"> + <method name="get_data_dir" qualifiers="const"> + <return type="String"> </return> <description> - Returns whether the window is in fullscreen mode or not. + Return the absolute directory path of user data path([user://]). </description> </method> - <method name="set_window_resizable"> - <argument index="0" name="enabled" type="bool"> + <method name="get_date" qualifiers="const"> + <return type="Dictionary"> + </return> + <argument index="0" name="utc" type="bool" default="false"> </argument> <description> - Set the window resizable state, if the window is not resizable it will preserve the dimensions specified in the project settings. + Returns current date as a dictionary of keys: year, month, day, weekday, dst (daylight savings time). </description> </method> - <method name="is_window_resizable" qualifiers="const"> - <return type="bool"> + <method name="get_datetime" qualifiers="const"> + <return type="Dictionary"> </return> - <description> - Returns whether the window is resizable or not. - </description> - </method> - <method name="set_window_minimized"> - <argument index="0" name="enabled" type="bool"> + <argument index="0" name="utc" type="bool" default="false"> </argument> <description> - Set whether the window is minimized. + Returns current datetime as a dictionary of keys: year, month, day, weekday, dst (daylight savings time), hour, minute, second. </description> </method> - <method name="is_window_minimized" qualifiers="const"> - <return type="bool"> + <method name="get_datetime_from_unix_time" qualifiers="const"> + <return type="Dictionary"> </return> - <description> - Return true if the window is minimized. - </description> - </method> - <method name="set_window_maximized"> - <argument index="0" name="enabled" type="bool"> + <argument index="0" name="unix_time_val" type="int"> </argument> <description> - Set the window size to maximized. + Get a dictionary of time values when given epoch time. + Dictionary Time values will be a union of values from [method get_time] and [method get_date] dictionaries (with the exception of dst = day light standard time, as it cannot be determined from epoch). </description> </method> - <method name="is_window_maximized" qualifiers="const"> - <return type="bool"> + <method name="get_dynamic_memory_usage" qualifiers="const"> + <return type="int"> </return> <description> - Return true if the window is maximized. + Return the total amount of dynamic memory used (only works in debug). </description> </method> - <method name="set_borderless_window"> - <argument index="0" name="borderless" type="bool"> + <method name="get_environment" qualifiers="const"> + <return type="String"> + </return> + <argument index="0" name="environment" type="String"> </argument> <description> + Return an environment variable. </description> </method> - <method name="get_borderless_window" qualifiers="const"> - <return type="bool"> + <method name="get_executable_path" qualifiers="const"> + <return type="String"> </return> <description> + Return the path to the current engine executable. </description> </method> - <method name="set_screen_orientation"> - <argument index="0" name="orientation" type="int"> - </argument> - <description> - Sets the current screen orientation, the argument value must be one of the SCREEN_ORIENTATION constants in this class. - </description> - </method> - <method name="get_screen_orientation" qualifiers="const"> + <method name="get_frames_drawn"> <return type="int"> </return> <description> - Returns the current screen orientation, the return value will be one of the SCREEN_ORIENTATION constants in this class. - </description> - </method> - <method name="set_keep_screen_on"> - <argument index="0" name="enabled" type="bool"> - </argument> - <description> - Set keep screen on if true, or goes to sleep by device setting if false. (for Android/iOS) + Return the total amount of frames drawn. </description> </method> - <method name="is_keep_screen_on" qualifiers="const"> - <return type="bool"> + <method name="get_frames_per_second" qualifiers="const"> + <return type="float"> </return> <description> - Returns whether the screen is being kept on or not. + Returns the frames per second of the running game. </description> </method> - <method name="set_iterations_per_second"> - <argument index="0" name="iterations_per_second" type="int"> + <method name="get_fullscreen_mode_list" qualifiers="const"> + <return type="Array"> + </return> + <argument index="0" name="screen" type="int" default="0"> </argument> <description> - Set the amount of fixed iterations per second (for fixed process and physics). + Return the list of fullscreen modes. </description> </method> <method name="get_iterations_per_second" qualifiers="const"> @@ -22126,179 +22289,163 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the amount of fixed iterations per second (for fixed process and physics). </description> </method> - <method name="set_target_fps"> - <argument index="0" name="target_fps" type="int"> - </argument> + <method name="get_locale" qualifiers="const"> + <return type="String"> + </return> <description> + Return the host OS locale. </description> </method> - <method name="get_target_fps" qualifiers="const"> - <return type="float"> + <method name="get_main_loop" qualifiers="const"> + <return type="Object"> </return> <description> + Return the main loop object (see [MainLoop]). </description> </method> - <method name="set_time_scale"> - <argument index="0" name="time_scale" type="float"> - </argument> + <method name="get_model_name" qualifiers="const"> + <return type="String"> + </return> <description> - Speeds up or slows down the physics by changing the delta variable. (delta * time_scale) </description> </method> - <method name="get_time_scale"> - <return type="float"> + <method name="get_name" qualifiers="const"> + <return type="String"> </return> <description> + Return the name of the host OS. Possible values are: "Android", "BlackBerry 10", "Flash", "Haiku", "iOS", "HTML5", "OSX", "Server", "Windows", "WinRT", "X11" </description> </method> - <method name="has_touchscreen_ui_hint" qualifiers="const"> - <return type="bool"> + <method name="get_process_ID" qualifiers="const"> + <return type="int"> </return> <description> + Returns the game process ID </description> </method> - <method name="set_window_title"> - <argument index="0" name="title" type="String"> - </argument> + <method name="get_processor_count" qualifiers="const"> + <return type="int"> + </return> <description> - Sets the window title to the specified string. + Returns the number of cores available in the host machine. </description> </method> - <method name="set_low_processor_usage_mode"> - <argument index="0" name="enable" type="bool"> + <method name="get_scancode_string" qualifiers="const"> + <return type="String"> + </return> + <argument index="0" name="code" type="int"> </argument> <description> - Set to true to enable the low cpu usage mode. In this mode, the screen only redraws when there are changes, and a considerable sleep time is inserted between frames. This way, editors using the engine UI only use very little cpu. </description> </method> - <method name="is_in_low_processor_usage_mode" qualifiers="const"> - <return type="bool"> + <method name="get_screen_count" qualifiers="const"> + <return type="int"> </return> <description> - Return true if low cpu usage mode is enabled. + Returns the number of displays attached to the host machine </description> </method> - <method name="get_processor_count" qualifiers="const"> + <method name="get_screen_dpi" qualifiers="const"> <return type="int"> </return> + <argument index="0" name="screen" type="int" default="0"> + </argument> <description> - Returns the number of cores available in the host machine. </description> </method> - <method name="get_executable_path" qualifiers="const"> - <return type="String"> + <method name="get_screen_orientation" qualifiers="const"> + <return type="int"> </return> <description> - Return the path to the current engine executable. + Returns the current screen orientation, the return value will be one of the SCREEN_ORIENTATION constants in this class. </description> </method> - <method name="execute"> - <return type="int"> + <method name="get_screen_position" qualifiers="const"> + <return type="Vector2"> </return> - <argument index="0" name="path" type="String"> - </argument> - <argument index="1" name="arguments" type="StringArray"> - </argument> - <argument index="2" name="blocking" type="bool"> - </argument> - <argument index="3" name="output" type="Array" default="Array()"> + <argument index="0" name="screen" type="int" default="0"> </argument> <description> - Execute the binary file in given path, optionally blocking until it returns. A process ID is returned. </description> </method> - <method name="kill"> - <return type="int"> + <method name="get_screen_size" qualifiers="const"> + <return type="Vector2"> </return> - <argument index="0" name="pid" type="int"> + <argument index="0" name="screen" type="int" default="0"> </argument> <description> - Kill a process ID (this method can be used to kill processes that were not spawned by the game). + Returns the dimensions in pixels of the specified screen. </description> </method> - <method name="shell_open"> + <method name="get_splash_tick_msec" qualifiers="const"> <return type="int"> </return> - <argument index="0" name="uri" type="String"> - </argument> <description> </description> </method> - <method name="get_process_ID" qualifiers="const"> + <method name="get_static_memory_peak_usage" qualifiers="const"> <return type="int"> </return> <description> - Returns the game process ID + Return the max amount of static memory used (only works in debug). </description> </method> - <method name="get_environment" qualifiers="const"> - <return type="String"> + <method name="get_static_memory_usage" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="environment" type="String"> - </argument> <description> - Return an environment variable. </description> </method> - <method name="has_environment" qualifiers="const"> - <return type="bool"> + <method name="get_system_dir" qualifiers="const"> + <return type="String"> </return> - <argument index="0" name="environment" type="String"> + <argument index="0" name="dir" type="int"> </argument> <description> - Return true if an environment variable exists. </description> </method> - <method name="get_name" qualifiers="const"> - <return type="String"> + <method name="get_system_time_secs" qualifiers="const"> + <return type="int"> </return> <description> - Return the name of the host OS. Possible values are: "Android", "BlackBerry 10", "Flash", "Haiku", "iOS", "HTML5", "OSX", "Server", "Windows", "WinRT", "X11" </description> </method> - <method name="get_cmdline_args"> - <return type="StringArray"> + <method name="get_target_fps" qualifiers="const"> + <return type="float"> </return> <description> - Return the commandline passed to the engine. </description> </method> - <method name="get_main_loop" qualifiers="const"> - <return type="Object"> + <method name="get_ticks_msec" qualifiers="const"> + <return type="int"> </return> <description> - Return the main loop object (see [MainLoop]). + Return the amount of time passed in milliseconds since the engine started. </description> </method> - <method name="get_datetime" qualifiers="const"> + <method name="get_time" qualifiers="const"> <return type="Dictionary"> </return> <argument index="0" name="utc" type="bool" default="false"> </argument> <description> - Returns current datetime as a dictionary of keys: year, month, day, weekday, dst (daylight savings time), hour, minute, second. + Returns current time as a dictionary of keys: hour, minute, second </description> </method> - <method name="get_date" qualifiers="const"> - <return type="Dictionary"> + <method name="get_time_scale"> + <return type="float"> </return> - <argument index="0" name="utc" type="bool" default="false"> - </argument> <description> - Returns current date as a dictionary of keys: year, month, day, weekday, dst (daylight savings time). </description> </method> - <method name="get_time" qualifiers="const"> + <method name="get_time_zone_info" qualifiers="const"> <return type="Dictionary"> </return> - <argument index="0" name="utc" type="bool" default="false"> - </argument> <description> - Returns current time as a dictionary of keys: hour, minute, second </description> </method> - <method name="get_time_zone_info" qualifiers="const"> - <return type="Dictionary"> + <method name="get_unique_ID" qualifiers="const"> + <return type="String"> </return> <description> </description> @@ -22310,16 +22457,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the current unix timestamp. </description> </method> - <method name="get_datetime_from_unix_time" qualifiers="const"> - <return type="Dictionary"> - </return> - <argument index="0" name="unix_time_val" type="int"> - </argument> - <description> - Get a dictionary of time values when given epoch time. - Dictionary Time values will be a union of values from [method get_time] and [method get_date] dictionaries (with the exception of dst = day light standard time, as it cannot be determined from epoch). - </description> - </method> <method name="get_unix_time_from_datetime" qualifiers="const"> <return type="int"> </return> @@ -22331,76 +22468,76 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) You can pass the output from [method get_datetime_from_unix_time] directly into this function. Daylight savings time (dst), if present, is ignored. </description> </method> - <method name="get_system_time_secs" qualifiers="const"> - <return type="int"> + <method name="get_video_mode_size" qualifiers="const"> + <return type="Vector2"> </return> - <description> - </description> - </method> - <method name="set_icon"> - <argument index="0" name="icon" type="Image"> + <argument index="0" name="screen" type="int" default="0"> </argument> <description> + Return the current video mode size. </description> </method> - <method name="delay_usec" qualifiers="const"> - <argument index="0" name="usec" type="int"> - </argument> + <method name="get_window_position" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Delay executing of the current thread by given microseconds. + Returns the window position relative to the screen, the origin is the top left corner, +Y axis goes to the bottom and +X axis goes to the right. </description> </method> - <method name="delay_msec" qualifiers="const"> - <argument index="0" name="msec" type="int"> - </argument> + <method name="get_window_size" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Delay executing of the current thread by given milliseconds. + Returns the size of the window (without counting window manager decorations). </description> </method> - <method name="get_ticks_msec" qualifiers="const"> - <return type="int"> + <method name="has_environment" qualifiers="const"> + <return type="bool"> </return> + <argument index="0" name="environment" type="String"> + </argument> <description> - Return the amount of time passed in milliseconds since the engine started. + Return true if an environment variable exists. </description> </method> - <method name="get_splash_tick_msec" qualifiers="const"> - <return type="int"> + <method name="has_touchscreen_ui_hint" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="get_locale" qualifiers="const"> - <return type="String"> + <method name="is_debug_build" qualifiers="const"> + <return type="bool"> </return> <description> - Return the host OS locale. </description> </method> - <method name="get_model_name" qualifiers="const"> - <return type="String"> + <method name="is_in_low_processor_usage_mode" qualifiers="const"> + <return type="bool"> </return> <description> + Return true if low cpu usage mode is enabled. </description> </method> - <method name="get_custom_level" qualifiers="const"> - <return type="String"> + <method name="is_keep_screen_on" qualifiers="const"> + <return type="bool"> </return> <description> + Returns whether the screen is being kept on or not. </description> </method> - <method name="can_draw" qualifiers="const"> + <method name="is_ok_left_and_cancel_right" qualifiers="const"> <return type="bool"> </return> <description> - Return true if the host OS allows drawing. </description> </method> - <method name="get_frames_drawn"> - <return type="int"> + <method name="is_scancode_unicode" qualifiers="const"> + <return type="bool"> </return> + <argument index="0" name="code" type="int"> + </argument> <description> - Return the total amount of frames drawn. </description> </method> <method name="is_stdout_verbose" qualifiers="const"> @@ -22410,94 +22547,103 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return true if the engine was executed with -v (verbose stdout). </description> </method> - <method name="can_use_threads" qualifiers="const"> + <method name="is_video_mode_fullscreen" qualifiers="const"> <return type="bool"> </return> + <argument index="0" name="screen" type="int" default="0"> + </argument> <description> + Return true if the current video mode is fullscreen. </description> </method> - <method name="is_debug_build" qualifiers="const"> + <method name="is_video_mode_resizable" qualifiers="const"> <return type="bool"> </return> + <argument index="0" name="screen" type="int" default="0"> + </argument> <description> + Return true if the window is resizable. </description> </method> - <method name="dump_memory_to_file"> - <argument index="0" name="file" type="String"> - </argument> + <method name="is_vsnc_enabled" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="dump_resources_to_file"> - <argument index="0" name="file" type="String"> - </argument> + <method name="is_window_fullscreen" qualifiers="const"> + <return type="bool"> + </return> <description> + Returns whether the window is in fullscreen mode or not. </description> </method> - <method name="print_resources_in_use"> - <argument index="0" name="short" type="bool" default="false"> - </argument> + <method name="is_window_maximized" qualifiers="const"> + <return type="bool"> + </return> <description> + Return true if the window is maximized. </description> </method> - <method name="print_all_resources"> - <argument index="0" name="tofile" type="String" default=""""> - </argument> + <method name="is_window_minimized" qualifiers="const"> + <return type="bool"> + </return> <description> + Return true if the window is minimized. </description> </method> - <method name="get_static_memory_usage" qualifiers="const"> - <return type="int"> + <method name="is_window_resizable" qualifiers="const"> + <return type="bool"> </return> <description> + Returns whether the window is resizable or not. </description> </method> - <method name="get_static_memory_peak_usage" qualifiers="const"> + <method name="kill"> <return type="int"> </return> + <argument index="0" name="pid" type="int"> + </argument> <description> - Return the max amount of static memory used (only works in debug). + Kill a process ID (this method can be used to kill processes that were not spawned by the game). </description> </method> - <method name="get_dynamic_memory_usage" qualifiers="const"> - <return type="int"> + <method name="native_video_is_playing"> + <return type="bool"> </return> <description> - Return the total amount of dynamic memory used (only works in debug). </description> </method> - <method name="get_data_dir" qualifiers="const"> - <return type="String"> - </return> + <method name="native_video_pause"> <description> - Return the absolute directory path of user data path([user://]). </description> </method> - <method name="get_system_dir" qualifiers="const"> - <return type="String"> + <method name="native_video_play"> + <return type="int"> </return> - <argument index="0" name="dir" type="int"> + <argument index="0" name="path" type="String"> + </argument> + <argument index="1" name="volume" type="float"> + </argument> + <argument index="2" name="audio_track" type="String"> + </argument> + <argument index="3" name="subtitle_track" type="String"> </argument> <description> </description> </method> - <method name="get_unique_ID" qualifiers="const"> - <return type="String"> - </return> + <method name="native_video_stop"> <description> </description> </method> - <method name="is_ok_left_and_cancel_right" qualifiers="const"> - <return type="bool"> - </return> + <method name="native_video_unpause"> <description> </description> </method> - <method name="get_frames_per_second" qualifiers="const"> - <return type="float"> - </return> + <method name="print_all_resources"> + <argument index="0" name="tofile" type="String" default=""""> + </argument> <description> - Returns the frames per second of the running game. </description> </method> <method name="print_all_textures_by_size"> @@ -22510,93 +22656,165 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="native_video_play"> - <return type="int"> - </return> - <argument index="0" name="path" type="String"> + <method name="print_resources_in_use"> + <argument index="0" name="short" type="bool" default="false"> </argument> - <argument index="1" name="volume" type="float"> + <description> + </description> + </method> + <method name="set_borderless_window"> + <argument index="0" name="borderless" type="bool"> </argument> - <argument index="2" name="audio_track" type="String"> + <description> + </description> + </method> + <method name="set_clipboard"> + <argument index="0" name="clipboard" type="String"> </argument> - <argument index="3" name="subtitle_track" type="String"> + <description> + Set clipboard to the OS. + </description> + </method> + <method name="set_current_screen"> + <argument index="0" name="screen" type="int"> </argument> <description> </description> </method> - <method name="native_video_is_playing"> - <return type="bool"> - </return> + <method name="set_icon"> + <argument index="0" name="icon" type="Image"> + </argument> <description> </description> </method> - <method name="native_video_stop"> + <method name="set_iterations_per_second"> + <argument index="0" name="iterations_per_second" type="int"> + </argument> <description> + Set the amount of fixed iterations per second (for fixed process and physics). </description> </method> - <method name="native_video_pause"> + <method name="set_keep_screen_on"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> + Set keep screen on if true, or goes to sleep by device setting if false. (for Android/iOS) </description> </method> - <method name="native_video_unpause"> + <method name="set_low_processor_usage_mode"> + <argument index="0" name="enable" type="bool"> + </argument> <description> + Set to true to enable the low cpu usage mode. In this mode, the screen only redraws when there are changes, and a considerable sleep time is inserted between frames. This way, editors using the engine UI only use very little cpu. </description> </method> - <method name="get_scancode_string" qualifiers="const"> - <return type="String"> - </return> - <argument index="0" name="code" type="int"> + <method name="set_screen_orientation"> + <argument index="0" name="orientation" type="int"> </argument> <description> + Sets the current screen orientation, the argument value must be one of the SCREEN_ORIENTATION constants in this class. </description> </method> - <method name="is_scancode_unicode" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="code" type="int"> + <method name="set_target_fps"> + <argument index="0" name="target_fps" type="int"> </argument> <description> </description> </method> - <method name="find_scancode_from_string" qualifiers="const"> + <method name="set_thread_name"> <return type="int"> </return> - <argument index="0" name="string" type="String"> + <argument index="0" name="name" type="String"> </argument> <description> </description> </method> + <method name="set_time_scale"> + <argument index="0" name="time_scale" type="float"> + </argument> + <description> + Speeds up or slows down the physics by changing the delta variable. (delta * time_scale) + </description> + </method> <method name="set_use_file_access_save_and_swap"> <argument index="0" name="enabled" type="bool"> </argument> <description> </description> </method> - <method name="alert"> - <argument index="0" name="text" type="String"> + <method name="set_use_vsync"> + <argument index="0" name="enable" type="bool"> </argument> - <argument index="1" name="title" type="String" default=""Alert!""> + <description> + </description> + </method> + <method name="set_video_mode"> + <argument index="0" name="size" type="Vector2"> + </argument> + <argument index="1" name="fullscreen" type="bool"> + </argument> + <argument index="2" name="resizable" type="bool"> + </argument> + <argument index="3" name="screen" type="int" default="0"> </argument> <description> + Change the video mode. </description> </method> - <method name="set_thread_name"> - <return type="int"> - </return> - <argument index="0" name="name" type="String"> + <method name="set_window_fullscreen"> + <argument index="0" name="enabled" type="bool"> </argument> <description> + Sets window fullscreen mode to the [i]enabled[/i] argument, [i]enabled[/i] is a toggle for the fullscreen mode, calling the function with [i]enabled[/i] true when the screen is not on fullscreen mode will cause the screen to go to fullscreen mode, calling the function with [i]enabled[/i] false when the screen is in fullscreen mode will cause the window to exit the fullscreen mode. </description> </method> - <method name="set_use_vsync"> - <argument index="0" name="enable" type="bool"> + <method name="set_window_maximized"> + <argument index="0" name="enabled" type="bool"> </argument> <description> + Set the window size to maximized. </description> </method> - <method name="is_vsnc_enabled" qualifiers="const"> - <return type="bool"> + <method name="set_window_minimized"> + <argument index="0" name="enabled" type="bool"> + </argument> + <description> + Set whether the window is minimized. + </description> + </method> + <method name="set_window_position"> + <argument index="0" name="position" type="Vector2"> + </argument> + <description> + Sets the position of the window to the specified position (this function could be restricted by the window manager, meaning that there could be some unreachable areas of the screen). + </description> + </method> + <method name="set_window_resizable"> + <argument index="0" name="enabled" type="bool"> + </argument> + <description> + Set the window resizable state, if the window is not resizable it will preserve the dimensions specified in the project settings. + </description> + </method> + <method name="set_window_size"> + <argument index="0" name="size" type="Vector2"> + </argument> + <description> + Sets the window size to the specified size. + </description> + </method> + <method name="set_window_title"> + <argument index="0" name="title" type="String"> + </argument> + <description> + Sets the window title to the specified string. + </description> + </method> + <method name="shell_open"> + <return type="int"> </return> + <argument index="0" name="uri" type="String"> + </argument> <description> </description> </method> @@ -22618,6 +22836,12 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="MONTH_JANUARY" value="1"> </constant> + <constant name="MONTH_OCTOBER" value="10"> + </constant> + <constant name="MONTH_NOVEMBER" value="11"> + </constant> + <constant name="MONTH_DECEMBER" value="12"> + </constant> <constant name="MONTH_FEBRUARY" value="2"> </constant> <constant name="MONTH_MARCH" value="3"> @@ -22634,12 +22858,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="MONTH_SEPTEMBER" value="9"> </constant> - <constant name="MONTH_OCTOBER" value="10"> - </constant> - <constant name="MONTH_NOVEMBER" value="11"> - </constant> - <constant name="MONTH_DECEMBER" value="12"> - </constant> <constant name="SCREEN_ORIENTATION_LANDSCAPE" value="0"> </constant> <constant name="SCREEN_ORIENTATION_PORTRAIT" value="1"> @@ -22684,6 +22902,15 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Objects also receive notifications ([method _notification]). Notifications are a simple way to notify the object about simple events, so they can all be handled together. </description> <methods> + <method name="XL_MESSAGE" qualifiers="const"> + <return type="String"> + </return> + <argument index="0" name="message" type="String"> + </argument> + <description> + Deprecated, will go away. + </description> + </method> <method name="_get" qualifiers="virtual"> <argument index="0" name="property" type="String"> </argument> @@ -22718,92 +22945,137 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Set a property. Return true if the property was found. </description> </method> - <method name="free"> - <description> - </description> - </method> - <method name="get_type" qualifiers="const"> - <return type="String"> - </return> + <method name="add_user_signal"> + <argument index="0" name="signal" type="String"> + </argument> + <argument index="1" name="arguments" type="Array" default="Array()"> + </argument> <description> - Return the type of the object as a string. + Add a user signal (can be added anytime). Arguments are optional, but can be added as an array of dictionaries, each containing "name" and "type" (from [@Global Scope] TYPE_*). </description> </method> - <method name="is_type" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="type" type="String"> + <method name="call"> + <argument index="0" name="method" type="String"> + </argument> + <argument index="1" name="arg0" type="Variant" default="NULL"> + </argument> + <argument index="2" name="arg1" type="Variant" default="NULL"> + </argument> + <argument index="3" name="arg2" type="Variant" default="NULL"> + </argument> + <argument index="4" name="arg3" type="Variant" default="NULL"> + </argument> + <argument index="5" name="arg4" type="Variant" default="NULL"> + </argument> + <argument index="6" name="arg5" type="Variant" default="NULL"> + </argument> + <argument index="7" name="arg6" type="Variant" default="NULL"> + </argument> + <argument index="8" name="arg7" type="Variant" default="NULL"> + </argument> + <argument index="9" name="arg8" type="Variant" default="NULL"> + </argument> + <argument index="10" name="arg9" type="Variant" default="NULL"> </argument> <description> - Check the type of the object against a string (including inheritance). + Call a function in the object, result is returned. </description> </method> - <method name="set"> - <argument index="0" name="property" type="String"> + <method name="call_deferred"> + <argument index="0" name="method" type="String"> </argument> - <argument index="1" name="value" type="Variant"> + <argument index="1" name="arg0" type="Variant" default="NULL"> + </argument> + <argument index="2" name="arg1" type="Variant" default="NULL"> + </argument> + <argument index="3" name="arg2" type="Variant" default="NULL"> + </argument> + <argument index="4" name="arg3" type="Variant" default="NULL"> + </argument> + <argument index="5" name="arg4" type="Variant" default="NULL"> </argument> <description> - Set property into the object. + Create and store a function in the object. The call will take place on idle time. </description> </method> - <method name="get" qualifiers="const"> - <argument index="0" name="property" type="String"> + <method name="callv"> + <return type="Variant"> + </return> + <argument index="0" name="method" type="String"> + </argument> + <argument index="1" name="arg_array" type="Array"> </argument> <description> - Get a property from the object. </description> </method> - <method name="get_property_list" qualifiers="const"> - <return type="Array"> + <method name="can_translate_messages" qualifiers="const"> + <return type="bool"> </return> <description> - Return the list of properties as an array of dictionaries, dictionaries contain: name:String, type:int (see TYPE_* enum in globals) and optionally: hint:int (see PROPERTY_HINT_* in globals), hint_string:String, usage:int (see PROPERTY_USAGE_* in globals). + Return true if this object can translate strings. </description> </method> - <method name="get_method_list" qualifiers="const"> - <return type="Array"> + <method name="connect"> + <return type="int"> </return> + <argument index="0" name="signal" type="String"> + </argument> + <argument index="1" name="target" type="Object"> + </argument> + <argument index="2" name="method" type="String"> + </argument> + <argument index="3" name="binds" type="Array" default="Array()"> + </argument> + <argument index="4" name="flags" type="int" default="0"> + </argument> <description> + Connect a signal to a method at a target (member function). Binds are optional and are passed as extra arguments to the call. Flags specify optional deferred or one shot connections, see enum CONNECT_*. A signal can only be connected once to a method, and it will throw an error if already connected. If you want to avoid this, use [method is_connected] to check. </description> </method> - <method name="notification"> - <argument index="0" name="what" type="int"> + <method name="disconnect"> + <argument index="0" name="signal" type="String"> </argument> - <argument index="1" name="reversed" type="bool" default="false"> + <argument index="1" name="target" type="Object"> + </argument> + <argument index="2" name="method" type="String"> </argument> <description> - Notify the object of something. + Disconnect a signal from a method. </description> </method> - <method name="get_instance_ID" qualifiers="const"> - <return type="int"> - </return> + <method name="emit_signal"> + <argument index="0" name="signal" type="String"> + </argument> + <argument index="1" name="arg0" type="Variant" default="NULL"> + </argument> + <argument index="2" name="arg1" type="Variant" default="NULL"> + </argument> + <argument index="3" name="arg2" type="Variant" default="NULL"> + </argument> + <argument index="4" name="arg3" type="Variant" default="NULL"> + </argument> + <argument index="5" name="arg4" type="Variant" default="NULL"> + </argument> <description> - Return the instance ID. All objects have a unique instance ID. + Emit a signal. Arguments are passed in an array. </description> </method> - <method name="set_script"> - <argument index="0" name="script" type="Script"> - </argument> + <method name="free"> <description> - Set a script into the object, scripts extend the object functionality. </description> </method> - <method name="get_script" qualifiers="const"> - <return type="Script"> - </return> + <method name="get" qualifiers="const"> + <argument index="0" name="property" type="String"> + </argument> <description> - Return the object script (or null if it doesn't have one). + Get a property from the object. </description> </method> - <method name="set_meta"> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="value" type="Variant"> - </argument> + <method name="get_instance_ID" qualifiers="const"> + <return type="int"> + </return> <description> - Set a metadata into the object. Metadata is serialized. Metadata can be [i]anything[/i]. + Return the instance ID. All objects have a unique instance ID. </description> </method> <method name="get_meta" qualifiers="const"> @@ -22813,108 +23085,62 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return a metadata from the object. </description> </method> - <method name="has_meta" qualifiers="const"> - <return type="bool"> + <method name="get_meta_list" qualifiers="const"> + <return type="StringArray"> </return> - <argument index="0" name="name" type="String"> - </argument> <description> - Return true if a metadata is found with the requested name. + Return the list of metadata in the object. </description> </method> - <method name="get_meta_list" qualifiers="const"> - <return type="StringArray"> + <method name="get_method_list" qualifiers="const"> + <return type="Array"> </return> <description> - Return the list of metadata in the object. </description> </method> - <method name="add_user_signal"> - <argument index="0" name="signal" type="String"> - </argument> - <argument index="1" name="arguments" type="Array" default="Array()"> - </argument> + <method name="get_property_list" qualifiers="const"> + <return type="Array"> + </return> <description> - Add a user signal (can be added anytime). Arguments are optional, but can be added as an array of dictionaries, each containing "name" and "type" (from [@Global Scope] TYPE_*). + Return the list of properties as an array of dictionaries, dictionaries contain: name:String, type:int (see TYPE_* enum in globals) and optionally: hint:int (see PROPERTY_HINT_* in globals), hint_string:String, usage:int (see PROPERTY_USAGE_* in globals). </description> </method> - <method name="has_user_signal" qualifiers="const"> - <return type="bool"> + <method name="get_script" qualifiers="const"> + <return type="Script"> </return> - <argument index="0" name="signal" type="String"> - </argument> <description> + Return the object script (or null if it doesn't have one). </description> </method> - <method name="emit_signal"> + <method name="get_signal_connection_list" qualifiers="const"> + <return type="Array"> + </return> <argument index="0" name="signal" type="String"> </argument> - <argument index="1" name="arg0" type="Variant" default="NULL"> - </argument> - <argument index="2" name="arg1" type="Variant" default="NULL"> - </argument> - <argument index="3" name="arg2" type="Variant" default="NULL"> - </argument> - <argument index="4" name="arg3" type="Variant" default="NULL"> - </argument> - <argument index="5" name="arg4" type="Variant" default="NULL"> - </argument> <description> - Emit a signal. Arguments are passed in an array. </description> </method> - <method name="call"> - <argument index="0" name="method" type="String"> - </argument> - <argument index="1" name="arg0" type="Variant" default="NULL"> - </argument> - <argument index="2" name="arg1" type="Variant" default="NULL"> - </argument> - <argument index="3" name="arg2" type="Variant" default="NULL"> - </argument> - <argument index="4" name="arg3" type="Variant" default="NULL"> - </argument> - <argument index="5" name="arg4" type="Variant" default="NULL"> - </argument> - <argument index="6" name="arg5" type="Variant" default="NULL"> - </argument> - <argument index="7" name="arg6" type="Variant" default="NULL"> - </argument> - <argument index="8" name="arg7" type="Variant" default="NULL"> - </argument> - <argument index="9" name="arg8" type="Variant" default="NULL"> - </argument> - <argument index="10" name="arg9" type="Variant" default="NULL"> - </argument> + <method name="get_signal_list" qualifiers="const"> + <return type="Array"> + </return> <description> - Call a function in the object, result is returned. + Return the list of signals as an array of dictionaries. </description> </method> - <method name="call_deferred"> - <argument index="0" name="method" type="String"> - </argument> - <argument index="1" name="arg0" type="Variant" default="NULL"> - </argument> - <argument index="2" name="arg1" type="Variant" default="NULL"> - </argument> - <argument index="3" name="arg2" type="Variant" default="NULL"> - </argument> - <argument index="4" name="arg3" type="Variant" default="NULL"> - </argument> - <argument index="5" name="arg4" type="Variant" default="NULL"> - </argument> + <method name="get_type" qualifiers="const"> + <return type="String"> + </return> <description> - Create and store a function in the object. The call will take place on idle time. + Return the type of the object as a string. </description> </method> - <method name="callv"> - <return type="Variant"> + <method name="has_meta" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="method" type="String"> - </argument> - <argument index="1" name="arg_array" type="Array"> + <argument index="0" name="name" type="String"> </argument> <description> + Return true if a metadata is found with the requested name. </description> </method> <method name="has_method" qualifiers="const"> @@ -22925,23 +23151,23 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_signal_list" qualifiers="const"> - <return type="Array"> + <method name="has_user_signal" qualifiers="const"> + <return type="bool"> </return> + <argument index="0" name="signal" type="String"> + </argument> <description> - Return the list of signals as an array of dictionaries. </description> </method> - <method name="get_signal_connection_list" qualifiers="const"> - <return type="Array"> + <method name="is_blocking_signals" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="signal" type="String"> - </argument> <description> + Return true if signal emission blocking is enabled. </description> </method> - <method name="connect"> - <return type="int"> + <method name="is_connected" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="signal" type="String"> </argument> @@ -22949,77 +23175,75 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </argument> <argument index="2" name="method" type="String"> </argument> - <argument index="3" name="binds" type="Array" default="Array()"> - </argument> - <argument index="4" name="flags" type="int" default="0"> - </argument> <description> - Connect a signal to a method at a target (member function). Binds are optional and are passed as extra arguments to the call. Flags specify optional deferred or one shot connections, see enum CONNECT_*. A signal can only be connected once to a method, and it will throw an error if already connected. If you want to avoid this, use [method is_connected] to check. + Return true if a connection exists for a given signal and target/method. </description> </method> - <method name="disconnect"> - <argument index="0" name="signal" type="String"> - </argument> - <argument index="1" name="target" type="Object"> - </argument> - <argument index="2" name="method" type="String"> - </argument> + <method name="is_queued_for_deletion" qualifiers="const"> + <return type="bool"> + </return> <description> - Disconnect a signal from a method. </description> </method> - <method name="is_connected" qualifiers="const"> + <method name="is_type" qualifiers="const"> <return type="bool"> </return> - <argument index="0" name="signal" type="String"> + <argument index="0" name="type" type="String"> </argument> - <argument index="1" name="target" type="Object"> + <description> + Check the type of the object against a string (including inheritance). + </description> + </method> + <method name="notification"> + <argument index="0" name="what" type="int"> </argument> - <argument index="2" name="method" type="String"> + <argument index="1" name="reversed" type="bool" default="false"> </argument> <description> - Return true if a connection exists for a given signal and target/method. + Notify the object of something. </description> </method> - <method name="set_block_signals"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="property_list_changed_notify"> <description> - If set to true, signal emission is blocked. </description> </method> - <method name="is_blocking_signals" qualifiers="const"> - <return type="bool"> - </return> + <method name="set"> + <argument index="0" name="property" type="String"> + </argument> + <argument index="1" name="value" type="Variant"> + </argument> <description> - Return true if signal emission blocking is enabled. + Set property into the object. </description> </method> - <method name="set_message_translation"> + <method name="set_block_signals"> <argument index="0" name="enable" type="bool"> </argument> <description> - Set true if this object can translate strings (in calls to tr() ). Default is true. + If set to true, signal emission is blocked. </description> </method> - <method name="can_translate_messages" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_message_translation"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Return true if this object can translate strings. + Set true if this object can translate strings (in calls to tr() ). Default is true. </description> </method> - <method name="property_list_changed_notify"> + <method name="set_meta"> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="value" type="Variant"> + </argument> <description> + Set a metadata into the object. Metadata is serialized. Metadata can be [i]anything[/i]. </description> </method> - <method name="XL_MESSAGE" qualifiers="const"> - <return type="String"> - </return> - <argument index="0" name="message" type="String"> + <method name="set_script"> + <argument index="0" name="script" type="Script"> </argument> <description> - Deprecated, will go away. + Set a script into the object, scripts extend the object functionality. </description> </method> <method name="tr" qualifiers="const"> @@ -23031,12 +23255,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Translate a message. Only works in message translation is enabled (which is by default). See [method set_message_translation]. </description> </method> - <method name="is_queued_for_deletion" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> </methods> <signals> <signal name="script_changed"> @@ -23045,12 +23263,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </signal> </signals> <constants> - <constant name="NOTIFICATION_POSTINITIALIZE" value="0"> - Called right when the object is initialized. Not available in script. - </constant> - <constant name="NOTIFICATION_PREDELETE" value="1"> - Called before the object is about to be deleted. - </constant> <constant name="CONNECT_DEFERRED" value="1"> Connect a signal in deferred mode. This way, signal emissions are stored in a queue, then set on idle time. </constant> @@ -23060,6 +23272,12 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <constant name="CONNECT_ONESHOT" value="4"> One short connections disconnect themselves after emission. </constant> + <constant name="NOTIFICATION_POSTINITIALIZE" value="0"> + Called right when the object is initialized. Not available in script. + </constant> + <constant name="NOTIFICATION_PREDELETE" value="1"> + Called before the object is about to be deleted. + </constant> </constants> </class> <class name="OccluderPolygon2D" inherits="Resource" category="Core"> @@ -23068,9 +23286,15 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="set_closed"> - <argument index="0" name="closed" type="bool"> - </argument> + <method name="get_cull_mode" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> + <method name="get_polygon" qualifiers="const"> + <return type="Vector2Array"> + </return> <description> </description> </method> @@ -23080,15 +23304,15 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="set_cull_mode"> - <argument index="0" name="cull_mode" type="int"> + <method name="set_closed"> + <argument index="0" name="closed" type="bool"> </argument> <description> </description> </method> - <method name="get_cull_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_cull_mode"> + <argument index="0" name="cull_mode" type="int"> + </argument> <description> </description> </method> @@ -23098,12 +23322,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_polygon" qualifiers="const"> - <return type="Vector2Array"> - </return> - <description> - </description> - </method> </methods> <constants> <constant name="CULL_DISABLED" value="0"> @@ -23134,15 +23352,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) OptionButton is a type button that provides a selectable list of items when pressed. The item selected becomes the "current" item and is displayed as the button text. </description> <methods> - <method name="add_item"> - <argument index="0" name="label" type="String"> - </argument> - <argument index="1" name="id" type="int" default="-1"> - </argument> - <description> - Add an item, with text "label" and (optionally) id. If no "id" is passed, "id" becomes the item index. New items are appended at the end. - </description> - </method> <method name="add_icon_item"> <argument index="0" name="texture" type="Texture"> </argument> @@ -23154,46 +23363,53 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Add an item, with a "texture" icon, text "label" and (optionally) id. If no "id" is passed, "id" becomes the item index. New items are appended at the end. </description> </method> - <method name="set_item_text"> - <argument index="0" name="idx" type="int"> + <method name="add_item"> + <argument index="0" name="label" type="String"> </argument> - <argument index="1" name="text" type="String"> + <argument index="1" name="id" type="int" default="-1"> </argument> <description> - Set the text of an item at index "idx". + Add an item, with text "label" and (optionally) id. If no "id" is passed, "id" becomes the item index. New items are appended at the end. </description> </method> - <method name="set_item_icon"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="texture" type="Texture"> - </argument> + <method name="add_separator"> <description> - Set the icon of an item at index "idx". + Add a separator to the list of items. Separators help to group items. Separator also takes up an index and is appended at the end. </description> </method> - <method name="set_item_disabled"> + <method name="clear"> + <description> + Clear all the items in the [OptionButton]. + </description> + </method> + <method name="get_item_ID" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="disabled" type="bool"> - </argument> <description> + Return the ID of the item at index "idx". + </description> + </method> + <method name="get_item_count" qualifiers="const"> + <return type="int"> + </return> + <description> + Return the amount of items in the OptionButton. </description> </method> - <method name="set_item_ID"> + <method name="get_item_icon" qualifiers="const"> + <return type="Texture"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="id" type="int"> - </argument> <description> - Set the ID of an item at index "idx". + Return the icon of the item at index "idx". </description> </method> - <method name="set_item_metadata"> + <method name="get_item_metadata" qualifiers="const"> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="metadata" type="Variant"> - </argument> <description> </description> </method> @@ -23206,27 +23422,20 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the text of the item at index "idx". </description> </method> - <method name="get_item_icon" qualifiers="const"> - <return type="Texture"> + <method name="get_selected" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> - Return the icon of the item at index "idx". + Return the current item index </description> </method> - <method name="get_item_ID" qualifiers="const"> + <method name="get_selected_ID" qualifiers="const"> <return type="int"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> - Return the ID of the item at index "idx". </description> </method> - <method name="get_item_metadata" qualifiers="const"> - <argument index="0" name="idx" type="int"> - </argument> + <method name="get_selected_metadata" qualifiers="const"> <description> </description> </method> @@ -23238,51 +23447,60 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_item_count" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the amount of items in the OptionButton. - </description> - </method> - <method name="add_separator"> + <method name="remove_item"> + <argument index="0" name="idx" type="int"> + </argument> <description> - Add a separator to the list of items. Separators help to group items. Separator also takes up an index and is appended at the end. </description> </method> - <method name="clear"> + <method name="select"> + <argument index="0" name="idx" type="int"> + </argument> <description> - Clear all the items in the [OptionButton]. + Select an item by index and make it the current item. </description> </method> - <method name="select"> + <method name="set_item_ID"> <argument index="0" name="idx" type="int"> </argument> + <argument index="1" name="id" type="int"> + </argument> <description> - Select an item by index and make it the current item. + Set the ID of an item at index "idx". </description> </method> - <method name="get_selected" qualifiers="const"> - <return type="int"> - </return> + <method name="set_item_disabled"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="disabled" type="bool"> + </argument> <description> - Return the current item index </description> </method> - <method name="get_selected_ID" qualifiers="const"> - <return type="int"> - </return> + <method name="set_item_icon"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="texture" type="Texture"> + </argument> <description> + Set the icon of an item at index "idx". </description> </method> - <method name="get_selected_metadata" qualifiers="const"> + <method name="set_item_metadata"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="metadata" type="Variant"> + </argument> <description> </description> </method> - <method name="remove_item"> + <method name="set_item_text"> <argument index="0" name="idx" type="int"> </argument> + <argument index="1" name="text" type="String"> + </argument> <description> + Set the text of an item at index "idx". </description> </method> </methods> @@ -23298,32 +23516,32 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <constants> </constants> <theme_items> - <theme_item name="hseparation" type="int"> + <theme_item name="arrow" type="Texture"> </theme_item> <theme_item name="arrow_margin" type="int"> </theme_item> - <theme_item name="font_color_disabled" type="Color"> + <theme_item name="disabled" type="StyleBox"> + </theme_item> + <theme_item name="focus" type="StyleBox"> + </theme_item> + <theme_item name="font" type="Font"> </theme_item> <theme_item name="font_color" type="Color"> </theme_item> + <theme_item name="font_color_disabled" type="Color"> + </theme_item> <theme_item name="font_color_hover" type="Color"> </theme_item> <theme_item name="font_color_pressed" type="Color"> </theme_item> - <theme_item name="arrow" type="Texture"> - </theme_item> - <theme_item name="font" type="Font"> - </theme_item> <theme_item name="hover" type="StyleBox"> </theme_item> - <theme_item name="pressed" type="StyleBox"> - </theme_item> - <theme_item name="focus" type="StyleBox"> - </theme_item> - <theme_item name="disabled" type="StyleBox"> + <theme_item name="hseparation" type="int"> </theme_item> <theme_item name="normal" type="StyleBox"> </theme_item> + <theme_item name="pressed" type="StyleBox"> + </theme_item> </theme_items> </class> <class name="PCKPacker" inherits="Reference" category="Core"> @@ -23332,30 +23550,30 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="pck_start"> + <method name="add_file"> <return type="int"> </return> - <argument index="0" name="pck_name" type="String"> + <argument index="0" name="pck_path" type="String"> </argument> - <argument index="1" name="alignment" type="int"> + <argument index="1" name="source_path" type="String"> </argument> <description> </description> </method> - <method name="add_file"> + <method name="flush"> <return type="int"> </return> - <argument index="0" name="pck_path" type="String"> - </argument> - <argument index="1" name="source_path" type="String"> + <argument index="0" name="verbose" type="bool"> </argument> <description> </description> </method> - <method name="flush"> + <method name="pck_start"> <return type="int"> </return> - <argument index="0" name="verbose" type="bool"> + <argument index="0" name="pck_name" type="String"> + </argument> + <argument index="1" name="alignment" type="int"> </argument> <description> </description> @@ -23429,33 +23647,33 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) TODO: explain ownership, and that node does not need to own itself </description> <methods> - <method name="pack"> - <return type="int"> + <method name="can_instance" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="path" type="Node"> - </argument> <description> - Pack will ignore any sub-nodes not owned by given node. See [method Node.set_owner]. </description> </method> - <method name="instance" qualifiers="const"> - <return type="Node"> + <method name="get_state"> + <return type="SceneState"> </return> - <argument index="0" name="gen_edit_state" type="bool" default="false"> - </argument> <description> </description> </method> - <method name="can_instance" qualifiers="const"> - <return type="bool"> + <method name="instance" qualifiers="const"> + <return type="Node"> </return> + <argument index="0" name="gen_edit_state" type="bool" default="false"> + </argument> <description> </description> </method> - <method name="get_state"> - <return type="SceneState"> + <method name="pack"> + <return type="int"> </return> + <argument index="0" name="path" type="Node"> + </argument> <description> + Pack will ignore any sub-nodes not owned by given node. See [method Node.set_owner]. </description> </method> </methods> @@ -23470,42 +23688,50 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) PacketPeer is an abstraction and base class for packet-based protocols (such as UDP). It provides an API for sending and receiving packets both as raw data or variables. This makes it easy to transfer data over a protocol, without having to encode data as low level bytes or having to worry about network ordering. </description> <methods> - <method name="get_var" qualifiers="const"> - <description> - </description> - </method> - <method name="put_var"> + <method name="get_available_packet_count" qualifiers="const"> <return type="int"> </return> - <argument index="0" name="var" type="Variant"> - </argument> <description> + Return the number of packets currently available in the ring-buffer. </description> </method> <method name="get_packet" qualifiers="const"> <return type="RawArray"> </return> <description> + Get a raw packet. </description> </method> - <method name="put_packet"> + <method name="get_packet_error" qualifiers="const"> <return type="Error"> </return> - <argument index="0" name="buffer" type="RawArray"> - </argument> <description> + Return the error state of the last packet received (via [method get_packet] and [method get_var]). </description> </method> - <method name="get_packet_error" qualifiers="const"> + <method name="get_var" qualifiers="const"> + <return type="Variant"> + </return> + <description> + Get a Variant. + </description> + </method> + <method name="put_packet"> <return type="Error"> </return> + <argument index="0" name="buffer" type="RawArray"> + </argument> <description> + Send a raw packet. </description> </method> - <method name="get_available_packet_count" qualifiers="const"> + <method name="put_var"> <return type="int"> </return> + <argument index="0" name="var" type="Variant"> + </argument> <description> + Send a Variant as a packet. </description> </method> </methods> @@ -23533,52 +23759,54 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </class> <class name="PacketPeerUDP" inherits="PacketPeer" category="Core"> <brief_description> + UDP packet peer. </brief_description> <description> + UDP packet peer. Can be used to send raw UDP packets as well as [Variant]s. </description> <methods> - <method name="listen"> - <return type="Error"> - </return> - <argument index="0" name="port" type="int"> - </argument> - <argument index="1" name="recv_buf_size" type="int" default="65536"> - </argument> - <description> - </description> - </method> <method name="close"> <description> + Close the UDP socket the [PacketPeerUDP] is currently listening on. </description> </method> - <method name="wait"> - <return type="Error"> + <method name="get_packet_address" qualifiers="const"> + <return type="int"> </return> <description> + Return the address of the remote peer(as a 32bit integer) that sent the last packet(that was received with [method get_packet] or [method get_var]). </description> </method> - <method name="is_listening" qualifiers="const"> - <return type="bool"> + <method name="get_packet_ip" qualifiers="const"> + <return type="String"> </return> <description> + Return the IP of the remote peer that sent the last packet(that was received with [method get_packet] or [method get_var]). </description> </method> - <method name="get_packet_ip" qualifiers="const"> - <return type="String"> + <method name="get_packet_port" qualifiers="const"> + <return type="int"> </return> <description> + Return the port of the remote peer that sent the last packet(that was received with [method get_packet] or [method get_var]). </description> </method> - <method name="get_packet_address" qualifiers="const"> - <return type="int"> + <method name="is_listening" qualifiers="const"> + <return type="bool"> </return> <description> + Return whether this [PacketPeerUDP] is listening. </description> </method> - <method name="get_packet_port" qualifiers="const"> - <return type="int"> + <method name="listen"> + <return type="Error"> </return> + <argument index="0" name="port" type="int"> + </argument> + <argument index="1" name="recv_buf_size" type="int" default="65536"> + </argument> <description> + Make this [PacketPeerUDP] listen on the "port" using a buffer size "recv_buf_size". Listens on all available adresses. </description> </method> <method name="set_send_address"> @@ -23589,6 +23817,14 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <argument index="1" name="port" type="int"> </argument> <description> + Set the destination address and port for sending packets and variables, a hostname will be resolved if valid. + </description> + </method> + <method name="wait"> + <return type="Error"> + </return> + <description> + Wait for a packet to arrive on the listening port, see [method listen]. </description> </method> </methods> @@ -23607,10 +23843,10 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <constants> </constants> <theme_items> - <theme_item name="panelf" type="StyleBox"> - </theme_item> <theme_item name="panel" type="StyleBox"> </theme_item> + <theme_item name="panelf" type="StyleBox"> + </theme_item> <theme_item name="panelnc" type="StyleBox"> </theme_item> </theme_items> @@ -23639,23 +23875,18 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) A ParallaxBackground will use one or more [ParallaxLayer] nodes to create a parallax scrolling background. Each [ParallaxLayer] can be set to move at different speeds relative to the camera movement, this can be used to create an illusion of depth in a 2D game. </description> <methods> - <method name="set_scroll_offset"> - <argument index="0" name="ofs" type="Vector2"> - </argument> - <description> - </description> - </method> - <method name="get_scroll_offset" qualifiers="const"> + <method name="get_limit_begin" qualifiers="const"> <return type="Vector2"> </return> <description> + Return the beginning limit. </description> </method> - <method name="set_scroll_base_offset"> - <argument index="0" name="ofs" type="Vector2"> - </argument> + <method name="get_limit_end" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Set the base offset in pixels of all children [ParallaxLayer] nodes. + Return the ending limit. </description> </method> <method name="get_scroll_base_offset" qualifiers="const"> @@ -23665,32 +23896,38 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the base offset. </description> </method> - <method name="set_scroll_base_scale"> - <argument index="0" name="scale" type="Vector2"> - </argument> + <method name="get_scroll_base_scale" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Set the base motion scale of all children [ParallaxLayer] nodes. + Return the base motion scale. </description> </method> - <method name="get_scroll_base_scale" qualifiers="const"> + <method name="get_scroll_offset" qualifiers="const"> <return type="Vector2"> </return> <description> - Return the base motion scale. </description> </method> - <method name="set_limit_begin"> - <argument index="0" name="ofs" type="Vector2"> + <method name="is_ignore_camera_zoom"> + <return type="bool"> + </return> + <description> + Return ignoring camera zoom. + </description> + </method> + <method name="set_ignore_camera_zoom"> + <argument index="0" name="ignore" type="bool"> </argument> <description> - Set the left and top limits in pixels for scrolling to begin. If the camera is outside of this limit the background will not continue to scroll. If an axis is greater than or equal to the corresponding axis of limit_end, then it will not limit scrolling for that axis. + Set to true for all child [ParallaxLayer] nodes to not be affected by the zoom level of the camera. </description> </method> - <method name="get_limit_begin" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_limit_begin"> + <argument index="0" name="ofs" type="Vector2"> + </argument> <description> - Return the beginning limit. + Set the left and top limits in pixels for scrolling to begin. If the camera is outside of this limit the background will not continue to scroll. If an axis is greater than or equal to the corresponding axis of limit_end, then it will not limit scrolling for that axis. </description> </method> <method name="set_limit_end"> @@ -23700,25 +23937,24 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Set the right and bottom limits in pixels for scrolling to end. If the camera is outside of this limit the background will not continue to scroll. If an axis is less than or equal to the corresponding axis of limit_begin, then it will not limit scrolling for that axis. </description> </method> - <method name="get_limit_end" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_scroll_base_offset"> + <argument index="0" name="ofs" type="Vector2"> + </argument> <description> - Return the ending limit. + Set the base offset in pixels of all children [ParallaxLayer] nodes. </description> </method> - <method name="set_ignore_camera_zoom"> - <argument index="0" name="ignore" type="bool"> + <method name="set_scroll_base_scale"> + <argument index="0" name="scale" type="Vector2"> </argument> <description> - Set to true for all child [ParallaxLayer] nodes to not be affected by the zoom level of the camera. + Set the base motion scale of all children [ParallaxLayer] nodes. </description> </method> - <method name="is_ignore_camera_zoom"> - <return type="bool"> - </return> + <method name="set_scroll_offset"> + <argument index="0" name="ofs" type="Vector2"> + </argument> <description> - Return ignoring camera zoom. </description> </method> </methods> @@ -23733,11 +23969,11 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) A ParallaxLayer must be the child of a [ParallaxBackground] node. All child nodes will be affected by the parallax scrolling of this layer. </description> <methods> - <method name="set_motion_scale"> - <argument index="0" name="scale" type="Vector2"> - </argument> + <method name="get_mirroring" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Set the motion scale of the ParallaxLayer. If an axis is set to 0 then it will not move at all, it will stick with the camera. + Return the mirroring of the ParallaxLayer. </description> </method> <method name="get_motion_scale" qualifiers="const"> @@ -23754,11 +23990,11 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Set the mirroring of the ParallaxLayer. If an axis is set to 0 then that axis will have no mirroring. </description> </method> - <method name="get_mirroring" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_motion_scale"> + <argument index="0" name="scale" type="Vector2"> + </argument> <description> - Return the mirroring of the ParallaxLayer. + Set the motion scale of the ParallaxLayer. If an axis is set to 0 then it will not move at all, it will stick with the camera. </description> </method> </methods> @@ -23771,63 +24007,63 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="set_enabled"> - <argument index="0" name="enabled" type="bool"> - </argument> + <method name="get_absorption" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="is_enabled" qualifiers="const"> - <return type="bool"> + <method name="get_disable_radius" qualifiers="const"> + <return type="float"> </return> <description> </description> </method> - <method name="set_radius"> - <argument index="0" name="radius" type="float"> - </argument> + <method name="get_gravity" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_radius" qualifiers="const"> - <return type="float"> + <method name="get_particles_path" qualifiers="const"> + <return type="NodePath"> </return> <description> </description> </method> - <method name="set_disable_radius"> - <argument index="0" name="radius" type="float"> - </argument> + <method name="get_radius" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_disable_radius" qualifiers="const"> - <return type="float"> + <method name="is_enabled" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="set_gravity"> - <argument index="0" name="gravity" type="float"> + <method name="set_absorption"> + <argument index="0" name="absorption" type="float"> </argument> <description> </description> </method> - <method name="get_gravity" qualifiers="const"> - <return type="float"> - </return> + <method name="set_disable_radius"> + <argument index="0" name="radius" type="float"> + </argument> <description> </description> </method> - <method name="set_absorption"> - <argument index="0" name="absorption" type="float"> + <method name="set_enabled"> + <argument index="0" name="enabled" type="bool"> </argument> <description> </description> </method> - <method name="get_absorption" qualifiers="const"> - <return type="float"> - </return> + <method name="set_gravity"> + <argument index="0" name="gravity" type="float"> + </argument> <description> </description> </method> @@ -23837,9 +24073,9 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_particles_path" qualifiers="const"> - <return type="NodePath"> - </return> + <method name="set_radius"> + <argument index="0" name="radius" type="float"> + </argument> <description> </description> </method> @@ -23855,13 +24091,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Particles is a particle system 3D [Node] that is used to simulate several types of particle effects, such as explosions, rain, snow, fireflies, or other magical-like shinny sparkles. Particles are drawn using impostors, and given their dynamic behavior, the user must provide a visibility AABB (although helpers to create one automatically exist). </description> <methods> - <method name="set_amount"> - <argument index="0" name="amount" type="int"> - </argument> - <description> - Set total amount of particles in the system. - </description> - </method> <method name="get_amount" qualifiers="const"> <return type="int"> </return> @@ -23869,52 +24098,28 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the total amount of particles in the system. </description> </method> - <method name="set_emitting"> - <argument index="0" name="enabled" type="bool"> - </argument> - <description> - Set the "emitting" property state. When emitting, the particle system generates new particles at constant rate. - </description> - </method> - <method name="is_emitting" qualifiers="const"> - <return type="bool"> + <method name="get_color_phase_color" qualifiers="const"> + <return type="Color"> </return> - <description> - Return the "emitting" property state (see [method set_emitting]). - </description> - </method> - <method name="set_visibility_aabb"> - <argument index="0" name="aabb" type="AABB"> + <argument index="0" name="phase" type="int"> </argument> <description> - Set the visibility AABB for the particle system, since the default one will not work properly most of the time. + Return the color of a color phase. </description> </method> - <method name="get_visibility_aabb" qualifiers="const"> - <return type="AABB"> + <method name="get_color_phase_pos" qualifiers="const"> + <return type="float"> </return> - <description> - Return the current visibility AABB. - </description> - </method> - <method name="set_emission_half_extents"> - <argument index="0" name="half_extents" type="Vector3"> + <argument index="0" name="phase" type="int"> </argument> <description> - Set the half extents for the emission box. + Return the position of a color phase (0 to 1). </description> </method> - <method name="get_emission_half_extents" qualifiers="const"> - <return type="Vector3"> + <method name="get_color_phases" qualifiers="const"> + <return type="int"> </return> <description> - Return the half extents for the emission box. - </description> - </method> - <method name="set_emission_base_velocity"> - <argument index="0" name="base_velocity" type="Vector3"> - </argument> - <description> </description> </method> <method name="get_emission_base_velocity" qualifiers="const"> @@ -23923,10 +24128,11 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="set_emission_points"> - <argument index="0" name="points" type="Vector3Array"> - </argument> + <method name="get_emission_half_extents" qualifiers="const"> + <return type="Vector3"> + </return> <description> + Return the half extents for the emission box. </description> </method> <method name="get_emission_points" qualifiers="const"> @@ -23935,11 +24141,10 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="set_gravity_normal"> - <argument index="0" name="normal" type="Vector3"> - </argument> + <method name="get_emit_timeout" qualifiers="const"> + <return type="float"> + </return> <description> - Set the normal vector towards where gravity is pulling (by default, negative Y). </description> </method> <method name="get_gravity_normal" qualifiers="const"> @@ -23949,13 +24154,20 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return the normal vector towards where gravity is pulling (by default, negative Y). </description> </method> - <method name="set_variable"> + <method name="get_material" qualifiers="const"> + <return type="Material"> + </return> + <description> + Return the material used to draw particles. + </description> + </method> + <method name="get_randomness" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="variable" type="int"> </argument> - <argument index="1" name="value" type="float"> - </argument> <description> - Set a specific variable for the particle system (see VAR_* enum). + Return the randomness for a specific variable of the particle system. Randomness produces small changes from the default each time a particle is emitted. </description> </method> <method name="get_variable" qualifiers="const"> @@ -23967,40 +24179,37 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Return a specific variable for the particle system (see VAR_* enum). </description> </method> - <method name="set_randomness"> - <argument index="0" name="variable" type="int"> - </argument> - <argument index="1" name="randomness" type="float"> - </argument> + <method name="get_visibility_aabb" qualifiers="const"> + <return type="AABB"> + </return> <description> - Set the randomness for a specific variable of the particle system. Randomness produces small changes from the default each time a particle is emitted. + Return the current visibility AABB. </description> </method> - <method name="get_randomness" qualifiers="const"> - <return type="float"> + <method name="has_height_from_velocity" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="variable" type="int"> - </argument> <description> - Return the randomness for a specific variable of the particle system. Randomness produces small changes from the default each time a particle is emitted. </description> </method> - <method name="set_color_phase_pos"> - <argument index="0" name="phase" type="int"> - </argument> - <argument index="1" name="pos" type="float"> - </argument> + <method name="is_emitting" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the position of a color phase (0 to 1). + Return the "emitting" property state (see [method set_emitting]). </description> </method> - <method name="get_color_phase_pos" qualifiers="const"> - <return type="float"> + <method name="is_using_local_coordinates" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="phase" type="int"> + <description> + </description> + </method> + <method name="set_amount"> + <argument index="0" name="amount" type="int"> </argument> <description> - Return the position of a color phase (0 to 1). + Set total amount of particles in the system. </description> </method> <method name="set_color_phase_color"> @@ -24012,27 +24221,38 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Set the color of a color phase. </description> </method> - <method name="get_color_phase_color" qualifiers="const"> - <return type="Color"> - </return> + <method name="set_color_phase_pos"> <argument index="0" name="phase" type="int"> </argument> + <argument index="1" name="pos" type="float"> + </argument> <description> - Return the color of a color phase. + Set the position of a color phase (0 to 1). </description> </method> - <method name="set_material"> - <argument index="0" name="material" type="Material"> + <method name="set_color_phases"> + <argument index="0" name="count" type="int"> </argument> <description> - Set the material used to draw particles. </description> </method> - <method name="get_material" qualifiers="const"> - <return type="Material"> - </return> + <method name="set_emission_base_velocity"> + <argument index="0" name="base_velocity" type="Vector3"> + </argument> + <description> + </description> + </method> + <method name="set_emission_half_extents"> + <argument index="0" name="half_extents" type="Vector3"> + </argument> + <description> + Set the half extents for the emission box. + </description> + </method> + <method name="set_emission_points"> + <argument index="0" name="points" type="Vector3Array"> + </argument> <description> - Return the material used to draw particles. </description> </method> <method name="set_emit_timeout"> @@ -24041,10 +24261,18 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="get_emit_timeout" qualifiers="const"> - <return type="float"> - </return> + <method name="set_emitting"> + <argument index="0" name="enabled" type="bool"> + </argument> + <description> + Set the "emitting" property state. When emitting, the particle system generates new particles at constant rate. + </description> + </method> + <method name="set_gravity_normal"> + <argument index="0" name="normal" type="Vector3"> + </argument> <description> + Set the normal vector towards where gravity is pulling (by default, negative Y). </description> </method> <method name="set_height_from_velocity"> @@ -24053,34 +24281,42 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> </method> - <method name="has_height_from_velocity" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_material"> + <argument index="0" name="material" type="Material"> + </argument> <description> + Set the material used to draw particles. </description> </method> - <method name="set_use_local_coordinates"> - <argument index="0" name="enable" type="bool"> + <method name="set_randomness"> + <argument index="0" name="variable" type="int"> + </argument> + <argument index="1" name="randomness" type="float"> </argument> <description> + Set the randomness for a specific variable of the particle system. Randomness produces small changes from the default each time a particle is emitted. </description> </method> - <method name="is_using_local_coordinates" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_use_local_coordinates"> + <argument index="0" name="enable" type="bool"> + </argument> <description> </description> </method> - <method name="set_color_phases"> - <argument index="0" name="count" type="int"> + <method name="set_variable"> + <argument index="0" name="variable" type="int"> + </argument> + <argument index="1" name="value" type="float"> </argument> <description> + Set a specific variable for the particle system (see VAR_* enum). </description> </method> - <method name="get_color_phases" qualifiers="const"> - <return type="int"> - </return> + <method name="set_visibility_aabb"> + <argument index="0" name="aabb" type="AABB"> + </argument> <description> + Set the visibility AABB for the particle system, since the default one will not work properly most of the time. </description> </method> </methods> @@ -24089,6 +24325,16 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="VAR_SPREAD" value="1"> </constant> + <constant name="VAR_FINAL_SIZE" value="10"> + </constant> + <constant name="VAR_INITIAL_ANGLE" value="11"> + </constant> + <constant name="VAR_HEIGHT" value="12"> + </constant> + <constant name="VAR_HEIGHT_SPEED_SCALE" value="13"> + </constant> + <constant name="VAR_MAX" value="14"> + </constant> <constant name="VAR_GRAVITY" value="2"> </constant> <constant name="VAR_LINEAR_VELOCITY" value="3"> @@ -24103,16 +24349,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) </constant> <constant name="VAR_INITIAL_SIZE" value="9"> </constant> - <constant name="VAR_FINAL_SIZE" value="10"> - </constant> - <constant name="VAR_INITIAL_ANGLE" value="11"> - </constant> - <constant name="VAR_HEIGHT" value="12"> - </constant> - <constant name="VAR_HEIGHT_SPEED_SCALE" value="13"> - </constant> - <constant name="VAR_MAX" value="14"> - </constant> </constants> </class> <class name="Particles2D" inherits="Node2D" category="Core"> @@ -24123,95 +24359,99 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Particles2D is a particle system 2D [Node] that is used to simulate several types of particle effects, such as explosions, rain, snow, fireflies, or other magical-like shinny sparkles. Particles are drawn using impostors, and given their dynamic behavior, the user must provide a visibility AABB (although helpers to create one automatically exist). </description> <methods> - <method name="set_emitting"> - <argument index="0" name="active" type="bool"> - </argument> + <method name="get_amount" qualifiers="const"> + <return type="int"> + </return> <description> - If this is set to true then the particle emitter will emit particles, if its false it will not. + Returns the amount of particles spawned at each emission </description> </method> - <method name="is_emitting" qualifiers="const"> - <return type="bool"> + <method name="get_color" qualifiers="const"> + <return type="Color"> </return> <description> - Returns whether this emitter is currently emitting or not + Returns the tint color for each particle. </description> </method> - <method name="set_amount"> - <argument index="0" name="amount" type="int"> + <method name="get_color_phase_color" qualifiers="const"> + <return type="Color"> + </return> + <argument index="0" name="phase" type="int"> </argument> <description> - Sets the amount of particles spawned at each emission </description> </method> - <method name="get_amount" qualifiers="const"> + <method name="get_color_phase_pos" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="phase" type="int"> + </argument> + <description> + </description> + </method> + <method name="get_color_phases" qualifiers="const"> <return type="int"> </return> <description> - Returns the amount of particles spawned at each emission </description> </method> - <method name="set_lifetime"> - <argument index="0" name="lifetime" type="float"> - </argument> + <method name="get_color_ramp" qualifiers="const"> + <return type="ColorRamp"> + </return> <description> - Sets the amount of seconds that each particle will be visible. + Returns the [ColorRamp] used to tint each particle </description> </method> - <method name="get_lifetime" qualifiers="const"> - <return type="float"> + <method name="get_emission_half_extents" qualifiers="const"> + <return type="Vector2"> </return> <description> - Gets the amount of seconds that each particle will be visible. + Returns the half extents of the emission box. </description> </method> - <method name="set_time_scale"> - <argument index="0" name="time_scale" type="float"> - </argument> + <method name="get_emission_points" qualifiers="const"> + <return type="Vector2Array"> + </return> <description> - Sets the increment or decrement for the particle lifetime. for example: if the time scale is set to 2, the particles will die and move twice as fast. </description> </method> - <method name="get_time_scale" qualifiers="const"> - <return type="float"> + <method name="get_emissor_offset" qualifiers="const"> + <return type="Vector2"> </return> <description> - Returns the emitter time scale + Returns the particle spawn origin position relative to the emitter. </description> </method> - <method name="set_pre_process_time"> - <argument index="0" name="time" type="float"> - </argument> + <method name="get_emit_timeout" qualifiers="const"> + <return type="float"> + </return> <description> + Returns the amount of seconds during which the emitter will spawn particles </description> </method> - <method name="get_pre_process_time" qualifiers="const"> + <method name="get_explosiveness" qualifiers="const"> <return type="float"> </return> <description> </description> </method> - <method name="set_emit_timeout"> - <argument index="0" name="value" type="float"> - </argument> + <method name="get_h_frames" qualifiers="const"> + <return type="int"> + </return> <description> - Sets the amount of seconds during which the emitter will spawn particles, after the specified seconds the emitter state will be set to non emitting, so calling [method is_emitting] will return false. If the timeout is 0 the emitter will spawn forever. </description> </method> - <method name="get_emit_timeout" qualifiers="const"> - <return type="float"> + <method name="get_initial_velocity" qualifiers="const"> + <return type="Vector2"> </return> <description> - Returns the amount of seconds during which the emitter will spawn particles </description> </method> - <method name="set_param"> - <argument index="0" name="param" type="int"> - </argument> - <argument index="1" name="value" type="float"> - </argument> + <method name="get_lifetime" qualifiers="const"> + <return type="float"> + </return> <description> - Sets the value of the specified emitter parameter (see the constants secction for the list of parameters) + Gets the amount of seconds that each particle will be visible. </description> </method> <method name="get_param" qualifiers="const"> @@ -24223,13 +24463,10 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Returns the value of the specified emitter parameter </description> </method> - <method name="set_randomness"> - <argument index="0" name="param" type="int"> - </argument> - <argument index="1" name="value" type="float"> - </argument> + <method name="get_pre_process_time" qualifiers="const"> + <return type="float"> + </return> <description> - Sets the randomness value of the specified emitter parameter (see the constants secction for the list of parameters), 0 means no randomness, so every particle will have the parameters specified, 1 means that the parameter will be choosen at random, the closer the randomness value gets to 0 the more conservative the variation of the parameter will be. </description> </method> <method name="get_randomness" qualifiers="const"> @@ -24241,15 +24478,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Returns the randomness value of the specified emitter parameter </description> </method> - <method name="set_texture"> - <return type="Texture"> - </return> - <argument index="0" name="texture" type="Object"> - </argument> - <description> - Sets the texture for each particle - </description> - </method> <method name="get_texture" qualifiers="const"> <return type="Texture"> </return> @@ -24257,96 +24485,97 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Returns the texture for emitted particles </description> </method> - <method name="set_color"> - <argument index="0" name="color" type="Color"> - </argument> + <method name="get_time_scale" qualifiers="const"> + <return type="float"> + </return> <description> - Set the tint color for each particle. + Returns the emitter time scale </description> </method> - <method name="get_color" qualifiers="const"> - <return type="Color"> + <method name="get_v_frames" qualifiers="const"> + <return type="int"> </return> <description> - Returns the tint color for each particle. </description> </method> - <method name="set_color_ramp"> - <return type="ColorRamp"> + <method name="is_emitting" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="color_ramp" type="Object"> - </argument> <description> - Sets the [ColorRamp] used to tint each particle. Particle will be tinted according to their lifetimes. + Returns whether this emitter is currently emitting or not </description> </method> - <method name="get_color_ramp" qualifiers="const"> - <return type="ColorRamp"> + <method name="is_flipped_h" qualifiers="const"> + <return type="bool"> </return> <description> - Returns the [ColorRamp] used to tint each particle </description> </method> - <method name="set_emissor_offset"> - <argument index="0" name="offset" type="Vector2"> - </argument> + <method name="is_flipped_v" qualifiers="const"> + <return type="bool"> + </return> <description> - Sets the particle spawn origin position relative to the emitter center. for example if this value is set to (50, 50), the particle will spawn 50 units to the right and 50 units to the bottom of the emitter center. </description> </method> - <method name="get_emissor_offset" qualifiers="const"> - <return type="Vector2"> + <method name="is_using_local_space" qualifiers="const"> + <return type="bool"> </return> <description> - Returns the particle spawn origin position relative to the emitter. </description> </method> - <method name="set_flip_h"> - <argument index="0" name="enable" type="bool"> + <method name="pre_process"> + <argument index="0" name="time" type="float"> </argument> <description> </description> </method> - <method name="is_flipped_h" qualifiers="const"> - <return type="bool"> - </return> + <method name="reset"> <description> </description> </method> - <method name="set_flip_v"> - <argument index="0" name="enable" type="bool"> + <method name="set_amount"> + <argument index="0" name="amount" type="int"> </argument> <description> + Sets the amount of particles spawned at each emission </description> </method> - <method name="is_flipped_v" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_color"> + <argument index="0" name="color" type="Color"> + </argument> <description> + Set the tint color for each particle. </description> </method> - <method name="set_h_frames"> - <argument index="0" name="enable" type="int"> + <method name="set_color_phase_color"> + <argument index="0" name="phase" type="int"> + </argument> + <argument index="1" name="color" type="Color"> </argument> <description> </description> </method> - <method name="get_h_frames" qualifiers="const"> - <return type="int"> - </return> + <method name="set_color_phase_pos"> + <argument index="0" name="phase" type="int"> + </argument> + <argument index="1" name="pos" type="float"> + </argument> <description> </description> </method> - <method name="set_v_frames"> - <argument index="0" name="enable" type="int"> + <method name="set_color_phases"> + <argument index="0" name="phases" type="int"> </argument> <description> </description> </method> - <method name="get_v_frames" qualifiers="const"> - <return type="int"> + <method name="set_color_ramp"> + <return type="ColorRamp"> </return> + <argument index="0" name="color_ramp" type="Object"> + </argument> <description> + Sets the [ColorRamp] used to tint each particle. Particle will be tinted according to their lifetimes. </description> </method> <method name="set_emission_half_extents"> @@ -24356,122 +24585,148 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Sets the half extents of the emission box, particles will be spawned at random inside this box. </description> </method> - <method name="get_emission_half_extents" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_emission_points"> + <argument index="0" name="points" type="Vector2Array"> + </argument> <description> - Returns the half extents of the emission box. </description> </method> - <method name="set_color_phases"> - <argument index="0" name="phases" type="int"> + <method name="set_emissor_offset"> + <argument index="0" name="offset" type="Vector2"> </argument> <description> + Sets the particle spawn origin position relative to the emitter center. for example if this value is set to (50, 50), the particle will spawn 50 units to the right and 50 units to the bottom of the emitter center. </description> </method> - <method name="get_color_phases" qualifiers="const"> - <return type="int"> - </return> + <method name="set_emit_timeout"> + <argument index="0" name="value" type="float"> + </argument> <description> + Sets the amount of seconds during which the emitter will spawn particles, after the specified seconds the emitter state will be set to non emitting, so calling [method is_emitting] will return false. If the timeout is 0 the emitter will spawn forever. </description> </method> - <method name="set_color_phase_color"> - <argument index="0" name="phase" type="int"> - </argument> - <argument index="1" name="color" type="Color"> + <method name="set_emitting"> + <argument index="0" name="active" type="bool"> </argument> <description> + If this is set to true then the particle emitter will emit particles, if its false it will not. </description> </method> - <method name="get_color_phase_color" qualifiers="const"> - <return type="Color"> - </return> - <argument index="0" name="phase" type="int"> + <method name="set_explosiveness"> + <argument index="0" name="amount" type="float"> </argument> <description> </description> </method> - <method name="set_color_phase_pos"> - <argument index="0" name="phase" type="int"> - </argument> - <argument index="1" name="pos" type="float"> + <method name="set_flip_h"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="get_color_phase_pos" qualifiers="const"> - <return type="float"> - </return> - <argument index="0" name="phase" type="int"> + <method name="set_flip_v"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="pre_process"> - <argument index="0" name="time" type="float"> + <method name="set_h_frames"> + <argument index="0" name="enable" type="int"> </argument> <description> </description> </method> - <method name="reset"> + <method name="set_initial_velocity"> + <argument index="0" name="velocity" type="Vector2"> + </argument> <description> </description> </method> - <method name="set_use_local_space"> - <argument index="0" name="enable" type="bool"> + <method name="set_lifetime"> + <argument index="0" name="lifetime" type="float"> </argument> <description> + Sets the amount of seconds that each particle will be visible. </description> </method> - <method name="is_using_local_space" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_param"> + <argument index="0" name="param" type="int"> + </argument> + <argument index="1" name="value" type="float"> + </argument> <description> + Sets the value of the specified emitter parameter (see the constants secction for the list of parameters) </description> </method> - <method name="set_initial_velocity"> - <argument index="0" name="velocity" type="Vector2"> + <method name="set_pre_process_time"> + <argument index="0" name="time" type="float"> </argument> <description> </description> </method> - <method name="get_initial_velocity" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_randomness"> + <argument index="0" name="param" type="int"> + </argument> + <argument index="1" name="value" type="float"> + </argument> <description> + Sets the randomness value of the specified emitter parameter (see the constants secction for the list of parameters), 0 means no randomness, so every particle will have the parameters specified, 1 means that the parameter will be choosen at random, the closer the randomness value gets to 0 the more conservative the variation of the parameter will be. </description> </method> - <method name="set_explosiveness"> - <argument index="0" name="amount" type="float"> + <method name="set_texture"> + <return type="Texture"> + </return> + <argument index="0" name="texture" type="Object"> </argument> <description> + Sets the texture for each particle </description> </method> - <method name="get_explosiveness" qualifiers="const"> - <return type="float"> - </return> + <method name="set_time_scale"> + <argument index="0" name="time_scale" type="float"> + </argument> <description> + Sets the increment or decrement for the particle lifetime. for example: if the time scale is set to 2, the particles will die and move twice as fast. </description> </method> - <method name="set_emission_points"> - <argument index="0" name="points" type="Vector2Array"> + <method name="set_use_local_space"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="get_emission_points" qualifiers="const"> - <return type="Vector2Array"> - </return> + <method name="set_v_frames"> + <argument index="0" name="enable" type="int"> + </argument> <description> </description> </method> </methods> <constants> + <constant name="MAX_COLOR_PHASES" value="4"> + </constant> <constant name="PARAM_DIRECTION" value="0"> Direction in radians at which the particles will be launched, Notice that when the direction is set to 0 the particles will be launched to the negative </constant> <constant name="PARAM_SPREAD" value="1"> </constant> + <constant name="PARAM_INITIAL_ANGLE" value="10"> + Initial angle in radians at which each particle will be spawned + </constant> + <constant name="PARAM_INITIAL_SIZE" value="11"> + Initial size of each particle + </constant> + <constant name="PARAM_FINAL_SIZE" value="12"> + Final size of each particle, the particle size will interpolate to this value during its lifetime. + </constant> + <constant name="PARAM_HUE_VARIATION" value="13"> + </constant> + <constant name="PARAM_ANIM_SPEED_SCALE" value="14"> + </constant> + <constant name="PARAM_ANIM_INITIAL_POS" value="15"> + </constant> + <constant name="PARAM_MAX" value="16"> + </constant> <constant name="PARAM_LINEAR_VELOCITY" value="2"> Velocity at which the particles will be launched. </constant> @@ -24494,25 +24749,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <constant name="PARAM_DAMPING" value="9"> Amount of damping for each particle </constant> - <constant name="PARAM_INITIAL_ANGLE" value="10"> - Initial angle in radians at which each particle will be spawned - </constant> - <constant name="PARAM_INITIAL_SIZE" value="11"> - Initial size of each particle - </constant> - <constant name="PARAM_FINAL_SIZE" value="12"> - Final size of each particle, the particle size will interpolate to this value during its lifetime. - </constant> - <constant name="PARAM_HUE_VARIATION" value="13"> - </constant> - <constant name="PARAM_ANIM_SPEED_SCALE" value="14"> - </constant> - <constant name="PARAM_ANIM_INITIAL_POS" value="15"> - </constant> - <constant name="PARAM_MAX" value="16"> - </constant> - <constant name="MAX_COLOR_PHASES" value="4"> - </constant> </constants> </class> <class name="Patch9Frame" inherits="Control" category="Core"> @@ -24521,67 +24757,67 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) <description> </description> <methods> - <method name="set_texture"> - <argument index="0" name="texture" type="Object"> - </argument> + <method name="get_draw_center" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="get_texture" qualifiers="const"> - <return type="Object"> + <method name="get_modulate" qualifiers="const"> + <return type="Color"> </return> <description> </description> </method> - <method name="set_modulate"> - <argument index="0" name="modulate" type="Color"> + <method name="get_patch_margin" qualifiers="const"> + <return type="int"> + </return> + <argument index="0" name="margin" type="int"> </argument> <description> </description> </method> - <method name="get_modulate" qualifiers="const"> - <return type="Color"> + <method name="get_region_rect" qualifiers="const"> + <return type="Rect2"> </return> <description> </description> </method> - <method name="set_patch_margin"> - <argument index="0" name="margin" type="int"> - </argument> - <argument index="1" name="value" type="int"> - </argument> + <method name="get_texture" qualifiers="const"> + <return type="Object"> + </return> <description> </description> </method> - <method name="get_patch_margin" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="margin" type="int"> + <method name="set_draw_center"> + <argument index="0" name="draw_center" type="bool"> </argument> <description> </description> </method> - <method name="set_region_rect"> - <argument index="0" name="rect" type="Rect2"> + <method name="set_modulate"> + <argument index="0" name="modulate" type="Color"> </argument> <description> </description> </method> - <method name="get_region_rect" qualifiers="const"> - <return type="Rect2"> - </return> + <method name="set_patch_margin"> + <argument index="0" name="margin" type="int"> + </argument> + <argument index="1" name="value" type="int"> + </argument> <description> </description> </method> - <method name="set_draw_center"> - <argument index="0" name="draw_center" type="bool"> + <method name="set_region_rect"> + <argument index="0" name="rect" type="Rect2"> </argument> <description> </description> </method> - <method name="get_draw_center" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_texture"> + <argument index="0" name="texture" type="Object"> + </argument> <description> </description> </method> @@ -24597,13 +24833,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) This class is a container/Node-ification of a [Curve3D], so it can have [Spatial] properties and [Node] info. </description> <methods> - <method name="set_curve"> - <argument index="0" name="curve" type="Curve3D"> - </argument> - <description> - Sets the [Curve3D]. - </description> - </method> <method name="get_curve" qualifiers="const"> <return type="Curve3D"> </return> @@ -24611,6 +24840,13 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Returns the [Curve3D] contained. </description> </method> + <method name="set_curve"> + <argument index="0" name="curve" type="Curve3D"> + </argument> + <description> + Sets the [Curve3D]. + </description> + </method> </methods> <constants> </constants> @@ -24623,13 +24859,6 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) This class is a container/Node-ification of a [Curve2D], so it can have [Node2D] properties and [Node] info. </description> <methods> - <method name="set_curve"> - <argument index="0" name="curve" type="Curve2D"> - </argument> - <description> - Sets the [Curve2D]. - </description> - </method> <method name="get_curve" qualifiers="const"> <return type="Curve2D"> </return> @@ -24637,6 +24866,13 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) Returns the [Curve2D] contained. </description> </method> + <method name="set_curve"> + <argument index="0" name="curve" type="Curve2D"> + </argument> + <description> + Sets the [Curve2D]. + </description> + </method> </methods> <constants> </constants> @@ -24650,26 +24886,11 @@ Example: (content-length:12), (Content-Type:application/json; charset=UTF-8) It is useful for making other nodes follow a path, without coding the movement pattern. For that, the nodes must be descendants of this node. Then, when setting an offset in this node, the descendant nodes will move accordingly. </description> <methods> - <method name="set_offset"> - <argument index="0" name="offset" type="float"> - </argument> - <description> - Sets the distance from the first vertex, measured in 3D units along the path. This sets this node's position to a point within the path. - </description> - </method> - <method name="get_offset" qualifiers="const"> - <return type="float"> + <method name="get_cubic_interpolation" qualifiers="const"> + <return type="bool"> </return> <description> - Returns the distance along the path in 3D units. - </description> - </method> - <method name="set_h_offset"> - <argument index="0" name="h_offset" type="float"> - </argument> - <description> - Moves this node in the X axis. As this node's position will be set every time its offset is set, this allows many PathFollow to share the same curve (and thus the same movement pattern), yet not return the same position for a given path offset. -A similar effect may be achieved moving the this node's descendants. + This method returns whether the position between two cached points (see [method set_cubic_interpolation]) is interpolated linearly, or cubicly. </description> </method> <method name="get_h_offset" qualifiers="const"> @@ -24679,25 +24900,18 @@ A similar effect may be achieved moving the this node's descendants. Returns the X displacement this node has from its parent [Path]. </description> </method> - <method name="set_v_offset"> - <argument index="0" name="v_offset" type="float"> - </argument> - <description> - Moves this node in the Y axis, for the same reasons of [method set_h_offset]. - </description> - </method> - <method name="get_v_offset" qualifiers="const"> + <method name="get_offset" qualifiers="const"> <return type="float"> </return> <description> - Returns the Y displacement this node has from its parent [Path]. + Returns the distance along the path in 3D units. </description> </method> - <method name="set_unit_offset"> - <argument index="0" name="unit_offset" type="float"> - </argument> + <method name="get_rotation_mode" qualifiers="const"> + <return type="int"> + </return> <description> - Sets the distance from the first vertex, considering 0.0 as the first vertex and 1.0 as the last. This is just another way of expressing the offset within the path, as the offset supplied is multiplied internally by the path's length. + Returns the rotation mode. The constants below list which axes are allowed to rotate for each mode. </description> </method> <method name="get_unit_offset" qualifiers="const"> @@ -24707,18 +24921,18 @@ A similar effect may be achieved moving the this node's descendants. Returns the distance along the path as a number in the range 0.0 (for the first vertex) to 1.0 (for the last). </description> </method> - <method name="set_rotation_mode"> - <argument index="0" name="rotation_mode" type="int"> - </argument> + <method name="get_v_offset" qualifiers="const"> + <return type="float"> + </return> <description> - Allows or forbids rotation on one or more axes, per the constants below. + Returns the Y displacement this node has from its parent [Path]. </description> </method> - <method name="get_rotation_mode" qualifiers="const"> - <return type="int"> + <method name="has_loop" qualifiers="const"> + <return type="bool"> </return> <description> - Returns the rotation mode. The constants below list which axes are allowed to rotate for each mode. + Returns whether this node wraps its offsets around, or truncates them to the path ends. </description> </method> <method name="set_cubic_interpolation"> @@ -24730,11 +24944,12 @@ There are two answers to this problem: Either increase the number of cached poin This method controls whether the position between two cached points is interpolated linearly, or cubicly. </description> </method> - <method name="get_cubic_interpolation" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_h_offset"> + <argument index="0" name="h_offset" type="float"> + </argument> <description> - This method returns whether the position between two cached points (see [method set_cubic_interpolation]) is interpolated linearly, or cubicly. + Moves this node in the X axis. As this node's position will be set every time its offset is set, this allows many PathFollow to share the same curve (and thus the same movement pattern), yet not return the same position for a given path offset. +A similar effect may be achieved moving the this node's descendants. </description> </method> <method name="set_loop"> @@ -24744,11 +24959,32 @@ This method controls whether the position between two cached points is interpola If set, any offset outside the path's length (whether set by [method set_offset] or [method set_unit_offset] will wrap around, instead of stopping at the ends. Set it for cyclic paths. </description> </method> - <method name="has_loop" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_offset"> + <argument index="0" name="offset" type="float"> + </argument> <description> - Returns whether this node wraps its offsets around, or truncates them to the path ends. + Sets the distance from the first vertex, measured in 3D units along the path. This sets this node's position to a point within the path. + </description> + </method> + <method name="set_rotation_mode"> + <argument index="0" name="rotation_mode" type="int"> + </argument> + <description> + Allows or forbids rotation on one or more axes, per the constants below. + </description> + </method> + <method name="set_unit_offset"> + <argument index="0" name="unit_offset" type="float"> + </argument> + <description> + Sets the distance from the first vertex, considering 0.0 as the first vertex and 1.0 as the last. This is just another way of expressing the offset within the path, as the offset supplied is multiplied internally by the path's length. + </description> + </method> + <method name="set_v_offset"> + <argument index="0" name="v_offset" type="float"> + </argument> + <description> + Moves this node in the Y axis, for the same reasons of [method set_h_offset]. </description> </method> </methods> @@ -24776,26 +25012,11 @@ This method controls whether the position between two cached points is interpola It is useful for making other nodes follow a path, without coding the movement pattern. For that, the nodes must be descendants of this node. Then, when setting an offset in this node, the descendant nodes will move accordingly. </description> <methods> - <method name="set_offset"> - <argument index="0" name="offset" type="float"> - </argument> - <description> - Sets the distance from the first vertex, measured in pixels along the path. This sets this node's position to a point within the path. - </description> - </method> - <method name="get_offset" qualifiers="const"> - <return type="float"> + <method name="get_cubic_interpolation" qualifiers="const"> + <return type="bool"> </return> <description> - Returns the distance along the path in pixels. - </description> - </method> - <method name="set_h_offset"> - <argument index="0" name="h_offset" type="float"> - </argument> - <description> - Moves this node horizontally. As this node's position will be set every time its offset is set, this allows many PathFollow2D to share the same curve (and thus the same movement pattern), yet not return the same position for a given path offset. -A similar effect may be achieved moving this node's descendants. + This method returns whether the position between two cached points (see [method set_cubic_interpolation]) is interpolated linearly, or cubicly. </description> </method> <method name="get_h_offset" qualifiers="const"> @@ -24805,39 +25026,32 @@ A similar effect may be achieved moving this node's descendants. Returns the horizontal displacement this node has from its parent [Path2D]. </description> </method> - <method name="set_v_offset"> - <argument index="0" name="v_offset" type="float"> - </argument> - <description> - Moves the PathFollow2D vertically, for the same reasons of [method set_h_offset]. - </description> - </method> - <method name="get_v_offset" qualifiers="const"> + <method name="get_offset" qualifiers="const"> <return type="float"> </return> <description> - Returns the vertical displacement this node has from its parent [Path2D]. + Returns the distance along the path in pixels. </description> </method> - <method name="set_unit_offset"> - <argument index="0" name="unit_offset" type="float"> - </argument> + <method name="get_unit_offset" qualifiers="const"> + <return type="float"> + </return> <description> - Sets the distance from the first vertex, considering 0.0 as the first vertex and 1.0 as the last. This is just another way of expressing the offset within the path, as the offset supplied is multiplied internally by the path's length. + Returns the distance along the path as a number in the range 0.0 (for the first vertex) to 1.0 (for the last). </description> </method> - <method name="get_unit_offset" qualifiers="const"> + <method name="get_v_offset" qualifiers="const"> <return type="float"> </return> <description> - Returns the distance along the path as a number in the range 0.0 (for the first vertex) to 1.0 (for the last). + Returns the vertical displacement this node has from its parent [Path2D]. </description> </method> - <method name="set_rotate"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="has_loop" qualifiers="const"> + <return type="bool"> + </return> <description> - If set, this node rotates to follow the path, making its descendants rotate. + Returns whether this node wraps its offsets around, or truncates them to the path ends. </description> </method> <method name="is_rotating" qualifiers="const"> @@ -24856,11 +25070,12 @@ There are two answers to this problem: Either increase the number of cached poin This method controls whether the position between two cached points is interpolated linearly, or cubicly. </description> </method> - <method name="get_cubic_interpolation" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_h_offset"> + <argument index="0" name="h_offset" type="float"> + </argument> <description> - This method returns whether the position between two cached points (see [method set_cubic_interpolation]) is interpolated linearly, or cubicly. + Moves this node horizontally. As this node's position will be set every time its offset is set, this allows many PathFollow2D to share the same curve (and thus the same movement pattern), yet not return the same position for a given path offset. +A similar effect may be achieved moving this node's descendants. </description> </method> <method name="set_loop"> @@ -24870,11 +25085,32 @@ This method controls whether the position between two cached points is interpola If set, any offset outside the path's length (whether set by [method set_offset] or [method set_unit_offset] will wrap around, instead of stopping at the ends. Set it for cyclic paths. </description> </method> - <method name="has_loop" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_offset"> + <argument index="0" name="offset" type="float"> + </argument> <description> - Returns whether this node wraps its offsets around, or truncates them to the path ends. + Sets the distance from the first vertex, measured in pixels along the path. This sets this node's position to a point within the path. + </description> + </method> + <method name="set_rotate"> + <argument index="0" name="enable" type="bool"> + </argument> + <description> + If set, this node rotates to follow the path, making its descendants rotate. + </description> + </method> + <method name="set_unit_offset"> + <argument index="0" name="unit_offset" type="float"> + </argument> + <description> + Sets the distance from the first vertex, considering 0.0 as the first vertex and 1.0 as the last. This is just another way of expressing the offset within the path, as the offset supplied is multiplied internally by the path's length. + </description> + </method> + <method name="set_v_offset"> + <argument index="0" name="v_offset" type="float"> + </argument> + <description> + Moves the PathFollow2D vertically, for the same reasons of [method set_h_offset]. </description> </method> </methods> @@ -24900,13 +25136,16 @@ This method controls whether the position between two cached points is interpola Add a remap from a file to another. </description> </method> - <method name="has_remap" qualifiers="const"> - <return type="bool"> - </return> + <method name="clear_remaps"> + <description> + Clear all remaps. + </description> + </method> + <method name="erase_remap"> <argument index="0" name="path" type="String"> </argument> <description> - Return true if a file is being remapped. + Erase a remap. </description> </method> <method name="get_remap" qualifiers="const"> @@ -24918,16 +25157,13 @@ This method controls whether the position between two cached points is interpola Return the remapped new path of a file. </description> </method> - <method name="erase_remap"> + <method name="has_remap" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="path" type="String"> </argument> <description> - Erase a remap. - </description> - </method> - <method name="clear_remaps"> - <description> - Clear all remaps. + Return true if a file is being remapped. </description> </method> </methods> @@ -24950,12 +25186,6 @@ This method controls whether the position between two cached points is interpola </method> </methods> <constants> - <constant name="TIME_FPS" value="0"> - </constant> - <constant name="TIME_PROCESS" value="1"> - </constant> - <constant name="TIME_FIXED_PROCESS" value="2"> - </constant> <constant name="MEMORY_STATIC" value="3"> </constant> <constant name="MEMORY_DYNAMIC" value="4"> @@ -24966,11 +25196,25 @@ This method controls whether the position between two cached points is interpola </constant> <constant name="MEMORY_MESSAGE_BUFFER_MAX" value="7"> </constant> + <constant name="MONITOR_MAX" value="27"> + </constant> + <constant name="OBJECT_NODE_COUNT" value="10"> + </constant> <constant name="OBJECT_COUNT" value="8"> </constant> <constant name="OBJECT_RESOURCE_COUNT" value="9"> </constant> - <constant name="OBJECT_NODE_COUNT" value="10"> + <constant name="PHYSICS_2D_ACTIVE_OBJECTS" value="21"> + </constant> + <constant name="PHYSICS_2D_COLLISION_PAIRS" value="22"> + </constant> + <constant name="PHYSICS_2D_ISLAND_COUNT" value="23"> + </constant> + <constant name="PHYSICS_3D_ACTIVE_OBJECTS" value="24"> + </constant> + <constant name="PHYSICS_3D_COLLISION_PAIRS" value="25"> + </constant> + <constant name="PHYSICS_3D_ISLAND_COUNT" value="26"> </constant> <constant name="RENDER_OBJECTS_IN_FRAME" value="11"> </constant> @@ -24984,27 +25228,19 @@ This method controls whether the position between two cached points is interpola </constant> <constant name="RENDER_DRAW_CALLS_IN_FRAME" value="16"> </constant> - <constant name="RENDER_USAGE_VIDEO_MEM_TOTAL" value="20"> - </constant> <constant name="RENDER_VIDEO_MEM_USED" value="17"> </constant> <constant name="RENDER_TEXTURE_MEM_USED" value="18"> </constant> <constant name="RENDER_VERTEX_MEM_USED" value="19"> </constant> - <constant name="PHYSICS_2D_ACTIVE_OBJECTS" value="21"> - </constant> - <constant name="PHYSICS_2D_COLLISION_PAIRS" value="22"> - </constant> - <constant name="PHYSICS_2D_ISLAND_COUNT" value="23"> - </constant> - <constant name="PHYSICS_3D_ACTIVE_OBJECTS" value="24"> + <constant name="RENDER_USAGE_VIDEO_MEM_TOTAL" value="20"> </constant> - <constant name="PHYSICS_3D_COLLISION_PAIRS" value="25"> + <constant name="TIME_FPS" value="0"> </constant> - <constant name="PHYSICS_3D_ISLAND_COUNT" value="26"> + <constant name="TIME_PROCESS" value="1"> </constant> - <constant name="MONITOR_MAX" value="27"> + <constant name="TIME_FIXED_PROCESS" value="2"> </constant> </constants> </class> @@ -25016,95 +25252,74 @@ This method controls whether the position between two cached points is interpola Direct access object to a physics body in the [Physics2DServer]. This object is passed via the direct state callback of rigid/character bodies, and is intended for changing the direct state of that body. </description> <methods> - <method name="get_total_gravity" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - Return the total gravity vector being currently applied to this body. - </description> - </method> - <method name="get_total_linear_damp" qualifiers="const"> + <method name="get_angular_velocity" qualifiers="const"> <return type="float"> </return> <description> - Return the rate at which the body stops moving, if there are not any other forces moving it. + Return the angular velocity of the body. </description> </method> - <method name="get_total_angular_damp" qualifiers="const"> - <return type="float"> + <method name="get_contact_collider" qualifiers="const"> + <return type="RID"> </return> + <argument index="0" name="contact_idx" type="int"> + </argument> <description> - Return the rate at which the body stops rotating, if there are not any other forces moving it. + Return the [RID] of the collider. </description> </method> - <method name="get_inverse_mass" qualifiers="const"> - <return type="float"> + <method name="get_contact_collider_id" qualifiers="const"> + <return type="int"> </return> + <argument index="0" name="contact_idx" type="int"> + </argument> <description> - Return the inverse of the mass of the body. + Return the object id of the collider. </description> </method> - <method name="get_inverse_inertia" qualifiers="const"> - <return type="float"> + <method name="get_contact_collider_object" qualifiers="const"> + <return type="Object"> </return> - <description> - Return the inverse of the inertia of the body. - </description> - </method> - <method name="set_linear_velocity"> - <argument index="0" name="velocity" type="Vector2"> + <argument index="0" name="contact_idx" type="int"> </argument> <description> - Change the linear velocity of the body. + Return the collider object, this depends on how it was created (will return a scene node if such was used to create it). </description> </method> - <method name="get_linear_velocity" qualifiers="const"> + <method name="get_contact_collider_pos" qualifiers="const"> <return type="Vector2"> </return> - <description> - Return the current linear velocity of the body. - </description> - </method> - <method name="set_angular_velocity"> - <argument index="0" name="velocity" type="float"> + <argument index="0" name="contact_idx" type="int"> </argument> <description> - Change the angular velocity of the body. + Return the contact position in the collider. </description> </method> - <method name="get_angular_velocity" qualifiers="const"> - <return type="float"> + <method name="get_contact_collider_shape" qualifiers="const"> + <return type="int"> </return> - <description> - Return the angular velocity of the body. - </description> - </method> - <method name="set_transform"> - <argument index="0" name="transform" type="Matrix32"> + <argument index="0" name="contact_idx" type="int"> </argument> <description> - Change the transform matrix of the body. + Return the collider shape index. </description> </method> - <method name="get_transform" qualifiers="const"> - <return type="Matrix32"> + <method name="get_contact_collider_shape_metadata" qualifiers="const"> + <return type="Variant"> </return> - <description> - Return the transform matrix of the body. - </description> - </method> - <method name="set_sleep_state"> - <argument index="0" name="enabled" type="bool"> + <argument index="0" name="contact_idx" type="int"> </argument> <description> - Set the sleeping state of the body, only affects character/rigid bodies. + Return the metadata of the collided shape. This metadata is different from [method Object.get_meta], and is set with [method Physics2DServer.shape_set_data]. </description> </method> - <method name="is_sleeping" qualifiers="const"> - <return type="bool"> + <method name="get_contact_collider_velocity_at_pos" qualifiers="const"> + <return type="Vector2"> </return> + <argument index="0" name="contact_idx" type="int"> + </argument> <description> - Return true if this body is currently sleeping (not active). + Return the linear velocity vector at contact point of the collider. </description> </method> <method name="get_contact_count" qualifiers="const"> @@ -25114,22 +25329,22 @@ This method controls whether the position between two cached points is interpola Return the amount of contacts this body has with other bodies. Note that by default this returns 0 unless bodies are configured to log contacts. </description> </method> - <method name="get_contact_local_pos" qualifiers="const"> + <method name="get_contact_local_normal" qualifiers="const"> <return type="Vector2"> </return> <argument index="0" name="contact_idx" type="int"> </argument> <description> - Return the local position (of this body) of the contact point. + Return the local normal (of this body) of the contact point. </description> </method> - <method name="get_contact_local_normal" qualifiers="const"> + <method name="get_contact_local_pos" qualifiers="const"> <return type="Vector2"> </return> <argument index="0" name="contact_idx" type="int"> </argument> <description> - Return the local normal (of this body) of the contact point. + Return the local position (of this body) of the contact point. </description> </method> <method name="get_contact_local_shape" qualifiers="const"> @@ -25141,74 +25356,67 @@ This method controls whether the position between two cached points is interpola Return the local shape index of the collision. </description> </method> - <method name="get_contact_collider" qualifiers="const"> - <return type="RID"> + <method name="get_inverse_inertia" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="contact_idx" type="int"> - </argument> <description> - Return the [RID] of the collider. + Return the inverse of the inertia of the body. </description> </method> - <method name="get_contact_collider_pos" qualifiers="const"> - <return type="Vector2"> + <method name="get_inverse_mass" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="contact_idx" type="int"> - </argument> <description> - Return the contact position in the collider. + Return the inverse of the mass of the body. </description> </method> - <method name="get_contact_collider_id" qualifiers="const"> - <return type="int"> + <method name="get_linear_velocity" qualifiers="const"> + <return type="Vector2"> </return> - <argument index="0" name="contact_idx" type="int"> - </argument> <description> - Return the object id of the collider. + Return the current linear velocity of the body. </description> </method> - <method name="get_contact_collider_object" qualifiers="const"> - <return type="Object"> + <method name="get_space_state"> + <return type="Physics2DDirectSpaceState"> </return> - <argument index="0" name="contact_idx" type="int"> - </argument> <description> - Return the collider object, this depends on how it was created (will return a scene node if such was used to create it). + Return the current state of space, useful for queries. </description> </method> - <method name="get_contact_collider_shape" qualifiers="const"> - <return type="int"> + <method name="get_step" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="contact_idx" type="int"> - </argument> <description> - Return the collider shape index. + Return the timestep (delta) used for the simulation. </description> </method> - <method name="get_contact_collider_shape_metadata" qualifiers="const"> - <return type="Variant"> + <method name="get_total_angular_damp" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="contact_idx" type="int"> - </argument> <description> - Return the metadata of the collided shape. This metadata is different from [method Object.get_meta], and is set with [method Physics2DServer.shape_set_data]. + Return the rate at which the body stops rotating, if there are not any other forces moving it. </description> </method> - <method name="get_contact_collider_velocity_at_pos" qualifiers="const"> + <method name="get_total_gravity" qualifiers="const"> <return type="Vector2"> </return> - <argument index="0" name="contact_idx" type="int"> - </argument> <description> - Return the linear velocity vector at contact point of the collider. + Return the total gravity vector being currently applied to this body. </description> </method> - <method name="get_step" qualifiers="const"> + <method name="get_total_linear_damp" qualifiers="const"> <return type="float"> </return> <description> - Return the timestep (delta) used for the simulation. + Return the rate at which the body stops moving, if there are not any other forces moving it. + </description> + </method> + <method name="get_transform" qualifiers="const"> + <return type="Matrix32"> + </return> + <description> + Return the transform matrix of the body. </description> </method> <method name="integrate_forces"> @@ -25216,11 +25424,39 @@ This method controls whether the position between two cached points is interpola Call the built-in force integration code. </description> </method> - <method name="get_space_state"> - <return type="Physics2DDirectSpaceState"> + <method name="is_sleeping" qualifiers="const"> + <return type="bool"> </return> <description> - Return the current state of space, useful for queries. + Return true if this body is currently sleeping (not active). + </description> + </method> + <method name="set_angular_velocity"> + <argument index="0" name="velocity" type="float"> + </argument> + <description> + Change the angular velocity of the body. + </description> + </method> + <method name="set_linear_velocity"> + <argument index="0" name="velocity" type="Vector2"> + </argument> + <description> + Change the linear velocity of the body. + </description> + </method> + <method name="set_sleep_state"> + <argument index="0" name="enabled" type="bool"> + </argument> + <description> + Set the sleeping state of the body, only affects character/rigid bodies. + </description> + </method> + <method name="set_transform"> + <argument index="0" name="transform" type="Matrix32"> + </argument> + <description> + Change the transform matrix of the body. </description> </method> </methods> @@ -25247,6 +25483,45 @@ This method controls whether the position between two cached points is interpola Direct access object to a space in the [Physics2DServer]. It's used mainly to do queries against objects and areas residing in a given space. </description> <methods> + <method name="cast_motion"> + <return type="Array"> + </return> + <argument index="0" name="shape" type="Physics2DShapeQueryParameters"> + </argument> + <description> + Check whether the shape can travel to a point. If it can, the method will return an array with two floats: The first is the distance the shape can move in that direction without colliding, and the second is the distance at which it will collide. + If the shape can not move, the array will be empty. + </description> + </method> + <method name="collide_shape"> + <return type="Array"> + </return> + <argument index="0" name="shape" type="Physics2DShapeQueryParameters"> + </argument> + <argument index="1" name="max_results" type="int" default="32"> + </argument> + <description> + Check the intersections of a shape, given through a [Physics2DShapeQueryParameters] object, against the space. The resulting array contains a list of points where the shape intersects another. Like with [method intersect_shape], the number of returned results can be limited to save processing time. + </description> + </method> + <method name="get_rest_info"> + <return type="Dictionary"> + </return> + <argument index="0" name="shape" type="Physics2DShapeQueryParameters"> + </argument> + <description> + Check the intersections of a shape, given through a [Physics2DShapeQueryParameters] object, against the space. If it collides with more than a shape, the nearest one is selected. The returned object is a dictionary containing the following fields: + pointo: Place where the shapes intersect. + normal: Normal of the object at the point where the shapes intersect. + shape: Shape index within the object against which the shape intersected. + metadata: Metadata of the shape against which the shape intersected. This metadata is different from [method Object.get_meta], and is set with [method Physics2DServer.shape_set_data]. + collider_id: Id of the object against which the shape intersected. + collider: Object against which the shape intersected. + rid: [RID] of the object against which the shape intersected. + linear_velocity: The movement vector of the object the shape intersected, if it was a body. If it was an area, it is (0,0). + If the shape did not intersect anything, then an empty dictionary (dir.empty()==true) is returned instead. + </description> + </method> <method name="intersect_point"> <return type="Array"> </return> @@ -25313,50 +25588,17 @@ This method controls whether the position between two cached points is interpola The number of intersections can be limited with the second paramater, to reduce the processing time. </description> </method> - <method name="cast_motion"> - <return type="Array"> - </return> - <argument index="0" name="shape" type="Physics2DShapeQueryParameters"> - </argument> - <description> - Check whether the shape can travel to a point. If it can, the method will return an array with two floats: The first is the distance the shape can move in that direction without colliding, and the second is the distance at which it will collide. - If the shape can not move, the array will be empty. - </description> - </method> - <method name="collide_shape"> - <return type="Array"> - </return> - <argument index="0" name="shape" type="Physics2DShapeQueryParameters"> - </argument> - <argument index="1" name="max_results" type="int" default="32"> - </argument> - <description> - Check the intersections of a shape, given through a [Physics2DShapeQueryParameters] object, against the space. The resulting array contains a list of points where the shape intersects another. Like with [method intersect_shape], the number of returned results can be limited to save processing time. - </description> - </method> - <method name="get_rest_info"> - <return type="Dictionary"> - </return> - <argument index="0" name="shape" type="Physics2DShapeQueryParameters"> - </argument> - <description> - Check the intersections of a shape, given through a [Physics2DShapeQueryParameters] object, against the space. If it collides with more than a shape, the nearest one is selected. The returned object is a dictionary containing the following fields: - pointo: Place where the shapes intersect. - normal: Normal of the object at the point where the shapes intersect. - shape: Shape index within the object against which the shape intersected. - metadata: Metadata of the shape against which the shape intersected. This metadata is different from [method Object.get_meta], and is set with [method Physics2DServer.shape_set_data]. - collider_id: Id of the object against which the shape intersected. - collider: Object against which the shape intersected. - rid: [RID] of the object against which the shape intersected. - linear_velocity: The movement vector of the object the shape intersected, if it was a body. If it was an area, it is (0,0). - If the shape did not intersect anything, then an empty dictionary (dir.empty()==true) is returned instead. - </description> - </method> </methods> <constants> <constant name="TYPE_MASK_STATIC_BODY" value="1"> Check for collisions with static bodies. </constant> + <constant name="TYPE_MASK_COLLISION" value="15"> + Check for collisions with any kind of bodies (but not areas). + </constant> + <constant name="TYPE_MASK_AREA" value="16"> + Check for collisions with areas. + </constant> <constant name="TYPE_MASK_KINEMATIC_BODY" value="2"> Check for collisions with kinematic bodies. </constant> @@ -25366,12 +25608,6 @@ This method controls whether the position between two cached points is interpola <constant name="TYPE_MASK_CHARACTER_BODY" value="8"> Check for collisions with rigid bodies in character mode. </constant> - <constant name="TYPE_MASK_AREA" value="16"> - Check for collisions with areas. - </constant> - <constant name="TYPE_MASK_COLLISION" value="15"> - Check for collisions with any kind of bodies (but not areas). - </constant> </constants> </class> <class name="Physics2DServer" inherits="Object" category="Core"> @@ -25382,110 +25618,87 @@ This method controls whether the position between two cached points is interpola Physics 2D Server is the server responsible for all 2D physics. It can create many kinds of physics objects, but does not insert them on the node tree. </description> <methods> - <method name="shape_create"> - <return type="RID"> - </return> - <argument index="0" name="type" type="int"> + <method name="area_add_shape"> + <argument index="0" name="area" type="RID"> </argument> - <description> - Create a shape of type SHAPE_*. Does not assign it to a body or an area. To do so, you must use [method area_set_shape] or [method body_set_shape]. - </description> - </method> - <method name="shape_set_data"> - <argument index="0" name="shape" type="RID"> + <argument index="1" name="shape" type="RID"> </argument> - <argument index="1" name="data" type="Variant"> + <argument index="2" name="transform" type="Matrix32" default="1,0, 0,1, 0,0"> </argument> <description> - Set the shape data that defines its shape and size. The data to be passed depends on the kind of shape created [method shape_get_type]. + Add a shape to the area, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index. </description> </method> - <method name="shape_get_type" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="shape" type="RID"> + <method name="area_attach_object_instance_ID"> + <argument index="0" name="area" type="RID"> + </argument> + <argument index="1" name="id" type="int"> </argument> <description> - Return the type of shape (see SHAPE_* constants). + Assign the area to a descendant of [Object], so it can exist in the node tree. </description> </method> - <method name="shape_get_data" qualifiers="const"> - <argument index="0" name="shape" type="RID"> + <method name="area_clear_shapes"> + <argument index="0" name="area" type="RID"> </argument> <description> - Return the shape data. + Remove all shapes from an area. It does not delete the shapes, so they can be reassigned later. </description> </method> - <method name="space_create"> + <method name="area_create"> <return type="RID"> </return> <description> - Create a space. A space is a collection of parameters for the physics engine that can be assigned to an area or a body. It can be assigned to an area with [method area_set_space], or to a body with [method body_set_space]. - </description> - </method> - <method name="space_set_active"> - <argument index="0" name="space" type="RID"> - </argument> - <argument index="1" name="active" type="bool"> - </argument> - <description> - Mark a space as active. It will not have an effect, unless it is assigned to an area or body. + Create an [Area2D]. </description> </method> - <method name="space_is_active" qualifiers="const"> - <return type="bool"> + <method name="area_get_object_instance_ID" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="space" type="RID"> + <argument index="0" name="area" type="RID"> </argument> <description> - Return whether the space is active. + Get the instance ID of the object the area is assigned to. </description> </method> - <method name="space_set_param"> - <argument index="0" name="space" type="RID"> + <method name="area_get_param" qualifiers="const"> + <argument index="0" name="area" type="RID"> </argument> <argument index="1" name="param" type="int"> </argument> - <argument index="2" name="value" type="float"> - </argument> <description> - Set the value for a space parameter. A list of available parameters is on the SPACE_PARAM_* constants. + Return an area parameter value. </description> </method> - <method name="space_get_param" qualifiers="const"> - <return type="float"> + <method name="area_get_shape" qualifiers="const"> + <return type="RID"> </return> - <argument index="0" name="space" type="RID"> + <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="param" type="int"> + <argument index="1" name="shape_idx" type="int"> </argument> <description> - Return the value of a space parameter. + Return the [RID] of the nth shape of an area. </description> </method> - <method name="space_get_direct_state"> - <return type="Physics2DDirectSpaceState"> + <method name="area_get_shape_count" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="space" type="RID"> + <argument index="0" name="area" type="RID"> </argument> <description> - Return the state of a space, a [Physics2DDirectSpaceState]. This object can be used to make collision/intersection queries. + Return the number of shapes assigned to an area. </description> </method> - <method name="area_create"> - <return type="RID"> + <method name="area_get_shape_transform" qualifiers="const"> + <return type="Matrix32"> </return> - <description> - Create an [Area2D]. - </description> - </method> - <method name="area_set_space"> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="space" type="RID"> + <argument index="1" name="shape_idx" type="int"> </argument> <description> - Assign a space to the area. + Return the transform matrix of a shape within an area. </description> </method> <method name="area_get_space" qualifiers="const"> @@ -25497,15 +25710,6 @@ This method controls whether the position between two cached points is interpola Return the space assigned to the area. </description> </method> - <method name="area_set_space_override_mode"> - <argument index="0" name="area" type="RID"> - </argument> - <argument index="1" name="mode" type="int"> - </argument> - <description> - Set the space override mode for the area. The modes are described in the constants AREA_SPACE_OVERRIDE_*. - </description> - </method> <method name="area_get_space_override_mode" qualifiers="const"> <return type="int"> </return> @@ -25515,113 +25719,107 @@ This method controls whether the position between two cached points is interpola Return the space override mode for the area. </description> </method> - <method name="area_add_shape"> + <method name="area_get_transform" qualifiers="const"> + <return type="Matrix32"> + </return> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="shape" type="RID"> - </argument> - <argument index="2" name="transform" type="Matrix32" default="1,0, 0,1, 0,0"> - </argument> <description> - Add a shape to the area, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index. + Return the transform matrix for an area. </description> </method> - <method name="area_set_shape"> + <method name="area_remove_shape"> <argument index="0" name="area" type="RID"> </argument> <argument index="1" name="shape_idx" type="int"> </argument> - <argument index="2" name="shape" type="RID"> - </argument> <description> - Substitute a given area shape by another. The old shape is selected by its index, the new one by its [RID]. + Remove a shape from an area. It does not delete the shape, so it can be reassigned later. </description> </method> - <method name="area_set_shape_transform"> + <method name="area_set_collision_mask"> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="shape_idx" type="int"> - </argument> - <argument index="2" name="transform" type="Matrix32"> + <argument index="1" name="mask" type="int"> </argument> <description> - Set the transform matrix for an area shape. + Set which physics layers the area will monitor. </description> </method> - <method name="area_get_shape_count" qualifiers="const"> - <return type="int"> - </return> + <method name="area_set_layer_mask"> <argument index="0" name="area" type="RID"> </argument> + <argument index="1" name="mask" type="int"> + </argument> <description> - Return the number of shapes assigned to an area. + Assign the area to one or many physics layers. </description> </method> - <method name="area_get_shape" qualifiers="const"> - <return type="RID"> - </return> + <method name="area_set_monitor_callback"> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="shape_idx" type="int"> + <argument index="1" name="receiver" type="Object"> + </argument> + <argument index="2" name="method" type="String"> </argument> <description> - Return the [RID] of the nth shape of an area. + Set the function to call when any body/area enters or exits the area. This callback will be called for any object interacting with the area, and takes five parameters: + 1: AREA_BODY_ADDED or AREA_BODY_REMOVED, depending on whether the object entered or exited the area. + 2: [RID] of the object that entered/exited the area. + 3: Instance ID of the object that entered/exited the area. + 4: The shape index of the object that entered/exited the area. + 5: The shape index of the area where the object entered/exited. </description> </method> - <method name="area_get_shape_transform" qualifiers="const"> - <return type="Matrix32"> - </return> + <method name="area_set_param"> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="shape_idx" type="int"> + <argument index="1" name="param" type="int"> + </argument> + <argument index="2" name="value" type="Variant"> </argument> <description> - Return the transform matrix of a shape within an area. + Set the value for an area parameter. A list of available parameters is on the AREA_PARAM_* constants. </description> </method> - <method name="area_remove_shape"> + <method name="area_set_shape"> <argument index="0" name="area" type="RID"> </argument> <argument index="1" name="shape_idx" type="int"> </argument> - <description> - Remove a shape from an area. It does not delete the shape, so it can be reassigned later. - </description> - </method> - <method name="area_clear_shapes"> - <argument index="0" name="area" type="RID"> + <argument index="2" name="shape" type="RID"> </argument> <description> - Remove all shapes from an area. It does not delete the shapes, so they can be reassigned later. + Substitute a given area shape by another. The old shape is selected by its index, the new one by its [RID]. </description> </method> - <method name="area_set_layer_mask"> + <method name="area_set_shape_transform"> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="mask" type="int"> + <argument index="1" name="shape_idx" type="int"> + </argument> + <argument index="2" name="transform" type="Matrix32"> </argument> <description> - Assign the area to one or many physics layers. + Set the transform matrix for an area shape. </description> </method> - <method name="area_set_collision_mask"> + <method name="area_set_space"> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="mask" type="int"> + <argument index="1" name="space" type="RID"> </argument> <description> - Set which physics layers the area will monitor. + Assign a space to the area. </description> </method> - <method name="area_set_param"> + <method name="area_set_space_override_mode"> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="param" type="int"> - </argument> - <argument index="2" name="value" type="Variant"> + <argument index="1" name="mode" type="int"> </argument> <description> - Set the value for an area parameter. A list of available parameters is on the AREA_PARAM_* constants. + Set the space override mode for the area. The modes are described in the constants AREA_SPACE_OVERRIDE_*. </description> </method> <method name="area_set_transform"> @@ -25633,56 +25831,62 @@ This method controls whether the position between two cached points is interpola Set the transform matrix for an area. </description> </method> - <method name="area_get_param" qualifiers="const"> - <argument index="0" name="area" type="RID"> + <method name="body_add_collision_exception"> + <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="param" type="int"> + <argument index="1" name="excepted_body" type="RID"> </argument> <description> - Return an area parameter value. + Add a body to the list of bodies exempt from collisions. </description> </method> - <method name="area_get_transform" qualifiers="const"> - <return type="Matrix32"> - </return> - <argument index="0" name="area" type="RID"> + <method name="body_add_force"> + <argument index="0" name="body" type="RID"> + </argument> + <argument index="1" name="offset" type="Vector2"> + </argument> + <argument index="2" name="force" type="Vector2"> </argument> <description> - Return the transform matrix for an area. + Add a positioned force to the applied force and torque. As with [method body_apply_impulse], both the force and the offset from the body origin are in global coordinates. A force differs from an impulse in that, while the two are forces, the impulse clears itself after being applied. </description> </method> - <method name="area_attach_object_instance_ID"> - <argument index="0" name="area" type="RID"> + <method name="body_add_shape"> + <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="id" type="int"> + <argument index="1" name="shape" type="RID"> + </argument> + <argument index="2" name="transform" type="Matrix32" default="1,0, 0,1, 0,0"> </argument> <description> - Assign the area to a descendant of [Object], so it can exist in the node tree. + Add a shape to the body, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index. </description> </method> - <method name="area_get_object_instance_ID" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="area" type="RID"> + <method name="body_apply_impulse"> + <argument index="0" name="body" type="RID"> + </argument> + <argument index="1" name="pos" type="Vector2"> + </argument> + <argument index="2" name="impulse" type="Vector2"> </argument> <description> - Get the instance ID of the object the area is assigned to. + Add a positioned impulse to the applied force and torque. Both the force and the offset from the body origin are in global coordinates. </description> </method> - <method name="area_set_monitor_callback"> - <argument index="0" name="area" type="RID"> + <method name="body_attach_object_instance_ID"> + <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="receiver" type="Object"> + <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="method" type="String"> + <description> + Assign the area to a descendant of [Object], so it can exist in the node tree. + </description> + </method> + <method name="body_clear_shapes"> + <argument index="0" name="body" type="RID"> </argument> <description> - Set the function to call when any body/area enters or exits the area. This callback will be called for any object interacting with the area, and takes five parameters: - 1: AREA_BODY_ADDED or AREA_BODY_REMOVED, depending on whether the object entered or exited the area. - 2: [RID] of the object that entered/exited the area. - 3: Instance ID of the object that entered/exited the area. - 4: The shape index of the object that entered/exited the area. - 5: The shape index of the area where the object entered/exited. + Remove all shapes from a body. </description> </method> <method name="body_create"> @@ -25696,31 +25900,40 @@ This method controls whether the position between two cached points is interpola Create a physics body. The first parameter can be any value from constants BODY_MODE*, for the type of body created. Additionally, the body can be created in sleeping state to save processing time. </description> </method> - <method name="body_set_space"> + <method name="body_get_collision_mask" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="space" type="RID"> - </argument> <description> - Assign a space to the body (see [method create_space]). + Return the physics layer or layers a body can collide with. </description> </method> - <method name="body_get_space" qualifiers="const"> - <return type="RID"> + <method name="body_get_continuous_collision_detection_mode" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="body" type="RID"> </argument> <description> - Return the [RID] of the space assigned to a body. + Return the continuous collision detection mode. </description> </method> - <method name="body_set_mode"> + <method name="body_get_layer_mask" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="mode" type="int"> + <description> + Return the physics layer or layers a body belongs to. + </description> + </method> + <method name="body_get_max_contacts_reported" qualifiers="const"> + <return type="int"> + </return> + <argument index="0" name="body" type="RID"> </argument> <description> - Set the body mode, from one of the constants BODY_MODE*. + Return the maximum contacts that can be reported. See [method body_set_max_contacts_reported]. </description> </method> <method name="body_get_mode" qualifiers="const"> @@ -25732,48 +25945,53 @@ This method controls whether the position between two cached points is interpola Return the body mode. </description> </method> - <method name="body_add_shape"> + <method name="body_get_object_instance_ID" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="shape" type="RID"> - </argument> - <argument index="2" name="transform" type="Matrix32" default="1,0, 0,1, 0,0"> - </argument> <description> - Add a shape to the body, along with a transform matrix. Shapes are usually referenced by their index, so you should track which shape has a given index. + Get the instance ID of the object the area is assigned to. </description> </method> - <method name="body_set_shape"> + <method name="body_get_one_way_collision_direction" qualifiers="const"> + <return type="Vector2"> + </return> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="shape_idx" type="int"> - </argument> - <argument index="2" name="shape" type="RID"> - </argument> <description> - Substitute a given body shape by another. The old shape is selected by its index, the new one by its [RID]. + Return the direction used for one-way collision detection. </description> </method> - <method name="body_set_shape_transform"> + <method name="body_get_one_way_collision_max_depth" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="shape_idx" type="int"> + <description> + Return how far a body can go through the given one, when it allows one-way collisions. + </description> + </method> + <method name="body_get_param" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="body" type="RID"> </argument> - <argument index="2" name="transform" type="Matrix32"> + <argument index="1" name="param" type="int"> </argument> <description> - Set the transform matrix for a body shape. + Return the value of a body parameter. </description> </method> - <method name="body_set_shape_metadata"> + <method name="body_get_shape" qualifiers="const"> + <return type="RID"> + </return> <argument index="0" name="body" type="RID"> </argument> <argument index="1" name="shape_idx" type="int"> </argument> - <argument index="2" name="metadata" type="Variant"> - </argument> <description> - Set metadata of a shape within a body. This metadata is different from [method Object.set_meta], and can be retrieved on shape queries. + Return the [RID] of the nth shape of a body. </description> </method> <method name="body_get_shape_count" qualifiers="const"> @@ -25785,15 +26003,13 @@ This method controls whether the position between two cached points is interpola Return the number of shapes assigned to a body. </description> </method> - <method name="body_get_shape" qualifiers="const"> - <return type="RID"> - </return> + <method name="body_get_shape_metadata" qualifiers="const"> <argument index="0" name="body" type="RID"> </argument> <argument index="1" name="shape_idx" type="int"> </argument> <description> - Return the [RID] of the nth shape of a body. + Return the metadata of a shape of a body. </description> </method> <method name="body_get_shape_transform" qualifiers="const"> @@ -25807,69 +26023,78 @@ This method controls whether the position between two cached points is interpola Return the transform matrix of a body shape. </description> </method> - <method name="body_get_shape_metadata" qualifiers="const"> + <method name="body_get_space" qualifiers="const"> + <return type="RID"> + </return> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="shape_idx" type="int"> - </argument> <description> - Return the metadata of a shape of a body. + Return the [RID] of the space assigned to a body. </description> </method> - <method name="body_remove_shape"> + <method name="body_get_state" qualifiers="const"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="shape_idx" type="int"> + <argument index="1" name="state" type="int"> </argument> <description> - Remove a shape from a body. The shape is not deleted, so it can be reused afterwards. + Return a body state. </description> </method> - <method name="body_clear_shapes"> + <method name="body_is_omitting_force_integration" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="body" type="RID"> </argument> <description> - Remove all shapes from a body. + Return whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]). </description> </method> - <method name="body_set_shape_as_trigger"> + <method name="body_is_shape_set_as_trigger" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="body" type="RID"> </argument> <argument index="1" name="shape_idx" type="int"> </argument> - <argument index="2" name="enable" type="bool"> + <description> + Return whether a body's shape is marked as a trigger. + </description> + </method> + <method name="body_remove_collision_exception"> + <argument index="0" name="body" type="RID"> + </argument> + <argument index="1" name="excepted_body" type="RID"> </argument> <description> - Mark a body's shape as a trigger. A trigger shape cannot affect other bodies, but detects other shapes entering and exiting it. + Remove a body from the list of bodies exempt from collisions. </description> </method> - <method name="body_is_shape_set_as_trigger" qualifiers="const"> - <return type="bool"> - </return> + <method name="body_remove_shape"> <argument index="0" name="body" type="RID"> </argument> <argument index="1" name="shape_idx" type="int"> </argument> <description> - Return whether a body's shape is marked as a trigger. + Remove a shape from a body. The shape is not deleted, so it can be reused afterwards. </description> </method> - <method name="body_attach_object_instance_ID"> + <method name="body_set_axis_velocity"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="id" type="int"> + <argument index="1" name="axis_velocity" type="Vector2"> </argument> <description> - Assign the area to a descendant of [Object], so it can exist in the node tree. + Set an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior. </description> </method> - <method name="body_get_object_instance_ID" qualifiers="const"> - <return type="int"> - </return> + <method name="body_set_collision_mask"> <argument index="0" name="body" type="RID"> </argument> + <argument index="1" name="mask" type="int"> + </argument> <description> - Get the instance ID of the object the area is assigned to. + Set the physics layer or layers a body can collide with. </description> </method> <method name="body_set_continuous_collision_detection_mode"> @@ -25882,13 +26107,17 @@ This method controls whether the position between two cached points is interpola Continuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided. </description> </method> - <method name="body_get_continuous_collision_detection_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="body_set_force_integration_callback"> <argument index="0" name="body" type="RID"> </argument> + <argument index="1" name="receiver" type="Object"> + </argument> + <argument index="2" name="method" type="String"> + </argument> + <argument index="3" name="userdata" type="Variant" default="NULL"> + </argument> <description> - Return the continuous collision detection mode. + Set the function used to calculate physics for an object, if that object allows it (see [method body_set_omit_force integration]). </description> </method> <method name="body_set_layer_mask"> @@ -25900,244 +26129,240 @@ This method controls whether the position between two cached points is interpola Set the physics layer or layers a body belongs to. </description> </method> - <method name="body_get_layer_mask" qualifiers="const"> - <return type="int"> - </return> + <method name="body_set_max_contacts_reported"> <argument index="0" name="body" type="RID"> </argument> + <argument index="1" name="amount" type="int"> + </argument> <description> - Return the physics layer or layers a body belongs to. + Set the maximum contacts to report. Bodies can keep a log of the contacts with other bodies, this is enabled by setting the maximum amount of contacts reported to a number greater than 0. </description> </method> - <method name="body_set_collision_mask"> + <method name="body_set_mode"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="mask" type="int"> + <argument index="1" name="mode" type="int"> </argument> <description> - Set the physics layer or layers a body can collide with. + Set the body mode, from one of the constants BODY_MODE*. </description> </method> - <method name="body_get_collision_mask" qualifiers="const"> - <return type="int"> - </return> + <method name="body_set_omit_force_integration"> <argument index="0" name="body" type="RID"> </argument> + <argument index="1" name="enable" type="bool"> + </argument> <description> - Return the physics layer or layers a body can collide with. + Set whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]). </description> </method> - <method name="body_set_param"> + <method name="body_set_one_way_collision_direction"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="param" type="int"> - </argument> - <argument index="2" name="value" type="float"> + <argument index="1" name="normal" type="Vector2"> </argument> <description> - Set a body parameter (see BODY_PARAM* constants). + Set a direction in which bodies can go through the given one. If this value is different from (0,0), any movement within 90 degrees of this vector is considered a valid movement. Set this direction to (0,0) to disable one-way collisions. </description> </method> - <method name="body_get_param" qualifiers="const"> - <return type="float"> - </return> + <method name="body_set_one_way_collision_max_depth"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="param" type="int"> + <argument index="1" name="depth" type="float"> </argument> <description> - Return the value of a body parameter. + Set how far a body can go through the given one, if it allows one-way collisions (see [method body_set_one_way_collision_direction]). </description> </method> - <method name="body_set_state"> + <method name="body_set_param"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="state" type="int"> + <argument index="1" name="param" type="int"> </argument> - <argument index="2" name="value" type="Variant"> + <argument index="2" name="value" type="float"> </argument> <description> - Set a body state (see BODY_STATE* constants). + Set a body parameter (see BODY_PARAM* constants). </description> </method> - <method name="body_get_state" qualifiers="const"> + <method name="body_set_shape"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="state" type="int"> + <argument index="1" name="shape_idx" type="int"> + </argument> + <argument index="2" name="shape" type="RID"> </argument> <description> - Return a body state. + Substitute a given body shape by another. The old shape is selected by its index, the new one by its [RID]. </description> </method> - <method name="body_apply_impulse"> + <method name="body_set_shape_as_trigger"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="pos" type="Vector2"> + <argument index="1" name="shape_idx" type="int"> </argument> - <argument index="2" name="impulse" type="Vector2"> + <argument index="2" name="enable" type="bool"> </argument> <description> - Add a positioned impulse to the applied force and torque. Both the force and the offset from the body origin are in global coordinates. + Mark a body's shape as a trigger. A trigger shape cannot affect other bodies, but detects other shapes entering and exiting it. </description> </method> - <method name="body_add_force"> + <method name="body_set_shape_metadata"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="offset" type="Vector2"> + <argument index="1" name="shape_idx" type="int"> </argument> - <argument index="2" name="force" type="Vector2"> + <argument index="2" name="metadata" type="Variant"> </argument> <description> - Add a positioned force to the applied force and torque. As with [method body_apply_impulse], both the force and the offset from the body origin are in global coordinates. A force differs from an impulse in that, while the two are forces, the impulse clears itself after being applied. + Set metadata of a shape within a body. This metadata is different from [method Object.set_meta], and can be retrieved on shape queries. </description> </method> - <method name="body_set_axis_velocity"> + <method name="body_set_shape_transform"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="axis_velocity" type="Vector2"> - </argument> - <description> - Set an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior. - </description> - </method> - <method name="body_add_collision_exception"> - <argument index="0" name="body" type="RID"> + <argument index="1" name="shape_idx" type="int"> </argument> - <argument index="1" name="excepted_body" type="RID"> + <argument index="2" name="transform" type="Matrix32"> </argument> <description> - Add a body to the list of bodies exempt from collisions. + Set the transform matrix for a body shape. </description> </method> - <method name="body_remove_collision_exception"> + <method name="body_set_space"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="excepted_body" type="RID"> + <argument index="1" name="space" type="RID"> </argument> <description> - Remove a body from the list of bodies exempt from collisions. + Assign a space to the body (see [method create_space]). </description> </method> - <method name="body_set_max_contacts_reported"> + <method name="body_set_state"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="amount" type="int"> + <argument index="1" name="state" type="int"> + </argument> + <argument index="2" name="value" type="Variant"> </argument> <description> - Set the maximum contacts to report. Bodies can keep a log of the contacts with other bodies, this is enabled by setting the maximum amount of contacts reported to a number greater than 0. + Set a body state (see BODY_STATE* constants). </description> </method> - <method name="body_get_max_contacts_reported" qualifiers="const"> - <return type="int"> + <method name="body_test_motion"> + <return type="bool"> </return> <argument index="0" name="body" type="RID"> </argument> - <description> - Return the maximum contacts that can be reported. See [method body_set_max_contacts_reported]. - </description> - </method> - <method name="body_set_one_way_collision_direction"> - <argument index="0" name="body" type="RID"> + <argument index="1" name="motion" type="Vector2"> </argument> - <argument index="1" name="normal" type="Vector2"> + <argument index="2" name="margin" type="float" default="0.08"> + </argument> + <argument index="3" name="result" type="Physics2DTestMotionResult" default="NULL"> </argument> <description> - Set a direction in which bodies can go through the given one. If this value is different from (0,0), any movement within 90 degrees of this vector is considered a valid movement. Set this direction to (0,0) to disable one-way collisions. + Return whether a body can move in a given direction. Apart from the boolean return value, a [Physics2DTestMotionResult] can be passed to return additional information in. </description> </method> - <method name="body_get_one_way_collision_direction" qualifiers="const"> - <return type="Vector2"> + <method name="damped_spring_joint_create"> + <return type="RID"> </return> - <argument index="0" name="body" type="RID"> + <argument index="0" name="anchor_a" type="Vector2"> </argument> - <description> - Return the direction used for one-way collision detection. - </description> - </method> - <method name="body_set_one_way_collision_max_depth"> - <argument index="0" name="body" type="RID"> + <argument index="1" name="anchor_b" type="Vector2"> </argument> - <argument index="1" name="depth" type="float"> + <argument index="2" name="body_a" type="RID"> + </argument> + <argument index="3" name="body_b" type="RID" default="RID()"> </argument> <description> - Set how far a body can go through the given one, if it allows one-way collisions (see [method body_set_one_way_collision_direction]). + Create a damped spring joint between two bodies. If not specified, the second body is assumed to be the joint itself. </description> </method> - <method name="body_get_one_way_collision_max_depth" qualifiers="const"> + <method name="damped_string_joint_get_param" qualifiers="const"> <return type="float"> </return> - <argument index="0" name="body" type="RID"> + <argument index="0" name="joint" type="RID"> + </argument> + <argument index="1" name="param" type="int"> </argument> <description> - Return how far a body can go through the given one, when it allows one-way collisions. + Return the value of a damped spring joint parameter. </description> </method> - <method name="body_set_omit_force_integration"> - <argument index="0" name="body" type="RID"> + <method name="damped_string_joint_set_param"> + <argument index="0" name="joint" type="RID"> </argument> - <argument index="1" name="enable" type="bool"> + <argument index="1" name="param" type="int"> + </argument> + <argument index="2" name="value" type="float"> </argument> <description> - Set whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]). + Set a damped spring joint parameter. Parameters are explained in the DAMPED_STRING* constants. </description> </method> - <method name="body_is_omitting_force_integration" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="body" type="RID"> + <method name="free_rid"> + <argument index="0" name="rid" type="RID"> </argument> <description> - Return whether a body uses a callback function to calculate its own physics (see [method body_set_force_integration_callback]). + Destroy any of the objects created by Physics2DServer. If the [RID] passed is not one of the objects that can be created by Physics2DServer, an error will be sent to the console. </description> </method> - <method name="body_set_force_integration_callback"> - <argument index="0" name="body" type="RID"> - </argument> - <argument index="1" name="receiver" type="Object"> - </argument> - <argument index="2" name="method" type="String"> - </argument> - <argument index="3" name="userdata" type="Variant" default="NULL"> + <method name="get_process_info"> + <return type="int"> + </return> + <argument index="0" name="process_info" type="int"> </argument> <description> - Set the function used to calculate physics for an object, if that object allows it (see [method body_set_omit_force integration]). + Return information about the current state of the 2D physics engine. The states are listed under the INFO_* constants. </description> </method> - <method name="body_test_motion"> - <return type="bool"> + <method name="groove_joint_create"> + <return type="RID"> </return> - <argument index="0" name="body" type="RID"> + <argument index="0" name="groove1_a" type="Vector2"> </argument> - <argument index="1" name="motion" type="Vector2"> + <argument index="1" name="groove2_a" type="Vector2"> </argument> - <argument index="2" name="margin" type="float" default="0.08"> + <argument index="2" name="anchor_b" type="Vector2"> </argument> - <argument index="3" name="result" type="Physics2DTestMotionResult" default="NULL"> + <argument index="3" name="body_a" type="RID" default="RID()"> + </argument> + <argument index="4" name="body_b" type="RID" default="RID()"> </argument> <description> - Return whether a body can move in a given direction. Apart from the boolean return value, a [Physics2DTestMotionResult] can be passed to return additional information in. + Create a groove joint between two bodies. If not specified, the bodyies are assumed to be the joint itself. </description> </method> - <method name="joint_set_param"> + <method name="joint_get_param" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="joint" type="RID"> </argument> <argument index="1" name="param" type="int"> </argument> - <argument index="2" name="value" type="float"> - </argument> <description> - Set a joint parameter. Parameters are explained in the JOINT_PARAM* constants. + Return the value of a joint parameter. </description> </method> - <method name="joint_get_param" qualifiers="const"> - <return type="float"> + <method name="joint_get_type" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="joint" type="RID"> </argument> + <description> + Return the type of a joint (see JOINT_* constants). + </description> + </method> + <method name="joint_set_param"> + <argument index="0" name="joint" type="RID"> + </argument> <argument index="1" name="param" type="int"> </argument> + <argument index="2" name="value" type="float"> + </argument> <description> - Return the value of a joint parameter. + Set a joint parameter. Parameters are explained in the JOINT_PARAM* constants. </description> </method> <method name="pin_joint_create"> @@ -26153,154 +26378,141 @@ This method controls whether the position between two cached points is interpola Create a pin joint between two bodies. If not specified, the second body is assumed to be the joint itself. </description> </method> - <method name="groove_joint_create"> + <method name="set_active"> + <argument index="0" name="active" type="bool"> + </argument> + <description> + Activate or deactivate the 2D physics engine. + </description> + </method> + <method name="shape_create"> <return type="RID"> </return> - <argument index="0" name="groove1_a" type="Vector2"> + <argument index="0" name="type" type="int"> </argument> - <argument index="1" name="groove2_a" type="Vector2"> + <description> + Create a shape of type SHAPE_*. Does not assign it to a body or an area. To do so, you must use [method area_set_shape] or [method body_set_shape]. + </description> + </method> + <method name="shape_get_data" qualifiers="const"> + <argument index="0" name="shape" type="RID"> </argument> - <argument index="2" name="anchor_b" type="Vector2"> + <description> + Return the shape data. + </description> + </method> + <method name="shape_get_type" qualifiers="const"> + <return type="int"> + </return> + <argument index="0" name="shape" type="RID"> </argument> - <argument index="3" name="body_a" type="RID" default="RID()"> + <description> + Return the type of shape (see SHAPE_* constants). + </description> + </method> + <method name="shape_set_data"> + <argument index="0" name="shape" type="RID"> </argument> - <argument index="4" name="body_b" type="RID" default="RID()"> + <argument index="1" name="data" type="Variant"> </argument> <description> - Create a groove joint between two bodies. If not specified, the bodyies are assumed to be the joint itself. + Set the shape data that defines its shape and size. The data to be passed depends on the kind of shape created [method shape_get_type]. </description> </method> - <method name="damped_spring_joint_create"> + <method name="space_create"> <return type="RID"> </return> - <argument index="0" name="anchor_a" type="Vector2"> - </argument> - <argument index="1" name="anchor_b" type="Vector2"> - </argument> - <argument index="2" name="body_a" type="RID"> - </argument> - <argument index="3" name="body_b" type="RID" default="RID()"> - </argument> <description> - Create a damped spring joint between two bodies. If not specified, the second body is assumed to be the joint itself. + Create a space. A space is a collection of parameters for the physics engine that can be assigned to an area or a body. It can be assigned to an area with [method area_set_space], or to a body with [method body_set_space]. </description> </method> - <method name="damped_string_joint_set_param"> - <argument index="0" name="joint" type="RID"> - </argument> - <argument index="1" name="param" type="int"> - </argument> - <argument index="2" name="value" type="float"> + <method name="space_get_direct_state"> + <return type="Physics2DDirectSpaceState"> + </return> + <argument index="0" name="space" type="RID"> </argument> <description> - Set a damped spring joint parameter. Parameters are explained in the DAMPED_STRING* constants. + Return the state of a space, a [Physics2DDirectSpaceState]. This object can be used to make collision/intersection queries. </description> </method> - <method name="damped_string_joint_get_param" qualifiers="const"> + <method name="space_get_param" qualifiers="const"> <return type="float"> </return> - <argument index="0" name="joint" type="RID"> + <argument index="0" name="space" type="RID"> </argument> <argument index="1" name="param" type="int"> </argument> <description> - Return the value of a damped spring joint parameter. + Return the value of a space parameter. </description> </method> - <method name="joint_get_type" qualifiers="const"> - <return type="int"> + <method name="space_is_active" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="joint" type="RID"> + <argument index="0" name="space" type="RID"> </argument> <description> - Return the type of a joint (see JOINT_* constants). + Return whether the space is active. </description> </method> - <method name="free_rid"> - <argument index="0" name="rid" type="RID"> + <method name="space_set_active"> + <argument index="0" name="space" type="RID"> </argument> - <description> - Destroy any of the objects created by Physics2DServer. If the [RID] passed is not one of the objects that can be created by Physics2DServer, an error will be sent to the console. - </description> - </method> - <method name="set_active"> - <argument index="0" name="active" type="bool"> + <argument index="1" name="active" type="bool"> </argument> <description> - Activate or deactivate the 2D physics engine. + Mark a space as active. It will not have an effect, unless it is assigned to an area or body. </description> </method> - <method name="get_process_info"> - <return type="int"> - </return> - <argument index="0" name="process_info" type="int"> + <method name="space_set_param"> + <argument index="0" name="space" type="RID"> + </argument> + <argument index="1" name="param" type="int"> + </argument> + <argument index="2" name="value" type="float"> </argument> <description> - Return information about the current state of the 2D physics engine. The states are listed under the INFO_* constants. + Set the value for a space parameter. A list of available parameters is on the SPACE_PARAM_* constants. </description> </method> </methods> <constants> - <constant name="SPACE_PARAM_CONTACT_RECYCLE_RADIUS" value="0"> - Constant to set/get the maximum distance a pair of bodies has to move before their collision status has to be recalculated. - </constant> - <constant name="SPACE_PARAM_CONTACT_MAX_SEPARATION" value="1"> - Constant to set/get the maximum distance a shape can be from another before they are considered separated. - </constant> - <constant name="SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION" value="2"> - Constant to set/get the maximum distance a shape can penetrate another shape before it is considered a collision. - </constant> - <constant name="SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_TRESHOLD" value="3"> - Constant to set/get the linear velocity threshold. Bodies slower than this will be marked as potentially inactive. - </constant> - <constant name="SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_TRESHOLD" value="4"> - Constant to set/get the angular velocity threshold. Bodies slower than this will be marked as potentially inactive. - </constant> - <constant name="SPACE_PARAM_BODY_TIME_TO_SLEEP" value="5"> - Constant to set/get the maximum time of activity. A body marked as potentially inactive for both linear and angular velocity will be put to sleep after this time. - </constant> - <constant name="SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS" value="6"> - Constant to set/get the default solver bias for all physics constraints. A solver bias is a factor controlling how much two objects "rebound", after violating a constraint, to avoid leaving them in that state because of numerical imprecision. - </constant> - <constant name="SHAPE_LINE" value="0"> - This is the constant for creating line shapes. A line shape is an infinite line with an origin point, and a normal. Thus, it can be used for front/behind checks. - </constant> - <constant name="SHAPE_SEGMENT" value="2"> - This is the constant for creating segment shapes. A segment shape is a line from a point A to a point B. It can be checked for intersections. - </constant> - <constant name="SHAPE_CIRCLE" value="3"> - This is the constant for creating circle shapes. A circle shape only has a radius. It can be used for intersections and inside/outside checks. - </constant> - <constant name="SHAPE_RECTANGLE" value="4"> - This is the constant for creating rectangle shapes. A rectangle shape is defined by a width and a height. It can be used for intersections and inside/outside checks. - </constant> - <constant name="SHAPE_CAPSULE" value="5"> - This is the constant for creating capsule shapes. A capsule shape is defined by a radius and a length. It can be used for intersections and inside/outside checks. - </constant> - <constant name="SHAPE_CONVEX_POLYGON" value="6"> - This is the constant for creating convex polygon shapes. A polygon is defined by a list of points. It can be used for intersections and inside/outside checks. Unlike the method [method CollisionPolygon2D.set_polygon], polygons modified with [method shape_set_data] do not verify that the points supplied form, in fact, a convex polygon. - </constant> - <constant name="SHAPE_CONCAVE_POLYGON" value="7"> - This is the constant for creating concave polygon shapes. A polygon is defined by a list of points. It can be used for intersections checks, but not for inside/outside checks. - </constant> - <constant name="SHAPE_CUSTOM" value="8"> - This constant is used internally by the engine. Any attempt to create this kind of shape results in an error. + <constant name="AREA_BODY_ADDED" value="0"> + The value of the first parameter and area callback function receives, when an object enters one of its shapes. </constant> <constant name="AREA_PARAM_GRAVITY" value="0"> Constant to set/get gravity strength in an area. </constant> + <constant name="AREA_SPACE_OVERRIDE_DISABLED" value="0"> + This area does not affect gravity/damp. These are generally areas that exist only to detect collisions, and objects entering or exiting them. + </constant> + <constant name="AREA_BODY_REMOVED" value="1"> + The value of the first parameter and area callback function receives, when an object exits one of its shapes. + </constant> <constant name="AREA_PARAM_GRAVITY_VECTOR" value="1"> Constant to set/get gravity vector/center in an area. </constant> + <constant name="AREA_SPACE_OVERRIDE_COMBINE" value="1"> + This area adds its gravity/damp values to whatever has been calculated so far. This way, many overlapping areas can combine their physics to make interesting effects. + </constant> <constant name="AREA_PARAM_GRAVITY_IS_POINT" value="2"> Constant to set/get whether the gravity vector of an area is a direction, or a center point. </constant> + <constant name="AREA_SPACE_OVERRIDE_COMBINE_REPLACE" value="2"> + This area adds its gravity/damp values to whatever has been calculated so far. Then stops taking into account the rest of the areas, even the default one. + </constant> <constant name="AREA_PARAM_GRAVITY_DISTANCE_SCALE" value="3"> Constant to set/get the falloff factor for point gravity of an area. The greater this value is, the faster the strength of gravity decreases with the square of distance. </constant> + <constant name="AREA_SPACE_OVERRIDE_REPLACE" value="3"> + This area replaces any gravity/damp, even the default one, and stops taking into account the rest of the areas. + </constant> <constant name="AREA_PARAM_GRAVITY_POINT_ATTENUATION" value="4"> This constant was used to set/get the falloff factor for point gravity. It has been superseded by AREA_PARAM_GRAVITY_DISTANCE_SCALE. </constant> + <constant name="AREA_SPACE_OVERRIDE_REPLACE_COMBINE" value="4"> + This area replaces any gravity/damp calculated so far, but keeps calculating the rest of the areas, down to the default one. + </constant> <constant name="AREA_PARAM_LINEAR_DAMP" value="5"> Constant to set/get the linear dampening factor of an area. </constant> @@ -26310,48 +26522,48 @@ This method controls whether the position between two cached points is interpola <constant name="AREA_PARAM_PRIORITY" value="7"> Constant to set/get the priority (order of processing) of an area. </constant> - <constant name="AREA_SPACE_OVERRIDE_DISABLED" value="0"> - This area does not affect gravity/damp. These are generally areas that exist only to detect collisions, and objects entering or exiting them. - </constant> - <constant name="AREA_SPACE_OVERRIDE_COMBINE" value="1"> - This area adds its gravity/damp values to whatever has been calculated so far. This way, many overlapping areas can combine their physics to make interesting effects. - </constant> - <constant name="AREA_SPACE_OVERRIDE_COMBINE_REPLACE" value="2"> - This area adds its gravity/damp values to whatever has been calculated so far. Then stops taking into account the rest of the areas, even the default one. - </constant> - <constant name="AREA_SPACE_OVERRIDE_REPLACE" value="3"> - This area replaces any gravity/damp, even the default one, and stops taking into account the rest of the areas. - </constant> - <constant name="AREA_SPACE_OVERRIDE_REPLACE_COMBINE" value="4"> - This area replaces any gravity/damp calculated so far, but keeps calculating the rest of the areas, down to the default one. - </constant> <constant name="BODY_MODE_STATIC" value="0"> Constant for static bodies. </constant> - <constant name="BODY_MODE_KINEMATIC" value="1"> - Constant for kinematic bodies. - </constant> - <constant name="BODY_MODE_RIGID" value="2"> - Constant for rigid bodies. - </constant> - <constant name="BODY_MODE_CHARACTER" value="3"> - Constant for rigid bodies in character mode. In this mode, a body can not rotate, and only its linear velocity is affected by physics. - </constant> <constant name="BODY_PARAM_BOUNCE" value="0"> Constant to set/get a body's bounce factor. </constant> + <constant name="BODY_STATE_TRANSFORM" value="0"> + Constant to set/get the current transform matrix of the body. + </constant> + <constant name="BODY_MODE_KINEMATIC" value="1"> + Constant for kinematic bodies. + </constant> <constant name="BODY_PARAM_FRICTION" value="1"> Constant to set/get a body's friction. </constant> + <constant name="BODY_STATE_LINEAR_VELOCITY" value="1"> + Constant to set/get the current linear velocity of the body. + </constant> + <constant name="BODY_MODE_RIGID" value="2"> + Constant for rigid bodies. + </constant> <constant name="BODY_PARAM_MASS" value="2"> Constant to set/get a body's mass. </constant> + <constant name="BODY_STATE_ANGULAR_VELOCITY" value="2"> + Constant to set/get the current angular velocity of the body. + </constant> + <constant name="BODY_MODE_CHARACTER" value="3"> + Constant for rigid bodies in character mode. In this mode, a body can not rotate, and only its linear velocity is affected by physics. + </constant> <constant name="BODY_PARAM_INERTIA" value="3"> Constant to set/get a body's inertia. </constant> + <constant name="BODY_STATE_SLEEPING" value="3"> + Constant to sleep/wake up a body, or to get whether it is sleeping. + </constant> <constant name="BODY_PARAM_GRAVITY_SCALE" value="4"> Constant to set/get a body's gravity multiplier. </constant> + <constant name="BODY_STATE_CAN_SLEEP" value="4"> + Constant to set/get whether the body can sleep. + </constant> <constant name="BODY_PARAM_LINEAR_DAMP" value="5"> Constant to set/get a body's linear dampening factor. </constant> @@ -26361,20 +26573,32 @@ This method controls whether the position between two cached points is interpola <constant name="BODY_PARAM_MAX" value="7"> This is the last ID for body parameters. Any attempt to set this property is ignored. Any attempt to get it returns 0. </constant> - <constant name="BODY_STATE_TRANSFORM" value="0"> - Constant to set/get the current transform matrix of the body. + <constant name="CCD_MODE_DISABLED" value="0"> + Disables continuous collision detection. This is the fastest way to detect body collisions, but can miss small, fast-moving objects. </constant> - <constant name="BODY_STATE_LINEAR_VELOCITY" value="1"> - Constant to set/get the current linear velocity of the body. + <constant name="CCD_MODE_CAST_RAY" value="1"> + Enables continuous collision detection by raycasting. It is faster than shapecasting, but less precise. </constant> - <constant name="BODY_STATE_ANGULAR_VELOCITY" value="2"> - Constant to set/get the current angular velocity of the body. + <constant name="CCD_MODE_CAST_SHAPE" value="2"> + Enables continuous collision detection by shapecasting. It is the slowest CCD method, and the most precise. </constant> - <constant name="BODY_STATE_SLEEPING" value="3"> - Constant to sleep/wake up a body, or to get whether it is sleeping. + <constant name="DAMPED_STRING_REST_LENGTH" value="0"> + Set the resting length of the spring joint. The joint will always try to go to back this length when pulled apart. </constant> - <constant name="BODY_STATE_CAN_SLEEP" value="4"> - Constant to set/get whether the body can sleep. + <constant name="DAMPED_STRING_STIFFNESS" value="1"> + Set the stiffness of the spring joint. The joint applies a force equal to the stiffness times the distance from its resting length. + </constant> + <constant name="DAMPED_STRING_DAMPING" value="2"> + Set the damping ratio of the spring joint. A value of 0 indicates an undamped spring, while 1 causes the system to reach equilibrium as fast as possible (critical damping). + </constant> + <constant name="INFO_ACTIVE_OBJECTS" value="0"> + Constant to get the number of objects that are not sleeping. + </constant> + <constant name="INFO_COLLISION_PAIRS" value="1"> + Constant to get the number of possible collisions. + </constant> + <constant name="INFO_ISLAND_COUNT" value="2"> + Constant to get the number of space regions where a collision could occur. </constant> <constant name="JOINT_PIN" value="0"> Constant to create pin joints. @@ -26385,38 +26609,50 @@ This method controls whether the position between two cached points is interpola <constant name="JOINT_DAMPED_SPRING" value="2"> Constant to create damped spring joints. </constant> - <constant name="DAMPED_STRING_REST_LENGTH" value="0"> - Set the resting length of the spring joint. The joint will always try to go to back this length when pulled apart. + <constant name="SHAPE_LINE" value="0"> + This is the constant for creating line shapes. A line shape is an infinite line with an origin point, and a normal. Thus, it can be used for front/behind checks. </constant> - <constant name="DAMPED_STRING_STIFFNESS" value="1"> - Set the stiffness of the spring joint. The joint applies a force equal to the stiffness times the distance from its resting length. + <constant name="SHAPE_SEGMENT" value="2"> + This is the constant for creating segment shapes. A segment shape is a line from a point A to a point B. It can be checked for intersections. </constant> - <constant name="DAMPED_STRING_DAMPING" value="2"> - Set the damping ratio of the spring joint. A value of 0 indicates an undamped spring, while 1 causes the system to reach equilibrium as fast as possible (critical damping). + <constant name="SHAPE_CIRCLE" value="3"> + This is the constant for creating circle shapes. A circle shape only has a radius. It can be used for intersections and inside/outside checks. </constant> - <constant name="CCD_MODE_DISABLED" value="0"> - Disables continuous collision detection. This is the fastest way to detect body collisions, but can miss small, fast-moving objects. + <constant name="SHAPE_RECTANGLE" value="4"> + This is the constant for creating rectangle shapes. A rectangle shape is defined by a width and a height. It can be used for intersections and inside/outside checks. </constant> - <constant name="CCD_MODE_CAST_RAY" value="1"> - Enables continuous collision detection by raycasting. It is faster than shapecasting, but less precise. + <constant name="SHAPE_CAPSULE" value="5"> + This is the constant for creating capsule shapes. A capsule shape is defined by a radius and a length. It can be used for intersections and inside/outside checks. </constant> - <constant name="CCD_MODE_CAST_SHAPE" value="2"> - Enables continuous collision detection by shapecasting. It is the slowest CCD method, and the most precise. + <constant name="SHAPE_CONVEX_POLYGON" value="6"> + This is the constant for creating convex polygon shapes. A polygon is defined by a list of points. It can be used for intersections and inside/outside checks. Unlike the method [method CollisionPolygon2D.set_polygon], polygons modified with [method shape_set_data] do not verify that the points supplied form, in fact, a convex polygon. </constant> - <constant name="AREA_BODY_ADDED" value="0"> - The value of the first parameter and area callback function receives, when an object enters one of its shapes. + <constant name="SHAPE_CONCAVE_POLYGON" value="7"> + This is the constant for creating concave polygon shapes. A polygon is defined by a list of points. It can be used for intersections checks, but not for inside/outside checks. </constant> - <constant name="AREA_BODY_REMOVED" value="1"> - The value of the first parameter and area callback function receives, when an object exits one of its shapes. + <constant name="SHAPE_CUSTOM" value="8"> + This constant is used internally by the engine. Any attempt to create this kind of shape results in an error. </constant> - <constant name="INFO_ACTIVE_OBJECTS" value="0"> - Constant to get the number of objects that are not sleeping. + <constant name="SPACE_PARAM_CONTACT_RECYCLE_RADIUS" value="0"> + Constant to set/get the maximum distance a pair of bodies has to move before their collision status has to be recalculated. </constant> - <constant name="INFO_COLLISION_PAIRS" value="1"> - Constant to get the number of possible collisions. + <constant name="SPACE_PARAM_CONTACT_MAX_SEPARATION" value="1"> + Constant to set/get the maximum distance a shape can be from another before they are considered separated. </constant> - <constant name="INFO_ISLAND_COUNT" value="2"> - Constant to get the number of space regions where a collision could occur. + <constant name="SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION" value="2"> + Constant to set/get the maximum distance a shape can penetrate another shape before it is considered a collision. + </constant> + <constant name="SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_TRESHOLD" value="3"> + Constant to set/get the linear velocity threshold. Bodies slower than this will be marked as potentially inactive. + </constant> + <constant name="SPACE_PARAM_BODY_ANGULAR_VELOCITY_SLEEP_TRESHOLD" value="4"> + Constant to set/get the angular velocity threshold. Bodies slower than this will be marked as potentially inactive. + </constant> + <constant name="SPACE_PARAM_BODY_TIME_TO_SLEEP" value="5"> + Constant to set/get the maximum time of activity. A body marked as potentially inactive for both linear and angular velocity will be put to sleep after this time. + </constant> + <constant name="SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS" value="6"> + Constant to set/get the default solver bias for all physics constraints. A solver bias is a factor controlling how much two objects "rebound", after violating a constraint, to avoid leaving them in that state because of numerical imprecision. </constant> </constants> </class> @@ -26440,67 +26676,60 @@ This method controls whether the position between two cached points is interpola This class contains the shape and other parameters for intersection/collision queries. </description> <methods> - <method name="set_shape"> - <argument index="0" name="shape" type="Shape2D"> - </argument> + <method name="get_exclude" qualifiers="const"> + <return type="Array"> + </return> <description> - Set the [Shape2D] that will be used for collision/intersection queries. + Return the list of objects, or object [RID]s, that will be excluded from collisions. </description> </method> - <method name="set_shape_rid"> - <argument index="0" name="shape" type="RID"> - </argument> + <method name="get_layer_mask" qualifiers="const"> + <return type="int"> + </return> <description> - Set the [RID] of the shape to be used in queries. + Return the physics layer(s) the shape belongs to. </description> </method> - <method name="get_shape_rid" qualifiers="const"> - <return type="RID"> + <method name="get_margin" qualifiers="const"> + <return type="float"> </return> <description> - Return the [RID] of the shape queried. + Return the collision margin for the shape. </description> </method> - <method name="set_transform"> - <argument index="0" name="transform" type="Matrix32"> - </argument> + <method name="get_motion" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Set the transormation matrix of the shape. This is necessary to set its position/rotation/scale. + Return the current movement speed of the shape. </description> </method> - <method name="get_transform" qualifiers="const"> - <return type="Matrix32"> + <method name="get_object_type_mask" qualifiers="const"> + <return type="int"> </return> <description> - Return the transform matrix of the shape queried. + Return the type of object the shape belongs to. </description> </method> - <method name="set_motion"> - <argument index="0" name="motion" type="Vector2"> - </argument> + <method name="get_shape_rid" qualifiers="const"> + <return type="RID"> + </return> <description> - Set the current movement speed of the shape. + Return the [RID] of the shape queried. </description> </method> - <method name="get_motion" qualifiers="const"> - <return type="Vector2"> + <method name="get_transform" qualifiers="const"> + <return type="Matrix32"> </return> <description> - Return the current movement speed of the shape. + Return the transform matrix of the shape queried. </description> </method> - <method name="set_margin"> - <argument index="0" name="margin" type="float"> + <method name="set_exclude"> + <argument index="0" name="exclude" type="Array"> </argument> <description> - Set the collision margin for the shape. A collision margin is an amount (in pixels) that the shape will grow when computing collisions, to account for numerical imprecision. - </description> - </method> - <method name="get_margin" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the collision margin for the shape. + Set the list of objects, or object [RID]s, that will be excluded from collisions. </description> </method> <method name="set_layer_mask"> @@ -26510,11 +26739,18 @@ This method controls whether the position between two cached points is interpola Set the physics layer(s) the shape belongs to. </description> </method> - <method name="get_layer_mask" qualifiers="const"> - <return type="int"> - </return> + <method name="set_margin"> + <argument index="0" name="margin" type="float"> + </argument> <description> - Return the physics layer(s) the shape belongs to. + Set the collision margin for the shape. A collision margin is an amount (in pixels) that the shape will grow when computing collisions, to account for numerical imprecision. + </description> + </method> + <method name="set_motion"> + <argument index="0" name="motion" type="Vector2"> + </argument> + <description> + Set the current movement speed of the shape. </description> </method> <method name="set_object_type_mask"> @@ -26524,25 +26760,25 @@ This method controls whether the position between two cached points is interpola Set the type of object the shape belongs to (see Physics2DDirectSpaceState.TYPE_MASK_*). </description> </method> - <method name="get_object_type_mask" qualifiers="const"> - <return type="int"> - </return> + <method name="set_shape"> + <argument index="0" name="shape" type="Shape2D"> + </argument> <description> - Return the type of object the shape belongs to. + Set the [Shape2D] that will be used for collision/intersection queries. </description> </method> - <method name="set_exclude"> - <argument index="0" name="exclude" type="Array"> + <method name="set_shape_rid"> + <argument index="0" name="shape" type="RID"> </argument> <description> - Set the list of objects, or object [RID]s, that will be excluded from collisions. + Set the [RID] of the shape to be used in queries. </description> </method> - <method name="get_exclude" qualifiers="const"> - <return type="Array"> - </return> + <method name="set_transform"> + <argument index="0" name="transform" type="Matrix32"> + </argument> <description> - Return the list of objects, or object [RID]s, that will be excluded from collisions. + Set the transormation matrix of the shape. This is necessary to set its position/rotation/scale. </description> </method> </methods> @@ -26561,8 +26797,8 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_result_rid" qualifiers="const"> - <return type="RID"> + <method name="get_result_object" qualifiers="const"> + <return type="Object"> </return> <argument index="0" name="idx" type="int"> </argument> @@ -26577,16 +26813,16 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_result_object" qualifiers="const"> - <return type="Object"> + <method name="get_result_object_shape" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="get_result_object_shape" qualifiers="const"> - <return type="int"> + <method name="get_result_rid" qualifiers="const"> + <return type="RID"> </return> <argument index="0" name="idx" type="int"> </argument> @@ -26603,26 +26839,26 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="get_motion" qualifiers="const"> - <return type="Vector2"> + <method name="get_collider" qualifiers="const"> + <return type="Object"> </return> <description> </description> </method> - <method name="get_motion_remainder" qualifiers="const"> - <return type="Vector2"> + <method name="get_collider_id" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="get_collision_point" qualifiers="const"> - <return type="Vector2"> + <method name="get_collider_rid" qualifiers="const"> + <return type="RID"> </return> <description> </description> </method> - <method name="get_collision_normal" qualifiers="const"> - <return type="Vector2"> + <method name="get_collider_shape" qualifiers="const"> + <return type="int"> </return> <description> </description> @@ -26633,26 +26869,26 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_collider_id" qualifiers="const"> - <return type="int"> + <method name="get_collision_normal" qualifiers="const"> + <return type="Vector2"> </return> <description> </description> </method> - <method name="get_collider_rid" qualifiers="const"> - <return type="RID"> + <method name="get_collision_point" qualifiers="const"> + <return type="Vector2"> </return> <description> </description> </method> - <method name="get_collider" qualifiers="const"> - <return type="Object"> + <method name="get_motion" qualifiers="const"> + <return type="Vector2"> </return> <description> </description> </method> - <method name="get_collider_shape" qualifiers="const"> - <return type="int"> + <method name="get_motion_remainder" qualifiers="const"> + <return type="Vector2"> </return> <description> </description> @@ -26669,70 +26905,70 @@ This method controls whether the position between two cached points is interpola PhysicsBody is an abstract base class for implementing a physics body. All PhysicsBody types inherit from it. </description> <methods> - <method name="set_layer_mask"> - <argument index="0" name="mask" type="int"> + <method name="add_collision_exception_with"> + <argument index="0" name="body" type="PhysicsBody"> </argument> <description> </description> </method> - <method name="get_layer_mask" qualifiers="const"> + <method name="get_collision_mask" qualifiers="const"> <return type="int"> </return> <description> </description> </method> - <method name="set_collision_mask"> - <argument index="0" name="mask" type="int"> + <method name="get_collision_mask_bit" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="bit" type="int"> </argument> <description> </description> </method> - <method name="get_collision_mask" qualifiers="const"> + <method name="get_layer_mask" qualifiers="const"> <return type="int"> </return> <description> </description> </method> - <method name="set_collision_mask_bit"> + <method name="get_layer_mask_bit" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="bit" type="int"> </argument> - <argument index="1" name="value" type="bool"> - </argument> <description> </description> </method> - <method name="get_collision_mask_bit" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="bit" type="int"> + <method name="remove_collision_exception_with"> + <argument index="0" name="body" type="PhysicsBody"> </argument> <description> </description> </method> - <method name="set_layer_mask_bit"> - <argument index="0" name="bit" type="int"> - </argument> - <argument index="1" name="value" type="bool"> + <method name="set_collision_mask"> + <argument index="0" name="mask" type="int"> </argument> <description> </description> </method> - <method name="get_layer_mask_bit" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_collision_mask_bit"> <argument index="0" name="bit" type="int"> </argument> + <argument index="1" name="value" type="bool"> + </argument> <description> </description> </method> - <method name="add_collision_exception_with"> - <argument index="0" name="body" type="PhysicsBody"> + <method name="set_layer_mask"> + <argument index="0" name="mask" type="int"> </argument> <description> </description> </method> - <method name="remove_collision_exception_with"> - <argument index="0" name="body" type="PhysicsBody"> + <method name="set_layer_mask_bit"> + <argument index="0" name="bit" type="int"> + </argument> + <argument index="1" name="value" type="bool"> </argument> <description> </description> @@ -26749,27 +26985,11 @@ This method controls whether the position between two cached points is interpola PhysicsBody2D is an abstract base class for implementing a physics body. All *Body2D types inherit from it. </description> <methods> - <method name="set_layer_mask"> - <argument index="0" name="mask" type="int"> - </argument> - <description> - Set the physics layers this area is in. - Collidable objects can exist in any of 32 different layers. These layers are not visual, but more of a tagging system instead. A collidable can use these layers/tags to select with which objects it can collide, using [method set_collision_mask]. - A contact is detected if object A is in any of the layers that object B scans, or object B is in any layer scanned by object A. - </description> - </method> - <method name="get_layer_mask" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the physics layer this area is in. - </description> - </method> - <method name="set_collision_mask"> - <argument index="0" name="mask" type="int"> + <method name="add_collision_exception_with"> + <argument index="0" name="body" type="PhysicsBody2D"> </argument> <description> - Set the physics layers this area can scan for collisions. + Adds a body to the collision exception list. This list contains bodies that this body will not collide with. </description> </method> <method name="get_collision_mask" qualifiers="const"> @@ -26779,15 +26999,6 @@ This method controls whether the position between two cached points is interpola Return the physics layers this area can scan for collisions. </description> </method> - <method name="set_collision_mask_bit"> - <argument index="0" name="bit" type="int"> - </argument> - <argument index="1" name="value" type="bool"> - </argument> - <description> - Set/clear individual bits on the collision mask. This makes selecting the areas scanned easier. - </description> - </method> <method name="get_collision_mask_bit" qualifiers="const"> <return type="bool"> </return> @@ -26797,13 +27008,11 @@ This method controls whether the position between two cached points is interpola Return an individual bit on the collision mask. </description> </method> - <method name="set_layer_mask_bit"> - <argument index="0" name="bit" type="int"> - </argument> - <argument index="1" name="value" type="bool"> - </argument> + <method name="get_layer_mask" qualifiers="const"> + <return type="int"> + </return> <description> - Set/clear individual bits on the layer mask. This makes getting a body in/out of only one layer easier. + Return the physics layer this area is in. </description> </method> <method name="get_layer_mask_bit" qualifiers="const"> @@ -26815,13 +27024,6 @@ This method controls whether the position between two cached points is interpola Return an individual bit on the collision mask. </description> </method> - <method name="set_one_way_collision_direction"> - <argument index="0" name="dir" type="Vector2"> - </argument> - <description> - Set a direction in which bodies can go through this one. If this value is different from (0,0), any movement within 90 degrees of this vector is considered a valid movement. Set this direction to (0,0) to disable one-way collisions. - </description> - </method> <method name="get_one_way_collision_direction" qualifiers="const"> <return type="Vector2"> </return> @@ -26829,13 +27031,6 @@ This method controls whether the position between two cached points is interpola Return the direction used for one-way collision detection. </description> </method> - <method name="set_one_way_collision_max_depth"> - <argument index="0" name="depth" type="float"> - </argument> - <description> - Set how far a body can go through this one, when it allows one-way collisions (see [method set_one_way_collision_direction]). - </description> - </method> <method name="get_one_way_collision_max_depth" qualifiers="const"> <return type="float"> </return> @@ -26843,13 +27038,6 @@ This method controls whether the position between two cached points is interpola Return how far a body can go through this one, when it allows one-way collisions. </description> </method> - <method name="add_collision_exception_with"> - <argument index="0" name="body" type="PhysicsBody2D"> - </argument> - <description> - Adds a body to the collision exception list. This list contains bodies that this body will not collide with. - </description> - </method> <method name="remove_collision_exception_with"> <argument index="0" name="body" type="PhysicsBody2D"> </argument> @@ -26857,60 +27045,76 @@ This method controls whether the position between two cached points is interpola Removes a body from the collision exception list. </description> </method> - </methods> - <constants> - </constants> -</class> -<class name="PhysicsDirectBodyState" inherits="Object" category="Core"> - <brief_description> - </brief_description> - <description> - </description> - <methods> - <method name="get_total_gravity" qualifiers="const"> - <return type="Vector3"> - </return> + <method name="set_collision_mask"> + <argument index="0" name="mask" type="int"> + </argument> <description> + Set the physics layers this area can scan for collisions. </description> </method> - <method name="get_total_linear_damp" qualifiers="const"> - <return type="float"> - </return> + <method name="set_collision_mask_bit"> + <argument index="0" name="bit" type="int"> + </argument> + <argument index="1" name="value" type="bool"> + </argument> <description> + Set/clear individual bits on the collision mask. This makes selecting the areas scanned easier. </description> </method> - <method name="get_total_angular_damp" qualifiers="const"> - <return type="float"> - </return> + <method name="set_layer_mask"> + <argument index="0" name="mask" type="int"> + </argument> <description> + Set the physics layers this area is in. + Collidable objects can exist in any of 32 different layers. These layers are not visual, but more of a tagging system instead. A collidable can use these layers/tags to select with which objects it can collide, using [method set_collision_mask]. + A contact is detected if object A is in any of the layers that object B scans, or object B is in any layer scanned by object A. </description> </method> - <method name="get_inverse_mass" qualifiers="const"> - <return type="float"> - </return> + <method name="set_layer_mask_bit"> + <argument index="0" name="bit" type="int"> + </argument> + <argument index="1" name="value" type="bool"> + </argument> <description> + Set/clear individual bits on the layer mask. This makes getting a body in/out of only one layer easier. </description> </method> - <method name="get_inverse_inertia" qualifiers="const"> - <return type="Vector3"> - </return> + <method name="set_one_way_collision_direction"> + <argument index="0" name="dir" type="Vector2"> + </argument> <description> + Set a direction in which bodies can go through this one. If this value is different from (0,0), any movement within 90 degrees of this vector is considered a valid movement. Set this direction to (0,0) to disable one-way collisions. </description> </method> - <method name="set_linear_velocity"> - <argument index="0" name="velocity" type="Vector3"> + <method name="set_one_way_collision_max_depth"> + <argument index="0" name="depth" type="float"> </argument> <description> + Set how far a body can go through this one, when it allows one-way collisions (see [method set_one_way_collision_direction]). </description> </method> - <method name="get_linear_velocity" qualifiers="const"> - <return type="Vector3"> - </return> + </methods> + <constants> + </constants> +</class> +<class name="PhysicsDirectBodyState" inherits="Object" category="Core"> + <brief_description> + </brief_description> + <description> + </description> + <methods> + <method name="add_force"> + <argument index="0" name="force" type="Vector3"> + </argument> + <argument index="1" name="pos" type="Vector3"> + </argument> <description> </description> </method> - <method name="set_angular_velocity"> - <argument index="0" name="velocity" type="Vector3"> + <method name="apply_impulse"> + <argument index="0" name="pos" type="Vector3"> + </argument> + <argument index="1" name="j" type="Vector3"> </argument> <description> </description> @@ -26921,43 +27125,51 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_transform"> - <argument index="0" name="transform" type="Transform"> + <method name="get_contact_collider" qualifiers="const"> + <return type="RID"> + </return> + <argument index="0" name="contact_idx" type="int"> </argument> <description> </description> </method> - <method name="get_transform" qualifiers="const"> - <return type="Transform"> + <method name="get_contact_collider_id" qualifiers="const"> + <return type="int"> </return> + <argument index="0" name="contact_idx" type="int"> + </argument> <description> </description> </method> - <method name="add_force"> - <argument index="0" name="force" type="Vector3"> - </argument> - <argument index="1" name="pos" type="Vector3"> + <method name="get_contact_collider_object" qualifiers="const"> + <return type="Object"> + </return> + <argument index="0" name="contact_idx" type="int"> </argument> <description> </description> </method> - <method name="apply_impulse"> - <argument index="0" name="pos" type="Vector3"> - </argument> - <argument index="1" name="j" type="Vector3"> + <method name="get_contact_collider_pos" qualifiers="const"> + <return type="Vector3"> + </return> + <argument index="0" name="contact_idx" type="int"> </argument> <description> </description> </method> - <method name="set_sleep_state"> - <argument index="0" name="enabled" type="bool"> + <method name="get_contact_collider_shape" qualifiers="const"> + <return type="int"> + </return> + <argument index="0" name="contact_idx" type="int"> </argument> <description> </description> </method> - <method name="is_sleeping" qualifiers="const"> - <return type="bool"> + <method name="get_contact_collider_velocity_at_pos" qualifiers="const"> + <return type="Vector3"> </return> + <argument index="0" name="contact_idx" type="int"> + </argument> <description> </description> </method> @@ -26967,7 +27179,7 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_contact_local_pos" qualifiers="const"> + <method name="get_contact_local_normal" qualifiers="const"> <return type="Vector3"> </return> <argument index="0" name="contact_idx" type="int"> @@ -26975,7 +27187,7 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_contact_local_normal" qualifiers="const"> + <method name="get_contact_local_pos" qualifiers="const"> <return type="Vector3"> </return> <argument index="0" name="contact_idx" type="int"> @@ -26991,70 +27203,94 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_contact_collider" qualifiers="const"> - <return type="RID"> + <method name="get_inverse_inertia" qualifiers="const"> + <return type="Vector3"> </return> - <argument index="0" name="contact_idx" type="int"> - </argument> <description> </description> </method> - <method name="get_contact_collider_pos" qualifiers="const"> + <method name="get_inverse_mass" qualifiers="const"> + <return type="float"> + </return> + <description> + </description> + </method> + <method name="get_linear_velocity" qualifiers="const"> <return type="Vector3"> </return> - <argument index="0" name="contact_idx" type="int"> - </argument> <description> </description> </method> - <method name="get_contact_collider_id" qualifiers="const"> - <return type="int"> + <method name="get_space_state"> + <return type="PhysicsDirectSpaceState"> </return> - <argument index="0" name="contact_idx" type="int"> - </argument> <description> </description> </method> - <method name="get_contact_collider_object" qualifiers="const"> - <return type="Object"> + <method name="get_step" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="contact_idx" type="int"> - </argument> <description> </description> </method> - <method name="get_contact_collider_shape" qualifiers="const"> - <return type="int"> + <method name="get_total_angular_damp" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="contact_idx" type="int"> - </argument> <description> </description> </method> - <method name="get_contact_collider_velocity_at_pos" qualifiers="const"> + <method name="get_total_gravity" qualifiers="const"> <return type="Vector3"> </return> - <argument index="0" name="contact_idx" type="int"> - </argument> <description> </description> </method> - <method name="get_step" qualifiers="const"> + <method name="get_total_linear_damp" qualifiers="const"> <return type="float"> </return> <description> </description> </method> + <method name="get_transform" qualifiers="const"> + <return type="Transform"> + </return> + <description> + </description> + </method> <method name="integrate_forces"> <description> </description> </method> - <method name="get_space_state"> - <return type="PhysicsDirectSpaceState"> + <method name="is_sleeping" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> + <method name="set_angular_velocity"> + <argument index="0" name="velocity" type="Vector3"> + </argument> + <description> + </description> + </method> + <method name="set_linear_velocity"> + <argument index="0" name="velocity" type="Vector3"> + </argument> + <description> + </description> + </method> + <method name="set_sleep_state"> + <argument index="0" name="enabled" type="bool"> + </argument> + <description> + </description> + </method> + <method name="set_transform"> + <argument index="0" name="transform" type="Transform"> + </argument> + <description> + </description> + </method> </methods> <constants> </constants> @@ -27075,23 +27311,17 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="intersect_ray"> - <return type="Dictionary"> + <method name="cast_motion"> + <return type="Array"> </return> - <argument index="0" name="from" type="Vector3"> - </argument> - <argument index="1" name="to" type="Vector3"> - </argument> - <argument index="2" name="exclude" type="Array" default="Array()"> - </argument> - <argument index="3" name="layer_mask" type="int" default="2147483647"> + <argument index="0" name="shape" type="PhysicsShapeQueryParameters"> </argument> - <argument index="4" name="type_mask" type="int" default="15"> + <argument index="1" name="motion" type="Vector3"> </argument> <description> </description> </method> - <method name="intersect_shape"> + <method name="collide_shape"> <return type="Array"> </return> <argument index="0" name="shape" type="PhysicsShapeQueryParameters"> @@ -27101,31 +27331,37 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="cast_motion"> - <return type="Array"> + <method name="get_rest_info"> + <return type="Dictionary"> </return> <argument index="0" name="shape" type="PhysicsShapeQueryParameters"> </argument> - <argument index="1" name="motion" type="Vector3"> - </argument> <description> </description> </method> - <method name="collide_shape"> - <return type="Array"> + <method name="intersect_ray"> + <return type="Dictionary"> </return> - <argument index="0" name="shape" type="PhysicsShapeQueryParameters"> + <argument index="0" name="from" type="Vector3"> </argument> - <argument index="1" name="max_results" type="int" default="32"> + <argument index="1" name="to" type="Vector3"> + </argument> + <argument index="2" name="exclude" type="Array" default="Array()"> + </argument> + <argument index="3" name="layer_mask" type="int" default="2147483647"> + </argument> + <argument index="4" name="type_mask" type="int" default="15"> </argument> <description> </description> </method> - <method name="get_rest_info"> - <return type="Dictionary"> + <method name="intersect_shape"> + <return type="Array"> </return> <argument index="0" name="shape" type="PhysicsShapeQueryParameters"> </argument> + <argument index="1" name="max_results" type="int" default="32"> + </argument> <description> </description> </method> @@ -27133,16 +27369,16 @@ This method controls whether the position between two cached points is interpola <constants> <constant name="TYPE_MASK_STATIC_BODY" value="1"> </constant> + <constant name="TYPE_MASK_COLLISION" value="15"> + </constant> + <constant name="TYPE_MASK_AREA" value="16"> + </constant> <constant name="TYPE_MASK_KINEMATIC_BODY" value="2"> </constant> <constant name="TYPE_MASK_RIGID_BODY" value="4"> </constant> <constant name="TYPE_MASK_CHARACTER_BODY" value="8"> </constant> - <constant name="TYPE_MASK_AREA" value="16"> - </constant> - <constant name="TYPE_MASK_COLLISION" value="15"> - </constant> </constants> </class> <class name="PhysicsServer" inherits="Object" category="Core"> @@ -27151,117 +27387,63 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="shape_create"> - <return type="RID"> - </return> - <argument index="0" name="type" type="int"> - </argument> - <description> - </description> - </method> - <method name="shape_set_data"> - <argument index="0" name="shape" type="RID"> - </argument> - <argument index="1" name="data" type="Variant"> + <method name="area_add_shape"> + <argument index="0" name="area" type="RID"> </argument> - <description> - </description> - </method> - <method name="shape_get_type" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="shape" type="RID"> + <argument index="1" name="shape" type="RID"> </argument> - <description> - </description> - </method> - <method name="shape_get_data" qualifiers="const"> - <argument index="0" name="shape" type="RID"> + <argument index="2" name="transform" type="Transform" default="Transform()"> </argument> <description> </description> </method> - <method name="space_create"> - <return type="RID"> - </return> - <description> - </description> - </method> - <method name="space_set_active"> - <argument index="0" name="space" type="RID"> - </argument> - <argument index="1" name="active" type="bool"> + <method name="area_attach_object_instance_ID"> + <argument index="0" name="area" type="RID"> </argument> - <description> - </description> - </method> - <method name="space_is_active" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="space" type="RID"> + <argument index="1" name="id" type="int"> </argument> <description> </description> </method> - <method name="space_set_param"> - <argument index="0" name="space" type="RID"> - </argument> - <argument index="1" name="param" type="int"> - </argument> - <argument index="2" name="value" type="float"> + <method name="area_clear_shapes"> + <argument index="0" name="area" type="RID"> </argument> <description> </description> </method> - <method name="space_get_param" qualifiers="const"> - <return type="float"> + <method name="area_create"> + <return type="RID"> </return> - <argument index="0" name="space" type="RID"> - </argument> - <argument index="1" name="param" type="int"> - </argument> <description> </description> </method> - <method name="space_get_direct_state"> - <return type="PhysicsDirectSpaceState"> + <method name="area_get_object_instance_ID" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="space" type="RID"> + <argument index="0" name="area" type="RID"> </argument> <description> </description> </method> - <method name="area_create"> - <return type="RID"> - </return> - <description> - </description> - </method> - <method name="area_set_space"> + <method name="area_get_param" qualifiers="const"> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="space" type="RID"> + <argument index="1" name="param" type="int"> </argument> <description> </description> </method> - <method name="area_get_space" qualifiers="const"> + <method name="area_get_shape" qualifiers="const"> <return type="RID"> </return> <argument index="0" name="area" type="RID"> </argument> - <description> - </description> - </method> - <method name="area_set_space_override_mode"> - <argument index="0" name="area" type="RID"> - </argument> - <argument index="1" name="mode" type="int"> + <argument index="1" name="shape_idx" type="int"> </argument> <description> </description> </method> - <method name="area_get_space_override_mode" qualifiers="const"> + <method name="area_get_shape_count" qualifiers="const"> <return type="int"> </return> <argument index="0" name="area" type="RID"> @@ -27269,37 +27451,25 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="area_add_shape"> - <argument index="0" name="area" type="RID"> - </argument> - <argument index="1" name="shape" type="RID"> - </argument> - <argument index="2" name="transform" type="Transform" default="Transform()"> - </argument> - <description> - </description> - </method> - <method name="area_set_shape"> + <method name="area_get_shape_transform" qualifiers="const"> + <return type="Transform"> + </return> <argument index="0" name="area" type="RID"> </argument> <argument index="1" name="shape_idx" type="int"> </argument> - <argument index="2" name="shape" type="RID"> - </argument> <description> </description> </method> - <method name="area_set_shape_transform"> + <method name="area_get_space" qualifiers="const"> + <return type="RID"> + </return> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="shape_idx" type="int"> - </argument> - <argument index="2" name="transform" type="Transform"> - </argument> <description> </description> </method> - <method name="area_get_shape_count" qualifiers="const"> + <method name="area_get_space_override_mode" qualifiers="const"> <return type="int"> </return> <argument index="0" name="area" type="RID"> @@ -27307,23 +27477,19 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="area_get_shape" qualifiers="const"> - <return type="RID"> + <method name="area_get_transform" qualifiers="const"> + <return type="Transform"> </return> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="shape_idx" type="int"> - </argument> <description> </description> </method> - <method name="area_get_shape_transform" qualifiers="const"> - <return type="Transform"> + <method name="area_is_ray_pickable" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="shape_idx" type="int"> - </argument> <description> </description> </method> @@ -27335,9 +27501,11 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="area_clear_shapes"> + <method name="area_set_collision_mask"> <argument index="0" name="area" type="RID"> </argument> + <argument index="1" name="mask" type="int"> + </argument> <description> </description> </method> @@ -27349,10 +27517,12 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="area_set_collision_mask"> + <method name="area_set_monitor_callback"> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="mask" type="int"> + <argument index="1" name="receiver" type="Object"> + </argument> + <argument index="2" name="method" type="String"> </argument> <description> </description> @@ -27367,141 +27537,129 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="area_set_transform"> + <method name="area_set_ray_pickable"> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="transform" type="Transform"> + <argument index="1" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="area_get_param" qualifiers="const"> + <method name="area_set_shape"> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="param" type="int"> + <argument index="1" name="shape_idx" type="int"> </argument> - <description> - </description> - </method> - <method name="area_get_transform" qualifiers="const"> - <return type="Transform"> - </return> - <argument index="0" name="area" type="RID"> + <argument index="2" name="shape" type="RID"> </argument> <description> </description> </method> - <method name="area_attach_object_instance_ID"> + <method name="area_set_shape_transform"> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="id" type="int"> + <argument index="1" name="shape_idx" type="int"> </argument> - <description> - </description> - </method> - <method name="area_get_object_instance_ID" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="area" type="RID"> + <argument index="2" name="transform" type="Transform"> </argument> <description> </description> </method> - <method name="area_set_monitor_callback"> + <method name="area_set_space"> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="receiver" type="Object"> - </argument> - <argument index="2" name="method" type="String"> + <argument index="1" name="space" type="RID"> </argument> <description> </description> </method> - <method name="area_set_ray_pickable"> + <method name="area_set_space_override_mode"> <argument index="0" name="area" type="RID"> </argument> - <argument index="1" name="enable" type="bool"> + <argument index="1" name="mode" type="int"> </argument> <description> </description> </method> - <method name="area_is_ray_pickable" qualifiers="const"> - <return type="bool"> - </return> + <method name="area_set_transform"> <argument index="0" name="area" type="RID"> </argument> + <argument index="1" name="transform" type="Transform"> + </argument> <description> </description> </method> - <method name="body_create"> - <return type="RID"> - </return> - <argument index="0" name="mode" type="int" default="2"> + <method name="body_add_collision_exception"> + <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="init_sleeping" type="bool" default="false"> + <argument index="1" name="excepted_body" type="RID"> </argument> <description> </description> </method> - <method name="body_set_space"> + <method name="body_add_shape"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="space" type="RID"> + <argument index="1" name="shape" type="RID"> + </argument> + <argument index="2" name="transform" type="Transform" default="Transform()"> </argument> <description> </description> </method> - <method name="body_get_space" qualifiers="const"> - <return type="RID"> - </return> + <method name="body_apply_impulse"> <argument index="0" name="body" type="RID"> </argument> + <argument index="1" name="pos" type="Vector3"> + </argument> + <argument index="2" name="impulse" type="Vector3"> + </argument> <description> </description> </method> - <method name="body_set_mode"> + <method name="body_attach_object_instance_ID"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="mode" type="int"> + <argument index="1" name="id" type="int"> </argument> <description> </description> </method> - <method name="body_get_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="body_clear_shapes"> <argument index="0" name="body" type="RID"> </argument> <description> </description> </method> - <method name="body_set_layer_mask"> - <argument index="0" name="body" type="RID"> + <method name="body_create"> + <return type="RID"> + </return> + <argument index="0" name="mode" type="int" default="2"> </argument> - <argument index="1" name="mask" type="int"> + <argument index="1" name="init_sleeping" type="bool" default="false"> </argument> <description> </description> </method> - <method name="body_get_layer_mask" qualifiers="const"> + <method name="body_get_axis_lock" qualifiers="const"> <return type="int"> </return> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> - </argument> <description> </description> </method> - <method name="body_set_collision_mask"> + <method name="body_get_collision_mask" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="mask" type="int"> + <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="body_get_collision_mask" qualifiers="const"> + <method name="body_get_layer_mask" qualifiers="const"> <return type="int"> </return> <argument index="0" name="body" type="RID"> @@ -27511,41 +27669,37 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="body_add_shape"> + <method name="body_get_max_contacts_reported" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="shape" type="RID"> - </argument> - <argument index="2" name="transform" type="Transform" default="Transform()"> - </argument> <description> </description> </method> - <method name="body_set_shape"> + <method name="body_get_mode" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="shape_idx" type="int"> - </argument> - <argument index="2" name="shape" type="RID"> - </argument> <description> </description> </method> - <method name="body_set_shape_transform"> + <method name="body_get_object_instance_ID" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="shape_idx" type="int"> - </argument> - <argument index="2" name="transform" type="Transform"> - </argument> <description> </description> </method> - <method name="body_get_shape_count" qualifiers="const"> - <return type="int"> + <method name="body_get_param" qualifiers="const"> + <return type="float"> </return> <argument index="0" name="body" type="RID"> </argument> + <argument index="1" name="param" type="int"> + </argument> <description> </description> </method> @@ -27559,17 +27713,17 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="body_get_shape_transform" qualifiers="const"> - <return type="Transform"> + <method name="body_get_shape_count" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="shape_idx" type="int"> - </argument> <description> </description> </method> - <method name="body_remove_shape"> + <method name="body_get_shape_transform" qualifiers="const"> + <return type="Transform"> + </return> <argument index="0" name="body" type="RID"> </argument> <argument index="1" name="shape_idx" type="int"> @@ -27577,37 +27731,39 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="body_clear_shapes"> + <method name="body_get_space" qualifiers="const"> + <return type="RID"> + </return> <argument index="0" name="body" type="RID"> </argument> <description> </description> </method> - <method name="body_attach_object_instance_ID"> + <method name="body_get_state" qualifiers="const"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="id" type="int"> + <argument index="1" name="state" type="int"> </argument> <description> </description> </method> - <method name="body_get_object_instance_ID" qualifiers="const"> - <return type="int"> + <method name="body_is_continuous_collision_detection_enabled" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="body" type="RID"> </argument> <description> </description> </method> - <method name="body_set_enable_continuous_collision_detection"> + <method name="body_is_omitting_force_integration" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="enable" type="bool"> - </argument> <description> </description> </method> - <method name="body_is_continuous_collision_detection_enabled" qualifiers="const"> + <method name="body_is_ray_pickable" qualifiers="const"> <return type="bool"> </return> <argument index="0" name="body" type="RID"> @@ -27615,111 +27771,109 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="body_set_param"> + <method name="body_remove_collision_exception"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="param" type="int"> - </argument> - <argument index="2" name="value" type="float"> + <argument index="1" name="excepted_body" type="RID"> </argument> <description> </description> </method> - <method name="body_get_param" qualifiers="const"> - <return type="float"> - </return> + <method name="body_remove_shape"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="param" type="int"> + <argument index="1" name="shape_idx" type="int"> </argument> <description> </description> </method> - <method name="body_set_state"> + <method name="body_set_axis_lock"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="state" type="int"> - </argument> - <argument index="2" name="value" type="Variant"> + <argument index="1" name="axis" type="int"> </argument> <description> </description> </method> - <method name="body_get_state" qualifiers="const"> + <method name="body_set_axis_velocity"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="state" type="int"> + <argument index="1" name="axis_velocity" type="Vector3"> </argument> <description> </description> </method> - <method name="body_apply_impulse"> + <method name="body_set_collision_mask"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="pos" type="Vector3"> - </argument> - <argument index="2" name="impulse" type="Vector3"> + <argument index="1" name="mask" type="int"> </argument> <description> </description> </method> - <method name="body_set_axis_velocity"> + <method name="body_set_enable_continuous_collision_detection"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="axis_velocity" type="Vector3"> + <argument index="1" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="body_set_axis_lock"> + <method name="body_set_force_integration_callback"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="axis" type="int"> + <argument index="1" name="receiver" type="Object"> + </argument> + <argument index="2" name="method" type="String"> + </argument> + <argument index="3" name="userdata" type="Variant" default="NULL"> </argument> <description> </description> </method> - <method name="body_get_axis_lock" qualifiers="const"> - <return type="int"> - </return> + <method name="body_set_layer_mask"> <argument index="0" name="body" type="RID"> </argument> + <argument index="1" name="mask" type="int"> + </argument> <description> </description> </method> - <method name="body_add_collision_exception"> + <method name="body_set_max_contacts_reported"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="excepted_body" type="RID"> + <argument index="1" name="amount" type="int"> </argument> <description> </description> </method> - <method name="body_remove_collision_exception"> + <method name="body_set_mode"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="excepted_body" type="RID"> + <argument index="1" name="mode" type="int"> </argument> <description> </description> </method> - <method name="body_set_max_contacts_reported"> + <method name="body_set_omit_force_integration"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="amount" type="int"> + <argument index="1" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="body_get_max_contacts_reported" qualifiers="const"> - <return type="int"> - </return> + <method name="body_set_param"> <argument index="0" name="body" type="RID"> </argument> + <argument index="1" name="param" type="int"> + </argument> + <argument index="2" name="value" type="float"> + </argument> <description> </description> </method> - <method name="body_set_omit_force_integration"> + <method name="body_set_ray_pickable"> <argument index="0" name="body" type="RID"> </argument> <argument index="1" name="enable" type="bool"> @@ -27727,57 +27881,55 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="body_is_omitting_force_integration" qualifiers="const"> - <return type="bool"> - </return> + <method name="body_set_shape"> <argument index="0" name="body" type="RID"> </argument> + <argument index="1" name="shape_idx" type="int"> + </argument> + <argument index="2" name="shape" type="RID"> + </argument> <description> </description> </method> - <method name="body_set_force_integration_callback"> + <method name="body_set_shape_transform"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="receiver" type="Object"> - </argument> - <argument index="2" name="method" type="String"> + <argument index="1" name="shape_idx" type="int"> </argument> - <argument index="3" name="userdata" type="Variant" default="NULL"> + <argument index="2" name="transform" type="Transform"> </argument> <description> </description> </method> - <method name="body_set_ray_pickable"> + <method name="body_set_space"> <argument index="0" name="body" type="RID"> </argument> - <argument index="1" name="enable" type="bool"> + <argument index="1" name="space" type="RID"> </argument> <description> </description> </method> - <method name="body_is_ray_pickable" qualifiers="const"> - <return type="bool"> - </return> + <method name="body_set_state"> <argument index="0" name="body" type="RID"> </argument> + <argument index="1" name="state" type="int"> + </argument> + <argument index="2" name="value" type="Variant"> + </argument> <description> </description> </method> - <method name="joint_create_pin"> - <return type="RID"> + <method name="cone_twist_joint_get_param" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="body_A" type="RID"> - </argument> - <argument index="1" name="local_A" type="Vector3"> - </argument> - <argument index="2" name="body_B" type="RID"> + <argument index="0" name="joint" type="RID"> </argument> - <argument index="3" name="local_B" type="Vector3"> + <argument index="1" name="param" type="int"> </argument> <description> </description> </method> - <method name="pin_joint_set_param"> + <method name="cone_twist_joint_set_param"> <argument index="0" name="joint" type="RID"> </argument> <argument index="1" name="param" type="int"> @@ -27787,68 +27939,74 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="pin_joint_get_param" qualifiers="const"> - <return type="float"> - </return> - <argument index="0" name="joint" type="RID"> - </argument> - <argument index="1" name="param" type="int"> + <method name="free_rid"> + <argument index="0" name="rid" type="RID"> </argument> <description> </description> </method> - <method name="pin_joint_set_local_A"> + <method name="generic_6dof_joint_get_flag"> + <return type="bool"> + </return> <argument index="0" name="joint" type="RID"> </argument> - <argument index="1" name="local_A" type="Vector3"> + <argument index="1" name="axis" type="int"> + </argument> + <argument index="2" name="flag" type="int"> </argument> <description> </description> </method> - <method name="pin_joint_get_local_A" qualifiers="const"> - <return type="Vector3"> + <method name="generic_6dof_joint_get_param"> + <return type="float"> </return> <argument index="0" name="joint" type="RID"> </argument> + <argument index="1" name="axis" type="int"> + </argument> + <argument index="2" name="param" type="int"> + </argument> <description> </description> </method> - <method name="pin_joint_set_local_B"> + <method name="generic_6dof_joint_set_flag"> <argument index="0" name="joint" type="RID"> </argument> - <argument index="1" name="local_B" type="Vector3"> + <argument index="1" name="axis" type="int"> + </argument> + <argument index="2" name="flag" type="int"> + </argument> + <argument index="3" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="pin_joint_get_local_B" qualifiers="const"> - <return type="Vector3"> - </return> + <method name="generic_6dof_joint_set_param"> <argument index="0" name="joint" type="RID"> </argument> + <argument index="1" name="axis" type="int"> + </argument> + <argument index="2" name="param" type="int"> + </argument> + <argument index="3" name="value" type="float"> + </argument> <description> </description> </method> - <method name="joint_create_hinge"> - <return type="RID"> + <method name="get_process_info"> + <return type="int"> </return> - <argument index="0" name="body_A" type="RID"> - </argument> - <argument index="1" name="hinge_A" type="Transform"> - </argument> - <argument index="2" name="body_B" type="RID"> - </argument> - <argument index="3" name="hinge_B" type="Transform"> + <argument index="0" name="process_info" type="int"> </argument> <description> </description> </method> - <method name="hinge_joint_set_param"> + <method name="hinge_joint_get_flag" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="joint" type="RID"> </argument> - <argument index="1" name="param" type="int"> - </argument> - <argument index="2" name="value" type="float"> + <argument index="1" name="flag" type="int"> </argument> <description> </description> @@ -27873,17 +28031,17 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="hinge_joint_get_flag" qualifiers="const"> - <return type="bool"> - </return> + <method name="hinge_joint_set_param"> <argument index="0" name="joint" type="RID"> </argument> - <argument index="1" name="flag" type="int"> + <argument index="1" name="param" type="int"> + </argument> + <argument index="2" name="value" type="float"> </argument> <description> </description> </method> - <method name="joint_create_slider"> + <method name="joint_create_cone_twist"> <return type="RID"> </return> <argument index="0" name="body_A" type="RID"> @@ -27897,57 +28055,67 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="slider_joint_set_param"> - <argument index="0" name="joint" type="RID"> + <method name="joint_create_generic_6dof"> + <return type="RID"> + </return> + <argument index="0" name="body_A" type="RID"> </argument> - <argument index="1" name="param" type="int"> + <argument index="1" name="local_ref_A" type="Transform"> </argument> - <argument index="2" name="value" type="float"> + <argument index="2" name="body_B" type="RID"> + </argument> + <argument index="3" name="local_ref_B" type="Transform"> </argument> <description> </description> </method> - <method name="slider_joint_get_param" qualifiers="const"> - <return type="float"> + <method name="joint_create_hinge"> + <return type="RID"> </return> - <argument index="0" name="joint" type="RID"> + <argument index="0" name="body_A" type="RID"> </argument> - <argument index="1" name="param" type="int"> + <argument index="1" name="hinge_A" type="Transform"> + </argument> + <argument index="2" name="body_B" type="RID"> + </argument> + <argument index="3" name="hinge_B" type="Transform"> </argument> <description> </description> </method> - <method name="joint_create_cone_twist"> + <method name="joint_create_pin"> <return type="RID"> </return> <argument index="0" name="body_A" type="RID"> </argument> - <argument index="1" name="local_ref_A" type="Transform"> + <argument index="1" name="local_A" type="Vector3"> </argument> <argument index="2" name="body_B" type="RID"> </argument> - <argument index="3" name="local_ref_B" type="Transform"> + <argument index="3" name="local_B" type="Vector3"> </argument> <description> </description> </method> - <method name="cone_twist_joint_set_param"> - <argument index="0" name="joint" type="RID"> + <method name="joint_create_slider"> + <return type="RID"> + </return> + <argument index="0" name="body_A" type="RID"> </argument> - <argument index="1" name="param" type="int"> + <argument index="1" name="local_ref_A" type="Transform"> </argument> - <argument index="2" name="value" type="float"> + <argument index="2" name="body_B" type="RID"> + </argument> + <argument index="3" name="local_ref_B" type="Transform"> </argument> <description> </description> </method> - <method name="cone_twist_joint_get_param" qualifiers="const"> - <return type="float"> + <method name="joint_get_solver_priority" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="joint" type="RID"> </argument> - <argument index="1" name="param" type="int"> - </argument> <description> </description> </method> @@ -27967,179 +28135,232 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="joint_get_solver_priority" qualifiers="const"> - <return type="int"> + <method name="pin_joint_get_local_A" qualifiers="const"> + <return type="Vector3"> </return> <argument index="0" name="joint" type="RID"> </argument> <description> </description> </method> - <method name="joint_create_generic_6dof"> - <return type="RID"> + <method name="pin_joint_get_local_B" qualifiers="const"> + <return type="Vector3"> </return> - <argument index="0" name="body_A" type="RID"> - </argument> - <argument index="1" name="local_ref_A" type="Transform"> + <argument index="0" name="joint" type="RID"> </argument> - <argument index="2" name="body_B" type="RID"> + <description> + </description> + </method> + <method name="pin_joint_get_param" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="joint" type="RID"> </argument> - <argument index="3" name="local_ref_B" type="Transform"> + <argument index="1" name="param" type="int"> </argument> <description> </description> </method> - <method name="generic_6dof_joint_set_param"> + <method name="pin_joint_set_local_A"> <argument index="0" name="joint" type="RID"> </argument> - <argument index="1" name="axis" type="int"> + <argument index="1" name="local_A" type="Vector3"> </argument> - <argument index="2" name="param" type="int"> + <description> + </description> + </method> + <method name="pin_joint_set_local_B"> + <argument index="0" name="joint" type="RID"> </argument> - <argument index="3" name="value" type="float"> + <argument index="1" name="local_B" type="Vector3"> </argument> <description> </description> </method> - <method name="generic_6dof_joint_get_param"> - <return type="float"> - </return> + <method name="pin_joint_set_param"> <argument index="0" name="joint" type="RID"> </argument> - <argument index="1" name="axis" type="int"> + <argument index="1" name="param" type="int"> </argument> - <argument index="2" name="param" type="int"> + <argument index="2" name="value" type="float"> </argument> <description> </description> </method> - <method name="generic_6dof_joint_set_flag"> - <argument index="0" name="joint" type="RID"> + <method name="set_active"> + <argument index="0" name="active" type="bool"> </argument> - <argument index="1" name="axis" type="int"> + <description> + </description> + </method> + <method name="shape_create"> + <return type="RID"> + </return> + <argument index="0" name="type" type="int"> </argument> - <argument index="2" name="flag" type="int"> + <description> + </description> + </method> + <method name="shape_get_data" qualifiers="const"> + <argument index="0" name="shape" type="RID"> </argument> - <argument index="3" name="enable" type="bool"> + <description> + </description> + </method> + <method name="shape_get_type" qualifiers="const"> + <return type="int"> + </return> + <argument index="0" name="shape" type="RID"> </argument> <description> </description> </method> - <method name="generic_6dof_joint_get_flag"> - <return type="bool"> + <method name="shape_set_data"> + <argument index="0" name="shape" type="RID"> + </argument> + <argument index="1" name="data" type="Variant"> + </argument> + <description> + </description> + </method> + <method name="slider_joint_get_param" qualifiers="const"> + <return type="float"> </return> <argument index="0" name="joint" type="RID"> </argument> - <argument index="1" name="axis" type="int"> + <argument index="1" name="param" type="int"> </argument> - <argument index="2" name="flag" type="int"> + <description> + </description> + </method> + <method name="slider_joint_set_param"> + <argument index="0" name="joint" type="RID"> + </argument> + <argument index="1" name="param" type="int"> + </argument> + <argument index="2" name="value" type="float"> </argument> <description> </description> </method> - <method name="free_rid"> - <argument index="0" name="rid" type="RID"> + <method name="space_create"> + <return type="RID"> + </return> + <description> + </description> + </method> + <method name="space_get_direct_state"> + <return type="PhysicsDirectSpaceState"> + </return> + <argument index="0" name="space" type="RID"> </argument> <description> </description> </method> - <method name="set_active"> - <argument index="0" name="active" type="bool"> + <method name="space_get_param" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="space" type="RID"> + </argument> + <argument index="1" name="param" type="int"> </argument> <description> </description> </method> - <method name="get_process_info"> - <return type="int"> + <method name="space_is_active" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="process_info" type="int"> + <argument index="0" name="space" type="RID"> + </argument> + <description> + </description> + </method> + <method name="space_set_active"> + <argument index="0" name="space" type="RID"> + </argument> + <argument index="1" name="active" type="bool"> + </argument> + <description> + </description> + </method> + <method name="space_set_param"> + <argument index="0" name="space" type="RID"> + </argument> + <argument index="1" name="param" type="int"> + </argument> + <argument index="2" name="value" type="float"> </argument> <description> </description> </method> </methods> <constants> - <constant name="JOINT_PIN" value="0"> - </constant> - <constant name="JOINT_HINGE" value="1"> - </constant> - <constant name="JOINT_SLIDER" value="2"> - </constant> - <constant name="JOINT_CONE_TWIST" value="3"> - </constant> - <constant name="JOINT_6DOF" value="4"> - </constant> - <constant name="PIN_JOINT_BIAS" value="0"> - </constant> - <constant name="PIN_JOINT_DAMPING" value="1"> - </constant> - <constant name="PIN_JOINT_IMPULSE_CLAMP" value="2"> - </constant> - <constant name="HINGE_JOINT_BIAS" value="0"> - </constant> - <constant name="HINGE_JOINT_LIMIT_UPPER" value="1"> - </constant> - <constant name="HINGE_JOINT_LIMIT_LOWER" value="2"> + <constant name="AREA_BODY_ADDED" value="0"> </constant> - <constant name="HINGE_JOINT_LIMIT_BIAS" value="3"> + <constant name="AREA_PARAM_GRAVITY" value="0"> </constant> - <constant name="HINGE_JOINT_LIMIT_SOFTNESS" value="4"> + <constant name="AREA_SPACE_OVERRIDE_DISABLED" value="0"> + This area does not affect gravity/damp. These are generally areas that exist only to detect collisions, and objects entering or exiting them. </constant> - <constant name="HINGE_JOINT_LIMIT_RELAXATION" value="5"> + <constant name="AREA_BODY_REMOVED" value="1"> </constant> - <constant name="HINGE_JOINT_MOTOR_TARGET_VELOCITY" value="6"> + <constant name="AREA_PARAM_GRAVITY_VECTOR" value="1"> </constant> - <constant name="HINGE_JOINT_MOTOR_MAX_IMPULSE" value="7"> + <constant name="AREA_SPACE_OVERRIDE_COMBINE" value="1"> + This area adds its gravity/damp values to whatever has been calculated so far. This way, many overlapping areas can combine their physics to make interesting effects. </constant> - <constant name="HINGE_JOINT_FLAG_USE_LIMIT" value="0"> + <constant name="AREA_PARAM_GRAVITY_IS_POINT" value="2"> </constant> - <constant name="HINGE_JOINT_FLAG_ENABLE_MOTOR" value="1"> + <constant name="AREA_SPACE_OVERRIDE_COMBINE_REPLACE" value="2"> + This area adds its gravity/damp values to whatever has been calculated so far. Then stops taking into account the rest of the areas, even the default one. </constant> - <constant name="SLIDER_JOINT_LINEAR_LIMIT_UPPER" value="0"> + <constant name="AREA_PARAM_GRAVITY_DISTANCE_SCALE" value="3"> </constant> - <constant name="SLIDER_JOINT_LINEAR_LIMIT_LOWER" value="1"> + <constant name="AREA_SPACE_OVERRIDE_REPLACE" value="3"> + This area replaces any gravity/damp, even the default one, and stops taking into account the rest of the areas. </constant> - <constant name="SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS" value="2"> + <constant name="AREA_PARAM_GRAVITY_POINT_ATTENUATION" value="4"> </constant> - <constant name="SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION" value="3"> + <constant name="AREA_SPACE_OVERRIDE_REPLACE_COMBINE" value="4"> + This area replaces any gravity/damp calculated so far, but keeps calculating the rest of the areas, down to the default one. </constant> - <constant name="SLIDER_JOINT_LINEAR_LIMIT_DAMPING" value="4"> + <constant name="AREA_PARAM_LINEAR_DAMP" value="5"> </constant> - <constant name="SLIDER_JOINT_LINEAR_MOTION_SOFTNESS" value="5"> + <constant name="AREA_PARAM_ANGULAR_DAMP" value="6"> </constant> - <constant name="SLIDER_JOINT_LINEAR_MOTION_RESTITUTION" value="6"> + <constant name="AREA_PARAM_PRIORITY" value="7"> </constant> - <constant name="SLIDER_JOINT_LINEAR_MOTION_DAMPING" value="7"> + <constant name="BODY_MODE_STATIC" value="0"> </constant> - <constant name="SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS" value="8"> + <constant name="BODY_PARAM_BOUNCE" value="0"> </constant> - <constant name="SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION" value="9"> + <constant name="BODY_STATE_TRANSFORM" value="0"> </constant> - <constant name="SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING" value="10"> + <constant name="BODY_MODE_KINEMATIC" value="1"> </constant> - <constant name="SLIDER_JOINT_ANGULAR_LIMIT_UPPER" value="11"> + <constant name="BODY_PARAM_FRICTION" value="1"> </constant> - <constant name="SLIDER_JOINT_ANGULAR_LIMIT_LOWER" value="12"> + <constant name="BODY_STATE_LINEAR_VELOCITY" value="1"> </constant> - <constant name="SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS" value="13"> + <constant name="BODY_MODE_RIGID" value="2"> </constant> - <constant name="SLIDER_JOINT_ANGULAR_LIMIT_RESTITUTION" value="14"> + <constant name="BODY_PARAM_MASS" value="2"> </constant> - <constant name="SLIDER_JOINT_ANGULAR_LIMIT_DAMPING" value="15"> + <constant name="BODY_STATE_ANGULAR_VELOCITY" value="2"> </constant> - <constant name="SLIDER_JOINT_ANGULAR_MOTION_SOFTNESS" value="16"> + <constant name="BODY_MODE_CHARACTER" value="3"> </constant> - <constant name="SLIDER_JOINT_ANGULAR_MOTION_RESTITUTION" value="17"> + <constant name="BODY_PARAM_GRAVITY_SCALE" value="3"> </constant> - <constant name="SLIDER_JOINT_ANGULAR_MOTION_DAMPING" value="18"> + <constant name="BODY_STATE_SLEEPING" value="3"> </constant> - <constant name="SLIDER_JOINT_ANGULAR_ORTHOGONAL_SOFTNESS" value="19"> + <constant name="BODY_PARAM_LINEAR_DAMP" value="4"> </constant> - <constant name="SLIDER_JOINT_ANGULAR_ORTHOGONAL_RESTITUTION" value="20"> + <constant name="BODY_STATE_CAN_SLEEP" value="4"> </constant> - <constant name="SLIDER_JOINT_ANGULAR_ORTHOGONAL_DAMPING" value="21"> + <constant name="BODY_PARAM_ANGULAR_DAMP" value="5"> </constant> - <constant name="SLIDER_JOINT_MAX" value="22"> + <constant name="BODY_PARAM_MAX" value="6"> </constant> <constant name="CONE_TWIST_JOINT_SWING_SPAN" value="0"> </constant> @@ -28151,10 +28372,24 @@ This method controls whether the position between two cached points is interpola </constant> <constant name="CONE_TWIST_JOINT_RELAXATION" value="4"> </constant> + <constant name="G6DOF_JOINT_FLAG_ENABLE_LINEAR_LIMIT" value="0"> + </constant> <constant name="G6DOF_JOINT_LINEAR_LOWER_LIMIT" value="0"> </constant> + <constant name="G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT" value="1"> + </constant> <constant name="G6DOF_JOINT_LINEAR_UPPER_LIMIT" value="1"> </constant> + <constant name="G6DOF_JOINT_ANGULAR_FORCE_LIMIT" value="10"> + </constant> + <constant name="G6DOF_JOINT_ANGULAR_ERP" value="11"> + </constant> + <constant name="G6DOF_JOINT_ANGULAR_MOTOR_TARGET_VELOCITY" value="12"> + </constant> + <constant name="G6DOF_JOINT_ANGULAR_MOTOR_FORCE_LIMIT" value="13"> + </constant> + <constant name="G6DOF_JOINT_FLAG_ENABLE_MOTOR" value="2"> + </constant> <constant name="G6DOF_JOINT_LINEAR_LIMIT_SOFTNESS" value="2"> </constant> <constant name="G6DOF_JOINT_LINEAR_RESTITUTION" value="3"> @@ -28171,110 +28406,111 @@ This method controls whether the position between two cached points is interpola </constant> <constant name="G6DOF_JOINT_ANGULAR_RESTITUTION" value="9"> </constant> - <constant name="G6DOF_JOINT_ANGULAR_FORCE_LIMIT" value="10"> + <constant name="HINGE_JOINT_BIAS" value="0"> </constant> - <constant name="G6DOF_JOINT_ANGULAR_ERP" value="11"> + <constant name="HINGE_JOINT_FLAG_USE_LIMIT" value="0"> </constant> - <constant name="G6DOF_JOINT_ANGULAR_MOTOR_TARGET_VELOCITY" value="12"> + <constant name="HINGE_JOINT_FLAG_ENABLE_MOTOR" value="1"> </constant> - <constant name="G6DOF_JOINT_ANGULAR_MOTOR_FORCE_LIMIT" value="13"> + <constant name="HINGE_JOINT_LIMIT_UPPER" value="1"> </constant> - <constant name="G6DOF_JOINT_FLAG_ENABLE_LINEAR_LIMIT" value="0"> + <constant name="HINGE_JOINT_LIMIT_LOWER" value="2"> </constant> - <constant name="G6DOF_JOINT_FLAG_ENABLE_ANGULAR_LIMIT" value="1"> + <constant name="HINGE_JOINT_LIMIT_BIAS" value="3"> </constant> - <constant name="G6DOF_JOINT_FLAG_ENABLE_MOTOR" value="2"> + <constant name="HINGE_JOINT_LIMIT_SOFTNESS" value="4"> </constant> - <constant name="SHAPE_PLANE" value="0"> + <constant name="HINGE_JOINT_LIMIT_RELAXATION" value="5"> </constant> - <constant name="SHAPE_RAY" value="1"> + <constant name="HINGE_JOINT_MOTOR_TARGET_VELOCITY" value="6"> </constant> - <constant name="SHAPE_SPHERE" value="2"> + <constant name="HINGE_JOINT_MOTOR_MAX_IMPULSE" value="7"> </constant> - <constant name="SHAPE_BOX" value="3"> + <constant name="INFO_ACTIVE_OBJECTS" value="0"> </constant> - <constant name="SHAPE_CAPSULE" value="4"> + <constant name="INFO_COLLISION_PAIRS" value="1"> </constant> - <constant name="SHAPE_CONVEX_POLYGON" value="5"> + <constant name="INFO_ISLAND_COUNT" value="2"> </constant> - <constant name="SHAPE_CONCAVE_POLYGON" value="6"> + <constant name="JOINT_PIN" value="0"> </constant> - <constant name="SHAPE_HEIGHTMAP" value="7"> + <constant name="JOINT_HINGE" value="1"> </constant> - <constant name="SHAPE_CUSTOM" value="8"> + <constant name="JOINT_SLIDER" value="2"> </constant> - <constant name="AREA_PARAM_GRAVITY" value="0"> + <constant name="JOINT_CONE_TWIST" value="3"> </constant> - <constant name="AREA_PARAM_GRAVITY_VECTOR" value="1"> + <constant name="JOINT_6DOF" value="4"> </constant> - <constant name="AREA_PARAM_GRAVITY_IS_POINT" value="2"> + <constant name="PIN_JOINT_BIAS" value="0"> </constant> - <constant name="AREA_PARAM_GRAVITY_DISTANCE_SCALE" value="3"> + <constant name="PIN_JOINT_DAMPING" value="1"> </constant> - <constant name="AREA_PARAM_GRAVITY_POINT_ATTENUATION" value="4"> + <constant name="PIN_JOINT_IMPULSE_CLAMP" value="2"> </constant> - <constant name="AREA_PARAM_LINEAR_DAMP" value="5"> + <constant name="SHAPE_PLANE" value="0"> </constant> - <constant name="AREA_PARAM_ANGULAR_DAMP" value="6"> + <constant name="SHAPE_RAY" value="1"> </constant> - <constant name="AREA_PARAM_PRIORITY" value="7"> + <constant name="SHAPE_SPHERE" value="2"> </constant> - <constant name="AREA_SPACE_OVERRIDE_DISABLED" value="0"> - This area does not affect gravity/damp. These are generally areas that exist only to detect collisions, and objects entering or exiting them. + <constant name="SHAPE_BOX" value="3"> </constant> - <constant name="AREA_SPACE_OVERRIDE_COMBINE" value="1"> - This area adds its gravity/damp values to whatever has been calculated so far. This way, many overlapping areas can combine their physics to make interesting effects. + <constant name="SHAPE_CAPSULE" value="4"> </constant> - <constant name="AREA_SPACE_OVERRIDE_COMBINE_REPLACE" value="2"> - This area adds its gravity/damp values to whatever has been calculated so far. Then stops taking into account the rest of the areas, even the default one. + <constant name="SHAPE_CONVEX_POLYGON" value="5"> </constant> - <constant name="AREA_SPACE_OVERRIDE_REPLACE" value="3"> - This area replaces any gravity/damp, even the default one, and stops taking into account the rest of the areas. + <constant name="SHAPE_CONCAVE_POLYGON" value="6"> </constant> - <constant name="AREA_SPACE_OVERRIDE_REPLACE_COMBINE" value="4"> - This area replaces any gravity/damp calculated so far, but keeps calculating the rest of the areas, down to the default one. + <constant name="SHAPE_HEIGHTMAP" value="7"> </constant> - <constant name="BODY_MODE_STATIC" value="0"> + <constant name="SHAPE_CUSTOM" value="8"> </constant> - <constant name="BODY_MODE_KINEMATIC" value="1"> + <constant name="SLIDER_JOINT_LINEAR_LIMIT_UPPER" value="0"> </constant> - <constant name="BODY_MODE_RIGID" value="2"> + <constant name="SLIDER_JOINT_LINEAR_LIMIT_LOWER" value="1"> </constant> - <constant name="BODY_MODE_CHARACTER" value="3"> + <constant name="SLIDER_JOINT_LINEAR_ORTHOGONAL_DAMPING" value="10"> </constant> - <constant name="BODY_PARAM_BOUNCE" value="0"> + <constant name="SLIDER_JOINT_ANGULAR_LIMIT_UPPER" value="11"> </constant> - <constant name="BODY_PARAM_FRICTION" value="1"> + <constant name="SLIDER_JOINT_ANGULAR_LIMIT_LOWER" value="12"> </constant> - <constant name="BODY_PARAM_MASS" value="2"> + <constant name="SLIDER_JOINT_ANGULAR_LIMIT_SOFTNESS" value="13"> </constant> - <constant name="BODY_PARAM_GRAVITY_SCALE" value="3"> + <constant name="SLIDER_JOINT_ANGULAR_LIMIT_RESTITUTION" value="14"> </constant> - <constant name="BODY_PARAM_ANGULAR_DAMP" value="5"> + <constant name="SLIDER_JOINT_ANGULAR_LIMIT_DAMPING" value="15"> </constant> - <constant name="BODY_PARAM_LINEAR_DAMP" value="4"> + <constant name="SLIDER_JOINT_ANGULAR_MOTION_SOFTNESS" value="16"> </constant> - <constant name="BODY_PARAM_MAX" value="6"> + <constant name="SLIDER_JOINT_ANGULAR_MOTION_RESTITUTION" value="17"> </constant> - <constant name="BODY_STATE_TRANSFORM" value="0"> + <constant name="SLIDER_JOINT_ANGULAR_MOTION_DAMPING" value="18"> </constant> - <constant name="BODY_STATE_LINEAR_VELOCITY" value="1"> + <constant name="SLIDER_JOINT_ANGULAR_ORTHOGONAL_SOFTNESS" value="19"> </constant> - <constant name="BODY_STATE_ANGULAR_VELOCITY" value="2"> + <constant name="SLIDER_JOINT_LINEAR_LIMIT_SOFTNESS" value="2"> </constant> - <constant name="BODY_STATE_SLEEPING" value="3"> + <constant name="SLIDER_JOINT_ANGULAR_ORTHOGONAL_RESTITUTION" value="20"> </constant> - <constant name="BODY_STATE_CAN_SLEEP" value="4"> + <constant name="SLIDER_JOINT_ANGULAR_ORTHOGONAL_DAMPING" value="21"> </constant> - <constant name="AREA_BODY_ADDED" value="0"> + <constant name="SLIDER_JOINT_MAX" value="22"> </constant> - <constant name="AREA_BODY_REMOVED" value="1"> + <constant name="SLIDER_JOINT_LINEAR_LIMIT_RESTITUTION" value="3"> </constant> - <constant name="INFO_ACTIVE_OBJECTS" value="0"> + <constant name="SLIDER_JOINT_LINEAR_LIMIT_DAMPING" value="4"> </constant> - <constant name="INFO_COLLISION_PAIRS" value="1"> + <constant name="SLIDER_JOINT_LINEAR_MOTION_SOFTNESS" value="5"> </constant> - <constant name="INFO_ISLAND_COUNT" value="2"> + <constant name="SLIDER_JOINT_LINEAR_MOTION_RESTITUTION" value="6"> + </constant> + <constant name="SLIDER_JOINT_LINEAR_MOTION_DAMPING" value="7"> + </constant> + <constant name="SLIDER_JOINT_LINEAR_ORTHOGONAL_SOFTNESS" value="8"> + </constant> + <constant name="SLIDER_JOINT_LINEAR_ORTHOGONAL_RESTITUTION" value="9"> </constant> </constants> </class> @@ -28294,45 +28530,45 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_shape"> - <argument index="0" name="shape" type="Shape"> - </argument> + <method name="get_exclude" qualifiers="const"> + <return type="Array"> + </return> <description> </description> </method> - <method name="set_shape_rid"> - <argument index="0" name="shape" type="RID"> - </argument> + <method name="get_layer_mask" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_shape_rid" qualifiers="const"> - <return type="RID"> + <method name="get_margin" qualifiers="const"> + <return type="float"> </return> <description> </description> </method> - <method name="set_transform"> - <argument index="0" name="transform" type="Transform"> - </argument> + <method name="get_object_type_mask" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_transform" qualifiers="const"> - <return type="Transform"> + <method name="get_shape_rid" qualifiers="const"> + <return type="RID"> </return> <description> </description> </method> - <method name="set_margin"> - <argument index="0" name="margin" type="float"> - </argument> + <method name="get_transform" qualifiers="const"> + <return type="Transform"> + </return> <description> </description> </method> - <method name="get_margin" qualifiers="const"> - <return type="float"> - </return> + <method name="set_exclude"> + <argument index="0" name="exclude" type="Array"> + </argument> <description> </description> </method> @@ -28342,9 +28578,9 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_layer_mask" qualifiers="const"> - <return type="int"> - </return> + <method name="set_margin"> + <argument index="0" name="margin" type="float"> + </argument> <description> </description> </method> @@ -28354,21 +28590,21 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_object_type_mask" qualifiers="const"> - <return type="int"> - </return> + <method name="set_shape"> + <argument index="0" name="shape" type="Shape"> + </argument> <description> </description> </method> - <method name="set_exclude"> - <argument index="0" name="exclude" type="Array"> + <method name="set_shape_rid"> + <argument index="0" name="shape" type="RID"> </argument> <description> </description> </method> - <method name="get_exclude" qualifiers="const"> - <return type="Array"> - </return> + <method name="set_transform"> + <argument index="0" name="transform" type="Transform"> + </argument> <description> </description> </method> @@ -28389,8 +28625,8 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_result_rid" qualifiers="const"> - <return type="RID"> + <method name="get_result_object" qualifiers="const"> + <return type="Object"> </return> <argument index="0" name="idx" type="int"> </argument> @@ -28405,16 +28641,16 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_result_object" qualifiers="const"> - <return type="Object"> + <method name="get_result_object_shape" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="get_result_object_shape" qualifiers="const"> - <return type="int"> + <method name="get_result_rid" qualifiers="const"> + <return type="RID"> </return> <argument index="0" name="idx" type="int"> </argument> @@ -28431,19 +28667,19 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_param"> + <method name="get_param" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="param" type="int"> </argument> - <argument index="1" name="value" type="float"> - </argument> <description> </description> </method> - <method name="get_param" qualifiers="const"> - <return type="float"> - </return> + <method name="set_param"> <argument index="0" name="param" type="int"> </argument> + <argument index="1" name="value" type="float"> + </argument> <description> </description> </method> @@ -28465,18 +28701,18 @@ This method controls whether the position between two cached points is interpola Pin Joint for 2D Rigid Bodies. It pins 2 bodies (rigid or static) together, or a single body to a fixed position in space. </description> <methods> - <method name="set_softness"> - <argument index="0" name="softness" type="float"> - </argument> - <description> - </description> - </method> <method name="get_softness" qualifiers="const"> <return type="float"> </return> <description> </description> </method> + <method name="set_softness"> + <argument index="0" name="softness" type="float"> + </argument> + <description> + </description> + </method> </methods> <constants> </constants> @@ -28489,6 +28725,45 @@ This method controls whether the position between two cached points is interpola Plane represents a normalized plane equation. Basically, "normal" is the normal of the plane (a,b,c normalized), and "d" is the distance from the origin to the plane (in the direction of "normal"). "Over" or "Above" the plane is considered the side of the plane towards where the normal is pointing. </description> <methods> + <method name="Plane"> + <return type="Plane"> + </return> + <argument index="0" name="a" type="float"> + </argument> + <argument index="1" name="b" type="float"> + </argument> + <argument index="2" name="c" type="float"> + </argument> + <argument index="3" name="d" type="float"> + </argument> + <description> + Creates a plane from the three parameters "a", "b", "c" and "d". + </description> + </method> + <method name="Plane"> + <return type="Plane"> + </return> + <argument index="0" name="v1" type="Vector3"> + </argument> + <argument index="1" name="v2" type="Vector3"> + </argument> + <argument index="2" name="v3" type="Vector3"> + </argument> + <description> + Creates a plane from three points. + </description> + </method> + <method name="Plane"> + <return type="Plane"> + </return> + <argument index="0" name="normal" type="Vector3"> + </argument> + <argument index="1" name="d" type="float"> + </argument> + <description> + Creates a plane from the normal and the plane's distance to the origin. + </description> + </method> <method name="center"> <return type="Vector3"> </return> @@ -28581,47 +28856,10 @@ This method controls whether the position between two cached points is interpola Returns the orthogonal projection of point "p" into a point in the plane. </description> </method> - <method name="Plane"> - <return type="Plane"> - </return> - <argument index="0" name="a" type="float"> - </argument> - <argument index="1" name="b" type="float"> - </argument> - <argument index="2" name="c" type="float"> - </argument> - <argument index="3" name="d" type="float"> - </argument> - <description> - Creates a plane from the three parameters "a", "b", "c" and "d". - </description> - </method> - <method name="Plane"> - <return type="Plane"> - </return> - <argument index="0" name="v1" type="Vector3"> - </argument> - <argument index="1" name="v2" type="Vector3"> - </argument> - <argument index="2" name="v3" type="Vector3"> - </argument> - <description> - Creates a plane from three points. - </description> - </method> - <method name="Plane"> - <return type="Plane"> - </return> - <argument index="0" name="normal" type="Vector3"> - </argument> - <argument index="1" name="d" type="float"> - </argument> - <description> - Creates a plane from the normal and the plane's distance to the origin. - </description> - </method> </methods> <members> + <member name="d" type="float"> + </member> <member name="normal" type="Vector3"> </member> <member name="x" type="float"> @@ -28630,8 +28868,6 @@ This method controls whether the position between two cached points is interpola </member> <member name="z" type="float"> </member> - <member name="d" type="float"> - </member> </members> <constants> </constants> @@ -28642,18 +28878,18 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_plane"> - <argument index="0" name="plane" type="Plane"> - </argument> - <description> - </description> - </method> <method name="get_plane" qualifiers="const"> <return type="Plane"> </return> <description> </description> </method> + <method name="set_plane"> + <argument index="0" name="plane" type="Plane"> + </argument> + <description> + </description> + </method> </methods> <constants> </constants> @@ -28666,159 +28902,159 @@ This method controls whether the position between two cached points is interpola A Polygon2D is defined by a set of n vertices connected together by line segments, meaning that the vertex 1 will be connected with vertex 2, vertex 2 with vertex 3 ..., vertex n-1 with vertex n and vertex n with vertex 1 in order to close the loop and define a polygon. </description> <methods> - <method name="set_polygon"> - <argument index="0" name="polygon" type="Vector2Array"> - </argument> + <method name="get_color" qualifiers="const"> + <return type="Color"> + </return> <description> - Define the set of vertices that will represent the polygon. + Return the polygon fill color. </description> </method> - <method name="get_polygon" qualifiers="const"> - <return type="Vector2Array"> + <method name="get_invert" qualifiers="const"> + <return type="bool"> </return> <description> - Return the set of vertices that defines this polygon. + Return whether this polygon is inverted or not. </description> </method> - <method name="set_uv"> - <argument index="0" name="uv" type="Vector2Array"> - </argument> + <method name="get_invert_border" qualifiers="const"> + <return type="float"> + </return> <description> - Set the texture coordinates for every vertex of the polygon. There should be one uv vertex for every vertex in the polygon. If there are less, the undefined ones will be assumed to be (0,0). Extra uv vertices are ignored. + Return the added padding around the bounding box. </description> </method> - <method name="get_uv" qualifiers="const"> - <return type="Vector2Array"> + <method name="get_offset" qualifiers="const"> + <return type="Vector2"> </return> <description> - Return the texture coordinates associated with every vertex of the polygon. + Return the offset for the polygon vertices. </description> </method> - <method name="set_color"> - <argument index="0" name="color" type="Color"> - </argument> + <method name="get_polygon" qualifiers="const"> + <return type="Vector2Array"> + </return> <description> - Set the polygon fill color. If the polygon has a texture defined, the defined texture will be multiplied by the polygon fill color. This, also, is the default color for those vertices that are not defined by [method get_vertex_colors]. + Return the set of vertices that defines this polygon. </description> </method> - <method name="get_color" qualifiers="const"> - <return type="Color"> + <method name="get_texture" qualifiers="const"> + <return type="Object"> </return> <description> - Return the polygon fill color. + Return the polygon texture </description> </method> - <method name="set_vertex_colors"> - <argument index="0" name="vertex_colors" type="ColorArray"> - </argument> + <method name="get_texture_offset" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Set the color for each vertex of the polygon. There should be one color for every vertex in the polygon. If there are less, the undefined ones will be assumed to be [method get_color]. Extra color entries are ignored. - Colors are interpolated between vertices, resulting in smooth gradients when they differ. + Return the polygon texture offset. </description> </method> - <method name="get_vertex_colors" qualifiers="const"> - <return type="ColorArray"> + <method name="get_texture_rotation" qualifiers="const"> + <return type="float"> </return> <description> - Return the list of vertex colors. + Return the rotation in radians of the texture polygon. </description> </method> - <method name="set_texture"> - <argument index="0" name="texture" type="Object"> - </argument> + <method name="get_texture_scale" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Set the polygon texture. + Return the uv coordinate multiplier. </description> </method> - <method name="get_texture" qualifiers="const"> - <return type="Object"> + <method name="get_uv" qualifiers="const"> + <return type="Vector2Array"> </return> <description> - Return the polygon texture + Return the texture coordinates associated with every vertex of the polygon. </description> </method> - <method name="set_texture_offset"> - <argument index="0" name="texture_offset" type="Vector2"> - </argument> + <method name="get_vertex_colors" qualifiers="const"> + <return type="ColorArray"> + </return> <description> - Set the offset of the polygon texture. Initially the texture will appear anchored to the polygon position, the offset is used to move the texture location away from that point (notice that the texture origin is set to its top left corner, so when offset is 0,0 the top left corner of the texture is at the polygon position), for example setting the offset to 10, 10 will move the texture 10 units to the left and 10 units to the top. + Return the list of vertex colors. </description> </method> - <method name="get_texture_offset" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_color"> + <argument index="0" name="color" type="Color"> + </argument> <description> - Return the polygon texture offset. + Set the polygon fill color. If the polygon has a texture defined, the defined texture will be multiplied by the polygon fill color. This, also, is the default color for those vertices that are not defined by [method get_vertex_colors]. </description> </method> - <method name="set_texture_rotation"> - <argument index="0" name="texture_rotation" type="float"> + <method name="set_invert"> + <argument index="0" name="invert" type="bool"> </argument> <description> - Set the amount of rotation of the polygon texture, [code]texture_rotation[/code] is specified in radians and clockwise rotation. + Set the polygon as the defined polygon bounding box minus the defined polygon (the defined polygon will appear as a hole on the square that contains the defined polygon). </description> </method> - <method name="get_texture_rotation" qualifiers="const"> - <return type="float"> - </return> + <method name="set_invert_border"> + <argument index="0" name="invert_border" type="float"> + </argument> <description> - Return the rotation in radians of the texture polygon. + Add extra padding around the bounding box, making it bigger. Too small a value can make the polygon triangulate strangely, due to numerical imprecision. </description> </method> - <method name="set_texture_scale"> - <argument index="0" name="texture_scale" type="Vector2"> + <method name="set_offset"> + <argument index="0" name="offset" type="Vector2"> </argument> <description> - Set the value that will multiply the uv coordinates ([method get_uv]) when applying the texture. Larger values make the texture smaller, and vice versa. + Set the an offset that will be added to the vertices' position. E.g. if the offset is set to (10,10) then all the polygon points will move 10 units to the right and 10 units to the bottom. </description> </method> - <method name="get_texture_scale" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_polygon"> + <argument index="0" name="polygon" type="Vector2Array"> + </argument> <description> - Return the uv coordinate multiplier. + Define the set of vertices that will represent the polygon. </description> </method> - <method name="set_invert"> - <argument index="0" name="invert" type="bool"> + <method name="set_texture"> + <argument index="0" name="texture" type="Object"> </argument> <description> - Set the polygon as the defined polygon bounding box minus the defined polygon (the defined polygon will appear as a hole on the square that contains the defined polygon). + Set the polygon texture. </description> </method> - <method name="get_invert" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_texture_offset"> + <argument index="0" name="texture_offset" type="Vector2"> + </argument> <description> - Return whether this polygon is inverted or not. + Set the offset of the polygon texture. Initially the texture will appear anchored to the polygon position, the offset is used to move the texture location away from that point (notice that the texture origin is set to its top left corner, so when offset is 0,0 the top left corner of the texture is at the polygon position), for example setting the offset to 10, 10 will move the texture 10 units to the left and 10 units to the top. </description> </method> - <method name="set_invert_border"> - <argument index="0" name="invert_border" type="float"> + <method name="set_texture_rotation"> + <argument index="0" name="texture_rotation" type="float"> </argument> <description> - Add extra padding around the bounding box, making it bigger. Too small a value can make the polygon triangulate strangely, due to numerical imprecision. + Set the amount of rotation of the polygon texture, [code]texture_rotation[/code] is specified in radians and clockwise rotation. </description> </method> - <method name="get_invert_border" qualifiers="const"> - <return type="float"> - </return> + <method name="set_texture_scale"> + <argument index="0" name="texture_scale" type="Vector2"> + </argument> <description> - Return the added padding around the bounding box. + Set the value that will multiply the uv coordinates ([method get_uv]) when applying the texture. Larger values make the texture smaller, and vice versa. </description> </method> - <method name="set_offset"> - <argument index="0" name="offset" type="Vector2"> + <method name="set_uv"> + <argument index="0" name="uv" type="Vector2Array"> </argument> <description> - Set the an offset that will be added to the vertices' position. E.g. if the offset is set to (10,10) then all the polygon points will move 10 units to the right and 10 units to the bottom. + Set the texture coordinates for every vertex of the polygon. There should be one uv vertex for every vertex in the polygon. If there are less, the undefined ones will be assumed to be (0,0). Extra uv vertices are ignored. </description> </method> - <method name="get_offset" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_vertex_colors"> + <argument index="0" name="vertex_colors" type="ColorArray"> + </argument> <description> - Return the offset for the polygon vertices. + Set the color for each vertex of the polygon. There should be one color for every vertex in the polygon. If there are less, the undefined ones will be assumed to be [method get_color]. Extra color entries are ignored. + Colors are interpolated between vertices, resulting in smooth gradients when they differ. </description> </method> </methods> @@ -28831,14 +29067,6 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="setup"> - <argument index="0" name="points" type="Vector2Array"> - </argument> - <argument index="1" name="connections" type="IntArray"> - </argument> - <description> - </description> - </method> <method name="find_path"> <return type="Vector2Array"> </return> @@ -28849,6 +29077,20 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> + <method name="get_bounds" qualifiers="const"> + <return type="Rect2"> + </return> + <description> + </description> + </method> + <method name="get_closest_point" qualifiers="const"> + <return type="Vector2"> + </return> + <argument index="0" name="point" type="Vector2"> + </argument> + <description> + </description> + </method> <method name="get_intersections" qualifiers="const"> <return type="Vector2Array"> </return> @@ -28859,10 +29101,10 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_closest_point" qualifiers="const"> - <return type="Vector2"> + <method name="get_point_penalty" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="point" type="Vector2"> + <argument index="0" name="idx" type="int"> </argument> <description> </description> @@ -28883,17 +29125,11 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_point_penalty" qualifiers="const"> - <return type="float"> - </return> - <argument index="0" name="idx" type="int"> + <method name="setup"> + <argument index="0" name="points" type="Vector2Array"> + </argument> + <argument index="1" name="connections" type="IntArray"> </argument> - <description> - </description> - </method> - <method name="get_bounds" qualifiers="const"> - <return type="Rect2"> - </return> <description> </description> </method> @@ -28909,18 +29145,23 @@ This method controls whether the position between two cached points is interpola Popup is a base [Control] used to show dialogs and popups. It's a subwindow and modal by default (see [Control]) and has helpers for custom popup behavior. </description> <methods> - <method name="popup_centered"> - <argument index="0" name="size" type="Vector2" default="Vector2(0,0)"> - </argument> + <method name="is_exclusive" qualifiers="const"> + <return type="bool"> + </return> <description> - Popup (show the control in modal form) in the center of the screen, at the current size, or at a size determined by "size". + Returns whether the popup will hide other popups when shown on the screen. </description> </method> - <method name="popup_centered_ratio"> - <argument index="0" name="ratio" type="float" default="0.75"> + <method name="popup"> + <description> + Popup (show the control in modal form). + </description> + </method> + <method name="popup_centered"> + <argument index="0" name="size" type="Vector2" default="Vector2(0,0)"> </argument> <description> - Popup (show the control in modal form) in the center of the screen, scaled at a ratio of size of the screen. + Popup (show the control in modal form) in the center of the screen, at the current size, or at a size determined by "size". </description> </method> <method name="popup_centered_minsize"> @@ -28930,9 +29171,11 @@ This method controls whether the position between two cached points is interpola Popup (show the control in modal form) in the center of the screen, ensuring the size is never smaller than [code]minsize[/code]. </description> </method> - <method name="popup"> + <method name="popup_centered_ratio"> + <argument index="0" name="ratio" type="float" default="0.75"> + </argument> <description> - Popup (show the control in modal form). + Popup (show the control in modal form) in the center of the screen, scaled at a ratio of size of the screen. </description> </method> <method name="set_exclusive"> @@ -28942,23 +29185,16 @@ This method controls whether the position between two cached points is interpola Make the popup hide other popups when shown on the screen. </description> </method> - <method name="is_exclusive" qualifiers="const"> - <return type="bool"> - </return> - <description> - Returns whether the popup will hide other popups when shown on the screen. - </description> - </method> </methods> <signals> - <signal name="popup_hide"> + <signal name="about_to_show"> <description> - This signal is emitted when a popup is hidden. + This signal is emitted when a popup is about to be shown. (often used in [PopupMenu] for clearing the list of options and creating a new one according to the current context). </description> </signal> - <signal name="about_to_show"> + <signal name="popup_hide"> <description> - This signal is emitted when a popup is about to be shown. (often used in [PopupMenu] for clearing the list of options and creating a new one according to the current context). + This signal is emitted when a popup is hidden. </description> </signal> </signals> @@ -28991,28 +29227,23 @@ This method controls whether the position between two cached points is interpola PopupMenu is the typical Control that displays a list of options. They are popular in toolbars or context menus. </description> <methods> - <method name="add_icon_item"> - <argument index="0" name="texture" type="Object"> - </argument> - <argument index="1" name="label" type="String"> + <method name="add_check_item"> + <argument index="0" name="label" type="String"> </argument> - <argument index="2" name="id" type="int" default="-1"> + <argument index="1" name="id" type="int" default="-1"> </argument> - <argument index="3" name="accel" type="int" default="0"> + <argument index="2" name="accel" type="int" default="0"> </argument> <description> - Add a new item with text "label" and icon "texture". An id can optionally be provided, as well as an accelerator keybinding. If no id is provided, one will be created from the index. + Add a new checkable item with text "label". An id can optionally be provided, as well as an accelerator. If no id is provided, one will be created from the index. Note that checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. </description> </method> - <method name="add_item"> - <argument index="0" name="label" type="String"> + <method name="add_check_shortcut"> + <argument index="0" name="shortcut" type="ShortCut"> </argument> <argument index="1" name="id" type="int" default="-1"> </argument> - <argument index="2" name="accel" type="int" default="0"> - </argument> <description> - Add a new item with text "label". An id can optionally be provided, as well as an accelerator keybinding. If no id is provided, one will be created from the index. </description> </method> <method name="add_icon_check_item"> @@ -29028,26 +29259,27 @@ This method controls whether the position between two cached points is interpola Add a new checkable item with text "label" and icon "texture". An id can optionally be provided, as well as an accelerator. If no id is provided, one will be created from the index. Note that checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. </description> </method> - <method name="add_check_item"> - <argument index="0" name="label" type="String"> + <method name="add_icon_check_shortcut"> + <argument index="0" name="texture" type="Object"> </argument> - <argument index="1" name="id" type="int" default="-1"> + <argument index="1" name="shortcut" type="ShortCut"> </argument> - <argument index="2" name="accel" type="int" default="0"> + <argument index="2" name="id" type="int" default="-1"> </argument> <description> - Add a new checkable item with text "label". An id can optionally be provided, as well as an accelerator. If no id is provided, one will be created from the index. Note that checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. </description> </method> - <method name="add_submenu_item"> - <argument index="0" name="label" type="String"> + <method name="add_icon_item"> + <argument index="0" name="texture" type="Object"> </argument> - <argument index="1" name="submenu" type="String"> + <argument index="1" name="label" type="String"> </argument> <argument index="2" name="id" type="int" default="-1"> </argument> + <argument index="3" name="accel" type="int" default="0"> + </argument> <description> - Adds an item with a submenu. The submenu is the name of a child PopupMenu node that would be shown when the item is clicked. An id can optionally be provided, but if is isn't provided, one will be created from the index. + Add a new item with text "label" and icon "texture". An id can optionally be provided, as well as an accelerator keybinding. If no id is provided, one will be created from the index. </description> </method> <method name="add_icon_shortcut"> @@ -29060,25 +29292,23 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="add_shortcut"> - <argument index="0" name="shortcut" type="ShortCut"> + <method name="add_item"> + <argument index="0" name="label" type="String"> </argument> <argument index="1" name="id" type="int" default="-1"> </argument> + <argument index="2" name="accel" type="int" default="0"> + </argument> <description> + Add a new item with text "label". An id can optionally be provided, as well as an accelerator keybinding. If no id is provided, one will be created from the index. </description> </method> - <method name="add_icon_check_shortcut"> - <argument index="0" name="texture" type="Object"> - </argument> - <argument index="1" name="shortcut" type="ShortCut"> - </argument> - <argument index="2" name="id" type="int" default="-1"> - </argument> + <method name="add_separator"> <description> + Add a separator between items. Separators also occupy an index. </description> </method> - <method name="add_check_shortcut"> + <method name="add_shortcut"> <argument index="0" name="shortcut" type="ShortCut"> </argument> <argument index="1" name="id" type="int" default="-1"> @@ -29086,102 +29316,87 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_item_text"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="text" type="String"> + <method name="add_submenu_item"> + <argument index="0" name="label" type="String"> </argument> - <description> - Set the text of the item at index "idx". - </description> - </method> - <method name="set_item_icon"> - <argument index="0" name="idx" type="int"> + <argument index="1" name="submenu" type="String"> </argument> - <argument index="1" name="icon" type="Object"> + <argument index="2" name="id" type="int" default="-1"> </argument> <description> - Set the icon of the item at index "idx". + Adds an item with a submenu. The submenu is the name of a child PopupMenu node that would be shown when the item is clicked. An id can optionally be provided, but if is isn't provided, one will be created from the index. </description> </method> - <method name="set_item_accelerator"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="accel" type="int"> - </argument> + <method name="clear"> <description> - Set the accelerator of the item at index "idx". Accelerators are special combinations of keys that activate the item, no matter which control is focused. + Clear the popup menu, in effect removing all items. </description> </method> - <method name="set_item_metadata"> + <method name="get_item_ID" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="metadata" type="Variant"> - </argument> <description> - Sets the metadata of an item, which might be of any type. You can later get it with [method get_item_metadata], which provides a simple way of assigning context data to items. + Return the id of the item at index "idx". </description> </method> - <method name="set_item_checked"> + <method name="get_item_accelerator" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="checked" type="bool"> - </argument> <description> - Set the checkstate status of the item at index "idx". + Return the accelerator of the item at index "idx". Accelerators are special combinations of keys that activate the item, no matter which control is focused. </description> </method> - <method name="set_item_disabled"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="disabled" type="bool"> - </argument> + <method name="get_item_count" qualifiers="const"> + <return type="int"> + </return> <description> - Sets whether the item at index "idx" is disabled or not. When it is disabled it can't be selected, or its action invoked. + Return the amount of items. </description> </method> - <method name="set_item_shortcut"> + <method name="get_item_icon" qualifiers="const"> + <return type="Object"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="shortcut" type="ShortCut"> - </argument> <description> + Return the icon of the item at index "idx". </description> </method> - <method name="set_item_submenu"> - <argument index="0" name="idx" type="int"> - </argument> - <argument index="1" name="submenu" type="String"> + <method name="get_item_index" qualifiers="const"> + <return type="int"> + </return> + <argument index="0" name="id" type="int"> </argument> <description> - Sets the submenu of the item at index "idx". The submenu is the name of a child PopupMenu node that would be shown when the item is clicked. + Find and return the index of the item containing a given id. </description> </method> - <method name="set_item_as_separator"> + <method name="get_item_metadata" qualifiers="const"> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="enable" type="bool"> - </argument> <description> - Mark the item at index "idx" as a seperator, which means that it would be displayed as a mere line. + Return the metadata of an item, which might be of any type. You can set it with [method set_item_metadata], which provides a simple way of assigning context data to items. </description> </method> - <method name="set_item_as_checkable"> + <method name="get_item_shortcut" qualifiers="const"> + <return type="ShortCut"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="enable" type="bool"> - </argument> <description> - Set whether the item at index "idx" has a checkbox. Note that checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. </description> </method> - <method name="set_item_ID"> + <method name="get_item_submenu" qualifiers="const"> + <return type="String"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="id" type="int"> - </argument> <description> - Set the id of the item at index "idx". + Return the submenu name of the item at index "idx". </description> </method> <method name="get_item_text" qualifiers="const"> @@ -29193,124 +29408,145 @@ This method controls whether the position between two cached points is interpola Return the text of the item at index "idx". </description> </method> - <method name="get_item_icon" qualifiers="const"> - <return type="Object"> + <method name="is_item_checkable" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="idx" type="int"> </argument> <description> - Return the icon of the item at index "idx". + Return whether the item at index "idx" has a checkbox. Note that checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. </description> </method> - <method name="get_item_metadata" qualifiers="const"> + <method name="is_item_checked" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="idx" type="int"> </argument> <description> - Return the metadata of an item, which might be of any type. You can set it with [method set_item_metadata], which provides a simple way of assigning context data to items. + Return the checkstate status of the item at index "idx". </description> </method> - <method name="get_item_accelerator" qualifiers="const"> - <return type="int"> + <method name="is_item_disabled" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="idx" type="int"> </argument> <description> - Return the accelerator of the item at index "idx". Accelerators are special combinations of keys that activate the item, no matter which control is focused. + Return whether the item at index "idx" is disabled. When it is disabled it can't be selected, or its action invoked. </description> </method> - <method name="get_item_shortcut" qualifiers="const"> - <return type="ShortCut"> + <method name="is_item_separator" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="idx" type="int"> </argument> <description> + Return whether the item is a seperator. If it is, it would be displayed as a line. </description> </method> - <method name="get_item_submenu" qualifiers="const"> - <return type="String"> - </return> + <method name="remove_item"> <argument index="0" name="idx" type="int"> </argument> <description> - Return the submenu name of the item at index "idx". + Removes the item at index "idx" from the menu. Note that the indexes of items after the removed item are going to be shifted by one. </description> </method> - <method name="is_item_separator" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_item_ID"> <argument index="0" name="idx" type="int"> </argument> + <argument index="1" name="id" type="int"> + </argument> <description> - Return whether the item is a seperator. If it is, it would be displayed as a line. + Set the id of the item at index "idx". </description> </method> - <method name="is_item_checkable" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_item_accelerator"> <argument index="0" name="idx" type="int"> </argument> + <argument index="1" name="accel" type="int"> + </argument> <description> - Return whether the item at index "idx" has a checkbox. Note that checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. + Set the accelerator of the item at index "idx". Accelerators are special combinations of keys that activate the item, no matter which control is focused. </description> </method> - <method name="is_item_checked" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_item_as_checkable"> <argument index="0" name="idx" type="int"> </argument> + <argument index="1" name="enable" type="bool"> + </argument> <description> - Return the checkstate status of the item at index "idx". + Set whether the item at index "idx" has a checkbox. Note that checkable items just display a checkmark, but don't have any built-in checking behavior and must be checked/unchecked manually. </description> </method> - <method name="is_item_disabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_item_as_separator"> <argument index="0" name="idx" type="int"> </argument> + <argument index="1" name="enable" type="bool"> + </argument> <description> - Return whether the item at index "idx" is disabled. When it is disabled it can't be selected, or its action invoked. + Mark the item at index "idx" as a seperator, which means that it would be displayed as a mere line. </description> </method> - <method name="get_item_ID" qualifiers="const"> - <return type="int"> - </return> + <method name="set_item_checked"> <argument index="0" name="idx" type="int"> </argument> + <argument index="1" name="checked" type="bool"> + </argument> <description> - Return the id of the item at index "idx". + Set the checkstate status of the item at index "idx". </description> </method> - <method name="get_item_index" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="id" type="int"> + <method name="set_item_disabled"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="disabled" type="bool"> </argument> <description> - Find and return the index of the item containing a given id. + Sets whether the item at index "idx" is disabled or not. When it is disabled it can't be selected, or its action invoked. </description> </method> - <method name="get_item_count" qualifiers="const"> - <return type="int"> - </return> + <method name="set_item_icon"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="icon" type="Object"> + </argument> <description> - Return the amount of items. + Set the icon of the item at index "idx". </description> </method> - <method name="add_separator"> + <method name="set_item_metadata"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="metadata" type="Variant"> + </argument> <description> - Add a separator between items. Separators also occupy an index. + Sets the metadata of an item, which might be of any type. You can later get it with [method get_item_metadata], which provides a simple way of assigning context data to items. </description> </method> - <method name="remove_item"> + <method name="set_item_shortcut"> <argument index="0" name="idx" type="int"> </argument> + <argument index="1" name="shortcut" type="ShortCut"> + </argument> <description> - Removes the item at index "idx" from the menu. Note that the indexes of items after the removed item are going to be shifted by one. </description> </method> - <method name="clear"> + <method name="set_item_submenu"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="submenu" type="String"> + </argument> <description> - Clear the popup menu, in effect removing all items. + Sets the submenu of the item at index "idx". The submenu is the name of a child PopupMenu node that would be shown when the item is clicked. + </description> + </method> + <method name="set_item_text"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="text" type="String"> + </argument> + <description> + Set the text of the item at index "idx". </description> </method> </methods> @@ -29326,33 +29562,33 @@ This method controls whether the position between two cached points is interpola <constants> </constants> <theme_items> - <theme_item name="vseparation" type="int"> + <theme_item name="checked" type="Texture"> </theme_item> - <theme_item name="hseparation" type="int"> + <theme_item name="font" type="Font"> </theme_item> - <theme_item name="font_color_disabled" type="Color"> + <theme_item name="font_color" type="Color"> </theme_item> <theme_item name="font_color_accel" type="Color"> </theme_item> - <theme_item name="font_color" type="Color"> + <theme_item name="font_color_disabled" type="Color"> </theme_item> <theme_item name="font_color_hover" type="Color"> </theme_item> - <theme_item name="submenu" type="Texture"> + <theme_item name="hover" type="StyleBox"> </theme_item> - <theme_item name="checked" type="Texture"> + <theme_item name="hseparation" type="int"> </theme_item> - <theme_item name="unchecked" type="Texture"> + <theme_item name="panel" type="StyleBox"> </theme_item> - <theme_item name="font" type="Font"> + <theme_item name="panel_disabled" type="StyleBox"> </theme_item> - <theme_item name="hover" type="StyleBox"> + <theme_item name="separator" type="StyleBox"> </theme_item> - <theme_item name="panel_disabled" type="StyleBox"> + <theme_item name="submenu" type="Texture"> </theme_item> - <theme_item name="panel" type="StyleBox"> + <theme_item name="unchecked" type="Texture"> </theme_item> - <theme_item name="separator" type="StyleBox"> + <theme_item name="vseparation" type="int"> </theme_item> </theme_items> </class> @@ -29380,25 +29616,32 @@ This method controls whether the position between two cached points is interpola Portals provide virtual openings to [VisualInstance] nodes, so cameras can look at them from the outside. Note that portals are a visibility optimization technique, and are in no way related to the game of the same name (as in, they are not used for teleportation). For more information on how rooms and portals work, see [VisualInstance]. Portals are represented as 2D convex polygon shapes (in the X,Y local plane), and are placed on the surface of the areas occupied by a [VisualInstance], to indicate that the room can be accessed or looked-at through them. If two rooms are next to each other, and two similar portals in each of them share the same world position (and are parallel and opposed to each other), they will automatically "connect" and form "doors" (for example, the portals that connect a kitchen to a living room are placed in the door they share). Portals must always have a [VisualInstance] node as a parent, grandparent or far parent, or else they will not be active. </description> <methods> - <method name="set_shape"> - <argument index="0" name="points" type="Vector2Array"> - </argument> + <method name="get_connect_range" qualifiers="const"> + <return type="float"> + </return> <description> - Set the portal shape. The shape is an array of [Vector2] points, representing a convex polygon in the X,Y plane. + Return the range for auto-connecting two portals from different rooms sharing the same space. </description> </method> - <method name="get_shape" qualifiers="const"> - <return type="Vector2Array"> + <method name="get_disable_distance" qualifiers="const"> + <return type="float"> </return> <description> - Return the portal shape. The shape is an array of [Vector2] points, representing a convex polygon in the X,Y plane. + Return the distance threshold for disabling the portal. Every time that the portal goes beyond "distance", it disables itself, becoming the opaque color (see [method set_disabled_color]). </description> </method> - <method name="set_enabled"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_disabled_color" qualifiers="const"> + <return type="Color"> + </return> <description> - Enable the portal (it is enabled by default though), disabling it will cause the parent [VisualInstance] to not be visible any longer when looking through the portal. + Return the color for when the portal goes beyond the disable distance (see [method set_disable_distance]) and becomes disabled. + </description> + </method> + <method name="get_shape" qualifiers="const"> + <return type="Vector2Array"> + </return> + <description> + Return the portal shape. The shape is an array of [Vector2] points, representing a convex polygon in the X,Y plane. </description> </method> <method name="is_enabled" qualifiers="const"> @@ -29408,18 +29651,18 @@ This method controls whether the position between two cached points is interpola Return whether the portal is active. When disabled it causes the parent [VisualInstance] to not be visible any longer when looking through the portal. </description> </method> - <method name="set_disable_distance"> - <argument index="0" name="distance" type="float"> + <method name="set_connect_range"> + <argument index="0" name="range" type="float"> </argument> <description> - Set the distance threshold for disabling the portal. Every time that the portal goes beyond "distance", it disables itself, becoming the opaque color (see [method set_disabled_color]). + Set the range for auto-connecting two portals from different rooms sharing the same space. </description> </method> - <method name="get_disable_distance" qualifiers="const"> - <return type="float"> - </return> + <method name="set_disable_distance"> + <argument index="0" name="distance" type="float"> + </argument> <description> - Return the distance threshold for disabling the portal. Every time that the portal goes beyond "distance", it disables itself, becoming the opaque color (see [method set_disabled_color]). + Set the distance threshold for disabling the portal. Every time that the portal goes beyond "distance", it disables itself, becoming the opaque color (see [method set_disabled_color]). </description> </method> <method name="set_disabled_color"> @@ -29429,25 +29672,18 @@ This method controls whether the position between two cached points is interpola When the portal goes beyond the disable distance (see [method set_disable_distance]), it becomes opaque and displayed with color "color". </description> </method> - <method name="get_disabled_color" qualifiers="const"> - <return type="Color"> - </return> - <description> - Return the color for when the portal goes beyond the disable distance (see [method set_disable_distance]) and becomes disabled. - </description> - </method> - <method name="set_connect_range"> - <argument index="0" name="range" type="float"> + <method name="set_enabled"> + <argument index="0" name="enable" type="bool"> </argument> <description> - Set the range for auto-connecting two portals from different rooms sharing the same space. + Enable the portal (it is enabled by default though), disabling it will cause the parent [VisualInstance] to not be visible any longer when looking through the portal. </description> </method> - <method name="get_connect_range" qualifiers="const"> - <return type="float"> - </return> + <method name="set_shape"> + <argument index="0" name="points" type="Vector2Array"> + </argument> <description> - Return the range for auto-connecting two portals from different rooms sharing the same space. + Set the portal shape. The shape is an array of [Vector2] points, representing a convex polygon in the X,Y plane. </description> </method> </methods> @@ -29486,31 +29722,31 @@ This method controls whether the position between two cached points is interpola General purpose progress bar. Shows fill percentage from right to left. </description> <methods> - <method name="set_percent_visible"> - <argument index="0" name="visible" type="bool"> - </argument> - <description> - </description> - </method> <method name="is_percent_visible" qualifiers="const"> <return type="bool"> </return> <description> </description> </method> + <method name="set_percent_visible"> + <argument index="0" name="visible" type="bool"> + </argument> + <description> + </description> + </method> </methods> <constants> </constants> <theme_items> - <theme_item name="font_color" type="Color"> + <theme_item name="bg" type="StyleBox"> </theme_item> - <theme_item name="font_color_shadow" type="Color"> + <theme_item name="fg" type="StyleBox"> </theme_item> <theme_item name="font" type="Font"> </theme_item> - <theme_item name="fg" type="StyleBox"> + <theme_item name="font_color" type="Color"> </theme_item> - <theme_item name="bg" type="StyleBox"> + <theme_item name="font_color_shadow" type="Color"> </theme_item> </theme_items> </class> @@ -29522,12 +29758,6 @@ This method controls whether the position between two cached points is interpola General purpose proximity-detection node. </description> <methods> - <method name="set_group_name"> - <argument index="0" name="name" type="String"> - </argument> - <description> - </description> - </method> <method name="broadcast"> <argument index="0" name="name" type="String"> </argument> @@ -29536,6 +29766,12 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> + <method name="get_grid_radius" qualifiers="const"> + <return type="Vector3"> + </return> + <description> + </description> + </method> <method name="set_dispatch_mode"> <argument index="0" name="mode" type="int"> </argument> @@ -29548,9 +29784,9 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_grid_radius" qualifiers="const"> - <return type="Vector3"> - </return> + <method name="set_group_name"> + <argument index="0" name="name" type="String"> + </argument> <description> </description> </method> @@ -29574,21 +29810,15 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_axis"> - <argument index="0" name="axis" type="int"> - </argument> - <description> - </description> - </method> <method name="get_axis" qualifiers="const"> <return type="int"> </return> <description> </description> </method> - <method name="set_size"> - <argument index="0" name="size" type="Vector2"> - </argument> + <method name="get_offset" qualifiers="const"> + <return type="Vector2"> + </return> <description> </description> </method> @@ -29598,15 +29828,21 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_centered"> - <argument index="0" name="centered" type="bool"> + <method name="is_centered" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> + <method name="set_axis"> + <argument index="0" name="axis" type="int"> </argument> <description> </description> </method> - <method name="is_centered" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_centered"> + <argument index="0" name="centered" type="bool"> + </argument> <description> </description> </method> @@ -29616,9 +29852,9 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_offset" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_size"> + <argument index="0" name="size" type="Vector2"> + </argument> <description> </description> </method> @@ -29634,6 +29870,38 @@ This method controls whether the position between two cached points is interpola Quaternion is a 4 dimensional vector that is used to represent a rotation. It mainly exists to perform SLERP (spherical-linear interpolation) between to rotations obtained by a Matrix3 cheaply. Adding quaternions also cheaply adds the rotations, however quaternions need to be often normalized, or else they suffer from precision issues. </description> <methods> + <method name="Quat"> + <return type="Quat"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <argument index="1" name="y" type="float"> + </argument> + <argument index="2" name="z" type="float"> + </argument> + <argument index="3" name="w" type="float"> + </argument> + <description> + </description> + </method> + <method name="Quat"> + <return type="Quat"> + </return> + <argument index="0" name="axis" type="Vector3"> + </argument> + <argument index="1" name="angle" type="float"> + </argument> + <description> + </description> + </method> + <method name="Quat"> + <return type="Quat"> + </return> + <argument index="0" name="from" type="Matrix3"> + </argument> + <description> + </description> + </method> <method name="cubic_slerp"> <return type="Quat"> </return> @@ -29714,48 +29982,16 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="Quat"> - <return type="Quat"> - </return> - <argument index="0" name="x" type="float"> - </argument> - <argument index="1" name="y" type="float"> - </argument> - <argument index="2" name="z" type="float"> - </argument> - <argument index="3" name="w" type="float"> - </argument> - <description> - </description> - </method> - <method name="Quat"> - <return type="Quat"> - </return> - <argument index="0" name="axis" type="Vector3"> - </argument> - <argument index="1" name="angle" type="float"> - </argument> - <description> - </description> - </method> - <method name="Quat"> - <return type="Quat"> - </return> - <argument index="0" name="from" type="Matrix3"> - </argument> - <description> - </description> - </method> </methods> <members> + <member name="w" type="float"> + </member> <member name="x" type="float"> </member> <member name="y" type="float"> </member> <member name="z" type="float"> </member> - <member name="w" type="float"> - </member> </members> <constants> </constants> @@ -29766,12 +30002,6 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="get_id"> - <return type="int"> - </return> - <description> - </description> - </method> <method name="RID"> <return type="RID"> </return> @@ -29780,6 +30010,12 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> + <method name="get_id"> + <return type="int"> + </return> + <description> + </description> + </method> </methods> <constants> </constants> @@ -29792,71 +30028,70 @@ This method controls whether the position between two cached points is interpola Range is a base class for [Control] nodes that change a floating point [i]value[/i] between a [i]minimum[/i] and a [i]maximum[/i], using [i]step[/i] and [i]page[/i], for example a [ScrollBar]. </description> <methods> - <method name="get_val" qualifiers="const"> + <method name="get_max" qualifiers="const"> <return type="float"> </return> <description> - Return the current value. + Return the maximum value. </description> </method> - <method name="get_value" qualifiers="const"> + <method name="get_min" qualifiers="const"> <return type="float"> </return> <description> + Return the minimum value. </description> </method> - <method name="get_min" qualifiers="const"> + <method name="get_page" qualifiers="const"> <return type="float"> </return> <description> - Return the minimum value. + Return the page size, if page is 0, paging is disabled. </description> </method> - <method name="get_max" qualifiers="const"> + <method name="get_step" qualifiers="const"> <return type="float"> </return> <description> - Return the maximum value. + Return the stepping, if step is 0, stepping is disabled. </description> </method> - <method name="get_step" qualifiers="const"> + <method name="get_unit_value" qualifiers="const"> <return type="float"> </return> <description> - Return the stepping, if step is 0, stepping is disabled. + Return value mapped to 0 to 1 (unit) range. </description> </method> - <method name="get_page" qualifiers="const"> + <method name="get_val" qualifiers="const"> <return type="float"> </return> <description> - Return the page size, if page is 0, paging is disabled. + Return the current value. </description> </method> - <method name="get_unit_value" qualifiers="const"> + <method name="get_value" qualifiers="const"> <return type="float"> </return> <description> - Return value mapped to 0 to 1 (unit) range. </description> </method> - <method name="set_val"> - <argument index="0" name="value" type="float"> - </argument> + <method name="is_rounded_values" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="set_value"> - <argument index="0" name="value" type="float"> - </argument> + <method name="is_unit_value_exp" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="set_min"> - <argument index="0" name="minimum" type="float"> + <method name="set_exp_unit_value"> + <argument index="0" name="enabled" type="bool"> </argument> <description> - Set minimum value, clamped range value to it if it's less. </description> </method> <method name="set_max"> @@ -29865,11 +30100,11 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_step"> - <argument index="0" name="step" type="float"> + <method name="set_min"> + <argument index="0" name="minimum" type="float"> </argument> <description> - Set step value. If step is 0, stepping will be disabled. + Set minimum value, clamped range value to it if it's less. </description> </method> <method name="set_page"> @@ -29879,34 +30114,35 @@ This method controls whether the position between two cached points is interpola Set page size. Page is mainly used for scrollbars or anything that controls text scrolling. </description> </method> - <method name="set_unit_value"> - <argument index="0" name="value" type="float"> + <method name="set_rounded_values"> + <argument index="0" name="enabled" type="bool"> </argument> <description> - Set value mapped to 0 to 1 (unit) range, it will then be converted to the actual value within min and max. </description> </method> - <method name="set_rounded_values"> - <argument index="0" name="enabled" type="bool"> + <method name="set_step"> + <argument index="0" name="step" type="float"> </argument> <description> + Set step value. If step is 0, stepping will be disabled. </description> </method> - <method name="is_rounded_values" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_unit_value"> + <argument index="0" name="value" type="float"> + </argument> <description> + Set value mapped to 0 to 1 (unit) range, it will then be converted to the actual value within min and max. </description> </method> - <method name="set_exp_unit_value"> - <argument index="0" name="enabled" type="bool"> + <method name="set_val"> + <argument index="0" name="value" type="float"> </argument> <description> </description> </method> - <method name="is_unit_value_exp" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_value"> + <argument index="0" name="value" type="float"> + </argument> <description> </description> </method> @@ -29922,6 +30158,11 @@ This method controls whether the position between two cached points is interpola </method> </methods> <signals> + <signal name="changed"> + <description> + This signal is emitted when min, max, range or step change. + </description> + </signal> <signal name="value_changed"> <argument index="0" name="value" type="float"> </argument> @@ -29929,11 +30170,6 @@ This method controls whether the position between two cached points is interpola This signal is emitted when value changes. </description> </signal> - <signal name="changed"> - <description> - This signal is emitted when min, max, range or step change. - </description> - </signal> </signals> <constants> </constants> @@ -29946,6 +30182,28 @@ This method controls whether the position between two cached points is interpola Raw byte array. Contains bytes. Optimized for memory usage, can't fragment the memory. </description> <methods> + <method name="RawArray"> + <return type="RawArray"> + </return> + <argument index="0" name="from" type="Array"> + </argument> + <description> + Create from a generic array. + </description> + </method> + <method name="append"> + <argument index="0" name="byte" type="int"> + </argument> + <description> + </description> + </method> + <method name="append_array"> + <argument index="0" name="array" type="RawArray"> + </argument> + <description> + Append an [RawArray] at the end of this array. + </description> + </method> <method name="get_string_from_ascii"> <return type="String"> </return> @@ -29960,16 +30218,36 @@ This method controls whether the position between two cached points is interpola Returns a copy of the array's contents formatted as String, assuming the array is formatted as UTF-8. Slower than get_string_from_ascii(), but works for UTF-8. Usually you should prefer this function over get_string_from_ascii() to support international input. </description> </method> + <method name="insert"> + <return type="int"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="byte" type="int"> + </argument> + <description> + Insert a new element at a given position in the array. The position must be valid, or at the end of the array (pos==size()). + </description> + </method> <method name="push_back"> <argument index="0" name="byte" type="int"> </argument> <description> + Append an element at the end of the array. + </description> + </method> + <method name="remove"> + <argument index="0" name="idx" type="int"> + </argument> + <description> + Remove an element from the array by index. </description> </method> <method name="resize"> <argument index="0" name="idx" type="int"> </argument> <description> + Set the size of the [RawArray]. If larger than the current size it will reserve some space beforehand, and if it is smaller it will cut off the array. </description> </method> <method name="set"> @@ -29978,20 +30256,14 @@ This method controls whether the position between two cached points is interpola <argument index="1" name="byte" type="int"> </argument> <description> + Change the byte at the given index. </description> </method> <method name="size"> <return type="int"> </return> <description> - </description> - </method> - <method name="RawArray"> - <return type="RawArray"> - </return> - <argument index="0" name="from" type="Array"> - </argument> - <description> + Return the size of the array. </description> </method> </methods> @@ -30004,21 +30276,19 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_enabled"> - <argument index="0" name="enabled" type="bool"> + <method name="add_exception"> + <argument index="0" name="node" type="Object"> </argument> <description> </description> </method> - <method name="is_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="add_exception_rid"> + <argument index="0" name="rid" type="RID"> + </argument> <description> </description> </method> - <method name="set_cast_to"> - <argument index="0" name="local_point" type="Vector3"> - </argument> + <method name="clear_exceptions"> <description> </description> </method> @@ -30028,12 +30298,6 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="is_colliding" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> <method name="get_collider" qualifiers="const"> <return type="Object"> </return> @@ -30046,33 +30310,39 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_collision_point" qualifiers="const"> + <method name="get_collision_normal" qualifiers="const"> <return type="Vector3"> </return> <description> </description> </method> - <method name="get_collision_normal" qualifiers="const"> + <method name="get_collision_point" qualifiers="const"> <return type="Vector3"> </return> <description> </description> </method> - <method name="add_exception_rid"> - <argument index="0" name="rid" type="RID"> - </argument> + <method name="get_layer_mask" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="add_exception"> - <argument index="0" name="node" type="Object"> - </argument> + <method name="get_type_mask" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="remove_exception_rid"> - <argument index="0" name="rid" type="RID"> - </argument> + <method name="is_colliding" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> + <method name="is_enabled" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> @@ -30082,31 +30352,33 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="clear_exceptions"> + <method name="remove_exception_rid"> + <argument index="0" name="rid" type="RID"> + </argument> <description> </description> </method> - <method name="set_layer_mask"> - <argument index="0" name="mask" type="int"> + <method name="set_cast_to"> + <argument index="0" name="local_point" type="Vector3"> </argument> <description> </description> </method> - <method name="get_layer_mask" qualifiers="const"> - <return type="int"> - </return> + <method name="set_enabled"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> </description> </method> - <method name="set_type_mask"> + <method name="set_layer_mask"> <argument index="0" name="mask" type="int"> </argument> <description> </description> </method> - <method name="get_type_mask" qualifiers="const"> - <return type="int"> - </return> + <method name="set_type_mask"> + <argument index="0" name="mask" type="int"> + </argument> <description> </description> </method> @@ -30122,25 +30394,22 @@ This method controls whether the position between two cached points is interpola A RayCast2D represents a line from its origin to its destination position [code]cast_to[/code], it is used to query the 2D space in order to find the closest object intersecting with the ray. </description> <methods> - <method name="set_enabled"> - <argument index="0" name="enabled" type="bool"> + <method name="add_exception"> + <argument index="0" name="node" type="Object"> </argument> <description> - Enables the RayCast2D. Only enabled raycasts will be able to query the space and report collisions. + Adds a collision exception so the ray does not report collisions with the specified [code]node[/code]. </description> </method> - <method name="is_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="add_exception_rid"> + <argument index="0" name="rid" type="RID"> + </argument> <description> - Returns whether this raycast is enabled or not </description> </method> - <method name="set_cast_to"> - <argument index="0" name="local_point" type="Vector2"> - </argument> + <method name="clear_exceptions"> <description> - Sets the ray destination point, so that the ray will test from the ray's origin to [code]local_point[/code] + Removes all collision exception for this ray. </description> </method> <method name="get_cast_to" qualifiers="const"> @@ -30150,13 +30419,6 @@ This method controls whether the position between two cached points is interpola Return the destination point of this ray object </description> </method> - <method name="is_colliding" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return whether the closest object the ray is pointing to is colliding with the vector (considering the vector length). - </description> - </method> <method name="get_collider" qualifiers="const"> <return type="Object"> </return> @@ -30171,6 +30433,13 @@ This method controls whether the position between two cached points is interpola Returns the collision shape of the closest object the ray is pointing to. </description> </method> + <method name="get_collision_normal" qualifiers="const"> + <return type="Vector2"> + </return> + <description> + Returns the normal of the intersecting object shape face containing the collision point. + </description> + </method> <method name="get_collision_point" qualifiers="const"> <return type="Vector2"> </return> @@ -30178,30 +30447,31 @@ This method controls whether the position between two cached points is interpola Returns the collision point in which the ray intersects the closest object. </description> </method> - <method name="get_collision_normal" qualifiers="const"> - <return type="Vector2"> + <method name="get_layer_mask" qualifiers="const"> + <return type="int"> </return> <description> - Returns the normal of the intersecting object shape face containing the collision point. + Returns the layer mask for this ray. </description> </method> - <method name="add_exception_rid"> - <argument index="0" name="rid" type="RID"> - </argument> + <method name="get_type_mask" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="add_exception"> - <argument index="0" name="node" type="Object"> - </argument> + <method name="is_colliding" qualifiers="const"> + <return type="bool"> + </return> <description> - Adds a collision exception so the ray does not report collisions with the specified [code]node[/code]. + Return whether the closest object the ray is pointing to is colliding with the vector (considering the vector length). </description> </method> - <method name="remove_exception_rid"> - <argument index="0" name="rid" type="RID"> - </argument> + <method name="is_enabled" qualifiers="const"> + <return type="bool"> + </return> <description> + Returns whether this raycast is enabled or not </description> </method> <method name="remove_exception"> @@ -30211,33 +30481,35 @@ This method controls whether the position between two cached points is interpola Removes a collision exception so the ray does report collisions with the specified [code]node[/code]. </description> </method> - <method name="clear_exceptions"> + <method name="remove_exception_rid"> + <argument index="0" name="rid" type="RID"> + </argument> <description> - Removes all collision exception for this ray. </description> </method> - <method name="set_layer_mask"> - <argument index="0" name="mask" type="int"> + <method name="set_cast_to"> + <argument index="0" name="local_point" type="Vector2"> </argument> <description> + Sets the ray destination point, so that the ray will test from the ray's origin to [code]local_point[/code] </description> </method> - <method name="get_layer_mask" qualifiers="const"> - <return type="int"> - </return> + <method name="set_enabled"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> - Returns the layer mask for this ray. + Enables the RayCast2D. Only enabled raycasts will be able to query the space and report collisions. </description> </method> - <method name="set_type_mask"> + <method name="set_layer_mask"> <argument index="0" name="mask" type="int"> </argument> <description> </description> </method> - <method name="get_type_mask" qualifiers="const"> - <return type="int"> - </return> + <method name="set_type_mask"> + <argument index="0" name="mask" type="int"> + </argument> <description> </description> </method> @@ -30251,18 +30523,18 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_length"> - <argument index="0" name="length" type="float"> - </argument> - <description> - </description> - </method> <method name="get_length" qualifiers="const"> <return type="float"> </return> <description> </description> </method> + <method name="set_length"> + <argument index="0" name="length" type="float"> + </argument> + <description> + </description> + </method> </methods> <constants> </constants> @@ -30275,13 +30547,6 @@ This method controls whether the position between two cached points is interpola Ray 2D shape resource for physics. A ray is not really a collision body, instead it tries to separate itself from whatever is touching its far endpoint. It's often useful for characters. </description> <methods> - <method name="set_length"> - <argument index="0" name="length" type="float"> - </argument> - <description> - Set the length of the ray. - </description> - </method> <method name="get_length" qualifiers="const"> <return type="float"> </return> @@ -30289,6 +30554,13 @@ This method controls whether the position between two cached points is interpola Return the length of the ray. </description> </method> + <method name="set_length"> + <argument index="0" name="length" type="float"> + </argument> + <description> + Set the length of the ray. + </description> + </method> </methods> <constants> </constants> @@ -30301,16 +30573,59 @@ This method controls whether the position between two cached points is interpola Real Array. Array of floating point values. Can only contain floats. Optimized for memory usage, can't fragment the memory. </description> <methods> + <method name="RealArray"> + <return type="RealArray"> + </return> + <argument index="0" name="from" type="Array"> + </argument> + <description> + Create from a generic array. + </description> + </method> + <method name="append"> + <argument index="0" name="value" type="float"> + </argument> + <description> + Append an element at the end of the array (alias of [method push_back]). + </description> + </method> + <method name="append_array"> + <argument index="0" name="array" type="RealArray"> + </argument> + <description> + Append an [RealArray] at the end of this array. + </description> + </method> + <method name="insert"> + <return type="int"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="value" type="float"> + </argument> + <description> + Insert a new element at a given position in the array. The position must be valid, or at the end of the array (pos==size()). + </description> + </method> <method name="push_back"> <argument index="0" name="value" type="float"> </argument> <description> + Append an element at the end of the array. + </description> + </method> + <method name="remove"> + <argument index="0" name="idx" type="int"> + </argument> + <description> + Remove an element from the array by index. </description> </method> <method name="resize"> <argument index="0" name="idx" type="int"> </argument> <description> + Set the size of the [RealArray]. If larger than the current size it will reserve some space beforehand, and if it is smaller it will cut off the array. </description> </method> <method name="set"> @@ -30319,20 +30634,14 @@ This method controls whether the position between two cached points is interpola <argument index="1" name="value" type="float"> </argument> <description> + Change the float at the given index. </description> </method> <method name="size"> <return type="int"> </return> <description> - </description> - </method> - <method name="RealArray"> - <return type="RealArray"> - </return> - <argument index="0" name="from" type="Array"> - </argument> - <description> + Return the size of the array. </description> </method> </methods> @@ -30347,6 +30656,32 @@ This method controls whether the position between two cached points is interpola Rect2 provides an 2D Axis-Aligned Bounding Box. It consists of a position, a size, and several utility functions. It is typically used for fast overlap tests. </description> <methods> + <method name="Rect2"> + <return type="Rect2"> + </return> + <argument index="0" name="pos" type="Vector2"> + </argument> + <argument index="1" name="size" type="Vector2"> + </argument> + <description> + Construct a [Rect2] by position and size. + </description> + </method> + <method name="Rect2"> + <return type="Rect2"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <argument index="1" name="y" type="float"> + </argument> + <argument index="2" name="width" type="float"> + </argument> + <argument index="3" name="height" type="float"> + </argument> + <description> + Construct a [Rect2] by x, y, width and height. + </description> + </method> <method name="clip"> <return type="Rect2"> </return> @@ -30424,43 +30759,17 @@ This method controls whether the position between two cached points is interpola Combine this [Rect2] with another, a larger one is returned that contains both. </description> </method> - <method name="Rect2"> - <return type="Rect2"> - </return> - <argument index="0" name="pos" type="Vector2"> - </argument> - <argument index="1" name="size" type="Vector2"> - </argument> - <description> - Construct a [Rect2] by position and size. - </description> - </method> - <method name="Rect2"> - <return type="Rect2"> - </return> - <argument index="0" name="x" type="float"> - </argument> - <argument index="1" name="y" type="float"> - </argument> - <argument index="2" name="width" type="float"> - </argument> - <argument index="3" name="height" type="float"> - </argument> - <description> - Construct a [Rect2] by x, y, width and height. - </description> - </method> </methods> <members> + <member name="end" type="Vector2"> + Ending corner. + </member> <member name="pos" type="Vector2"> Position (starting corner). </member> <member name="size" type="Vector2"> Size from position to end. </member> - <member name="end" type="Vector2"> - Ending corner. - </member> </members> <constants> </constants> @@ -30473,13 +30782,6 @@ This method controls whether the position between two cached points is interpola Rectangle Shape for 2D Physics. This shape is useful for modeling box-like 2D objects. </description> <methods> - <method name="set_extents"> - <argument index="0" name="extents" type="Vector2"> - </argument> - <description> - Set the half extents, the actual width and height of this shape is twice the half extents. - </description> - </method> <method name="get_extents" qualifiers="const"> <return type="Vector2"> </return> @@ -30487,6 +30789,13 @@ This method controls whether the position between two cached points is interpola Return the half extents, the actual width and height of this shape is twice the half extents. </description> </method> + <method name="set_extents"> + <argument index="0" name="extents" type="Vector2"> + </argument> + <description> + Set the half extents, the actual width and height of this shape is twice the half extents. + </description> + </method> </methods> <constants> </constants> @@ -30562,6 +30871,11 @@ This method controls whether the position between two cached points is interpola Word boundaries [code]\b[/code], [code]\B[/code] </description> <methods> + <method name="clear"> + <description> + This method resets the state of the object, as it was freshly created. Namely, it unassigns the regular expression of this object, and forgets all captures made by the last [method find]. + </description> + </method> <method name="compile"> <return type="int"> </return> @@ -30586,16 +30900,13 @@ This method controls whether the position between two cached points is interpola This method tries to find the pattern within the string, and returns the position where it was found. It also stores any capturing group (see [method get_capture]) for further retrieval. </description> </method> - <method name="clear"> - <description> - This method resets the state of the object, as it was freshly created. Namely, it unassigns the regular expression of this object, and forgets all captures made by the last [method find]. - </description> - </method> - <method name="is_valid" qualifiers="const"> - <return type="bool"> + <method name="get_capture" qualifiers="const"> + <return type="String"> </return> + <argument index="0" name="capture" type="int"> + </argument> <description> - Returns whether this object has a valid regular expression assigned. + Returns a captured group. A captured group is the part of a string that matches a part of the pattern delimited by parentheses (unless they are non-capturing parentheses [i](?:)[/i]). </description> </method> <method name="get_capture_count" qualifiers="const"> @@ -30605,15 +30916,6 @@ This method controls whether the position between two cached points is interpola Returns the number of capturing groups. A captured group is the part of a string that matches a part of the pattern delimited by parentheses (unless they are non-capturing parentheses [i](?:)[/i]). </description> </method> - <method name="get_capture" qualifiers="const"> - <return type="String"> - </return> - <argument index="0" name="capture" type="int"> - </argument> - <description> - Returns a captured group. A captured group is the part of a string that matches a part of the pattern delimited by parentheses (unless they are non-capturing parentheses [i](?:)[/i]). - </description> - </method> <method name="get_capture_start" qualifiers="const"> <return type="int"> </return> @@ -30629,6 +30931,13 @@ This method controls whether the position between two cached points is interpola Return a list of all the captures made by the regular expression. </description> </method> + <method name="is_valid" qualifiers="const"> + <return type="bool"> + </return> + <description> + Returns whether this object has a valid regular expression assigned. + </description> + </method> </methods> <constants> </constants> @@ -30639,18 +30948,18 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_remote_node"> - <argument index="0" name="path" type="NodePath"> - </argument> - <description> - </description> - </method> <method name="get_remote_node" qualifiers="const"> <return type="NodePath"> </return> <description> </description> </method> + <method name="set_remote_node"> + <argument index="0" name="path" type="NodePath"> + </argument> + <description> + </description> + </method> </methods> <constants> </constants> @@ -30673,39 +30982,32 @@ This method controls whether the position between two cached points is interpola Resource is the base class for all resource types. Resources are primarily data containers. They are reference counted and freed when no longer in use. They are also loaded only once from disk, and further attempts to load the resource will return the same reference (all this in contrast to a [Node], which is not reference counted and can be instanced from disk as many times as desired). Resources can be saved externally on disk or bundled into another object, such as a [Node] or another resource. </description> <methods> - <method name="set_path"> - <argument index="0" name="path" type="String"> + <method name="duplicate"> + <return type="Object"> + </return> + <argument index="0" name="subresources" type="bool" default="false"> </argument> <description> - Set the path of the resource. This is useful mainly for editors when saving/loading, and shouldn't be changed by anything else. Fails if another [Resource] already has path "path". </description> </method> - <method name="take_over_path"> - <argument index="0" name="path" type="String"> - </argument> + <method name="get_import_metadata" qualifiers="const"> + <return type="Object"> + </return> <description> - Set the path of the resource. Differs from set_path(), if another [Resource] exists with "path" it over-takes it, instead of failing. </description> </method> - <method name="get_path" qualifiers="const"> + <method name="get_name" qualifiers="const"> <return type="String"> </return> <description> - Return the path of the resource. This is useful mainly for editors when saving/loading, and shouldn't be changed by anything else. - </description> - </method> - <method name="set_name"> - <argument index="0" name="name" type="String"> - </argument> - <description> - Set the name of the resources, any name is valid (it doesn't have to be unique). Name is for descriptive purposes only. + Return the name of the resources, any name is valid (it doesn't have to be unique). Name is for descriptive purposes only. </description> </method> - <method name="get_name" qualifiers="const"> + <method name="get_path" qualifiers="const"> <return type="String"> </return> <description> - Return the name of the resources, any name is valid (it doesn't have to be unique). Name is for descriptive purposes only. + Return the path of the resource. This is useful mainly for editors when saving/loading, and shouldn't be changed by anything else. </description> </method> <method name="get_rid" qualifiers="const"> @@ -30721,18 +31023,25 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_import_metadata" qualifiers="const"> - <return type="Object"> - </return> + <method name="set_name"> + <argument index="0" name="name" type="String"> + </argument> + <description> + Set the name of the resources, any name is valid (it doesn't have to be unique). Name is for descriptive purposes only. + </description> + </method> + <method name="set_path"> + <argument index="0" name="path" type="String"> + </argument> <description> + Set the path of the resource. This is useful mainly for editors when saving/loading, and shouldn't be changed by anything else. Fails if another [Resource] already has path "path". </description> </method> - <method name="duplicate"> - <return type="Object"> - </return> - <argument index="0" name="subresources" type="bool" default="false"> + <method name="take_over_path"> + <argument index="0" name="path" type="String"> </argument> <description> + Set the path of the resource. Differs from set_path(), if another [Resource] exists with "path" it over-takes it, instead of failing. </description> </method> </methods> @@ -30751,8 +31060,10 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_editor"> - <argument index="0" name="name" type="String"> + <method name="add_source"> + <argument index="0" name="path" type="String"> + </argument> + <argument index="1" name="md5" type="String" default=""""> </argument> <description> </description> @@ -30763,19 +31074,21 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="add_source"> - <argument index="0" name="path" type="String"> - </argument> - <argument index="1" name="md5" type="String" default=""""> + <method name="get_option" qualifiers="const"> + <argument index="0" name="key" type="String"> </argument> <description> </description> </method> - <method name="get_source_path" qualifiers="const"> - <return type="String"> + <method name="get_options" qualifiers="const"> + <return type="StringArray"> + </return> + <description> + </description> + </method> + <method name="get_source_count" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> </description> </method> @@ -30787,11 +31100,11 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_source_md5"> + <method name="get_source_path" qualifiers="const"> + <return type="String"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="md5" type="String"> - </argument> <description> </description> </method> @@ -30801,9 +31114,9 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_source_count" qualifiers="const"> - <return type="int"> - </return> + <method name="set_editor"> + <argument index="0" name="name" type="String"> + </argument> <description> </description> </method> @@ -30815,15 +31128,11 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_option" qualifiers="const"> - <argument index="0" name="key" type="String"> + <method name="set_source_md5"> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="md5" type="String"> </argument> - <description> - </description> - </method> - <method name="get_options" qualifiers="const"> - <return type="StringArray"> - </return> <description> </description> </method> @@ -30846,31 +31155,31 @@ This method controls whether the position between two cached points is interpola Return the loaded resource (only if loaded). Otherwise, returns null. </description> </method> - <method name="poll"> + <method name="get_stage" qualifiers="const"> <return type="int"> </return> <description> - Poll the load. If OK is returned, this means poll will have to be called again. If ERR_EOF is returned, them the load has finished and the resource can be obtained by calling [method get_resource]. + Return the load stage. The total amount of stages can be queried with [method get_stage_count] </description> </method> - <method name="wait"> + <method name="get_stage_count" qualifiers="const"> <return type="int"> </return> <description> + Return the total amount of stages (calls to [method poll]) needed to completely load this resource. </description> </method> - <method name="get_stage" qualifiers="const"> + <method name="poll"> <return type="int"> </return> <description> - Return the load stage. The total amount of stages can be queried with [method get_stage_count] + Poll the load. If OK is returned, this means poll will have to be called again. If ERR_EOF is returned, them the load has finished and the resource can be obtained by calling [method get_resource]. </description> </method> - <method name="get_stage_count" qualifiers="const"> + <method name="wait"> <return type="int"> </return> <description> - Return the total amount of stages (calls to [method poll]) needed to completely load this resource. </description> </method> </methods> @@ -30885,15 +31194,29 @@ This method controls whether the position between two cached points is interpola Resource Loader. This is a static object accessible as [ResourceLoader]. GDScript has a simplified load() function, though. </description> <methods> - <method name="load_interactive"> - <return type="ResourceInteractiveLoader"> + <method name="get_dependencies"> + <return type="StringArray"> </return> <argument index="0" name="path" type="String"> </argument> - <argument index="1" name="type_hint" type="String" default=""""> + <description> + </description> + </method> + <method name="get_recognized_extensions_for_type"> + <return type="StringArray"> + </return> + <argument index="0" name="type" type="String"> + </argument> + <description> + Return the list of recognized extensions for a resource type. + </description> + </method> + <method name="has"> + <return type="bool"> + </return> + <argument index="0" name="path" type="String"> </argument> <description> - Load a resource interactively, the returned object allows to load with high granularity. </description> </method> <method name="load"> @@ -30916,13 +31239,15 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_recognized_extensions_for_type"> - <return type="StringArray"> + <method name="load_interactive"> + <return type="ResourceInteractiveLoader"> </return> - <argument index="0" name="type" type="String"> + <argument index="0" name="path" type="String"> + </argument> + <argument index="1" name="type_hint" type="String" default=""""> </argument> <description> - Return the list of recognized extensions for a resource type. + Load a resource interactively, the returned object allows to load with high granularity. </description> </method> <method name="set_abort_on_missing_resources"> @@ -30932,22 +31257,6 @@ This method controls whether the position between two cached points is interpola Change the behavior on missing sub-resources. Default is to abort load. </description> </method> - <method name="get_dependencies"> - <return type="StringArray"> - </return> - <argument index="0" name="path" type="String"> - </argument> - <description> - </description> - </method> - <method name="has"> - <return type="bool"> - </return> - <argument index="0" name="path" type="String"> - </argument> - <description> - </description> - </method> </methods> <constants> </constants> @@ -30969,20 +31278,20 @@ This method controls whether the position between two cached points is interpola Add a resource to the preloader. Set the text-id that will be used to identify it (retrieve it/erase it/etc). </description> </method> - <method name="remove_resource"> + <method name="get_resource" qualifiers="const"> + <return type="Object"> + </return> <argument index="0" name="name" type="String"> </argument> <description> - Remove a resource from the preloader by text id. + Return the resource given a text-id. </description> </method> - <method name="rename_resource"> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="newname" type="String"> - </argument> + <method name="get_resource_list" qualifiers="const"> + <return type="StringArray"> + </return> <description> - Rename a resource inside the preloader, from a text-id to a new text-id. + Return the list of resources inside the preloader. </description> </method> <method name="has_resource" qualifiers="const"> @@ -30994,20 +31303,20 @@ This method controls whether the position between two cached points is interpola Return true if the preloader has a given resource. </description> </method> - <method name="get_resource" qualifiers="const"> - <return type="Object"> - </return> + <method name="remove_resource"> <argument index="0" name="name" type="String"> </argument> <description> - Return the resource given a text-id. + Remove a resource from the preloader by text id. </description> </method> - <method name="get_resource_list" qualifiers="const"> - <return type="StringArray"> - </return> + <method name="rename_resource"> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="newname" type="String"> + </argument> <description> - Return the list of resources inside the preloader. + Rename a resource inside the preloader, from a text-id to a new text-id. </description> </method> </methods> @@ -31022,6 +31331,15 @@ This method controls whether the position between two cached points is interpola Resource Saving Interface. This interface is used for saving resources to disk. </description> <methods> + <method name="get_recognized_extensions"> + <return type="StringArray"> + </return> + <argument index="0" name="type" type="Object"> + </argument> + <description> + Return the list of extensions available for saving a resource of a given type. + </description> + </method> <method name="save"> <return type="int"> </return> @@ -31035,29 +31353,20 @@ This method controls whether the position between two cached points is interpola Save a resource to disk, to a given path. </description> </method> - <method name="get_recognized_extensions"> - <return type="StringArray"> - </return> - <argument index="0" name="type" type="Object"> - </argument> - <description> - Return the list of extensions available for saving a resource of a given type. - </description> - </method> </methods> <constants> <constant name="FLAG_RELATIVE_PATHS" value="1"> </constant> + <constant name="FLAG_SAVE_BIG_ENDIAN" value="16"> + </constant> <constant name="FLAG_BUNDLE_RESOURCES" value="2"> </constant> + <constant name="FLAG_COMPRESS" value="32"> + </constant> <constant name="FLAG_CHANGE_PATH" value="4"> </constant> <constant name="FLAG_OMIT_EDITOR_PROPERTIES" value="8"> </constant> - <constant name="FLAG_SAVE_BIG_ENDIAN" value="16"> - </constant> - <constant name="FLAG_COMPRESS" value="32"> - </constant> </constants> </class> <class name="RichTextLabel" inherits="Control" category="Core"> @@ -31068,207 +31377,207 @@ This method controls whether the position between two cached points is interpola Label that displays rich text. Rich text can contain custom text, fonts, images and some basic formatting. It also adapts itself to given width/heights. </description> <methods> - <method name="add_text"> - <argument index="0" name="text" type="String"> + <method name="add_image"> + <argument index="0" name="image" type="Texture"> </argument> <description> </description> </method> - <method name="add_image"> - <argument index="0" name="image" type="Texture"> + <method name="add_text"> + <argument index="0" name="text" type="String"> </argument> <description> </description> </method> - <method name="newline"> + <method name="append_bbcode"> + <return type="int"> + </return> + <argument index="0" name="bbcode" type="String"> + </argument> <description> </description> </method> - <method name="push_font"> - <argument index="0" name="font" type="Object"> - </argument> + <method name="clear"> <description> </description> </method> - <method name="push_color"> - <argument index="0" name="color" type="Color"> - </argument> + <method name="get_bbcode" qualifiers="const"> + <return type="String"> + </return> <description> </description> </method> - <method name="push_align"> - <argument index="0" name="align" type="int"> - </argument> + <method name="get_tab_size" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="push_indent"> - <argument index="0" name="level" type="int"> - </argument> + <method name="get_total_character_count" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="push_list"> - <argument index="0" name="type" type="int"> - </argument> + <method name="get_v_scroll"> + <return type="Object"> + </return> <description> </description> </method> - <method name="push_meta"> - <argument index="0" name="data" type="Variant"> - </argument> + <method name="get_visible_characters" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="push_underline"> + <method name="is_meta_underlined" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="push_table"> - <argument index="0" name="columns" type="int"> - </argument> + <method name="is_scroll_active" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="set_table_column_expand"> - <argument index="0" name="column" type="int"> - </argument> - <argument index="1" name="expand" type="bool"> - </argument> - <argument index="2" name="ratio" type="int"> - </argument> + <method name="is_scroll_following" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="push_cell"> + <method name="is_selection_enabled" qualifiers="const"> + <return type="bool"> + </return> <description> + Return true if selecting the text inside this richtext is allowed. </description> </method> - <method name="pop"> + <method name="is_using_bbcode" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="clear"> + <method name="newline"> <description> </description> </method> - <method name="set_meta_underline"> - <argument index="0" name="enable" type="bool"> + <method name="parse_bbcode"> + <return type="int"> + </return> + <argument index="0" name="bbcode" type="String"> </argument> <description> </description> </method> - <method name="is_meta_underlined" qualifiers="const"> - <return type="bool"> - </return> + <method name="pop"> <description> </description> </method> - <method name="set_scroll_active"> - <argument index="0" name="active" type="bool"> + <method name="push_align"> + <argument index="0" name="align" type="int"> </argument> <description> </description> </method> - <method name="is_scroll_active" qualifiers="const"> - <return type="bool"> - </return> + <method name="push_cell"> <description> </description> </method> - <method name="set_scroll_follow"> - <argument index="0" name="follow" type="bool"> + <method name="push_color"> + <argument index="0" name="color" type="Color"> </argument> <description> </description> </method> - <method name="is_scroll_following" qualifiers="const"> - <return type="bool"> - </return> + <method name="push_font"> + <argument index="0" name="font" type="Object"> + </argument> <description> </description> </method> - <method name="get_v_scroll"> - <return type="Object"> - </return> + <method name="push_indent"> + <argument index="0" name="level" type="int"> + </argument> <description> </description> </method> - <method name="scroll_to_line"> - <argument index="0" name="line" type="int"> + <method name="push_list"> + <argument index="0" name="type" type="int"> </argument> <description> </description> </method> - <method name="set_tab_size"> - <argument index="0" name="spaces" type="int"> + <method name="push_meta"> + <argument index="0" name="data" type="Variant"> </argument> <description> </description> </method> - <method name="get_tab_size" qualifiers="const"> - <return type="int"> - </return> + <method name="push_table"> + <argument index="0" name="columns" type="int"> + </argument> <description> </description> </method> - <method name="set_selection_enabled"> - <argument index="0" name="enabled" type="bool"> - </argument> + <method name="push_underline"> <description> - Set to true if selecting the text inside this richtext is allowed. </description> </method> - <method name="is_selection_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="scroll_to_line"> + <argument index="0" name="line" type="int"> + </argument> <description> - Return true if selecting the text inside this richtext is allowed. </description> </method> - <method name="parse_bbcode"> - <return type="int"> - </return> - <argument index="0" name="bbcode" type="String"> + <method name="set_bbcode"> + <argument index="0" name="text" type="String"> </argument> <description> </description> </method> - <method name="append_bbcode"> - <return type="int"> - </return> - <argument index="0" name="bbcode" type="String"> + <method name="set_meta_underline"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="set_bbcode"> - <argument index="0" name="text" type="String"> + <method name="set_scroll_active"> + <argument index="0" name="active" type="bool"> </argument> <description> </description> </method> - <method name="get_bbcode" qualifiers="const"> - <return type="String"> - </return> + <method name="set_scroll_follow"> + <argument index="0" name="follow" type="bool"> + </argument> <description> </description> </method> - <method name="set_visible_characters"> - <argument index="0" name="amount" type="int"> + <method name="set_selection_enabled"> + <argument index="0" name="enabled" type="bool"> </argument> <description> + Set to true if selecting the text inside this richtext is allowed. </description> </method> - <method name="get_visible_characters" qualifiers="const"> - <return type="int"> - </return> + <method name="set_tab_size"> + <argument index="0" name="spaces" type="int"> + </argument> <description> </description> </method> - <method name="get_total_character_count" qualifiers="const"> - <return type="int"> - </return> + <method name="set_table_column_expand"> + <argument index="0" name="column" type="int"> + </argument> + <argument index="1" name="expand" type="bool"> + </argument> + <argument index="2" name="ratio" type="int"> + </argument> <description> </description> </method> @@ -31278,9 +31587,9 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="is_using_bbcode" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_visible_characters"> + <argument index="0" name="amount" type="int"> + </argument> <description> </description> </method> @@ -31302,16 +31611,12 @@ This method controls whether the position between two cached points is interpola </constant> <constant name="ALIGN_FILL" value="3"> </constant> - <constant name="LIST_NUMBERS" value="0"> - </constant> - <constant name="LIST_LETTERS" value="1"> - </constant> - <constant name="LIST_DOTS" value="2"> - </constant> <constant name="ITEM_FRAME" value="0"> </constant> <constant name="ITEM_TEXT" value="1"> </constant> + <constant name="ITEM_META" value="11"> + </constant> <constant name="ITEM_IMAGE" value="2"> </constant> <constant name="ITEM_NEWLINE" value="3"> @@ -31328,33 +31633,37 @@ This method controls whether the position between two cached points is interpola </constant> <constant name="ITEM_LIST" value="9"> </constant> - <constant name="ITEM_META" value="11"> + <constant name="LIST_NUMBERS" value="0"> + </constant> + <constant name="LIST_LETTERS" value="1"> + </constant> + <constant name="LIST_DOTS" value="2"> </constant> </constants> <theme_items> - <theme_item name="table_vseparation" type="int"> - </theme_item> - <theme_item name="table_hseparation" type="int"> + <theme_item name="bold_font" type="Font"> </theme_item> - <theme_item name="line_separation" type="int"> + <theme_item name="bold_italics_font" type="Font"> </theme_item> <theme_item name="default_color" type="Color"> </theme_item> - <theme_item name="selection_color" type="Color"> + <theme_item name="focus" type="StyleBox"> </theme_item> <theme_item name="font_color_selected" type="Color"> </theme_item> - <theme_item name="mono_font" type="Font"> - </theme_item> - <theme_item name="bold_italics_font" type="Font"> - </theme_item> <theme_item name="italics_font" type="Font"> </theme_item> - <theme_item name="bold_font" type="Font"> + <theme_item name="line_separation" type="int"> + </theme_item> + <theme_item name="mono_font" type="Font"> </theme_item> <theme_item name="normal_font" type="Font"> </theme_item> - <theme_item name="focus" type="StyleBox"> + <theme_item name="selection_color" type="Color"> + </theme_item> + <theme_item name="table_hseparation" type="int"> + </theme_item> + <theme_item name="table_vseparation" type="int"> </theme_item> </theme_items> </class> @@ -31373,130 +31682,139 @@ This method controls whether the position between two cached points is interpola Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default it works in addition to the usual physics behavior, but [method set_use_custom_integrator] allows you to disable the default behavior and do fully custom force integration for a body. </description> </method> - <method name="set_mode"> - <argument index="0" name="mode" type="int"> + <method name="apply_impulse"> + <argument index="0" name="pos" type="Vector3"> + </argument> + <argument index="1" name="impulse" type="Vector3"> </argument> <description> - Set the body mode, from the MODE_* enum. This allows to change to a static body or a character body. + Apply a positioned impulse (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied once, and only once. Both the impulse and the offset from the body origin are in global coordinates. </description> </method> - <method name="get_mode" qualifiers="const"> - <return type="int"> + <method name="get_angular_damp" qualifiers="const"> + <return type="float"> </return> <description> - Return the current body mode, see [method set_mode]. + Return the current body angular damp. Default is -1. </description> </method> - <method name="set_mass"> - <argument index="0" name="mass" type="float"> - </argument> + <method name="get_angular_velocity" qualifiers="const"> + <return type="Vector3"> + </return> <description> - Set the body mass. + Return the current body angular velocity. </description> </method> - <method name="get_mass" qualifiers="const"> + <method name="get_axis_lock" qualifiers="const"> + <return type="int"> + </return> + <description> + Return the current axis lock of the body. One of AXIS_LOCK_* enum. + </description> + </method> + <method name="get_bounce" qualifiers="const"> <return type="float"> </return> <description> - Return the current body mass. + Return the current body bounciness. </description> </method> - <method name="set_weight"> - <argument index="0" name="weight" type="float"> - </argument> + <method name="get_colliding_bodies" qualifiers="const"> + <return type="Array"> + </return> <description> - Set the body weight given standard earth-weight (gravity 9.8). + Return a list of the bodies colliding with this one. </description> </method> - <method name="get_weight" qualifiers="const"> + <method name="get_friction" qualifiers="const"> <return type="float"> </return> <description> - Return the current body weight, given standard earth-weight (gravity 9.8). + Return the current body friction, from 0 (frictionless) to 1 (max friction). </description> </method> - <method name="set_friction"> - <argument index="0" name="friction" type="float"> - </argument> + <method name="get_gravity_scale" qualifiers="const"> + <return type="float"> + </return> <description> - Set the body friction, from 0 (frictionless) to 1 (max friction). + Return the current body gravity scale. </description> </method> - <method name="get_friction" qualifiers="const"> + <method name="get_linear_damp" qualifiers="const"> <return type="float"> </return> <description> - Return the current body friction, from 0 (frictionless) to 1 (max friction). + Return the current body linear damp. Default is -1. </description> </method> - <method name="set_bounce"> - <argument index="0" name="bounce" type="float"> - </argument> + <method name="get_linear_velocity" qualifiers="const"> + <return type="Vector3"> + </return> <description> - Set the body bounciness, from 0 (no bounciness) to 1 (max bounciness). + Return the current body linear velocity. </description> </method> - <method name="get_bounce" qualifiers="const"> + <method name="get_mass" qualifiers="const"> <return type="float"> </return> <description> - Return the current body bounciness. + Return the current body mass. </description> </method> - <method name="set_linear_velocity"> - <argument index="0" name="linear_velocity" type="Vector3"> - </argument> + <method name="get_max_contacts_reported" qualifiers="const"> + <return type="int"> + </return> <description> - Set the body linear velocity. Can be used sporadically, but [b]DON'T SET THIS IN EVERY FRAME[/b], because physics may be running in another thread and definitely runs at a different granularity. Use [method _integrate_forces] as your process loop if you want to have precise control of the body state. + Return the maximum contacts that can be reported. See [method set_max_contacts_reported]. </description> </method> - <method name="get_linear_velocity" qualifiers="const"> - <return type="Vector3"> + <method name="get_mode" qualifiers="const"> + <return type="int"> </return> <description> - Return the current body linear velocity. + Return the current body mode, see [method set_mode]. </description> </method> - <method name="set_angular_velocity"> - <argument index="0" name="angular_velocity" type="Vector3"> - </argument> + <method name="get_weight" qualifiers="const"> + <return type="float"> + </return> <description> - Set the body angular velocity. Can be used sporadically, but [b]DON'T SET THIS IN EVERY FRAME[/b], because physics may be running in another thread and definitely runs at a different granularity. Use [method _integrate_forces] as your process loop if you want to have precise control of the body state. + Return the current body weight, given standard earth-weight (gravity 9.8). </description> </method> - <method name="get_angular_velocity" qualifiers="const"> - <return type="Vector3"> + <method name="is_able_to_sleep" qualifiers="const"> + <return type="bool"> </return> <description> - Return the current body angular velocity. + Return whether the body has the ability to fall asleep when not moving. See [method set_can_sleep]. </description> </method> - <method name="set_gravity_scale"> - <argument index="0" name="gravity_scale" type="float"> - </argument> + <method name="is_contact_monitor_enabled" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the gravity factor. This factor multiplies gravity intensity just for this body. + Return whether contact monitoring is enabled. </description> </method> - <method name="get_gravity_scale" qualifiers="const"> - <return type="float"> + <method name="is_sleeping" qualifiers="const"> + <return type="bool"> </return> <description> - Return the current body gravity scale. + Return whether the body is sleeping. </description> </method> - <method name="set_linear_damp"> - <argument index="0" name="linear_damp" type="float"> - </argument> + <method name="is_using_continuous_collision_detection" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the linear damp for this body. Default of -1, cannot be less than -1. If this value is different from -1, any linear damp derived from the world or areas will be overridden. + Return whether this body is using continuous collision detection. </description> </method> - <method name="get_linear_damp" qualifiers="const"> - <return type="float"> + <method name="is_using_custom_integrator"> + <return type="bool"> </return> <description> - Return the current body linear damp. Default is -1. + Return whether the body is using a custom integrator. </description> </method> <method name="set_angular_damp"> @@ -31506,39 +31824,40 @@ This method controls whether the position between two cached points is interpola Set the angular damp for this body. Default of -1, cannot be less than -1. If this value is different from -1, any angular damp derived from the world or areas will be overridden. </description> </method> - <method name="get_angular_damp" qualifiers="const"> - <return type="float"> - </return> + <method name="set_angular_velocity"> + <argument index="0" name="angular_velocity" type="Vector3"> + </argument> <description> - Return the current body angular damp. Default is -1. + Set the body angular velocity. Can be used sporadically, but [b]DON'T SET THIS IN EVERY FRAME[/b], because physics may be running in another thread and definitely runs at a different granularity. Use [method _integrate_forces] as your process loop if you want to have precise control of the body state. </description> </method> - <method name="set_max_contacts_reported"> - <argument index="0" name="amount" type="int"> + <method name="set_axis_lock"> + <argument index="0" name="axis_lock" type="int"> </argument> <description> - Set the maximum contacts to report. Bodies can keep a log of the contacts with other bodies, this is enabled by setting the maximum amount of contacts reported to a number greater than 0. + Set the axis lock of the body, from the AXIS_LOCK_* enum. Axis lock stops the body from moving along the specified axis(X/Y/Z) and rotating along the other two axes. </description> </method> - <method name="get_max_contacts_reported" qualifiers="const"> - <return type="int"> - </return> + <method name="set_axis_velocity"> + <argument index="0" name="axis_velocity" type="Vector3"> + </argument> <description> - Return the maximum contacts that can be reported. See [method set_max_contacts_reported]. + Set an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior. </description> </method> - <method name="set_use_custom_integrator"> - <argument index="0" name="enable" type="bool"> + <method name="set_bounce"> + <argument index="0" name="bounce" type="float"> </argument> <description> - Pass true to disable the internal force integration (like gravity or air friction) for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] function, if defined. + Set the body bounciness, from 0 (no bounciness) to 1 (max bounciness). </description> </method> - <method name="is_using_custom_integrator"> - <return type="bool"> - </return> + <method name="set_can_sleep"> + <argument index="0" name="able_to_sleep" type="bool"> + </argument> <description> - Return whether the body is using a custom integrator. + Set the body ability to fall asleep when not moving. This saves an enormous amount of processor time when there are plenty of rigid bodies (non static) in a scene. + Sleeping bodies are not affected by forces until a collision or an [method apply_impulse] / [method set_applied_force] wakes them up. Until then, they behave like a static body. </description> </method> <method name="set_contact_monitor"> @@ -31548,92 +31867,82 @@ This method controls whether the position between two cached points is interpola Enable contact monitoring. This allows the body to emit signals when it collides with another. </description> </method> - <method name="is_contact_monitor_enabled" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return whether contact monitoring is enabled. - </description> - </method> - <method name="set_use_continuous_collision_detection"> - <argument index="0" name="enable" type="bool"> + <method name="set_friction"> + <argument index="0" name="friction" type="float"> </argument> <description> - Set the continuous collision detection mode from the enum CCD_MODE_*. - Continuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided. The first is more precise, and misses less impacts by small, fast-moving objects. The second is faster to compute, but can miss small, fast-moving objects. + Set the body friction, from 0 (frictionless) to 1 (max friction). </description> </method> - <method name="is_using_continuous_collision_detection" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_gravity_scale"> + <argument index="0" name="gravity_scale" type="float"> + </argument> <description> - Return whether this body is using continuous collision detection. + Set the gravity factor. This factor multiplies gravity intensity just for this body. </description> </method> - <method name="set_axis_velocity"> - <argument index="0" name="axis_velocity" type="Vector3"> + <method name="set_linear_damp"> + <argument index="0" name="linear_damp" type="float"> </argument> <description> - Set an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior. + Set the linear damp for this body. Default of -1, cannot be less than -1. If this value is different from -1, any linear damp derived from the world or areas will be overridden. </description> </method> - <method name="apply_impulse"> - <argument index="0" name="pos" type="Vector3"> - </argument> - <argument index="1" name="impulse" type="Vector3"> + <method name="set_linear_velocity"> + <argument index="0" name="linear_velocity" type="Vector3"> </argument> <description> - Apply a positioned impulse (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied once, and only once. Both the impulse and the offset from the body origin are in global coordinates. + Set the body linear velocity. Can be used sporadically, but [b]DON'T SET THIS IN EVERY FRAME[/b], because physics may be running in another thread and definitely runs at a different granularity. Use [method _integrate_forces] as your process loop if you want to have precise control of the body state. </description> </method> - <method name="set_sleeping"> - <argument index="0" name="sleeping" type="bool"> + <method name="set_mass"> + <argument index="0" name="mass" type="float"> </argument> <description> - Set whether a body is sleeping or not. Sleeping bodies are not affected by forces until a collision or an [method apply_impulse] wakes them up. Until then, they behave like a static body. + Set the body mass. </description> </method> - <method name="is_sleeping" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_max_contacts_reported"> + <argument index="0" name="amount" type="int"> + </argument> <description> - Return whether the body is sleeping. + Set the maximum contacts to report. Bodies can keep a log of the contacts with other bodies, this is enabled by setting the maximum amount of contacts reported to a number greater than 0. </description> </method> - <method name="set_can_sleep"> - <argument index="0" name="able_to_sleep" type="bool"> + <method name="set_mode"> + <argument index="0" name="mode" type="int"> </argument> <description> - Set the body ability to fall asleep when not moving. This saves an enormous amount of processor time when there are plenty of rigid bodies (non static) in a scene. - Sleeping bodies are not affected by forces until a collision or an [method apply_impulse] / [method set_applied_force] wakes them up. Until then, they behave like a static body. + Set the body mode, from the MODE_* enum. This allows to change to a static body or a character body. </description> </method> - <method name="is_able_to_sleep" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_sleeping"> + <argument index="0" name="sleeping" type="bool"> + </argument> <description> - Return whether the body has the ability to fall asleep when not moving. See [method set_can_sleep]. + Set whether a body is sleeping or not. Sleeping bodies are not affected by forces until a collision or an [method apply_impulse] wakes them up. Until then, they behave like a static body. </description> </method> - <method name="set_axis_lock"> - <argument index="0" name="axis_lock" type="int"> + <method name="set_use_continuous_collision_detection"> + <argument index="0" name="enable" type="bool"> </argument> <description> - Set the axis lock of the body, from the AXIS_LOCK_* enum. Axis lock stops the body from moving along the specified axis(X/Y/Z) and rotating along the other two axes. + Set the continuous collision detection mode from the enum CCD_MODE_*. + Continuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided. The first is more precise, and misses less impacts by small, fast-moving objects. The second is faster to compute, but can miss small, fast-moving objects. </description> </method> - <method name="get_axis_lock" qualifiers="const"> - <return type="int"> - </return> + <method name="set_use_custom_integrator"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Return the current axis lock of the body. One of AXIS_LOCK_* enum. + Pass true to disable the internal force integration (like gravity or air friction) for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] function, if defined. </description> </method> - <method name="get_colliding_bodies" qualifiers="const"> - <return type="Array"> - </return> + <method name="set_weight"> + <argument index="0" name="weight" type="float"> + </argument> <description> - Return a list of the bodies colliding with this one. + Set the body weight given standard earth-weight (gravity 9.8). </description> </method> </methods> @@ -31687,18 +31996,18 @@ This method controls whether the position between two cached points is interpola </signal> </signals> <constants> - <constant name="MODE_STATIC" value="1"> - Static mode. The body behaves like a [StaticBody], and can only move by user code. - </constant> - <constant name="MODE_KINEMATIC" value="3"> - Kinematic body. The body behaves like a [KinematicBody], and can only move by user code. - </constant> <constant name="MODE_RIGID" value="0"> Rigid body. This is the "natural" state of a rigid body. It is affected by forces, and can move, rotate, and be affected by user code. </constant> + <constant name="MODE_STATIC" value="1"> + Static mode. The body behaves like a [StaticBody], and can only move by user code. + </constant> <constant name="MODE_CHARACTER" value="2"> Character body. This behaves like a rigid body, but can not rotate. </constant> + <constant name="MODE_KINEMATIC" value="3"> + Kinematic body. The body behaves like a [KinematicBody], and can only move by user code. + </constant> </constants> </class> <class name="RigidBody2D" inherits="PhysicsBody2D" category="Core"> @@ -31718,67 +32027,71 @@ This method controls whether the position between two cached points is interpola Called during physics processing, allowing you to read and safely modify the simulation state for the object. By default it works in addition to the usual physics behavior, but [method set_use_custom_integrator] allows you to disable the default behavior and do fully custom force integration for a body. </description> </method> - <method name="set_mode"> - <argument index="0" name="mode" type="int"> + <method name="add_force"> + <argument index="0" name="offset" type="Vector2"> + </argument> + <argument index="1" name="force" type="Vector2"> </argument> <description> - Set the body mode, from the MODE_* enum. This allows to change to a static body or a character body. - </description> - </method> - <method name="get_mode" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the current body mode, see [method set_mode]. + Add a positioned force to the applied force and torque. As with [method apply_impulse], both the force and the offset from the body origin are in global coordinates. </description> </method> - <method name="set_mass"> - <argument index="0" name="mass" type="float"> + <method name="apply_impulse"> + <argument index="0" name="offset" type="Vector2"> + </argument> + <argument index="1" name="impulse" type="Vector2"> </argument> <description> - Set the body mass. + Apply a positioned impulse (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied once, and only once. Both the impulse and the offset from the body origin are in global coordinates. </description> </method> - <method name="get_mass" qualifiers="const"> + <method name="get_angular_damp" qualifiers="const"> <return type="float"> </return> <description> - Return the body mass. + Return the angular damp for this body. </description> </method> - <method name="get_inertia" qualifiers="const"> + <method name="get_angular_velocity" qualifiers="const"> <return type="float"> </return> <description> - Return the body's moment of inertia. This is usually automatically computed from the mass and the shapes. Note that this doesn't seem to work in a [code]_ready[/code] function: it apparently has not been auto-computed yet. + Return the body angular velocity. This changes by physics granularity. See [method set_angular_velocity]. </description> </method> - <method name="set_inertia"> - <argument index="0" name="inertia" type="float"> - </argument> + <method name="get_applied_force" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Set the body's moment of inertia. This is like mass, but for rotation: it determines how much torque it takes to rotate the body. The moment of inertia is usually computed automatically from the mass and the shapes, but this function allows you to set a custom value. Set 0 (or negative) inertia to return to automatically computing it. + Return the applied force vector. </description> </method> - <method name="set_weight"> - <argument index="0" name="weight" type="float"> - </argument> + <method name="get_applied_torque" qualifiers="const"> + <return type="float"> + </return> <description> - Set the body weight given standard earth-weight (gravity 9.8). Not really useful for 2D since most measures for this node are in pixels. + Return the torque which is being applied to this body. </description> </method> - <method name="get_weight" qualifiers="const"> + <method name="get_bounce" qualifiers="const"> <return type="float"> </return> <description> - Return the body weight given standard earth-weight (gravity 9.8). + Return the body bounciness. </description> </method> - <method name="set_friction"> - <argument index="0" name="friction" type="float"> - </argument> + <method name="get_colliding_bodies" qualifiers="const"> + <return type="Array"> + </return> <description> - Set the body friction, from 0 (frictionless) to 1 (full friction). + Return a list of the bodies colliding with this one. + </description> + </method> + <method name="get_continuous_collision_detection_mode" qualifiers="const"> + <return type="int"> + </return> + <description> + Return whether this body is using continuous collision detection. </description> </method> <method name="get_friction" qualifiers="const"> @@ -31788,74 +32101,95 @@ This method controls whether the position between two cached points is interpola Return the body friction. </description> </method> - <method name="set_bounce"> - <argument index="0" name="bounce" type="float"> - </argument> + <method name="get_gravity_scale" qualifiers="const"> + <return type="float"> + </return> <description> - Set the body bounciness, from 0 (no bounce) to 1 (full bounce). + Return the gravity factor. </description> </method> - <method name="get_bounce" qualifiers="const"> + <method name="get_inertia" qualifiers="const"> <return type="float"> </return> <description> - Return the body bounciness. + Return the body's moment of inertia. This is usually automatically computed from the mass and the shapes. Note that this doesn't seem to work in a [code]_ready[/code] function: it apparently has not been auto-computed yet. </description> </method> - <method name="set_gravity_scale"> - <argument index="0" name="gravity_scale" type="float"> - </argument> + <method name="get_linear_damp" qualifiers="const"> + <return type="float"> + </return> <description> - Set the gravity factor. This factor multiplies gravity intensity just for this body. + Return the linear damp for this body. </description> </method> - <method name="get_gravity_scale" qualifiers="const"> + <method name="get_linear_velocity" qualifiers="const"> + <return type="Vector2"> + </return> + <description> + Return the body linear velocity. This changes by physics granularity. See [method set_linear_velocity]. + </description> + </method> + <method name="get_mass" qualifiers="const"> <return type="float"> </return> <description> - Return the gravity factor. + Return the body mass. </description> </method> - <method name="set_linear_damp"> - <argument index="0" name="linear_damp" type="float"> - </argument> + <method name="get_max_contacts_reported" qualifiers="const"> + <return type="int"> + </return> <description> - Set the linear damp for this body. If this value is different from -1, any linear damp derived from the world or areas will be overridden. + Return the maximum contacts that can be reported. See [method set_max_contacts_reported]. </description> </method> - <method name="get_linear_damp" qualifiers="const"> + <method name="get_mode" qualifiers="const"> + <return type="int"> + </return> + <description> + Return the current body mode, see [method set_mode]. + </description> + </method> + <method name="get_weight" qualifiers="const"> <return type="float"> </return> <description> - Return the linear damp for this body. + Return the body weight given standard earth-weight (gravity 9.8). </description> </method> - <method name="set_angular_damp"> - <argument index="0" name="angular_damp" type="float"> - </argument> + <method name="is_able_to_sleep" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the angular damp for this body. If this value is different from -1, any angular damp derived from the world or areas will be overridden. + Return true if the body has the ability to fall asleep when not moving. See [method set_can_sleep]. </description> </method> - <method name="get_angular_damp" qualifiers="const"> - <return type="float"> + <method name="is_contact_monitor_enabled" qualifiers="const"> + <return type="bool"> </return> <description> - Return the angular damp for this body. + Return whether contact monitoring is enabled. </description> </method> - <method name="set_linear_velocity"> - <argument index="0" name="linear_velocity" type="Vector2"> - </argument> + <method name="is_sleeping" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the body linear velocity. Can be used sporadically, but [b]DON'T SET THIS IN EVERY FRAME[/b], because physics may be running in another thread and definitely runs at a different granularity. Use [method _integrate_forces] as your process loop if you want to have precise control of the body state. + Return whether the body is sleeping. </description> </method> - <method name="get_linear_velocity" qualifiers="const"> - <return type="Vector2"> + <method name="is_using_custom_integrator"> + <return type="bool"> </return> <description> - Return the body linear velocity. This changes by physics granularity. See [method set_linear_velocity]. + Return true if the body is not doing any built-in force integration. + </description> + </method> + <method name="set_angular_damp"> + <argument index="0" name="angular_damp" type="float"> + </argument> + <description> + Set the angular damp for this body. If this value is different from -1, any angular damp derived from the world or areas will be overridden. </description> </method> <method name="set_angular_velocity"> @@ -31865,39 +32199,40 @@ This method controls whether the position between two cached points is interpola Set the body angular velocity. Can be used sporadically, but [b]DON'T SET THIS IN EVERY FRAME[/b], because physics may be running in another thread and definitely runs at a different granularity. Use [method _integrate_forces] as your process loop if you want to have precise control of the body state. </description> </method> - <method name="get_angular_velocity" qualifiers="const"> - <return type="float"> - </return> + <method name="set_applied_force"> + <argument index="0" name="force" type="Vector2"> + </argument> <description> - Return the body angular velocity. This changes by physics granularity. See [method set_angular_velocity]. + Set the applied force vector. This is the equivalent of pushing a box over the ground: the force applied is applied constantly. </description> </method> - <method name="set_max_contacts_reported"> - <argument index="0" name="amount" type="int"> + <method name="set_applied_torque"> + <argument index="0" name="torque" type="float"> </argument> <description> - Set the maximum contacts to report. Bodies can keep a log of the contacts with other bodies, this is enabled by setting the maximum amount of contacts reported to a number greater than 0. + Set a constant torque which will be applied to this body. </description> </method> - <method name="get_max_contacts_reported" qualifiers="const"> - <return type="int"> - </return> + <method name="set_axis_velocity"> + <argument index="0" name="axis_velocity" type="Vector2"> + </argument> <description> - Return the maximum contacts that can be reported. See [method set_max_contacts_reported]. + Set an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior. </description> </method> - <method name="set_use_custom_integrator"> - <argument index="0" name="enable" type="bool"> + <method name="set_bounce"> + <argument index="0" name="bounce" type="float"> </argument> <description> - Pass true to disable the internal force integration (like gravity or air friction) for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] function, if defined. + Set the body bounciness, from 0 (no bounce) to 1 (full bounce). </description> </method> - <method name="is_using_custom_integrator"> - <return type="bool"> - </return> + <method name="set_can_sleep"> + <argument index="0" name="able_to_sleep" type="bool"> + </argument> <description> - Return true if the body is not doing any built-in force integration. + Set the body ability to fall asleep when not moving. This saves an enormous amount of processor time when there are plenty of rigid bodies (non static) in a scene. + Sleeping bodies are not affected by forces until a collision or an [method apply_impulse] / [method set_applied_force] wakes them up. Until then, they behave like a static body. </description> </method> <method name="set_contact_monitor"> @@ -31907,13 +32242,6 @@ This method controls whether the position between two cached points is interpola Enable contact monitoring. This allows the body to emit signals when it collides with another. </description> </method> - <method name="is_contact_monitor_enabled" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return whether contact monitoring is enabled. - </description> - </method> <method name="set_continuous_collision_detection_mode"> <argument index="0" name="mode" type="int"> </argument> @@ -31922,64 +32250,60 @@ This method controls whether the position between two cached points is interpola Continuous collision detection tries to predict where a moving body will collide, instead of moving it and correcting its movement if it collided. The first is more precise, and misses less impacts by small, fast-moving objects. The second is faster to compute, but can miss small, fast-moving objects. </description> </method> - <method name="get_continuous_collision_detection_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_friction"> + <argument index="0" name="friction" type="float"> + </argument> <description> - Return whether this body is using continuous collision detection. + Set the body friction, from 0 (frictionless) to 1 (full friction). </description> </method> - <method name="set_axis_velocity"> - <argument index="0" name="axis_velocity" type="Vector2"> + <method name="set_gravity_scale"> + <argument index="0" name="gravity_scale" type="float"> </argument> <description> - Set an axis velocity. The velocity in the given vector axis will be set as the given vector length. This is useful for jumping behavior. + Set the gravity factor. This factor multiplies gravity intensity just for this body. </description> </method> - <method name="apply_impulse"> - <argument index="0" name="offset" type="Vector2"> - </argument> - <argument index="1" name="impulse" type="Vector2"> + <method name="set_inertia"> + <argument index="0" name="inertia" type="float"> </argument> <description> - Apply a positioned impulse (which will be affected by the body mass and shape). This is the equivalent of hitting a billiard ball with a cue: a force that is applied once, and only once. Both the impulse and the offset from the body origin are in global coordinates. + Set the body's moment of inertia. This is like mass, but for rotation: it determines how much torque it takes to rotate the body. The moment of inertia is usually computed automatically from the mass and the shapes, but this function allows you to set a custom value. Set 0 (or negative) inertia to return to automatically computing it. </description> </method> - <method name="set_applied_force"> - <argument index="0" name="force" type="Vector2"> + <method name="set_linear_damp"> + <argument index="0" name="linear_damp" type="float"> </argument> <description> - Set the applied force vector. This is the equivalent of pushing a box over the ground: the force applied is applied constantly. + Set the linear damp for this body. If this value is different from -1, any linear damp derived from the world or areas will be overridden. </description> </method> - <method name="get_applied_force" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_linear_velocity"> + <argument index="0" name="linear_velocity" type="Vector2"> + </argument> <description> - Return the applied force vector. + Set the body linear velocity. Can be used sporadically, but [b]DON'T SET THIS IN EVERY FRAME[/b], because physics may be running in another thread and definitely runs at a different granularity. Use [method _integrate_forces] as your process loop if you want to have precise control of the body state. </description> </method> - <method name="set_applied_torque"> - <argument index="0" name="torque" type="float"> + <method name="set_mass"> + <argument index="0" name="mass" type="float"> </argument> <description> - Set a constant torque which will be applied to this body. + Set the body mass. </description> </method> - <method name="get_applied_torque" qualifiers="const"> - <return type="float"> - </return> + <method name="set_max_contacts_reported"> + <argument index="0" name="amount" type="int"> + </argument> <description> - Return the torque which is being applied to this body. + Set the maximum contacts to report. Bodies can keep a log of the contacts with other bodies, this is enabled by setting the maximum amount of contacts reported to a number greater than 0. </description> </method> - <method name="add_force"> - <argument index="0" name="offset" type="Vector2"> - </argument> - <argument index="1" name="force" type="Vector2"> + <method name="set_mode"> + <argument index="0" name="mode" type="int"> </argument> <description> - Add a positioned force to the applied force and torque. As with [method apply_impulse], both the force and the offset from the body origin are in global coordinates. + Set the body mode, from the MODE_* enum. This allows to change to a static body or a character body. </description> </method> <method name="set_sleeping"> @@ -31989,26 +32313,18 @@ This method controls whether the position between two cached points is interpola Set whether a body is sleeping or not. Sleeping bodies are not affected by forces until a collision or an [method apply_impulse] / [method set_applied_force] wakes them up. Until then, they behave like a static body. </description> </method> - <method name="is_sleeping" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return whether the body is sleeping. - </description> - </method> - <method name="set_can_sleep"> - <argument index="0" name="able_to_sleep" type="bool"> + <method name="set_use_custom_integrator"> + <argument index="0" name="enable" type="bool"> </argument> <description> - Set the body ability to fall asleep when not moving. This saves an enormous amount of processor time when there are plenty of rigid bodies (non static) in a scene. - Sleeping bodies are not affected by forces until a collision or an [method apply_impulse] / [method set_applied_force] wakes them up. Until then, they behave like a static body. + Pass true to disable the internal force integration (like gravity or air friction) for this body. Other than collision response, the body will only move as determined by the [method _integrate_forces] function, if defined. </description> </method> - <method name="is_able_to_sleep" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_weight"> + <argument index="0" name="weight" type="float"> + </argument> <description> - Return true if the body has the ability to fall asleep when not moving. See [method set_can_sleep]. + Set the body weight given standard earth-weight (gravity 9.8). Not really useful for 2D since most measures for this node are in pixels. </description> </method> <method name="test_motion"> @@ -32024,13 +32340,6 @@ This method controls whether the position between two cached points is interpola Return whether the body would collide, if it tried to move in the given vector. This method allows two extra parameters: A margin, which increases slightly the size of the shapes involved in the collision detection, and an object of type [Physics2DTestMotionResult], which will store additional information about the collision (should there be one). </description> </method> - <method name="get_colliding_bodies" qualifiers="const"> - <return type="Array"> - </return> - <description> - Return a list of the bodies colliding with this one. - </description> - </method> </methods> <signals> <signal name="body_enter"> @@ -32082,18 +32391,6 @@ This method controls whether the position between two cached points is interpola </signal> </signals> <constants> - <constant name="MODE_STATIC" value="1"> - Static mode. The body behaves like a [StaticBody2D], and can only move by user code. - </constant> - <constant name="MODE_KINEMATIC" value="3"> - Kinematic body. The body behaves like a [KinematicBody2D], and can only move by user code. - </constant> - <constant name="MODE_RIGID" value="0"> - Rigid body. This is the "natural" state of a rigid body. It is affected by forces, and can move, rotate, and be affected by user code. - </constant> - <constant name="MODE_CHARACTER" value="2"> - Character body. This behaves like a rigid body, but can not rotate. - </constant> <constant name="CCD_MODE_DISABLED" value="0"> Disables continuous collision detection. This is the fastest way to detect body collisions, but can miss small, fast-moving objects. </constant> @@ -32103,6 +32400,18 @@ This method controls whether the position between two cached points is interpola <constant name="CCD_MODE_CAST_SHAPE" value="2"> Enables continuous collision detection by shapecasting. It is the slowest CCD method, and the most precise. </constant> + <constant name="MODE_RIGID" value="0"> + Rigid body. This is the "natural" state of a rigid body. It is affected by forces, and can move, rotate, and be affected by user code. + </constant> + <constant name="MODE_STATIC" value="1"> + Static mode. The body behaves like a [StaticBody2D], and can only move by user code. + </constant> + <constant name="MODE_CHARACTER" value="2"> + Character body. This behaves like a rigid body, but can not rotate. + </constant> + <constant name="MODE_KINEMATIC" value="3"> + Kinematic body. The body behaves like a [KinematicBody2D], and can only move by user code. + </constant> </constants> </class> <class name="Room" inherits="VisualInstance" category="Core"> @@ -32113,9 +32422,7 @@ This method controls whether the position between two cached points is interpola Room contains the data to define the bounds of a scene (using a BSP Tree). It is instanced by a [VisualInstance] node to create rooms. See that class documentation for more information about rooms. </description> <methods> - <method name="set_room"> - <argument index="0" name="room" type="Room"> - </argument> + <method name="compute_room_from_subtree"> <description> </description> </method> @@ -32125,19 +32432,21 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="compute_room_from_subtree"> + <method name="is_simulating_acoustics" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="set_simulate_acoustics"> - <argument index="0" name="enable" type="bool"> + <method name="set_room"> + <argument index="0" name="room" type="Room"> </argument> <description> </description> </method> - <method name="is_simulating_acoustics" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_simulate_acoustics"> + <argument index="0" name="enable" type="bool"> + </argument> <description> </description> </method> @@ -32151,24 +32460,12 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_bounds"> - <argument index="0" name="bsp_tree" type="Dictionary"> - </argument> - <description> - </description> - </method> <method name="get_bounds" qualifiers="const"> <return type="Dictionary"> </return> <description> </description> </method> - <method name="set_geometry_hint"> - <argument index="0" name="triangles" type="Vector3Array"> - </argument> - <description> - </description> - </method> <method name="get_geometry_hint" qualifiers="const"> <return type="Vector3Array"> </return> @@ -32183,6 +32480,18 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> + <method name="set_bounds"> + <argument index="0" name="bsp_tree" type="Dictionary"> + </argument> + <description> + </description> + </method> + <method name="set_geometry_hint"> + <argument index="0" name="triangles" type="Vector3Array"> + </argument> + <description> + </description> + </method> </methods> <constants> </constants> @@ -32207,18 +32516,18 @@ This method controls whether the position between two cached points is interpola Calling this method overrides previously existing data. Stereo samples are interleaved pairs of left and right points (in that order), but count as one sample for length purposes. </description> </method> - <method name="get_format" qualifiers="const"> - <return type="int"> + <method name="get_data" qualifiers="const"> + <return type="RawArray"> </return> <description> - Return the sample format. + Return sample data as little endian. </description> </method> - <method name="is_stereo" qualifiers="const"> - <return type="bool"> + <method name="get_format" qualifiers="const"> + <return type="int"> </return> <description> - Return whether the current sample was created as stereo. + Return the sample format. </description> </method> <method name="get_length" qualifiers="const"> @@ -32228,29 +32537,25 @@ This method controls whether the position between two cached points is interpola Return the sample length in samples. Stereo samples count as one, even if they are made of a left and a right sample. </description> </method> - <method name="set_data"> - <argument index="0" name="data" type="RawArray"> - </argument> + <method name="get_loop_begin" qualifiers="const"> + <return type="int"> + </return> <description> - Set sample data. Data must be little endian, no matter the host platform, and exactly as long as to fit all samples. The length of this array can be calculated as follows: - Get the sample length ([method get_length]). - If the sample format is FORMAT_PCM16, multiply it by 2. - If the sample format is FORMAT_IMA_ADPCM, divide it by 2 (rounding any fraction up), then add 4. - If the sample is stereo ([method is_stereo]), multiply it by 2. + Return the loop begin position. </description> </method> - <method name="get_data" qualifiers="const"> - <return type="RawArray"> + <method name="get_loop_end" qualifiers="const"> + <return type="int"> </return> <description> - Return sample data as little endian. + Return the loop end position. </description> </method> - <method name="set_mix_rate"> - <argument index="0" name="hz" type="int"> - </argument> + <method name="get_loop_format" qualifiers="const"> + <return type="int"> + </return> <description> - Set the mix rate for the sample (expected playback frequency). + Return the loop format. </description> </method> <method name="get_mix_rate" qualifiers="const"> @@ -32260,18 +32565,22 @@ This method controls whether the position between two cached points is interpola Return the mix rate for the sample. </description> </method> - <method name="set_loop_format"> - <argument index="0" name="format" type="int"> - </argument> + <method name="is_stereo" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the loop format (use LOOP_* constants as argument). + Return whether the current sample was created as stereo. </description> </method> - <method name="get_loop_format" qualifiers="const"> - <return type="int"> - </return> + <method name="set_data"> + <argument index="0" name="data" type="RawArray"> + </argument> <description> - Return the loop format. + Set sample data. Data must be little endian, no matter the host platform, and exactly as long as to fit all samples. The length of this array can be calculated as follows: + Get the sample length ([method get_length]). + If the sample format is FORMAT_PCM16, multiply it by 2. + If the sample format is FORMAT_IMA_ADPCM, divide it by 2 (rounding any fraction up), then add 4. + If the sample is stereo ([method is_stereo]), multiply it by 2. </description> </method> <method name="set_loop_begin"> @@ -32281,13 +32590,6 @@ This method controls whether the position between two cached points is interpola Set the loop begin position. It must be a valid frame and less than the loop end position. </description> </method> - <method name="get_loop_begin" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the loop begin position. - </description> - </method> <method name="set_loop_end"> <argument index="0" name="pos" type="int"> </argument> @@ -32295,11 +32597,18 @@ This method controls whether the position between two cached points is interpola Set the loop end position. It must be a valid frame and greater than the loop begin position. </description> </method> - <method name="get_loop_end" qualifiers="const"> - <return type="int"> - </return> + <method name="set_loop_format"> + <argument index="0" name="format" type="int"> + </argument> <description> - Return the loop end position. + Set the loop format (use LOOP_* constants as argument). + </description> + </method> + <method name="set_mix_rate"> + <argument index="0" name="hz" type="int"> + </argument> + <description> + Set the mix rate for the sample (expected playback frequency). </description> </method> </methods> @@ -32366,13 +32675,13 @@ This method controls whether the position between two cached points is interpola Remove the sample matching the given text ID. </description> </method> - <method name="sample_set_volume_db"> + <method name="sample_get_pitch_scale" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="name" type="String"> </argument> - <argument index="1" name="db" type="float"> - </argument> <description> - Set the volume (in dB) for the given sample. + Return the pitch scale for the given sample. </description> </method> <method name="sample_get_volume_db" qualifiers="const"> @@ -32393,13 +32702,13 @@ This method controls whether the position between two cached points is interpola Set the pitch scale for the given sample. </description> </method> - <method name="sample_get_pitch_scale" qualifiers="const"> - <return type="float"> - </return> + <method name="sample_set_volume_db"> <argument index="0" name="name" type="String"> </argument> + <argument index="1" name="db" type="float"> + </argument> <description> - Return the pitch scale for the given sample. + Set the volume (in dB) for the given sample. </description> </method> </methods> @@ -32414,181 +32723,149 @@ This method controls whether the position between two cached points is interpola SamplePlayer is a [Node] meant for simple sample playback. A library of samples is loaded and played back "as is", without positioning or anything. </description> <methods> - <method name="set_sample_library"> - <argument index="0" name="library" type="SampleLibrary"> + <method name="get_chorus" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="voice" type="int"> </argument> <description> - Set the sample library for the player. + Return the current chorus send level for a given voice. </description> </method> - <method name="get_sample_library" qualifiers="const"> - <return type="SampleLibrary"> + <method name="get_default_chorus" qualifiers="const"> + <return type="float"> </return> <description> - Return the sample library used by the player. + Return the default chorus send level of the player. </description> </method> - <method name="set_polyphony"> - <argument index="0" name="max_voices" type="int"> - </argument> + <method name="get_default_filter_cutoff" qualifiers="const"> + <return type="float"> + </return> <description> - Set the polyphony of the player (maximum amount of simultaneous voices). + Return the default filter cutoff frequency of the player. </description> </method> - <method name="get_polyphony" qualifiers="const"> - <return type="int"> + <method name="get_default_filter_gain" qualifiers="const"> + <return type="float"> </return> <description> - Return the polyphony of the player. + Return the default filter gain of the player. </description> </method> - <method name="play"> - <return type="int"> + <method name="get_default_filter_resonance" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="unique" type="bool" default="false"> - </argument> <description> - Play a sample referenced by its name. - Optionally, the playback can be made "unique" to force stopping all other samples currently played. The voices allocated for playback will then be returned. + Return the default filter resonance of the player. </description> </method> - <method name="stop"> - <argument index="0" name="voice" type="int"> - </argument> + <method name="get_default_filter_type" qualifiers="const"> + <return type="int"> + </return> <description> - Stop a given voice. + Return the default filter type in use (see FILTER_* constants) for the player. </description> </method> - <method name="stop_all"> + <method name="get_default_pan" qualifiers="const"> + <return type="float"> + </return> <description> - Stop all playing voices. + Return the default panning of the player. </description> </method> - <method name="set_mix_rate"> - <argument index="0" name="voice" type="int"> - </argument> - <argument index="1" name="hz" type="int"> - </argument> + <method name="get_default_pan_depth" qualifiers="const"> + <return type="float"> + </return> <description> - Set the mix rate (in Hz) of a given voice. + Return the default pan depth of the player. </description> </method> - <method name="set_pitch_scale"> - <argument index="0" name="voice" type="int"> - </argument> - <argument index="1" name="ratio" type="float"> - </argument> + <method name="get_default_pan_height" qualifiers="const"> + <return type="float"> + </return> <description> - Set the pitch scale of a given voice. A ratio of 1.0 is the normal scale. + Return the default pan height of the player. </description> </method> - <method name="set_volume"> - <argument index="0" name="voice" type="int"> - </argument> - <argument index="1" name="volume" type="float"> - </argument> + <method name="get_default_pitch_scale" qualifiers="const"> + <return type="float"> + </return> <description> - Set the volume of a given voice using a linear scale. - The "volume" argument should be a positive factor ranging from 0.0 (mute) up to 16.0 (i.e. 24 dB). - A factor of 1.0 means that the voice will be played at normal system volume. Factors above 1.0 might be limited by the platform's audio output. + Return the default pitch scale of the player. </description> </method> - <method name="set_volume_db"> - <argument index="0" name="voice" type="int"> - </argument> - <argument index="1" name="db" type="float"> - </argument> + <method name="get_default_reverb" qualifiers="const"> + <return type="float"> + </return> <description> - Set the volume of a given voice in dB. - The "dB" argument can range from -80 to 24 dB, 0 dB being the maximum volume. Every 6 dB (resp. -6 dB), the volume is increased (resp. reduced) by half. + Return the default reverberation send level of the player. </description> </method> - <method name="set_pan"> - <argument index="0" name="voice" type="int"> - </argument> - <argument index="1" name="pan" type="float"> - </argument> - <argument index="2" name="depth" type="float" default="0"> - </argument> - <argument index="3" name="height" type="float" default="0"> - </argument> + <method name="get_default_reverb_room" qualifiers="const"> + <return type="int"> + </return> <description> - Set the panning of a voice. Panning goes from -1.0 (left) to +1.0 (right). - Optionally, for hardware than support 3D sound, one can also set depth and height (also in range -1.0 to +1.0). + Return the default reverberation room type of the player (see REVERB_* enum). </description> </method> - <method name="set_filter"> - <argument index="0" name="voice" type="int"> - </argument> - <argument index="1" name="type" type="int"> - </argument> - <argument index="2" name="cutoff_hz" type="float"> - </argument> - <argument index="3" name="resonance" type="float"> - </argument> - <argument index="4" name="gain" type="float" default="0"> - </argument> + <method name="get_default_volume" qualifiers="const"> + <return type="float"> + </return> <description> - Set the filter for a given voice, using the given type (see FILTER_* constants), cutoff frequency (from 20 to 16,384 Hz) and resonance (from 0 to 4.0). - Optionally, a gain can also be given (from 0 to 2.0). + Return the default volume (on a linear scale) of the player. </description> </method> - <method name="set_chorus"> - <argument index="0" name="voice" type="int"> - </argument> - <argument index="1" name="send" type="float"> - </argument> + <method name="get_default_volume_db" qualifiers="const"> + <return type="float"> + </return> <description> - Set the chorus send level of a voice (from 0 to 1.0). For setting chorus parameters, see [AudioServer]. + Return the default volume (in dB) of the player. </description> </method> - <method name="set_reverb"> + <method name="get_filter_cutoff" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="voice" type="int"> </argument> - <argument index="1" name="room_type" type="int"> - </argument> - <argument index="2" name="send" type="float"> - </argument> <description> - Set the reverberation type (see REVERB_* constants) and send level (from 0 to 1.0) of a voice. + Return the current filter cutoff frequency for a given voice. </description> </method> - <method name="get_mix_rate" qualifiers="const"> - <return type="int"> + <method name="get_filter_gain" qualifiers="const"> + <return type="float"> </return> <argument index="0" name="voice" type="int"> </argument> <description> - Return the current mix rate for a given voice. + Return the current filter gain for a given voice. </description> </method> - <method name="get_pitch_scale" qualifiers="const"> + <method name="get_filter_resonance" qualifiers="const"> <return type="float"> </return> <argument index="0" name="voice" type="int"> </argument> <description> - Return the current pitch scale for a given voice. + Return the current filter resonance for a given voice. </description> </method> - <method name="get_volume" qualifiers="const"> - <return type="float"> + <method name="get_filter_type" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="voice" type="int"> </argument> <description> - Return the current volume (on a linear scale) for a given voice. + Return the current filter type in use (see FILTER_* constants) for a given voice. </description> </method> - <method name="get_volume_db" qualifiers="const"> - <return type="float"> + <method name="get_mix_rate" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="voice" type="int"> </argument> <description> - Return the current volume (in dB) for a given voice. + Return the current mix rate for a given voice. </description> </method> <method name="get_pan" qualifiers="const"> @@ -32618,103 +32895,107 @@ This method controls whether the position between two cached points is interpola Return the current pan height for a given voice. </description> </method> - <method name="get_filter_type" qualifiers="const"> - <return type="int"> + <method name="get_pitch_scale" qualifiers="const"> + <return type="float"> </return> <argument index="0" name="voice" type="int"> </argument> <description> - Return the current filter type in use (see FILTER_* constants) for a given voice. + Return the current pitch scale for a given voice. </description> </method> - <method name="get_filter_cutoff" qualifiers="const"> - <return type="float"> + <method name="get_polyphony" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="voice" type="int"> - </argument> <description> - Return the current filter cutoff frequency for a given voice. + Return the polyphony of the player. </description> </method> - <method name="get_filter_resonance" qualifiers="const"> + <method name="get_reverb" qualifiers="const"> <return type="float"> </return> <argument index="0" name="voice" type="int"> </argument> <description> - Return the current filter resonance for a given voice. + Return the current reverberation send level for a given voice. </description> </method> - <method name="get_filter_gain" qualifiers="const"> - <return type="float"> + <method name="get_reverb_room" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="voice" type="int"> </argument> <description> - Return the current filter gain for a given voice. + Return the current reverberation room type for a given voice (see REVERB_* enum). </description> </method> - <method name="get_chorus" qualifiers="const"> - <return type="float"> + <method name="get_sample_library" qualifiers="const"> + <return type="SampleLibrary"> </return> - <argument index="0" name="voice" type="int"> - </argument> <description> - Return the current chorus send level for a given voice. + Return the sample library used by the player. </description> </method> - <method name="get_reverb_room" qualifiers="const"> - <return type="int"> + <method name="get_volume" qualifiers="const"> + <return type="float"> </return> <argument index="0" name="voice" type="int"> </argument> <description> - Return the current reverberation room type for a given voice (see REVERB_* enum). + Return the current volume (on a linear scale) for a given voice. </description> </method> - <method name="get_reverb" qualifiers="const"> + <method name="get_volume_db" qualifiers="const"> <return type="float"> </return> <argument index="0" name="voice" type="int"> </argument> <description> - Return the current reverberation send level for a given voice. + Return the current volume (in dB) for a given voice. </description> </method> - <method name="set_default_pitch_scale"> - <argument index="0" name="ratio" type="float"> - </argument> + <method name="is_active" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the default pitch scale of the player. A ratio of 1.0 is the normal scale. + Return whether the player is currently active. </description> </method> - <method name="set_default_volume"> - <argument index="0" name="volume" type="float"> + <method name="is_voice_active" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="voice" type="int"> </argument> <description> - Set the default volume of the player using a linear scale. - The "volume" argument should be a positive factor ranging from 0.0 (mute) up to 16.0 (i.e. 24 dB). - A factor of 1.0 means that the voice will be played at normal system volume. Factors above 1.0 might be limited by the platform's audio output. + Return whether the given voice is currently active. </description> </method> - <method name="set_default_volume_db"> - <argument index="0" name="db" type="float"> + <method name="play"> + <return type="int"> + </return> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="unique" type="bool" default="false"> </argument> <description> - Set the default volume of the player in dB. - The "dB" argument can range from -80 to 24 dB, 0 dB being the maximum volume. Every 6 dB (resp. -6 dB), the volume is increased (resp. reduced) by half. + Play a sample referenced by its name. + Optionally, the playback can be made "unique" to force stopping all other samples currently played. The voices allocated for playback will then be returned. </description> </method> - <method name="set_default_pan"> - <argument index="0" name="pan" type="float"> + <method name="set_chorus"> + <argument index="0" name="voice" type="int"> </argument> - <argument index="1" name="depth" type="float" default="0"> + <argument index="1" name="send" type="float"> </argument> - <argument index="2" name="height" type="float" default="0"> + <description> + Set the chorus send level of a voice (from 0 to 1.0). For setting chorus parameters, see [AudioServer]. + </description> + </method> + <method name="set_default_chorus"> + <argument index="0" name="send" type="float"> </argument> <description> - Set the default panning of the player. Panning goes from -1.0 (left) to +1.0 (right). - Optionally, for hardware than support 3D sound, one can also set depth and height (also in range -1.0 to +1.0). + Set the default chorus send level of the player (from 0 to 1.0). For setting chorus parameters, see [AudioServer]. </description> </method> <method name="set_default_filter"> @@ -32731,11 +33012,23 @@ This method controls whether the position between two cached points is interpola Optionally, a gain can also be given (from 0 to 2.0). </description> </method> - <method name="set_default_chorus"> - <argument index="0" name="send" type="float"> + <method name="set_default_pan"> + <argument index="0" name="pan" type="float"> + </argument> + <argument index="1" name="depth" type="float" default="0"> + </argument> + <argument index="2" name="height" type="float" default="0"> </argument> <description> - Set the default chorus send level of the player (from 0 to 1.0). For setting chorus parameters, see [AudioServer]. + Set the default panning of the player. Panning goes from -1.0 (left) to +1.0 (right). + Optionally, for hardware than support 3D sound, one can also set depth and height (also in range -1.0 to +1.0). + </description> + </method> + <method name="set_default_pitch_scale"> + <argument index="0" name="ratio" type="float"> + </argument> + <description> + Set the default pitch scale of the player. A ratio of 1.0 is the normal scale. </description> </method> <method name="set_default_reverb"> @@ -32747,111 +33040,127 @@ This method controls whether the position between two cached points is interpola Set the default reverberation type (see REVERB_* constants) and send level (from 0 to 1.0) of the player. </description> </method> - <method name="get_default_pitch_scale" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the default pitch scale of the player. - </description> - </method> - <method name="get_default_volume" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the default volume (on a linear scale) of the player. - </description> - </method> - <method name="get_default_volume_db" qualifiers="const"> - <return type="float"> - </return> + <method name="set_default_volume"> + <argument index="0" name="volume" type="float"> + </argument> <description> - Return the default volume (in dB) of the player. + Set the default volume of the player using a linear scale. + The "volume" argument should be a positive factor ranging from 0.0 (mute) up to 16.0 (i.e. 24 dB). + A factor of 1.0 means that the voice will be played at normal system volume. Factors above 1.0 might be limited by the platform's audio output. </description> </method> - <method name="get_default_pan" qualifiers="const"> - <return type="float"> - </return> + <method name="set_default_volume_db"> + <argument index="0" name="db" type="float"> + </argument> <description> - Return the default panning of the player. + Set the default volume of the player in dB. + The "dB" argument can range from -80 to 24 dB, 0 dB being the maximum volume. Every 6 dB (resp. -6 dB), the volume is increased (resp. reduced) by half. </description> </method> - <method name="get_default_pan_depth" qualifiers="const"> - <return type="float"> - </return> + <method name="set_filter"> + <argument index="0" name="voice" type="int"> + </argument> + <argument index="1" name="type" type="int"> + </argument> + <argument index="2" name="cutoff_hz" type="float"> + </argument> + <argument index="3" name="resonance" type="float"> + </argument> + <argument index="4" name="gain" type="float" default="0"> + </argument> <description> - Return the default pan depth of the player. + Set the filter for a given voice, using the given type (see FILTER_* constants), cutoff frequency (from 20 to 16,384 Hz) and resonance (from 0 to 4.0). + Optionally, a gain can also be given (from 0 to 2.0). </description> </method> - <method name="get_default_pan_height" qualifiers="const"> - <return type="float"> - </return> + <method name="set_mix_rate"> + <argument index="0" name="voice" type="int"> + </argument> + <argument index="1" name="hz" type="int"> + </argument> <description> - Return the default pan height of the player. + Set the mix rate (in Hz) of a given voice. </description> </method> - <method name="get_default_filter_type" qualifiers="const"> - <return type="int"> - </return> + <method name="set_pan"> + <argument index="0" name="voice" type="int"> + </argument> + <argument index="1" name="pan" type="float"> + </argument> + <argument index="2" name="depth" type="float" default="0"> + </argument> + <argument index="3" name="height" type="float" default="0"> + </argument> <description> - Return the default filter type in use (see FILTER_* constants) for the player. + Set the panning of a voice. Panning goes from -1.0 (left) to +1.0 (right). + Optionally, for hardware than support 3D sound, one can also set depth and height (also in range -1.0 to +1.0). </description> </method> - <method name="get_default_filter_cutoff" qualifiers="const"> - <return type="float"> - </return> + <method name="set_pitch_scale"> + <argument index="0" name="voice" type="int"> + </argument> + <argument index="1" name="ratio" type="float"> + </argument> <description> - Return the default filter cutoff frequency of the player. + Set the pitch scale of a given voice. A ratio of 1.0 is the normal scale. </description> </method> - <method name="get_default_filter_resonance" qualifiers="const"> - <return type="float"> - </return> + <method name="set_polyphony"> + <argument index="0" name="max_voices" type="int"> + </argument> <description> - Return the default filter resonance of the player. + Set the polyphony of the player (maximum amount of simultaneous voices). </description> </method> - <method name="get_default_filter_gain" qualifiers="const"> - <return type="float"> - </return> + <method name="set_reverb"> + <argument index="0" name="voice" type="int"> + </argument> + <argument index="1" name="room_type" type="int"> + </argument> + <argument index="2" name="send" type="float"> + </argument> <description> - Return the default filter gain of the player. + Set the reverberation type (see REVERB_* constants) and send level (from 0 to 1.0) of a voice. </description> </method> - <method name="get_default_chorus" qualifiers="const"> - <return type="float"> - </return> + <method name="set_sample_library"> + <argument index="0" name="library" type="SampleLibrary"> + </argument> <description> - Return the default chorus send level of the player. + Set the sample library for the player. </description> </method> - <method name="get_default_reverb_room" qualifiers="const"> - <return type="int"> - </return> + <method name="set_volume"> + <argument index="0" name="voice" type="int"> + </argument> + <argument index="1" name="volume" type="float"> + </argument> <description> - Return the default reverberation room type of the player (see REVERB_* enum). + Set the volume of a given voice using a linear scale. + The "volume" argument should be a positive factor ranging from 0.0 (mute) up to 16.0 (i.e. 24 dB). + A factor of 1.0 means that the voice will be played at normal system volume. Factors above 1.0 might be limited by the platform's audio output. </description> </method> - <method name="get_default_reverb" qualifiers="const"> - <return type="float"> - </return> + <method name="set_volume_db"> + <argument index="0" name="voice" type="int"> + </argument> + <argument index="1" name="db" type="float"> + </argument> <description> - Return the default reverberation send level of the player. + Set the volume of a given voice in dB. + The "dB" argument can range from -80 to 24 dB, 0 dB being the maximum volume. Every 6 dB (resp. -6 dB), the volume is increased (resp. reduced) by half. </description> </method> - <method name="is_active" qualifiers="const"> - <return type="bool"> - </return> + <method name="stop"> + <argument index="0" name="voice" type="int"> + </argument> <description> - Return whether the player is currently active. + Stop a given voice. </description> </method> - <method name="is_voice_active" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="voice" type="int"> - </argument> + <method name="stop_all"> <description> - Return whether the given voice is currently active. + Stop all playing voices. </description> </method> </methods> @@ -32883,6 +33192,9 @@ This method controls whether the position between two cached points is interpola <constant name="FILTER_HIGH_SHELF" value="8"> High-shelf filter is used for voice. </constant> + <constant name="INVALID_VOICE_ID" value="-1"> + Value returned if the voice ID is invalid. + </constant> <constant name="REVERB_SMALL" value="0"> Small reverberation room (house room). </constant> @@ -32895,9 +33207,6 @@ This method controls whether the position between two cached points is interpola <constant name="REVERB_HALL" value="3"> Huge reverberation room (cathedral, warehouse). </constant> - <constant name="INVALID_VOICE_ID" value="-1"> - Value returned if the voice ID is invalid. - </constant> </constants> </class> <class name="SamplePlayer2D" inherits="SoundPlayer2D" category="Core"> @@ -32908,32 +33217,34 @@ This method controls whether the position between two cached points is interpola Sample player for positional 2D Sound. Plays sound samples positionally, left and right depending on the distance/place on the screen. </description> <methods> - <method name="set_sample_library"> - <argument index="0" name="library" type="SampleLibrary"> - </argument> + <method name="get_polyphony" qualifiers="const"> + <return type="int"> + </return> <description> - Set the sample library for the player. + Return the polyphony of the player. </description> </method> - <method name="get_sample_library" qualifiers="const"> - <return type="SampleLibrary"> + <method name="get_random_pitch_scale" qualifiers="const"> + <return type="float"> </return> <description> - Return the sample library used by the player. + Return the amplitude used for random pitch scale variations. </description> </method> - <method name="set_polyphony"> - <argument index="0" name="max_voices" type="int"> - </argument> + <method name="get_sample_library" qualifiers="const"> + <return type="SampleLibrary"> + </return> <description> - Set the polyphony of the player (maximum amount of simultaneous voices). + Return the sample library used by the player. </description> </method> - <method name="get_polyphony" qualifiers="const"> - <return type="int"> + <method name="is_voice_active" qualifiers="const"> + <return type="bool"> </return> + <argument index="0" name="voice" type="int"> + </argument> <description> - Return the polyphony of the player. + Return whether a voice is still active or has stopped playing. </description> </method> <method name="play"> @@ -32948,31 +33259,33 @@ This method controls whether the position between two cached points is interpola Return a voice ID which can be used to modify the voice parameters, or INVALID_VOICE if the voice or sample are invalid. </description> </method> - <method name="voice_set_pitch_scale"> - <argument index="0" name="voice" type="int"> - </argument> - <argument index="1" name="ratio" type="float"> + <method name="set_polyphony"> + <argument index="0" name="max_voices" type="int"> </argument> <description> - Change the pitch scale of a currently playing voice. + Set the polyphony of the player (maximum amount of simultaneous voices). </description> </method> - <method name="voice_set_volume_scale_db"> - <argument index="0" name="voice" type="int"> - </argument> - <argument index="1" name="db" type="float"> + <method name="set_random_pitch_scale"> + <argument index="0" name="val" type="float"> </argument> <description> - Change the volume scale (in dB) of a currently playing voice. + Set the amplitude for random pitch scale variations. If different from zero, the pitch scale will vary randomly around 1.0 in a range defined by val. + The actual pitch scale will be, with "variation" ranging from -val to val: + * variation > 0: 1.0 + variation + * variation < 0: 1.0/(1.0 - variation) </description> </method> - <method name="is_voice_active" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="voice" type="int"> + <method name="set_sample_library"> + <argument index="0" name="library" type="SampleLibrary"> </argument> <description> - Return whether a voice is still active or has stopped playing. + Set the sample library for the player. + </description> + </method> + <method name="stop_all"> + <description> + Stop all playing voices. </description> </method> <method name="stop_voice"> @@ -32982,26 +33295,22 @@ This method controls whether the position between two cached points is interpola Stop a given voice. </description> </method> - <method name="stop_all"> - <description> - Stop all playing voices. - </description> - </method> - <method name="set_random_pitch_scale"> - <argument index="0" name="val" type="float"> + <method name="voice_set_pitch_scale"> + <argument index="0" name="voice" type="int"> + </argument> + <argument index="1" name="ratio" type="float"> </argument> <description> - Set the amplitude for random pitch scale variations. If different from zero, the pitch scale will vary randomly around 1.0 in a range defined by val. - The actual pitch scale will be, with "variation" ranging from -val to val: - * variation > 0: 1.0 + variation - * variation < 0: 1.0/(1.0 - variation) + Change the pitch scale of a currently playing voice. </description> </method> - <method name="get_random_pitch_scale" qualifiers="const"> - <return type="float"> - </return> + <method name="voice_set_volume_scale_db"> + <argument index="0" name="voice" type="int"> + </argument> + <argument index="1" name="db" type="float"> + </argument> <description> - Return the amplitude used for random pitch scale variations. + Change the volume scale (in dB) of a currently playing voice. </description> </method> </methods> @@ -33020,67 +33329,63 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="get_node_count" qualifiers="const"> - <return type="int"> + <method name="get_connection_binds" qualifiers="const"> + <return type="Array"> </return> + <argument index="0" name="idx" type="int"> + </argument> <description> </description> </method> - <method name="get_node_type" qualifiers="const"> - <return type="String"> + <method name="get_connection_count" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> </description> </method> - <method name="get_node_name" qualifiers="const"> - <return type="String"> + <method name="get_connection_flags" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="get_node_path" qualifiers="const"> - <return type="NodePath"> + <method name="get_connection_method" qualifiers="const"> + <return type="String"> </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="for_parent" type="bool" default="false"> - </argument> <description> </description> </method> - <method name="get_node_owner_path" qualifiers="const"> - <return type="NodePath"> + <method name="get_connection_signal" qualifiers="const"> + <return type="String"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="is_node_instance_placeholder" qualifiers="const"> - <return type="bool"> + <method name="get_connection_source" qualifiers="const"> + <return type="NodePath"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="get_node_instance_placeholder" qualifiers="const"> - <return type="String"> + <method name="get_connection_target" qualifiers="const"> + <return type="NodePath"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="get_node_instance" qualifiers="const"> - <return type="PackedScene"> + <method name="get_node_count" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> </description> </method> @@ -33092,80 +33397,84 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_node_property_count" qualifiers="const"> - <return type="int"> + <method name="get_node_instance" qualifiers="const"> + <return type="PackedScene"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="get_node_property_name" qualifiers="const"> + <method name="get_node_instance_placeholder" qualifiers="const"> <return type="String"> </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="prop_idx" type="int"> - </argument> <description> </description> </method> - <method name="get_node_property_value" qualifiers="const"> + <method name="get_node_name" qualifiers="const"> + <return type="String"> + </return> <argument index="0" name="idx" type="int"> </argument> - <argument index="1" name="prop_idx" type="int"> - </argument> <description> </description> </method> - <method name="get_connection_count" qualifiers="const"> - <return type="int"> + <method name="get_node_owner_path" qualifiers="const"> + <return type="NodePath"> </return> + <argument index="0" name="idx" type="int"> + </argument> <description> </description> </method> - <method name="get_connection_source" qualifiers="const"> + <method name="get_node_path" qualifiers="const"> <return type="NodePath"> </return> <argument index="0" name="idx" type="int"> </argument> + <argument index="1" name="for_parent" type="bool" default="false"> + </argument> <description> </description> </method> - <method name="get_connection_signal" qualifiers="const"> - <return type="String"> + <method name="get_node_property_count" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="get_connection_target" qualifiers="const"> - <return type="NodePath"> + <method name="get_node_property_name" qualifiers="const"> + <return type="String"> </return> <argument index="0" name="idx" type="int"> </argument> + <argument index="1" name="prop_idx" type="int"> + </argument> <description> </description> </method> - <method name="get_connection_method" qualifiers="const"> - <return type="String"> - </return> + <method name="get_node_property_value" qualifiers="const"> <argument index="0" name="idx" type="int"> </argument> + <argument index="1" name="prop_idx" type="int"> + </argument> <description> </description> </method> - <method name="get_connection_flags" qualifiers="const"> - <return type="int"> + <method name="get_node_type" qualifiers="const"> + <return type="String"> </return> <argument index="0" name="idx" type="int"> </argument> <description> </description> </method> - <method name="get_connection_binds" qualifiers="const"> - <return type="Array"> + <method name="is_node_instance_placeholder" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="idx" type="int"> </argument> @@ -33182,241 +33491,241 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="notify_group"> - <argument index="0" name="call_flags" type="int"> + <method name="call_group"> + <argument index="0" name="flags" type="int"> </argument> <argument index="1" name="group" type="String"> </argument> - <argument index="2" name="notification" type="int"> + <argument index="2" name="method" type="String"> </argument> - <description> - </description> - </method> - <method name="set_group"> - <argument index="0" name="call_flags" type="int"> + <argument index="3" name="arg0" type="Variant" default="NULL"> </argument> - <argument index="1" name="group" type="String"> + <argument index="4" name="arg1" type="Variant" default="NULL"> </argument> - <argument index="2" name="property" type="String"> + <argument index="5" name="arg2" type="Variant" default="NULL"> </argument> - <argument index="3" name="value" type="Variant"> + <argument index="6" name="arg3" type="Variant" default="NULL"> + </argument> + <argument index="7" name="arg4" type="Variant" default="NULL"> </argument> <description> </description> </method> - <method name="get_nodes_in_group"> - <return type="Array"> + <method name="change_scene"> + <return type="int"> </return> - <argument index="0" name="group" type="String"> + <argument index="0" name="path" type="String"> </argument> <description> </description> </method> - <method name="get_root" qualifiers="const"> - <return type="Viewport"> + <method name="change_scene_to"> + <return type="int"> </return> + <argument index="0" name="packed_scene" type="PackedScene"> + </argument> <description> </description> </method> - <method name="has_group" qualifiers="const"> - <return type="bool"> + <method name="get_current_scene" qualifiers="const"> + <return type="Node"> </return> - <argument index="0" name="name" type="String"> - </argument> <description> </description> </method> - <method name="set_auto_accept_quit"> - <argument index="0" name="enabled" type="bool"> - </argument> + <method name="get_edited_scene_root" qualifiers="const"> + <return type="Object"> + </return> <description> </description> </method> - <method name="set_editor_hint"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_frame" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="is_editor_hint" qualifiers="const"> - <return type="bool"> + <method name="get_node_count" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="set_debug_collisions_hint"> - <argument index="0" name="enable" type="bool"> + <method name="get_nodes_in_group"> + <return type="Array"> + </return> + <argument index="0" name="group" type="String"> </argument> <description> </description> </method> - <method name="is_debugging_collisions_hint" qualifiers="const"> - <return type="bool"> + <method name="get_root" qualifiers="const"> + <return type="Viewport"> </return> <description> </description> </method> - <method name="set_debug_navigation_hint"> - <argument index="0" name="enable" type="bool"> + <method name="has_group" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="name" type="String"> </argument> <description> </description> </method> + <method name="is_debugging_collisions_hint" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> <method name="is_debugging_navigation_hint" qualifiers="const"> <return type="bool"> </return> <description> </description> </method> - <method name="set_edited_scene_root"> - <argument index="0" name="scene" type="Object"> - </argument> + <method name="is_editor_hint" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="get_edited_scene_root" qualifiers="const"> - <return type="Object"> + <method name="is_paused" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="set_pause"> - <argument index="0" name="enable" type="bool"> + <method name="notify_group"> + <argument index="0" name="call_flags" type="int"> + </argument> + <argument index="1" name="group" type="String"> + </argument> + <argument index="2" name="notification" type="int"> </argument> <description> </description> </method> - <method name="is_paused" qualifiers="const"> - <return type="bool"> - </return> + <method name="queue_delete"> + <argument index="0" name="obj" type="Object"> + </argument> <description> </description> </method> - <method name="set_input_as_handled"> + <method name="quit"> <description> </description> </method> - <method name="get_node_count" qualifiers="const"> + <method name="reload_current_scene"> <return type="int"> </return> <description> </description> </method> - <method name="get_frame" qualifiers="const"> - <return type="int"> - </return> + <method name="set_auto_accept_quit"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> </description> </method> - <method name="quit"> + <method name="set_current_scene"> + <argument index="0" name="child_node" type="Node"> + </argument> <description> </description> </method> - <method name="set_screen_stretch"> - <argument index="0" name="mode" type="int"> - </argument> - <argument index="1" name="aspect" type="int"> - </argument> - <argument index="2" name="minsize" type="Vector2"> + <method name="set_debug_collisions_hint"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="queue_delete"> - <argument index="0" name="obj" type="Object"> + <method name="set_debug_navigation_hint"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="call_group"> - <argument index="0" name="flags" type="int"> - </argument> - <argument index="1" name="group" type="String"> - </argument> - <argument index="2" name="method" type="String"> - </argument> - <argument index="3" name="arg0" type="Variant" default="NULL"> - </argument> - <argument index="4" name="arg1" type="Variant" default="NULL"> - </argument> - <argument index="5" name="arg2" type="Variant" default="NULL"> - </argument> - <argument index="6" name="arg3" type="Variant" default="NULL"> - </argument> - <argument index="7" name="arg4" type="Variant" default="NULL"> + <method name="set_edited_scene_root"> + <argument index="0" name="scene" type="Object"> </argument> <description> </description> </method> - <method name="set_current_scene"> - <argument index="0" name="child_node" type="Node"> + <method name="set_editor_hint"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="get_current_scene" qualifiers="const"> - <return type="Node"> - </return> + <method name="set_group"> + <argument index="0" name="call_flags" type="int"> + </argument> + <argument index="1" name="group" type="String"> + </argument> + <argument index="2" name="property" type="String"> + </argument> + <argument index="3" name="value" type="Variant"> + </argument> <description> </description> </method> - <method name="change_scene"> - <return type="int"> - </return> - <argument index="0" name="path" type="String"> - </argument> + <method name="set_input_as_handled"> <description> </description> </method> - <method name="change_scene_to"> - <return type="int"> - </return> - <argument index="0" name="packed_scene" type="PackedScene"> + <method name="set_pause"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="reload_current_scene"> - <return type="int"> - </return> + <method name="set_screen_stretch"> + <argument index="0" name="mode" type="int"> + </argument> + <argument index="1" name="aspect" type="int"> + </argument> + <argument index="2" name="minsize" type="Vector2"> + </argument> <description> </description> </method> </methods> <signals> - <signal name="node_configuration_warning_changed"> - <argument index="0" name="node" type="Object"> + <signal name="files_dropped"> + <argument index="0" name="files" type="StringArray"> + </argument> + <argument index="1" name="screen" type="int"> </argument> <description> </description> </signal> - <signal name="screen_resized"> + <signal name="fixed_frame"> <description> </description> </signal> - <signal name="node_removed"> - <argument index="0" name="node" type="Object"> - </argument> + <signal name="idle_frame"> <description> </description> </signal> - <signal name="files_dropped"> - <argument index="0" name="files" type="StringArray"> - </argument> - <argument index="1" name="screen" type="int"> + <signal name="node_configuration_warning_changed"> + <argument index="0" name="node" type="Object"> </argument> <description> </description> </signal> - <signal name="idle_frame"> + <signal name="node_removed"> + <argument index="0" name="node" type="Object"> + </argument> <description> </description> </signal> - <signal name="tree_changed"> + <signal name="screen_resized"> <description> </description> </signal> - <signal name="fixed_frame"> + <signal name="tree_changed"> <description> </description> </signal> @@ -33430,18 +33739,18 @@ This method controls whether the position between two cached points is interpola </constant> <constant name="GROUP_CALL_UNIQUE" value="4"> </constant> - <constant name="STRETCH_MODE_DISABLED" value="0"> - </constant> - <constant name="STRETCH_MODE_2D" value="1"> - </constant> - <constant name="STRETCH_MODE_VIEWPORT" value="2"> - </constant> <constant name="STRETCH_ASPECT_IGNORE" value="0"> </constant> + <constant name="STRETCH_MODE_DISABLED" value="0"> + </constant> <constant name="STRETCH_ASPECT_KEEP" value="1"> </constant> + <constant name="STRETCH_MODE_2D" value="1"> + </constant> <constant name="STRETCH_ASPECT_KEEP_WIDTH" value="2"> </constant> + <constant name="STRETCH_MODE_VIEWPORT" value="2"> + </constant> <constant name="STRETCH_ASPECT_KEEP_HEIGHT" value="3"> </constant> </constants> @@ -33461,13 +33770,11 @@ This method controls whether the position between two cached points is interpola Return true if this script can be instance (ie not a library). </description> </method> - <method name="instance_has" qualifiers="const"> - <return type="bool"> + <method name="get_source_code" qualifiers="const"> + <return type="String"> </return> - <argument index="0" name="base_object" type="Object"> - </argument> <description> - Return true if a given object uses an instance of this script. + Return the script source code (if available). </description> </method> <method name="has_source_code" qualifiers="const"> @@ -33477,18 +33784,13 @@ This method controls whether the position between two cached points is interpola Return true if the script contains source code. </description> </method> - <method name="get_source_code" qualifiers="const"> - <return type="String"> + <method name="instance_has" qualifiers="const"> + <return type="bool"> </return> - <description> - Return the script source code (if available). - </description> - </method> - <method name="set_source_code"> - <argument index="0" name="source" type="String"> + <argument index="0" name="base_object" type="Object"> </argument> <description> - Set the script source code. + Return true if a given object uses an instance of this script. </description> </method> <method name="reload"> @@ -33499,6 +33801,13 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> + <method name="set_source_code"> + <argument index="0" name="source" type="String"> + </argument> + <description> + Set the script source code. + </description> + </method> </methods> <constants> </constants> @@ -33511,18 +33820,18 @@ This method controls whether the position between two cached points is interpola Scrollbars are a [Range] based [Control], that display a draggable area (the size of the page). Horizontal ([HScrollBar]) and Vertical ([VScrollBar]) versions are available. </description> <methods> - <method name="set_custom_step"> - <argument index="0" name="step" type="float"> - </argument> - <description> - </description> - </method> <method name="get_custom_step" qualifiers="const"> <return type="float"> </return> <description> </description> </method> + <method name="set_custom_step"> + <argument index="0" name="step" type="float"> + </argument> + <description> + </description> + </method> </methods> <constants> </constants> @@ -33535,25 +33844,25 @@ This method controls whether the position between two cached points is interpola A ScrollContainer node with a [Control] child and scrollbar child ([HScrollbar], [VScrollBar], or both) will only draw the Control within the ScrollContainer area. Scrollbars will automatically be drawn at the right (for vertical) or bottom (for horizontal) and will enable dragging to move the viewable Control (and its children) within the ScrollContainer. Scrollbars will also automatically resize the grabber based on the minimum_size of the Control relative to the ScrollContainer. Works great with a [Panel] control. </description> <methods> - <method name="set_enable_h_scroll"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_h_scroll" qualifiers="const"> + <return type="int"> + </return> <description> - Set allows horizontal scrool. + Return current horizontal scroll value. </description> </method> - <method name="is_h_scroll_enabled" qualifiers="const"> - <return type="bool"> + <method name="get_v_scroll" qualifiers="const"> + <return type="int"> </return> <description> - Return true if horizontal scrool is allowed. + Return current vertical scroll value. </description> </method> - <method name="set_enable_v_scroll"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="is_h_scroll_enabled" qualifiers="const"> + <return type="bool"> + </return> <description> - Set allows vertical scrool. + Return true if horizontal scrool is allowed. </description> </method> <method name="is_v_scroll_enabled" qualifiers="const"> @@ -33563,32 +33872,32 @@ This method controls whether the position between two cached points is interpola Return true if vertical scrool is allowed. </description> </method> - <method name="set_h_scroll"> - <argument index="0" name="val" type="int"> + <method name="set_enable_h_scroll"> + <argument index="0" name="enable" type="bool"> </argument> <description> - Set horizontal scroll value. + Set allows horizontal scrool. </description> </method> - <method name="get_h_scroll" qualifiers="const"> - <return type="int"> - </return> + <method name="set_enable_v_scroll"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Return current horizontal scroll value. + Set allows vertical scrool. </description> </method> - <method name="set_v_scroll"> + <method name="set_h_scroll"> <argument index="0" name="val" type="int"> </argument> <description> - Set vertical scroll value. + Set horizontal scroll value. </description> </method> - <method name="get_v_scroll" qualifiers="const"> - <return type="int"> - </return> + <method name="set_v_scroll"> + <argument index="0" name="val" type="int"> + </argument> <description> - Return current vertical scroll value. + Set vertical scroll value. </description> </method> </methods> @@ -33603,32 +33912,32 @@ This method controls whether the position between two cached points is interpola Segment Shape for 2D Collision Detection, consists of two points, 'a' and 'b'. </description> <methods> - <method name="set_a"> - <argument index="0" name="a" type="Vector2"> - </argument> + <method name="get_a" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Set the first point's position. + Return the first point's position. </description> </method> - <method name="get_a" qualifiers="const"> + <method name="get_b" qualifiers="const"> <return type="Vector2"> </return> <description> - Return the first point's position. + Return the second point's position. </description> </method> - <method name="set_b"> - <argument index="0" name="b" type="Vector2"> + <method name="set_a"> + <argument index="0" name="a" type="Vector2"> </argument> <description> - Set the second point's position. + Set the first point's position. </description> </method> - <method name="get_b" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_b"> + <argument index="0" name="b" type="Vector2"> + </argument> <description> - Return the second point's position. + Set the second point's position. </description> </method> </methods> @@ -33637,20 +33946,24 @@ This method controls whether the position between two cached points is interpola </class> <class name="Semaphore" inherits="Reference" category="Core"> <brief_description> + A synchronization Semaphore. </brief_description> <description> + A synchronization Semaphore. Element used in multi-threadding. Initialized to zero on creation. </description> <methods> - <method name="wait"> + <method name="post"> <return type="Error"> </return> <description> + Lowers the [Semaphore], allowing one more thread in. </description> </method> - <method name="post"> + <method name="wait"> <return type="Error"> </return> <description> + Tries to wait for the [Semaphore], if it's value is zero, blocks until non-zero. </description> </method> </methods> @@ -33677,64 +33990,64 @@ This method controls whether the position between two cached points is interpola To be changed, ignore. </description> <methods> - <method name="get_mode" qualifiers="const"> - <return type="int"> + <method name="get_default_texture_param" qualifiers="const"> + <return type="Texture"> </return> + <argument index="0" name="param" type="String"> + </argument> <description> </description> </method> - <method name="set_code"> - <argument index="0" name="vcode" type="String"> - </argument> - <argument index="1" name="fcode" type="String"> - </argument> - <argument index="2" name="lcode" type="String"> - </argument> - <argument index="3" name="fofs" type="int" default="0"> - </argument> - <argument index="4" name="lofs" type="int" default="0"> - </argument> + <method name="get_fragment_code" qualifiers="const"> + <return type="String"> + </return> <description> </description> </method> - <method name="get_vertex_code" qualifiers="const"> + <method name="get_light_code" qualifiers="const"> <return type="String"> </return> <description> </description> </method> - <method name="get_fragment_code" qualifiers="const"> - <return type="String"> + <method name="get_mode" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="get_light_code" qualifiers="const"> + <method name="get_vertex_code" qualifiers="const"> <return type="String"> </return> <description> </description> </method> - <method name="set_default_texture_param"> - <argument index="0" name="param" type="String"> - </argument> - <argument index="1" name="texture" type="Texture"> + <method name="has_param" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="name" type="String"> </argument> <description> </description> </method> - <method name="get_default_texture_param" qualifiers="const"> - <return type="Texture"> - </return> - <argument index="0" name="param" type="String"> + <method name="set_code"> + <argument index="0" name="vcode" type="String"> + </argument> + <argument index="1" name="fcode" type="String"> + </argument> + <argument index="2" name="lcode" type="String"> + </argument> + <argument index="3" name="fofs" type="int" default="0"> + </argument> + <argument index="4" name="lofs" type="int" default="0"> </argument> <description> </description> </method> - <method name="has_param" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="name" type="String"> + <method name="set_default_texture_param"> + <argument index="0" name="param" type="String"> + </argument> + <argument index="1" name="texture" type="Texture"> </argument> <description> </description> @@ -33755,17 +34068,15 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="node_add"> + <method name="clear"> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="node_type" type="int"> - </argument> - <argument index="2" name="id" type="int"> - </argument> <description> </description> </method> - <method name="node_remove"> + <method name="color_ramp_node_get_colors" qualifiers="const"> + <return type="ColorArray"> + </return> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> @@ -33773,28 +34084,30 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="node_set_pos"> + <method name="color_ramp_node_get_offsets" qualifiers="const"> + <return type="RealArray"> + </return> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="pos" type="Vector2"> - </argument> <description> </description> </method> - <method name="node_get_pos" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="color_ramp_node_set_ramp"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> + <argument index="2" name="colors" type="ColorArray"> + </argument> + <argument index="3" name="offsets" type="RealArray"> + </argument> <description> </description> </method> - <method name="node_get_type" qualifiers="const"> - <return type="int"> + <method name="comment_node_get_text" qualifiers="const"> + <return type="String"> </return> <argument index="0" name="shader_type" type="int"> </argument> @@ -33803,48 +34116,54 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_node_list" qualifiers="const"> - <return type="Array"> - </return> + <method name="comment_node_set_text"> <argument index="0" name="shader_type" type="int"> </argument> + <argument index="1" name="id" type="int"> + </argument> + <argument index="2" name="text" type="String"> + </argument> <description> </description> </method> - <method name="default_set_value"> + <method name="connect_node"> + <return type="Error"> + </return> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="int"> + <argument index="1" name="src_id" type="int"> </argument> - <argument index="2" name="param_id" type="int"> + <argument index="2" name="src_slot" type="int"> </argument> - <argument index="3" name="value" type="Variant"> + <argument index="3" name="dst_id" type="int"> + </argument> + <argument index="4" name="dst_slot" type="int"> </argument> <description> </description> </method> - <method name="default_get_value"> + <method name="cubemap_input_node_get_value" qualifiers="const"> + <return type="CubeMap"> + </return> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="param_id" type="int"> - </argument> <description> </description> </method> - <method name="scalar_const_node_set_value"> + <method name="cubemap_input_node_set_value"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="value" type="float"> + <argument index="2" name="value" type="CubeMap"> </argument> <description> </description> </method> - <method name="scalar_const_node_get_value" qualifiers="const"> - <return type="float"> + <method name="curve_map_node_get_points" qualifiers="const"> + <return type="Vector2Array"> </return> <argument index="0" name="shader_type" type="int"> </argument> @@ -33853,78 +34172,70 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="vec_const_node_set_value"> + <method name="curve_map_node_set_points"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="value" type="Vector3"> + <argument index="2" name="points" type="Vector2Array"> </argument> <description> </description> </method> - <method name="vec_const_node_get_value" qualifiers="const"> - <return type="Vector3"> - </return> + <method name="default_get_value"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> + <argument index="2" name="param_id" type="int"> + </argument> <description> </description> </method> - <method name="rgb_const_node_set_value"> + <method name="default_set_value"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="value" type="Color"> + <argument index="2" name="param_id" type="int"> + </argument> + <argument index="3" name="value" type="Variant"> </argument> <description> </description> </method> - <method name="rgb_const_node_get_value" qualifiers="const"> - <return type="Color"> - </return> + <method name="disconnect_node"> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="int"> + <argument index="1" name="src_id" type="int"> </argument> - <description> - </description> - </method> - <method name="xform_const_node_set_value"> - <argument index="0" name="shader_type" type="int"> + <argument index="2" name="src_slot" type="int"> </argument> - <argument index="1" name="id" type="int"> + <argument index="3" name="dst_id" type="int"> </argument> - <argument index="2" name="value" type="Transform"> + <argument index="4" name="dst_slot" type="int"> </argument> <description> </description> </method> - <method name="xform_const_node_get_value" qualifiers="const"> - <return type="Transform"> + <method name="get_node_connections" qualifiers="const"> + <return type="Array"> </return> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="int"> - </argument> <description> </description> </method> - <method name="texture_node_set_filter_size"> + <method name="get_node_list" qualifiers="const"> + <return type="Array"> + </return> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="int"> - </argument> - <argument index="2" name="filter_size" type="int"> - </argument> <description> </description> </method> - <method name="texture_node_get_filter_size" qualifiers="const"> - <return type="int"> + <method name="input_node_get_name"> + <return type="String"> </return> <argument index="0" name="shader_type" type="int"> </argument> @@ -33933,118 +34244,122 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="texture_node_set_filter_strength"> + <method name="input_node_set_name"> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="float"> + <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="filter_strength" type="float"> + <argument index="2" name="name" type="String"> </argument> <description> </description> </method> - <method name="texture_node_get_filter_strength" qualifiers="const"> - <return type="float"> + <method name="is_node_connected" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="float"> + <argument index="1" name="src_id" type="int"> + </argument> + <argument index="2" name="src_slot" type="int"> + </argument> + <argument index="3" name="dst_id" type="int"> + </argument> + <argument index="4" name="dst_slot" type="int"> </argument> <description> </description> </method> - <method name="scalar_op_node_set_op"> + <method name="node_add"> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="float"> + <argument index="1" name="node_type" type="int"> </argument> - <argument index="2" name="op" type="int"> + <argument index="2" name="id" type="int"> </argument> <description> </description> </method> - <method name="scalar_op_node_get_op" qualifiers="const"> - <return type="int"> + <method name="node_get_pos" qualifiers="const"> + <return type="Vector2"> </return> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="float"> + <argument index="1" name="id" type="int"> </argument> <description> </description> </method> - <method name="vec_op_node_set_op"> + <method name="node_get_state" qualifiers="const"> + <return type="Variant"> + </return> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="float"> - </argument> - <argument index="2" name="op" type="int"> + <argument index="1" name="id" type="int"> </argument> <description> </description> </method> - <method name="vec_op_node_get_op" qualifiers="const"> + <method name="node_get_type" qualifiers="const"> <return type="int"> </return> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="float"> + <argument index="1" name="id" type="int"> </argument> <description> </description> </method> - <method name="vec_scalar_op_node_set_op"> + <method name="node_remove"> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="float"> - </argument> - <argument index="2" name="op" type="int"> + <argument index="1" name="id" type="int"> </argument> <description> </description> </method> - <method name="vec_scalar_op_node_get_op" qualifiers="const"> - <return type="int"> - </return> + <method name="node_set_pos"> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="float"> + <argument index="1" name="id" type="int"> + </argument> + <argument index="2" name="pos" type="Vector2"> </argument> <description> </description> </method> - <method name="rgb_op_node_set_op"> + <method name="node_set_state"> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="float"> + <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="op" type="int"> + <argument index="2" name="state" type="Variant"> </argument> <description> </description> </method> - <method name="rgb_op_node_get_op" qualifiers="const"> - <return type="int"> + <method name="rgb_const_node_get_value" qualifiers="const"> + <return type="Color"> </return> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="float"> + <argument index="1" name="id" type="int"> </argument> <description> </description> </method> - <method name="xform_vec_mult_node_set_no_translation"> + <method name="rgb_const_node_set_value"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="disable" type="bool"> + <argument index="2" name="value" type="Color"> </argument> <description> </description> </method> - <method name="xform_vec_mult_node_get_no_translation" qualifiers="const"> - <return type="bool"> + <method name="rgb_input_node_get_value" qualifiers="const"> + <return type="Color"> </return> <argument index="0" name="shader_type" type="int"> </argument> @@ -34053,38 +34368,38 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="scalar_func_node_set_function"> + <method name="rgb_input_node_set_value"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="func" type="int"> + <argument index="2" name="value" type="Color"> </argument> <description> </description> </method> - <method name="scalar_func_node_get_function" qualifiers="const"> + <method name="rgb_op_node_get_op" qualifiers="const"> <return type="int"> </return> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="int"> + <argument index="1" name="id" type="float"> </argument> <description> </description> </method> - <method name="vec_func_node_set_function"> + <method name="rgb_op_node_set_op"> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="int"> + <argument index="1" name="id" type="float"> </argument> - <argument index="2" name="func" type="int"> + <argument index="2" name="op" type="int"> </argument> <description> </description> </method> - <method name="vec_func_node_get_function" qualifiers="const"> - <return type="int"> + <method name="scalar_const_node_get_value" qualifiers="const"> + <return type="float"> </return> <argument index="0" name="shader_type" type="int"> </argument> @@ -34093,18 +34408,18 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="input_node_set_name"> + <method name="scalar_const_node_set_value"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="name" type="String"> + <argument index="2" name="value" type="float"> </argument> <description> </description> </method> - <method name="input_node_get_name"> - <return type="String"> + <method name="scalar_func_node_get_function" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="shader_type" type="int"> </argument> @@ -34113,12 +34428,12 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="scalar_input_node_set_value"> + <method name="scalar_func_node_set_function"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="value" type="float"> + <argument index="2" name="func" type="int"> </argument> <description> </description> @@ -34133,38 +34448,38 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="vec_input_node_set_value"> + <method name="scalar_input_node_set_value"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="value" type="Vector3"> + <argument index="2" name="value" type="float"> </argument> <description> </description> </method> - <method name="vec_input_node_get_value" qualifiers="const"> - <return type="Vector3"> + <method name="scalar_op_node_get_op" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="int"> + <argument index="1" name="id" type="float"> </argument> <description> </description> </method> - <method name="rgb_input_node_set_value"> + <method name="scalar_op_node_set_op"> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="int"> + <argument index="1" name="id" type="float"> </argument> - <argument index="2" name="value" type="Color"> + <argument index="2" name="op" type="int"> </argument> <description> </description> </method> - <method name="rgb_input_node_get_value" qualifiers="const"> - <return type="Color"> + <method name="texture_input_node_get_value" qualifiers="const"> + <return type="Texture"> </return> <argument index="0" name="shader_type" type="int"> </argument> @@ -34173,18 +34488,18 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="xform_input_node_set_value"> + <method name="texture_input_node_set_value"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="value" type="Transform"> + <argument index="2" name="value" type="Texture"> </argument> <description> </description> </method> - <method name="xform_input_node_get_value" qualifiers="const"> - <return type="Transform"> + <method name="texture_node_get_filter_size" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="shader_type" type="int"> </argument> @@ -34193,38 +34508,38 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="texture_input_node_set_value"> + <method name="texture_node_get_filter_strength" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="int"> - </argument> - <argument index="2" name="value" type="Texture"> + <argument index="1" name="id" type="float"> </argument> <description> </description> </method> - <method name="texture_input_node_get_value" qualifiers="const"> - <return type="Texture"> - </return> + <method name="texture_node_set_filter_size"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> + <argument index="2" name="filter_size" type="int"> + </argument> <description> </description> </method> - <method name="cubemap_input_node_set_value"> + <method name="texture_node_set_filter_strength"> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="int"> + <argument index="1" name="id" type="float"> </argument> - <argument index="2" name="value" type="CubeMap"> + <argument index="2" name="filter_strength" type="float"> </argument> <description> </description> </method> - <method name="cubemap_input_node_get_value" qualifiers="const"> - <return type="CubeMap"> + <method name="vec_const_node_get_value" qualifiers="const"> + <return type="Vector3"> </return> <argument index="0" name="shader_type" type="int"> </argument> @@ -34233,18 +34548,18 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="comment_node_set_text"> + <method name="vec_const_node_set_value"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="text" type="String"> + <argument index="2" name="value" type="Vector3"> </argument> <description> </description> </method> - <method name="comment_node_get_text" qualifiers="const"> - <return type="String"> + <method name="vec_func_node_get_function" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="shader_type" type="int"> </argument> @@ -34253,20 +34568,18 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="color_ramp_node_set_ramp"> + <method name="vec_func_node_set_function"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="colors" type="ColorArray"> - </argument> - <argument index="3" name="offsets" type="RealArray"> + <argument index="2" name="func" type="int"> </argument> <description> </description> </method> - <method name="color_ramp_node_get_colors" qualifiers="const"> - <return type="ColorArray"> + <method name="vec_input_node_get_value" qualifiers="const"> + <return type="Vector3"> </return> <argument index="0" name="shader_type" type="int"> </argument> @@ -34275,113 +34588,113 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="color_ramp_node_get_offsets" qualifiers="const"> - <return type="RealArray"> - </return> + <method name="vec_input_node_set_value"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> + <argument index="2" name="value" type="Vector3"> + </argument> <description> </description> </method> - <method name="curve_map_node_set_points"> + <method name="vec_op_node_get_op" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="int"> - </argument> - <argument index="2" name="points" type="Vector2Array"> + <argument index="1" name="id" type="float"> </argument> <description> </description> </method> - <method name="curve_map_node_get_points" qualifiers="const"> - <return type="Vector2Array"> - </return> + <method name="vec_op_node_set_op"> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="id" type="int"> + <argument index="1" name="id" type="float"> + </argument> + <argument index="2" name="op" type="int"> </argument> <description> </description> </method> - <method name="connect_node"> - <return type="Error"> + <method name="vec_scalar_op_node_get_op" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="src_id" type="int"> + <argument index="1" name="id" type="float"> </argument> - <argument index="2" name="src_slot" type="int"> + <description> + </description> + </method> + <method name="vec_scalar_op_node_set_op"> + <argument index="0" name="shader_type" type="int"> </argument> - <argument index="3" name="dst_id" type="int"> + <argument index="1" name="id" type="float"> </argument> - <argument index="4" name="dst_slot" type="int"> + <argument index="2" name="op" type="int"> </argument> <description> </description> </method> - <method name="is_node_connected" qualifiers="const"> - <return type="bool"> + <method name="xform_const_node_get_value" qualifiers="const"> + <return type="Transform"> </return> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="src_id" type="int"> - </argument> - <argument index="2" name="src_slot" type="int"> - </argument> - <argument index="3" name="dst_id" type="int"> - </argument> - <argument index="4" name="dst_slot" type="int"> + <argument index="1" name="id" type="int"> </argument> <description> </description> </method> - <method name="disconnect_node"> + <method name="xform_const_node_set_value"> <argument index="0" name="shader_type" type="int"> </argument> - <argument index="1" name="src_id" type="int"> - </argument> - <argument index="2" name="src_slot" type="int"> - </argument> - <argument index="3" name="dst_id" type="int"> + <argument index="1" name="id" type="int"> </argument> - <argument index="4" name="dst_slot" type="int"> + <argument index="2" name="value" type="Transform"> </argument> <description> </description> </method> - <method name="get_node_connections" qualifiers="const"> - <return type="Array"> + <method name="xform_input_node_get_value" qualifiers="const"> + <return type="Transform"> </return> <argument index="0" name="shader_type" type="int"> </argument> + <argument index="1" name="id" type="int"> + </argument> <description> </description> </method> - <method name="clear"> + <method name="xform_input_node_set_value"> <argument index="0" name="shader_type" type="int"> </argument> + <argument index="1" name="id" type="int"> + </argument> + <argument index="2" name="value" type="Transform"> + </argument> <description> </description> </method> - <method name="node_set_state"> + <method name="xform_vec_mult_node_get_no_translation" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> - <argument index="2" name="state" type="Variant"> - </argument> <description> </description> </method> - <method name="node_get_state" qualifiers="const"> - <return type="Variant"> - </return> + <method name="xform_vec_mult_node_set_no_translation"> <argument index="0" name="shader_type" type="int"> </argument> <argument index="1" name="id" type="int"> </argument> + <argument index="2" name="disable" type="bool"> + </argument> <description> </description> </method> @@ -34393,25 +34706,15 @@ This method controls whether the position between two cached points is interpola </signal> </signals> <constants> - <constant name="NODE_INPUT" value="0"> - </constant> - <constant name="NODE_SCALAR_CONST" value="1"> - </constant> - <constant name="NODE_VEC_CONST" value="2"> - </constant> - <constant name="NODE_RGB_CONST" value="3"> - </constant> - <constant name="NODE_XFORM_CONST" value="4"> - </constant> - <constant name="NODE_TIME" value="5"> + <constant name="GRAPH_OK" value="0"> </constant> - <constant name="NODE_SCREEN_TEX" value="6"> + <constant name="GRAPH_ERROR_CYCLIC" value="1"> </constant> - <constant name="NODE_SCALAR_OP" value="7"> + <constant name="GRAPH_ERROR_MISSING_CONNECTIONS" value="2"> </constant> - <constant name="NODE_VEC_OP" value="8"> + <constant name="NODE_INPUT" value="0"> </constant> - <constant name="NODE_VEC_SCALAR_OP" value="9"> + <constant name="NODE_SCALAR_CONST" value="1"> </constant> <constant name="NODE_RGB_OP" value="10"> </constant> @@ -34433,10 +34736,12 @@ This method controls whether the position between two cached points is interpola </constant> <constant name="NODE_SCALAR_TO_VEC" value="19"> </constant> - <constant name="NODE_VEC_TO_XFORM" value="21"> + <constant name="NODE_VEC_CONST" value="2"> </constant> <constant name="NODE_XFORM_TO_VEC" value="20"> </constant> + <constant name="NODE_VEC_TO_XFORM" value="21"> + </constant> <constant name="NODE_SCALAR_INTERP" value="22"> </constant> <constant name="NODE_VEC_INTERP" value="23"> @@ -34453,6 +34758,8 @@ This method controls whether the position between two cached points is interpola </constant> <constant name="NODE_XFORM_INPUT" value="29"> </constant> + <constant name="NODE_RGB_CONST" value="3"> + </constant> <constant name="NODE_TEXTURE_INPUT" value="30"> </constant> <constant name="NODE_CUBEMAP_INPUT" value="31"> @@ -34465,157 +34772,163 @@ This method controls whether the position between two cached points is interpola </constant> <constant name="NODE_TYPE_MAX" value="35"> </constant> - <constant name="SLOT_TYPE_SCALAR" value="0"> + <constant name="NODE_XFORM_CONST" value="4"> </constant> - <constant name="SLOT_TYPE_VEC" value="1"> + <constant name="NODE_TIME" value="5"> </constant> - <constant name="SLOT_TYPE_XFORM" value="2"> + <constant name="NODE_SCREEN_TEX" value="6"> </constant> - <constant name="SLOT_TYPE_TEXTURE" value="3"> + <constant name="NODE_SCALAR_OP" value="7"> </constant> - <constant name="SLOT_MAX" value="4"> + <constant name="NODE_VEC_OP" value="8"> </constant> - <constant name="SHADER_TYPE_VERTEX" value="0"> + <constant name="NODE_VEC_SCALAR_OP" value="9"> </constant> - <constant name="SHADER_TYPE_FRAGMENT" value="1"> + <constant name="RGB_OP_SCREEN" value="0"> </constant> - <constant name="SHADER_TYPE_LIGHT" value="2"> + <constant name="RGB_OP_DIFFERENCE" value="1"> </constant> - <constant name="SHADER_TYPE_MAX" value="3"> + <constant name="RGB_OP_DARKEN" value="2"> </constant> - <constant name="SLOT_IN" value="0"> + <constant name="RGB_OP_LIGHTEN" value="3"> </constant> - <constant name="SLOT_OUT" value="1"> + <constant name="RGB_OP_OVERLAY" value="4"> </constant> - <constant name="GRAPH_OK" value="0"> + <constant name="RGB_OP_DODGE" value="5"> </constant> - <constant name="GRAPH_ERROR_CYCLIC" value="1"> + <constant name="RGB_OP_BURN" value="6"> </constant> - <constant name="GRAPH_ERROR_MISSING_CONNECTIONS" value="2"> + <constant name="RGB_OP_SOFT_LIGHT" value="7"> + </constant> + <constant name="RGB_OP_HARD_LIGHT" value="8"> + </constant> + <constant name="RGB_MAX_OP" value="9"> + </constant> + <constant name="SCALAR_FUNC_SIN" value="0"> </constant> <constant name="SCALAR_OP_ADD" value="0"> </constant> - <constant name="SCALAR_OP_SUB" value="1"> + <constant name="SCALAR_FUNC_COS" value="1"> </constant> - <constant name="SCALAR_OP_MUL" value="2"> + <constant name="SCALAR_OP_SUB" value="1"> </constant> - <constant name="SCALAR_OP_DIV" value="3"> + <constant name="SCALAR_FUNC_EXP" value="10"> </constant> - <constant name="SCALAR_OP_MOD" value="4"> + <constant name="SCALAR_FUNC_SQRT" value="11"> </constant> - <constant name="SCALAR_OP_POW" value="5"> + <constant name="SCALAR_FUNC_ABS" value="12"> </constant> - <constant name="SCALAR_OP_MAX" value="6"> + <constant name="SCALAR_FUNC_SIGN" value="13"> </constant> - <constant name="SCALAR_OP_MIN" value="7"> + <constant name="SCALAR_FUNC_FLOOR" value="14"> </constant> - <constant name="SCALAR_OP_ATAN2" value="8"> + <constant name="SCALAR_FUNC_ROUND" value="15"> </constant> - <constant name="SCALAR_MAX_OP" value="9"> + <constant name="SCALAR_FUNC_CEIL" value="16"> </constant> - <constant name="VEC_OP_ADD" value="0"> + <constant name="SCALAR_FUNC_FRAC" value="17"> </constant> - <constant name="VEC_OP_SUB" value="1"> + <constant name="SCALAR_FUNC_SATURATE" value="18"> </constant> - <constant name="VEC_OP_MUL" value="2"> + <constant name="SCALAR_FUNC_NEGATE" value="19"> </constant> - <constant name="VEC_OP_DIV" value="3"> + <constant name="SCALAR_FUNC_TAN" value="2"> </constant> - <constant name="VEC_OP_MOD" value="4"> + <constant name="SCALAR_OP_MUL" value="2"> </constant> - <constant name="VEC_OP_POW" value="5"> + <constant name="SCALAR_MAX_FUNC" value="20"> </constant> - <constant name="VEC_OP_MAX" value="6"> + <constant name="SCALAR_FUNC_ASIN" value="3"> </constant> - <constant name="VEC_OP_MIN" value="7"> + <constant name="SCALAR_OP_DIV" value="3"> </constant> - <constant name="VEC_OP_CROSS" value="8"> + <constant name="SCALAR_FUNC_ACOS" value="4"> </constant> - <constant name="VEC_MAX_OP" value="9"> + <constant name="SCALAR_OP_MOD" value="4"> </constant> - <constant name="VEC_SCALAR_OP_MUL" value="0"> + <constant name="SCALAR_FUNC_ATAN" value="5"> </constant> - <constant name="VEC_SCALAR_OP_DIV" value="1"> + <constant name="SCALAR_OP_POW" value="5"> </constant> - <constant name="VEC_SCALAR_OP_POW" value="2"> + <constant name="SCALAR_FUNC_SINH" value="6"> </constant> - <constant name="VEC_SCALAR_MAX_OP" value="3"> + <constant name="SCALAR_OP_MAX" value="6"> </constant> - <constant name="RGB_OP_SCREEN" value="0"> + <constant name="SCALAR_FUNC_COSH" value="7"> </constant> - <constant name="RGB_OP_DIFFERENCE" value="1"> + <constant name="SCALAR_OP_MIN" value="7"> </constant> - <constant name="RGB_OP_DARKEN" value="2"> + <constant name="SCALAR_FUNC_TANH" value="8"> </constant> - <constant name="RGB_OP_LIGHTEN" value="3"> + <constant name="SCALAR_OP_ATAN2" value="8"> </constant> - <constant name="RGB_OP_OVERLAY" value="4"> + <constant name="SCALAR_FUNC_LOG" value="9"> </constant> - <constant name="RGB_OP_DODGE" value="5"> + <constant name="SCALAR_MAX_OP" value="9"> </constant> - <constant name="RGB_OP_BURN" value="6"> + <constant name="SHADER_TYPE_VERTEX" value="0"> </constant> - <constant name="RGB_OP_SOFT_LIGHT" value="7"> + <constant name="SHADER_TYPE_FRAGMENT" value="1"> </constant> - <constant name="RGB_OP_HARD_LIGHT" value="8"> + <constant name="SHADER_TYPE_LIGHT" value="2"> </constant> - <constant name="RGB_MAX_OP" value="9"> + <constant name="SHADER_TYPE_MAX" value="3"> </constant> - <constant name="SCALAR_FUNC_SIN" value="0"> + <constant name="SLOT_IN" value="0"> </constant> - <constant name="SCALAR_FUNC_COS" value="1"> + <constant name="SLOT_TYPE_SCALAR" value="0"> </constant> - <constant name="SCALAR_FUNC_TAN" value="2"> + <constant name="SLOT_OUT" value="1"> </constant> - <constant name="SCALAR_FUNC_ASIN" value="3"> + <constant name="SLOT_TYPE_VEC" value="1"> </constant> - <constant name="SCALAR_FUNC_ACOS" value="4"> + <constant name="SLOT_TYPE_XFORM" value="2"> </constant> - <constant name="SCALAR_FUNC_ATAN" value="5"> + <constant name="SLOT_TYPE_TEXTURE" value="3"> </constant> - <constant name="SCALAR_FUNC_SINH" value="6"> + <constant name="SLOT_MAX" value="4"> </constant> - <constant name="SCALAR_FUNC_COSH" value="7"> + <constant name="VEC_FUNC_NORMALIZE" value="0"> </constant> - <constant name="SCALAR_FUNC_TANH" value="8"> + <constant name="VEC_OP_ADD" value="0"> </constant> - <constant name="SCALAR_FUNC_LOG" value="9"> + <constant name="VEC_SCALAR_OP_MUL" value="0"> </constant> - <constant name="SCALAR_FUNC_EXP" value="10"> + <constant name="VEC_FUNC_SATURATE" value="1"> </constant> - <constant name="SCALAR_FUNC_SQRT" value="11"> + <constant name="VEC_OP_SUB" value="1"> </constant> - <constant name="SCALAR_FUNC_ABS" value="12"> + <constant name="VEC_SCALAR_OP_DIV" value="1"> </constant> - <constant name="SCALAR_FUNC_SIGN" value="13"> + <constant name="VEC_FUNC_NEGATE" value="2"> </constant> - <constant name="SCALAR_FUNC_FLOOR" value="14"> + <constant name="VEC_OP_MUL" value="2"> </constant> - <constant name="SCALAR_FUNC_ROUND" value="15"> + <constant name="VEC_SCALAR_OP_POW" value="2"> </constant> - <constant name="SCALAR_FUNC_CEIL" value="16"> + <constant name="VEC_FUNC_RECIPROCAL" value="3"> </constant> - <constant name="SCALAR_FUNC_FRAC" value="17"> + <constant name="VEC_OP_DIV" value="3"> </constant> - <constant name="SCALAR_FUNC_SATURATE" value="18"> + <constant name="VEC_SCALAR_MAX_OP" value="3"> </constant> - <constant name="SCALAR_FUNC_NEGATE" value="19"> + <constant name="VEC_FUNC_RGB2HSV" value="4"> </constant> - <constant name="SCALAR_MAX_FUNC" value="20"> + <constant name="VEC_OP_MOD" value="4"> </constant> - <constant name="VEC_FUNC_NORMALIZE" value="0"> + <constant name="VEC_FUNC_HSV2RGB" value="5"> </constant> - <constant name="VEC_FUNC_SATURATE" value="1"> + <constant name="VEC_OP_POW" value="5"> </constant> - <constant name="VEC_FUNC_NEGATE" value="2"> + <constant name="VEC_MAX_FUNC" value="6"> </constant> - <constant name="VEC_FUNC_RECIPROCAL" value="3"> + <constant name="VEC_OP_MAX" value="6"> </constant> - <constant name="VEC_FUNC_RGB2HSV" value="4"> + <constant name="VEC_OP_MIN" value="7"> </constant> - <constant name="VEC_FUNC_HSV2RGB" value="5"> + <constant name="VEC_OP_CROSS" value="8"> </constant> - <constant name="VEC_MAX_FUNC" value="6"> + <constant name="VEC_MAX_OP" value="9"> </constant> </constants> </class> @@ -34625,31 +34938,31 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_shader"> - <argument index="0" name="shader" type="Shader"> - </argument> - <description> - </description> - </method> <method name="get_shader" qualifiers="const"> <return type="Shader"> </return> <description> </description> </method> - <method name="set_shader_param"> + <method name="get_shader_param" qualifiers="const"> + <return type="Variant"> + </return> <argument index="0" name="param" type="String"> </argument> - <argument index="1" name="value" type="Variant"> + <description> + </description> + </method> + <method name="set_shader"> + <argument index="0" name="shader" type="Shader"> </argument> <description> </description> </method> - <method name="get_shader_param" qualifiers="const"> - <return type="Variant"> - </return> + <method name="set_shader_param"> <argument index="0" name="param" type="String"> </argument> + <argument index="1" name="value" type="Variant"> + </argument> <description> </description> </method> @@ -34675,23 +34988,22 @@ This method controls whether the position between two cached points is interpola Base class for all 2D Shapes. All 2D shape types inherit from this. </description> <methods> - <method name="set_custom_solver_bias"> - <argument index="0" name="bias" type="float"> - </argument> - <description> - Use a custom solver bias. No need to change this unless you really know what you are doing. - The solver bias is a factor controlling how much two objects "rebound" off each other, when colliding, to avoid them getting into each other because of numerical imprecision. - </description> - </method> - <method name="get_custom_solver_bias" qualifiers="const"> - <return type="float"> + <method name="collide"> + <return type="bool"> </return> + <argument index="0" name="local_xform" type="Matrix32"> + </argument> + <argument index="1" name="with_shape" type="Shape2D"> + </argument> + <argument index="2" name="shape_xform" type="Matrix32"> + </argument> <description> - Return the custom solver bias. + Return whether this shape is colliding with another. + This method needs the transformation matrix for this shape ([code]local_xform[/code]), the shape to check collisions with ([code]with_shape[/code]), and the transformation matrix of that shape ([code]shape_xform[/code]). </description> </method> - <method name="collide"> - <return type="bool"> + <method name="collide_and_get_contacts"> + <return type="Variant"> </return> <argument index="0" name="local_xform" type="Matrix32"> </argument> @@ -34700,7 +35012,7 @@ This method controls whether the position between two cached points is interpola <argument index="2" name="shape_xform" type="Matrix32"> </argument> <description> - Return whether this shape is colliding with another. + Return a list of the points where this shape touches another. If there are no collisions, the list is empty. This method needs the transformation matrix for this shape ([code]local_xform[/code]), the shape to check collisions with ([code]with_shape[/code]), and the transformation matrix of that shape ([code]shape_xform[/code]). </description> </method> @@ -34722,20 +35034,6 @@ This method controls whether the position between two cached points is interpola This method needs the transformation matrix for this shape ([code]local_xform[/code]), the movement to test on this shape ([code]local_motion[/code]), the shape to check collisions with ([code]with_shape[/code]), the transformation matrix of that shape ([code]shape_xform[/code]), and the movement to test onto the other object ([code]shape_motion[/code]). </description> </method> - <method name="collide_and_get_contacts"> - <return type="Variant"> - </return> - <argument index="0" name="local_xform" type="Matrix32"> - </argument> - <argument index="1" name="with_shape" type="Shape2D"> - </argument> - <argument index="2" name="shape_xform" type="Matrix32"> - </argument> - <description> - Return a list of the points where this shape touches another. If there are no collisions, the list is empty. - This method needs the transformation matrix for this shape ([code]local_xform[/code]), the shape to check collisions with ([code]with_shape[/code]), and the transformation matrix of that shape ([code]shape_xform[/code]). - </description> - </method> <method name="collide_with_motion_and_get_contacts"> <return type="Variant"> </return> @@ -34754,6 +35052,21 @@ This method controls whether the position between two cached points is interpola This method needs the transformation matrix for this shape ([code]local_xform[/code]), the movement to test on this shape ([code]local_motion[/code]), the shape to check collisions with ([code]with_shape[/code]), the transformation matrix of that shape ([code]shape_xform[/code]), and the movement to test onto the other object ([code]shape_motion[/code]). </description> </method> + <method name="get_custom_solver_bias" qualifiers="const"> + <return type="float"> + </return> + <description> + Return the custom solver bias. + </description> + </method> + <method name="set_custom_solver_bias"> + <argument index="0" name="bias" type="float"> + </argument> + <description> + Use a custom solver bias. No need to change this unless you really know what you are doing. + The solver bias is a factor controlling how much two objects "rebound" off each other, when colliding, to avoid them getting into each other because of numerical imprecision. + </description> + </method> </methods> <constants> </constants> @@ -34764,9 +35077,9 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_shortcut"> - <argument index="0" name="event" type="InputEvent"> - </argument> + <method name="get_as_text" qualifiers="const"> + <return type="String"> + </return> <description> </description> </method> @@ -34776,23 +35089,23 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="is_valid" qualifiers="const"> + <method name="is_shortcut" qualifiers="const"> <return type="bool"> </return> + <argument index="0" name="event" type="InputEvent"> + </argument> <description> </description> </method> - <method name="is_shortcut" qualifiers="const"> + <method name="is_valid" qualifiers="const"> <return type="bool"> </return> - <argument index="0" name="event" type="InputEvent"> - </argument> <description> </description> </method> - <method name="get_as_text" qualifiers="const"> - <return type="String"> - </return> + <method name="set_shortcut"> + <argument index="0" name="event" type="InputEvent"> + </argument> <description> </description> </method> @@ -34815,6 +35128,20 @@ This method controls whether the position between two cached points is interpola Add a bone, with name "name". [method get_bone_count] will become the bone index. </description> </method> + <method name="bind_child_node_to_bone"> + <argument index="0" name="bone_idx" type="int"> + </argument> + <argument index="1" name="node" type="Node"> + </argument> + <description> + Deprecated soon. + </description> + </method> + <method name="clear_bones"> + <description> + Clear all the bones in this skeleton. + </description> + </method> <method name="find_bone" qualifiers="const"> <return type="int"> </return> @@ -34824,44 +35151,54 @@ This method controls whether the position between two cached points is interpola Return the bone index that matches "name" as its name. </description> </method> - <method name="get_bone_name" qualifiers="const"> - <return type="String"> + <method name="get_bone_count" qualifiers="const"> + <return type="int"> + </return> + <description> + Return the amount of bones in the skeleton. + </description> + </method> + <method name="get_bone_custom_pose" qualifiers="const"> + <return type="Transform"> </return> <argument index="0" name="bone_idx" type="int"> </argument> <description> - Return the name of the bone at index "index" </description> </method> - <method name="get_bone_parent" qualifiers="const"> - <return type="int"> + <method name="get_bone_global_pose" qualifiers="const"> + <return type="Transform"> </return> <argument index="0" name="bone_idx" type="int"> </argument> <description> - Return the bone index which is the parent of the bone at "bone_idx". If -1, then bone has no parent. Note that the parent bone returned will always be less than "bone_idx". </description> </method> - <method name="set_bone_parent"> + <method name="get_bone_name" qualifiers="const"> + <return type="String"> + </return> <argument index="0" name="bone_idx" type="int"> </argument> - <argument index="1" name="parent_idx" type="int"> - </argument> <description> - Set the bone index "parent_idx" as the parent of the bone at "bone_idx". If -1, then bone has no parent. Note: "parent_idx" must be less than "bone_idx". + Return the name of the bone at index "index" </description> </method> - <method name="get_bone_count" qualifiers="const"> + <method name="get_bone_parent" qualifiers="const"> <return type="int"> </return> + <argument index="0" name="bone_idx" type="int"> + </argument> <description> - Return the amount of bones in the skeleton. + Return the bone index which is the parent of the bone at "bone_idx". If -1, then bone has no parent. Note that the parent bone returned will always be less than "bone_idx". </description> </method> - <method name="unparent_bone_and_rest"> + <method name="get_bone_pose" qualifiers="const"> + <return type="Transform"> + </return> <argument index="0" name="bone_idx" type="int"> </argument> <description> + Return the pose transform for bone "bone_idx". </description> </method> <method name="get_bone_rest" qualifiers="const"> @@ -34873,21 +35210,21 @@ This method controls whether the position between two cached points is interpola Return the rest transform for a bone "bone_idx". </description> </method> - <method name="set_bone_rest"> + <method name="get_bone_transform" qualifiers="const"> + <return type="Transform"> + </return> <argument index="0" name="bone_idx" type="int"> </argument> - <argument index="1" name="rest" type="Transform"> - </argument> <description> - Set the rest transform for bone "bone_idx" </description> </method> - <method name="set_bone_disable_rest"> + <method name="get_bound_child_nodes_to_bone" qualifiers="const"> + <return type="Array"> + </return> <argument index="0" name="bone_idx" type="int"> </argument> - <argument index="1" name="disable" type="bool"> - </argument> <description> + Deprecated soon. </description> </method> <method name="is_bone_rest_disabled" qualifiers="const"> @@ -34898,91 +35235,67 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="bind_child_node_to_bone"> + <method name="set_bone_custom_pose"> <argument index="0" name="bone_idx" type="int"> </argument> - <argument index="1" name="node" type="Node"> + <argument index="1" name="custom_pose" type="Transform"> </argument> <description> - Deprecated soon. </description> </method> - <method name="unbind_child_node_from_bone"> + <method name="set_bone_disable_rest"> <argument index="0" name="bone_idx" type="int"> </argument> - <argument index="1" name="node" type="Node"> + <argument index="1" name="disable" type="bool"> </argument> <description> - Deprecated soon. </description> </method> - <method name="get_bound_child_nodes_to_bone" qualifiers="const"> - <return type="Array"> - </return> + <method name="set_bone_global_pose"> <argument index="0" name="bone_idx" type="int"> </argument> - <description> - Deprecated soon. - </description> - </method> - <method name="clear_bones"> - <description> - Clear all the bones in this skeleton. - </description> - </method> - <method name="get_bone_pose" qualifiers="const"> - <return type="Transform"> - </return> - <argument index="0" name="bone_idx" type="int"> + <argument index="1" name="pose" type="Transform"> </argument> <description> - Return the pose transform for bone "bone_idx". </description> </method> - <method name="set_bone_pose"> + <method name="set_bone_parent"> <argument index="0" name="bone_idx" type="int"> </argument> - <argument index="1" name="pose" type="Transform"> + <argument index="1" name="parent_idx" type="int"> </argument> <description> - Return the pose transform for bone "bone_idx". + Set the bone index "parent_idx" as the parent of the bone at "bone_idx". If -1, then bone has no parent. Note: "parent_idx" must be less than "bone_idx". </description> </method> - <method name="set_bone_global_pose"> + <method name="set_bone_pose"> <argument index="0" name="bone_idx" type="int"> </argument> <argument index="1" name="pose" type="Transform"> </argument> <description> + Return the pose transform for bone "bone_idx". </description> </method> - <method name="get_bone_global_pose" qualifiers="const"> - <return type="Transform"> - </return> + <method name="set_bone_rest"> <argument index="0" name="bone_idx" type="int"> </argument> - <description> - </description> - </method> - <method name="get_bone_custom_pose" qualifiers="const"> - <return type="Transform"> - </return> - <argument index="0" name="bone_idx" type="int"> + <argument index="1" name="rest" type="Transform"> </argument> <description> + Set the rest transform for bone "bone_idx" </description> </method> - <method name="set_bone_custom_pose"> + <method name="unbind_child_node_from_bone"> <argument index="0" name="bone_idx" type="int"> </argument> - <argument index="1" name="custom_pose" type="Transform"> + <argument index="1" name="node" type="Node"> </argument> <description> + Deprecated soon. </description> </method> - <method name="get_bone_transform" qualifiers="const"> - <return type="Transform"> - </return> + <method name="unparent_bone_and_rest"> <argument index="0" name="bone_idx" type="int"> </argument> <description> @@ -35002,13 +35315,6 @@ This method controls whether the position between two cached points is interpola Base class for GUI Sliders. </description> <methods> - <method name="set_ticks"> - <argument index="0" name="count" type="int"> - </argument> - <description> - Set amount of ticks to display in slider. - </description> - </method> <method name="get_ticks" qualifiers="const"> <return type="int"> </return> @@ -35023,6 +35329,13 @@ This method controls whether the position between two cached points is interpola Return true if ticks are visible on borders. </description> </method> + <method name="set_ticks"> + <argument index="0" name="count" type="int"> + </argument> + <description> + Set amount of ticks to display in slider. + </description> + </method> <method name="set_ticks_on_borders"> <argument index="0" name="ticks_on_border" type="bool"> </argument> @@ -35040,19 +35353,19 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_param"> + <method name="get_param" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="param" type="int"> </argument> - <argument index="1" name="value" type="float"> - </argument> <description> </description> </method> - <method name="get_param" qualifiers="const"> - <return type="float"> - </return> + <method name="set_param"> <argument index="0" name="param" type="int"> </argument> + <argument index="1" name="value" type="float"> + </argument> <description> </description> </method> @@ -35062,22 +35375,6 @@ This method controls whether the position between two cached points is interpola </constant> <constant name="PARAM_LINEAR_LIMIT_LOWER" value="1"> </constant> - <constant name="PARAM_LINEAR_LIMIT_SOFTNESS" value="2"> - </constant> - <constant name="PARAM_LINEAR_LIMIT_RESTITUTION" value="3"> - </constant> - <constant name="PARAM_LINEAR_LIMIT_DAMPING" value="4"> - </constant> - <constant name="PARAM_LINEAR_MOTION_SOFTNESS" value="5"> - </constant> - <constant name="PARAM_LINEAR_MOTION_RESTITUTION" value="6"> - </constant> - <constant name="PARAM_LINEAR_MOTION_DAMPING" value="7"> - </constant> - <constant name="PARAM_LINEAR_ORTHOGONAL_SOFTNESS" value="8"> - </constant> - <constant name="PARAM_LINEAR_ORTHOGONAL_RESTITUTION" value="9"> - </constant> <constant name="PARAM_LINEAR_ORTHOGONAL_DAMPING" value="10"> </constant> <constant name="PARAM_ANGULAR_LIMIT_UPPER" value="11"> @@ -35098,12 +35395,28 @@ This method controls whether the position between two cached points is interpola </constant> <constant name="PARAM_ANGULAR_ORTHOGONAL_SOFTNESS" value="19"> </constant> + <constant name="PARAM_LINEAR_LIMIT_SOFTNESS" value="2"> + </constant> <constant name="PARAM_ANGULAR_ORTHOGONAL_RESTITUTION" value="20"> </constant> <constant name="PARAM_ANGULAR_ORTHOGONAL_DAMPING" value="21"> </constant> <constant name="PARAM_MAX" value="22"> </constant> + <constant name="PARAM_LINEAR_LIMIT_RESTITUTION" value="3"> + </constant> + <constant name="PARAM_LINEAR_LIMIT_DAMPING" value="4"> + </constant> + <constant name="PARAM_LINEAR_MOTION_SOFTNESS" value="5"> + </constant> + <constant name="PARAM_LINEAR_MOTION_RESTITUTION" value="6"> + </constant> + <constant name="PARAM_LINEAR_MOTION_DAMPING" value="7"> + </constant> + <constant name="PARAM_LINEAR_ORTHOGONAL_SOFTNESS" value="8"> + </constant> + <constant name="PARAM_LINEAR_ORTHOGONAL_RESTITUTION" value="9"> + </constant> </constants> </class> <class name="SoundPlayer2D" inherits="Node2D" category="Core"> @@ -35114,19 +35427,19 @@ This method controls whether the position between two cached points is interpola Base class for playing spatial 2D sound. </description> <methods> - <method name="set_param"> + <method name="get_param" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="param" type="int"> </argument> - <argument index="1" name="value" type="float"> - </argument> <description> </description> </method> - <method name="get_param" qualifiers="const"> - <return type="float"> - </return> + <method name="set_param"> <argument index="0" name="param" type="int"> </argument> + <argument index="1" name="value" type="float"> + </argument> <description> </description> </method> @@ -35152,14 +35465,6 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_param"> - <argument index="0" name="param" type="int"> - </argument> - <argument index="1" name="value" type="float"> - </argument> - <description> - </description> - </method> <method name="get_param" qualifiers="const"> <return type="float"> </return> @@ -35168,14 +35473,14 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_reverb_mode"> - <argument index="0" name="reverb_mode" type="int"> - </argument> + <method name="get_reverb_mode" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_reverb_mode" qualifiers="const"> - <return type="int"> + <method name="is_forcing_params_to_all_sources"> + <return type="bool"> </return> <description> </description> @@ -35186,9 +35491,17 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="is_forcing_params_to_all_sources"> - <return type="bool"> - </return> + <method name="set_param"> + <argument index="0" name="param" type="int"> + </argument> + <argument index="1" name="value" type="float"> + </argument> + <description> + </description> + </method> + <method name="set_reverb_mode"> + <argument index="0" name="reverb_mode" type="int"> + </argument> <description> </description> </method> @@ -35204,98 +35517,90 @@ This method controls whether the position between two cached points is interpola Spatial is the base for every type of 3D [Node]. It contains a 3D [Transform] which can be set or get as local or global. If a Spatial [Node] has Spatial children, their transforms will be relative to the parent. </description> <methods> - <method name="set_transform"> - <argument index="0" name="local" type="Transform"> - </argument> + <method name="get_gizmo" qualifiers="const"> + <return type="SpatialGizmo"> + </return> <description> - Set the transform locally, relative to the parent spatial node. </description> </method> - <method name="get_transform" qualifiers="const"> + <method name="get_global_transform" qualifiers="const"> <return type="Transform"> </return> <description> - Return the local transform, relative to the bone parent. + Return the global transform, relative to worldspace. </description> </method> - <method name="set_translation"> - <argument index="0" name="translation" type="Vector3"> - </argument> + <method name="get_parent_spatial" qualifiers="const"> + <return type="Object"> + </return> <description> + Return the parent [Spatial], or an empty [Object] if no parent exists or parent is not of type [Spatial]. </description> </method> - <method name="get_translation" qualifiers="const"> + <method name="get_rotation" qualifiers="const"> <return type="Vector3"> </return> <description> </description> </method> - <method name="set_rotation"> - <argument index="0" name="rotation_rad" type="Vector3"> - </argument> + <method name="get_rotation_deg" qualifiers="const"> + <return type="Vector3"> + </return> <description> </description> </method> - <method name="get_rotation" qualifiers="const"> + <method name="get_scale" qualifiers="const"> <return type="Vector3"> </return> <description> </description> </method> - <method name="set_rotation_deg"> - <argument index="0" name="rotation_deg" type="Vector3"> - </argument> + <method name="get_transform" qualifiers="const"> + <return type="Transform"> + </return> <description> + Return the local transform, relative to the bone parent. </description> </method> - <method name="get_rotation_deg" qualifiers="const"> + <method name="get_translation" qualifiers="const"> <return type="Vector3"> </return> <description> </description> </method> - <method name="set_scale"> - <argument index="0" name="scale" type="Vector3"> - </argument> - <description> - </description> - </method> - <method name="get_scale" qualifiers="const"> - <return type="Vector3"> + <method name="get_world" qualifiers="const"> + <return type="World"> </return> <description> </description> </method> - <method name="set_global_transform"> - <argument index="0" name="global" type="Transform"> + <method name="global_rotate"> + <argument index="0" name="normal" type="Vector3"> + </argument> + <argument index="1" name="radians" type="float"> </argument> <description> - Set the transform globally, relative to worldspace. </description> </method> - <method name="get_global_transform" qualifiers="const"> - <return type="Transform"> - </return> + <method name="global_translate"> + <argument index="0" name="offset" type="Vector3"> + </argument> <description> - Return the global transform, relative to worldspace. </description> </method> - <method name="get_parent_spatial" qualifiers="const"> - <return type="Object"> - </return> + <method name="hide"> <description> - Return the parent [Spatial], or an empty [Object] if no parent exists or parent is not of type [Spatial]. </description> </method> - <method name="set_ignore_transform_notification"> - <argument index="0" name="enabled" type="bool"> - </argument> + <method name="is_hidden" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="set_as_toplevel"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="is_local_transform_notification_enabled" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> @@ -35305,135 +35610,143 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_world" qualifiers="const"> - <return type="World"> + <method name="is_visible" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="update_gizmo"> + <method name="look_at"> + <argument index="0" name="target" type="Vector3"> + </argument> + <argument index="1" name="up" type="Vector3"> + </argument> <description> </description> </method> - <method name="set_gizmo"> - <argument index="0" name="gizmo" type="SpatialGizmo"> + <method name="look_at_from_pos"> + <argument index="0" name="pos" type="Vector3"> + </argument> + <argument index="1" name="target" type="Vector3"> + </argument> + <argument index="2" name="up" type="Vector3"> </argument> <description> </description> </method> - <method name="get_gizmo" qualifiers="const"> - <return type="SpatialGizmo"> - </return> + <method name="orthonormalize"> <description> </description> </method> - <method name="show"> + <method name="rotate"> + <argument index="0" name="normal" type="Vector3"> + </argument> + <argument index="1" name="radians" type="float"> + </argument> <description> </description> </method> - <method name="hide"> + <method name="rotate_x"> + <argument index="0" name="radians" type="float"> + </argument> <description> </description> </method> - <method name="is_visible" qualifiers="const"> - <return type="bool"> - </return> + <method name="rotate_y"> + <argument index="0" name="radians" type="float"> + </argument> <description> </description> </method> - <method name="is_hidden" qualifiers="const"> - <return type="bool"> - </return> + <method name="rotate_z"> + <argument index="0" name="radians" type="float"> + </argument> <description> </description> </method> - <method name="set_hidden"> - <argument index="0" name="hidden" type="bool"> + <method name="set_as_toplevel"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="set_notify_local_transform"> - <argument index="0" name="enable" type="bool"> + <method name="set_gizmo"> + <argument index="0" name="gizmo" type="SpatialGizmo"> </argument> <description> </description> </method> - <method name="is_local_transform_notification_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_global_transform"> + <argument index="0" name="global" type="Transform"> + </argument> <description> + Set the transform globally, relative to worldspace. </description> </method> - <method name="rotate"> - <argument index="0" name="normal" type="Vector3"> - </argument> - <argument index="1" name="radians" type="float"> + <method name="set_hidden"> + <argument index="0" name="hidden" type="bool"> </argument> <description> </description> </method> - <method name="global_rotate"> - <argument index="0" name="normal" type="Vector3"> - </argument> - <argument index="1" name="radians" type="float"> + <method name="set_identity"> + <description> + </description> + </method> + <method name="set_ignore_transform_notification"> + <argument index="0" name="enabled" type="bool"> </argument> <description> </description> </method> - <method name="rotate_x"> - <argument index="0" name="radians" type="float"> + <method name="set_notify_local_transform"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="rotate_y"> - <argument index="0" name="radians" type="float"> + <method name="set_rotation"> + <argument index="0" name="rotation_rad" type="Vector3"> </argument> <description> </description> </method> - <method name="rotate_z"> - <argument index="0" name="radians" type="float"> + <method name="set_rotation_deg"> + <argument index="0" name="rotation_deg" type="Vector3"> </argument> <description> </description> </method> - <method name="translate"> - <argument index="0" name="offset" type="Vector3"> + <method name="set_scale"> + <argument index="0" name="scale" type="Vector3"> </argument> <description> </description> </method> - <method name="global_translate"> - <argument index="0" name="offset" type="Vector3"> + <method name="set_transform"> + <argument index="0" name="local" type="Transform"> </argument> <description> + Set the transform locally, relative to the parent spatial node. </description> </method> - <method name="orthonormalize"> + <method name="set_translation"> + <argument index="0" name="translation" type="Vector3"> + </argument> <description> </description> </method> - <method name="set_identity"> + <method name="show"> <description> </description> </method> - <method name="look_at"> - <argument index="0" name="target" type="Vector3"> - </argument> - <argument index="1" name="up" type="Vector3"> + <method name="translate"> + <argument index="0" name="offset" type="Vector3"> </argument> <description> </description> </method> - <method name="look_at_from_pos"> - <argument index="0" name="pos" type="Vector3"> - </argument> - <argument index="1" name="target" type="Vector3"> - </argument> - <argument index="2" name="up" type="Vector3"> - </argument> + <method name="update_gizmo"> <description> </description> </method> @@ -35472,19 +35785,19 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_param"> + <method name="get_param" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="param" type="int"> </argument> - <argument index="1" name="value" type="float"> - </argument> <description> </description> </method> - <method name="get_param" qualifiers="const"> - <return type="float"> - </return> + <method name="set_param"> <argument index="0" name="param" type="int"> </argument> + <argument index="1" name="value" type="float"> + </argument> <description> </description> </method> @@ -35514,9 +35827,9 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_sample_library"> - <argument index="0" name="library" type="SampleLibrary"> - </argument> + <method name="get_polyphony" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> @@ -35526,15 +35839,11 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_polyphony"> - <argument index="0" name="voices" type="int"> - </argument> - <description> - </description> - </method> - <method name="get_polyphony" qualifiers="const"> - <return type="int"> + <method name="is_voice_active" qualifiers="const"> + <return type="bool"> </return> + <argument index="0" name="voice" type="int"> + </argument> <description> </description> </method> @@ -35548,37 +35857,41 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="voice_set_pitch_scale"> - <argument index="0" name="voice" type="int"> - </argument> - <argument index="1" name="ratio" type="float"> + <method name="set_polyphony"> + <argument index="0" name="voices" type="int"> </argument> <description> </description> </method> - <method name="voice_set_volume_scale_db"> - <argument index="0" name="voice" type="int"> - </argument> - <argument index="1" name="db" type="float"> + <method name="set_sample_library"> + <argument index="0" name="library" type="SampleLibrary"> </argument> <description> </description> </method> - <method name="is_voice_active" qualifiers="const"> - <return type="bool"> - </return> + <method name="stop_all"> + <description> + </description> + </method> + <method name="stop_voice"> <argument index="0" name="voice" type="int"> </argument> <description> </description> </method> - <method name="stop_voice"> + <method name="voice_set_pitch_scale"> <argument index="0" name="voice" type="int"> </argument> + <argument index="1" name="ratio" type="float"> + </argument> <description> </description> </method> - <method name="stop_all"> + <method name="voice_set_volume_scale_db"> + <argument index="0" name="voice" type="int"> + </argument> + <argument index="1" name="db" type="float"> + </argument> <description> </description> </method> @@ -35638,145 +35951,145 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_stream"> - <argument index="0" name="stream" type="AudioStream"> - </argument> + <method name="get_buffering_msec" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_stream" qualifiers="const"> - <return type="AudioStream"> + <method name="get_length" qualifiers="const"> + <return type="float"> </return> <description> </description> </method> - <method name="play"> - <argument index="0" name="offset" type="float" default="0"> - </argument> + <method name="get_loop_count" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="stop"> + <method name="get_loop_restart_time" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="is_playing" qualifiers="const"> - <return type="bool"> + <method name="get_pos" qualifiers="const"> + <return type="float"> </return> <description> </description> </method> - <method name="set_paused"> - <argument index="0" name="paused" type="bool"> - </argument> + <method name="get_stream" qualifiers="const"> + <return type="AudioStream"> + </return> <description> </description> </method> - <method name="is_paused" qualifiers="const"> - <return type="bool"> + <method name="get_stream_name" qualifiers="const"> + <return type="String"> </return> <description> </description> </method> - <method name="set_loop"> - <argument index="0" name="enabled" type="bool"> - </argument> + <method name="get_volume" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="has_loop" qualifiers="const"> - <return type="bool"> + <method name="get_volume_db" qualifiers="const"> + <return type="float"> </return> <description> </description> </method> - <method name="set_volume"> - <argument index="0" name="volume" type="float"> - </argument> + <method name="has_autoplay" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="get_volume" qualifiers="const"> - <return type="float"> + <method name="has_loop" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="set_volume_db"> - <argument index="0" name="db" type="float"> - </argument> + <method name="is_paused" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="get_volume_db" qualifiers="const"> - <return type="float"> + <method name="is_playing" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="set_buffering_msec"> - <argument index="0" name="msec" type="int"> + <method name="play"> + <argument index="0" name="offset" type="float" default="0"> </argument> <description> </description> </method> - <method name="get_buffering_msec" qualifiers="const"> - <return type="int"> - </return> + <method name="seek_pos"> + <argument index="0" name="time" type="float"> + </argument> <description> </description> </method> - <method name="set_loop_restart_time"> - <argument index="0" name="secs" type="float"> + <method name="set_autoplay"> + <argument index="0" name="enabled" type="bool"> </argument> <description> </description> </method> - <method name="get_loop_restart_time" qualifiers="const"> - <return type="float"> - </return> + <method name="set_buffering_msec"> + <argument index="0" name="msec" type="int"> + </argument> <description> </description> </method> - <method name="get_stream_name" qualifiers="const"> - <return type="String"> - </return> + <method name="set_loop"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> </description> </method> - <method name="get_loop_count" qualifiers="const"> - <return type="int"> - </return> + <method name="set_loop_restart_time"> + <argument index="0" name="secs" type="float"> + </argument> <description> </description> </method> - <method name="get_pos" qualifiers="const"> - <return type="float"> - </return> + <method name="set_paused"> + <argument index="0" name="paused" type="bool"> + </argument> <description> </description> </method> - <method name="seek_pos"> - <argument index="0" name="time" type="float"> + <method name="set_stream"> + <argument index="0" name="stream" type="AudioStream"> </argument> <description> </description> </method> - <method name="set_autoplay"> - <argument index="0" name="enabled" type="bool"> + <method name="set_volume"> + <argument index="0" name="volume" type="float"> </argument> <description> </description> </method> - <method name="has_autoplay" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_volume_db"> + <argument index="0" name="db" type="float"> + </argument> <description> </description> </method> - <method name="get_length" qualifiers="const"> - <return type="float"> - </return> + <method name="stop"> <description> </description> </method> @@ -35790,18 +36103,18 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_radius"> - <argument index="0" name="radius" type="float"> - </argument> - <description> - </description> - </method> <method name="get_radius" qualifiers="const"> <return type="float"> </return> <description> </description> </method> + <method name="set_radius"> + <argument index="0" name="radius" type="float"> + </argument> + <description> + </description> + </method> </methods> <constants> </constants> @@ -35814,31 +36127,30 @@ This method controls whether the position between two cached points is interpola SpinBox is a numerical input text field. It allows entering integers and floats. </description> <methods> - <method name="set_suffix"> - <argument index="0" name="suffix" type="String"> - </argument> + <method name="get_line_edit"> + <return type="Object"> + </return> <description> - Set a specific suffix. </description> </method> - <method name="get_suffix" qualifiers="const"> + <method name="get_prefix" qualifiers="const"> <return type="String"> </return> <description> - Return the specific suffix. </description> </method> - <method name="set_prefix"> - <argument index="0" name="prefix" type="String"> - </argument> + <method name="get_suffix" qualifiers="const"> + <return type="String"> + </return> <description> - Set a prefix. + Return the specific suffix. </description> </method> - <method name="get_prefix" qualifiers="const"> - <return type="String"> + <method name="is_editable" qualifiers="const"> + <return type="bool"> </return> <description> + Return if the spinbox is editable. </description> </method> <method name="set_editable"> @@ -35848,17 +36160,18 @@ This method controls whether the position between two cached points is interpola Set whether the spinbox is editable. </description> </method> - <method name="is_editable" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_prefix"> + <argument index="0" name="prefix" type="String"> + </argument> <description> - Return if the spinbox is editable. + Set a prefix. </description> </method> - <method name="get_line_edit"> - <return type="Object"> - </return> + <method name="set_suffix"> + <argument index="0" name="suffix" type="String"> + </argument> <description> + Set a specific suffix. </description> </method> </methods> @@ -35877,11 +36190,11 @@ This method controls whether the position between two cached points is interpola Container for splitting two controls vertically or horizontally, with a grabber that allows adjusting the split offset or ratio. </description> <methods> - <method name="set_split_offset"> - <argument index="0" name="offset" type="int"> - </argument> + <method name="get_dragger_visibility" qualifiers="const"> + <return type="int"> + </return> <description> - Set the split offset. + Return visibility of the split dragger(One of [DRAGGER_VISIBLE], [DRAGGER_HIDDEN] or [DRAGGER_HIDDEN_COLLAPSED]). </description> </method> <method name="get_split_offset" qualifiers="const"> @@ -35891,13 +36204,6 @@ This method controls whether the position between two cached points is interpola Return the split offset. </description> </method> - <method name="set_collapsed"> - <argument index="0" name="collapsed" type="bool"> - </argument> - <description> - Set if the split must be collapsed. - </description> - </method> <method name="is_collapsed" qualifiers="const"> <return type="bool"> </return> @@ -35905,6 +36211,13 @@ This method controls whether the position between two cached points is interpola Return true if the split is collapsed. </description> </method> + <method name="set_collapsed"> + <argument index="0" name="collapsed" type="bool"> + </argument> + <description> + Set if the split must be collapsed. + </description> + </method> <method name="set_dragger_visibility"> <argument index="0" name="mode" type="int"> </argument> @@ -35912,11 +36225,11 @@ This method controls whether the position between two cached points is interpola Set visibility of the split dragger([i]mode[/i] must be one of [DRAGGER_VISIBLE], [DRAGGER_HIDDEN] or [DRAGGER_HIDDEN_COLLAPSED]). </description> </method> - <method name="get_dragger_visibility" qualifiers="const"> - <return type="int"> - </return> + <method name="set_split_offset"> + <argument index="0" name="offset" type="int"> + </argument> <description> - Return visibility of the split dragger(One of [DRAGGER_VISIBLE], [DRAGGER_HIDDEN] or [DRAGGER_HIDDEN_COLLAPSED]). + Set the split offset. </description> </method> </methods> @@ -35961,67 +36274,67 @@ This method controls whether the position between two cached points is interpola General purpose Sprite node. This Sprite node can show any texture as a sprite. The texture can be used as a spritesheet for animation, or only a region from a bigger texture can referenced, like an atlas. </description> <methods> - <method name="set_texture"> - <argument index="0" name="texture" type="Texture"> - </argument> + <method name="get_frame" qualifiers="const"> + <return type="int"> + </return> <description> - Set the base texture for the sprite. + Return the texture frame for a sprite-sheet, works when vframes or hframes are greater than 1. </description> </method> - <method name="get_texture" qualifiers="const"> - <return type="Texture"> + <method name="get_hframes" qualifiers="const"> + <return type="int"> </return> <description> - Return the base texture for the sprite. + Return the amount of horizontal frames. See [method set_hframes]. </description> </method> - <method name="set_centered"> - <argument index="0" name="centered" type="bool"> - </argument> + <method name="get_modulate" qualifiers="const"> + <return type="Color"> + </return> <description> - Set whether the sprite should be centered on the origin. + Return color modulation for the sprite. All sprite pixels are multiplied by this color. </description> </method> - <method name="is_centered" qualifiers="const"> - <return type="bool"> + <method name="get_offset" qualifiers="const"> + <return type="Vector2"> </return> <description> - Return if the sprite is centered at the local origin. + Return sprite draw offset. </description> </method> - <method name="set_offset"> - <argument index="0" name="offset" type="Vector2"> - </argument> + <method name="get_region_rect" qualifiers="const"> + <return type="Rect2"> + </return> <description> - Set the sprite draw offset, useful for setting rotation pivots. + Return the region rect to read from. </description> </method> - <method name="get_offset" qualifiers="const"> - <return type="Vector2"> + <method name="get_texture" qualifiers="const"> + <return type="Texture"> </return> <description> - Return sprite draw offset. + Return the base texture for the sprite. </description> </method> - <method name="set_flip_h"> - <argument index="0" name="flip_h" type="bool"> - </argument> + <method name="get_vframes" qualifiers="const"> + <return type="int"> + </return> <description> - Set true to flip the sprite horizontally. + Return the amount of vertical frames. See [method set_vframes]. </description> </method> - <method name="is_flipped_h" qualifiers="const"> + <method name="is_centered" qualifiers="const"> <return type="bool"> </return> <description> - Return true if the sprite is flipped horizontally. + Return if the sprite is centered at the local origin. </description> </method> - <method name="set_flip_v"> - <argument index="0" name="flip_v" type="bool"> - </argument> + <method name="is_flipped_h" qualifiers="const"> + <return type="bool"> + </return> <description> - Set true to flip the sprite vertically. + Return true if the sprite is flipped horizontally. </description> </method> <method name="is_flipped_v" qualifiers="const"> @@ -36031,13 +36344,6 @@ This method controls whether the position between two cached points is interpola Return true if the sprite is flipped vertically. </description> </method> - <method name="set_region"> - <argument index="0" name="enabled" type="bool"> - </argument> - <description> - Set the sprite as a sub-region of a bigger texture. Useful for texture-atlases. - </description> - </method> <method name="is_region" qualifiers="const"> <return type="bool"> </return> @@ -36045,18 +36351,25 @@ This method controls whether the position between two cached points is interpola Return if the sprite reads from a region. </description> </method> - <method name="set_region_rect"> - <argument index="0" name="rect" type="Rect2"> + <method name="set_centered"> + <argument index="0" name="centered" type="bool"> </argument> <description> - Set the region rect to read from. + Set whether the sprite should be centered on the origin. </description> </method> - <method name="get_region_rect" qualifiers="const"> - <return type="Rect2"> - </return> + <method name="set_flip_h"> + <argument index="0" name="flip_h" type="bool"> + </argument> <description> - Return the region rect to read from. + Set true to flip the sprite horizontally. + </description> + </method> + <method name="set_flip_v"> + <argument index="0" name="flip_v" type="bool"> + </argument> + <description> + Set true to flip the sprite vertically. </description> </method> <method name="set_frame"> @@ -36066,53 +36379,53 @@ This method controls whether the position between two cached points is interpola Set the texture frame for a sprite-sheet, works when vframes or hframes are greater than 1. </description> </method> - <method name="get_frame" qualifiers="const"> - <return type="int"> - </return> + <method name="set_hframes"> + <argument index="0" name="hframes" type="int"> + </argument> <description> - Return the texture frame for a sprite-sheet, works when vframes or hframes are greater than 1. + Set the amount of horizontal frames and converts the sprite into a sprite-sheet. This is useful for animation. </description> </method> - <method name="set_vframes"> - <argument index="0" name="vframes" type="int"> + <method name="set_modulate"> + <argument index="0" name="modulate" type="Color"> </argument> <description> - Set the amount of vertical frames and converts the sprite into a sprite-sheet. This is useful for animation. + Set color modulation for the sprite. All sprite pixels are multiplied by this color. Color may contain rgb values above 1 to achieve a highlight effect. </description> </method> - <method name="get_vframes" qualifiers="const"> - <return type="int"> - </return> + <method name="set_offset"> + <argument index="0" name="offset" type="Vector2"> + </argument> <description> - Return the amount of vertical frames. See [method set_vframes]. + Set the sprite draw offset, useful for setting rotation pivots. </description> </method> - <method name="set_hframes"> - <argument index="0" name="hframes" type="int"> + <method name="set_region"> + <argument index="0" name="enabled" type="bool"> </argument> <description> - Set the amount of horizontal frames and converts the sprite into a sprite-sheet. This is useful for animation. + Set the sprite as a sub-region of a bigger texture. Useful for texture-atlases. </description> </method> - <method name="get_hframes" qualifiers="const"> - <return type="int"> - </return> + <method name="set_region_rect"> + <argument index="0" name="rect" type="Rect2"> + </argument> <description> - Return the amount of horizontal frames. See [method set_hframes]. + Set the region rect to read from. </description> </method> - <method name="set_modulate"> - <argument index="0" name="modulate" type="Color"> + <method name="set_texture"> + <argument index="0" name="texture" type="Texture"> </argument> <description> - Set color modulation for the sprite. All sprite pixels are multiplied by this color. Color may contain rgb values above 1 to achieve a highlight effect. + Set the base texture for the sprite. </description> </method> - <method name="get_modulate" qualifiers="const"> - <return type="Color"> - </return> + <method name="set_vframes"> + <argument index="0" name="vframes" type="int"> + </argument> <description> - Return color modulation for the sprite. All sprite pixels are multiplied by this color. + Set the amount of vertical frames and converts the sprite into a sprite-sheet. This is useful for animation. </description> </method> </methods> @@ -36131,38 +36444,38 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_texture"> - <argument index="0" name="texture" type="Texture"> - </argument> + <method name="get_frame" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_texture" qualifiers="const"> - <return type="Texture"> + <method name="get_hframes" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="set_region"> - <argument index="0" name="enabled" type="bool"> - </argument> + <method name="get_region_rect" qualifiers="const"> + <return type="Rect2"> + </return> <description> </description> </method> - <method name="is_region" qualifiers="const"> - <return type="bool"> + <method name="get_texture" qualifiers="const"> + <return type="Texture"> </return> <description> </description> </method> - <method name="set_region_rect"> - <argument index="0" name="rect" type="Rect2"> - </argument> + <method name="get_vframes" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_region_rect" qualifiers="const"> - <return type="Rect2"> + <method name="is_region" qualifiers="const"> + <return type="bool"> </return> <description> </description> @@ -36173,33 +36486,33 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_frame" qualifiers="const"> - <return type="int"> - </return> + <method name="set_hframes"> + <argument index="0" name="hframes" type="int"> + </argument> <description> </description> </method> - <method name="set_vframes"> - <argument index="0" name="vframes" type="int"> + <method name="set_region"> + <argument index="0" name="enabled" type="bool"> </argument> <description> </description> </method> - <method name="get_vframes" qualifiers="const"> - <return type="int"> - </return> + <method name="set_region_rect"> + <argument index="0" name="rect" type="Rect2"> + </argument> <description> </description> </method> - <method name="set_hframes"> - <argument index="0" name="hframes" type="int"> + <method name="set_texture"> + <argument index="0" name="texture" type="Texture"> </argument> <description> </description> </method> - <method name="get_hframes" qualifiers="const"> - <return type="int"> - </return> + <method name="set_vframes"> + <argument index="0" name="vframes" type="int"> + </argument> <description> </description> </method> @@ -36219,99 +36532,89 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_centered"> - <argument index="0" name="centered" type="bool"> - </argument> + <method name="get_alpha_cut_mode" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="is_centered" qualifiers="const"> - <return type="bool"> + <method name="get_axis" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="set_offset"> - <argument index="0" name="offset" type="Vector2"> + <method name="get_draw_flag" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="flag" type="int"> </argument> <description> </description> </method> - <method name="get_offset" qualifiers="const"> - <return type="Vector2"> + <method name="get_item_rect" qualifiers="const"> + <return type="Rect2"> </return> <description> </description> </method> - <method name="set_flip_h"> - <argument index="0" name="flip_h" type="bool"> - </argument> - <description> - </description> - </method> - <method name="is_flipped_h" qualifiers="const"> - <return type="bool"> + <method name="get_modulate" qualifiers="const"> + <return type="Color"> </return> <description> </description> </method> - <method name="set_flip_v"> - <argument index="0" name="flip_v" type="bool"> - </argument> + <method name="get_offset" qualifiers="const"> + <return type="Vector2"> + </return> <description> </description> </method> - <method name="is_flipped_v" qualifiers="const"> - <return type="bool"> + <method name="get_opacity" qualifiers="const"> + <return type="float"> </return> <description> </description> </method> - <method name="set_modulate"> - <argument index="0" name="modulate" type="Color"> - </argument> + <method name="get_pixel_size" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_modulate" qualifiers="const"> - <return type="Color"> + <method name="is_centered" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="set_opacity"> - <argument index="0" name="opacity" type="float"> - </argument> + <method name="is_flipped_h" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="get_opacity" qualifiers="const"> - <return type="float"> + <method name="is_flipped_v" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="set_pixel_size"> - <argument index="0" name="pixel_size" type="float"> + <method name="set_alpha_cut_mode"> + <argument index="0" name="mode" type="int"> </argument> <description> </description> </method> - <method name="get_pixel_size" qualifiers="const"> - <return type="float"> - </return> - <description> - </description> - </method> <method name="set_axis"> <argument index="0" name="axis" type="int"> </argument> <description> </description> </method> - <method name="get_axis" qualifiers="const"> - <return type="int"> - </return> + <method name="set_centered"> + <argument index="0" name="centered" type="bool"> + </argument> <description> </description> </method> @@ -36323,46 +36626,56 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_draw_flag" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="flag" type="int"> + <method name="set_flip_h"> + <argument index="0" name="flip_h" type="bool"> </argument> <description> </description> </method> - <method name="set_alpha_cut_mode"> - <argument index="0" name="mode" type="int"> + <method name="set_flip_v"> + <argument index="0" name="flip_v" type="bool"> </argument> <description> </description> </method> - <method name="get_alpha_cut_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_modulate"> + <argument index="0" name="modulate" type="Color"> + </argument> <description> </description> </method> - <method name="get_item_rect" qualifiers="const"> - <return type="Rect2"> - </return> + <method name="set_offset"> + <argument index="0" name="offset" type="Vector2"> + </argument> + <description> + </description> + </method> + <method name="set_opacity"> + <argument index="0" name="opacity" type="float"> + </argument> + <description> + </description> + </method> + <method name="set_pixel_size"> + <argument index="0" name="pixel_size" type="float"> + </argument> <description> </description> </method> </methods> <constants> - <constant name="FLAG_TRANSPARENT" value="0"> - </constant> - <constant name="FLAG_SHADED" value="1"> - </constant> - <constant name="FLAG_MAX" value="2"> - </constant> <constant name="ALPHA_CUT_DISABLED" value="0"> </constant> <constant name="ALPHA_CUT_DISCARD" value="1"> </constant> <constant name="ALPHA_CUT_OPAQUE_PREPASS" value="2"> </constant> + <constant name="FLAG_TRANSPARENT" value="0"> + </constant> + <constant name="FLAG_SHADED" value="1"> + </constant> + <constant name="FLAG_MAX" value="2"> + </constant> </constants> </class> <class name="SpriteFrames" inherits="Resource" category="Core"> @@ -36379,33 +36692,31 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="has_animation" qualifiers="const"> - <return type="bool"> - </return> + <method name="add_frame"> <argument index="0" name="anim" type="String"> </argument> + <argument index="1" name="frame" type="Object"> + </argument> + <argument index="2" name="atpos" type="int" default="-1"> + </argument> <description> </description> </method> - <method name="remove_animation"> + <method name="clear"> <argument index="0" name="anim" type="String"> </argument> <description> </description> </method> - <method name="rename_animation"> - <argument index="0" name="anim" type="String"> - </argument> - <argument index="1" name="newname" type="String"> - </argument> + <method name="clear_all"> <description> </description> </method> - <method name="set_animation_speed"> + <method name="get_animation_loop" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="anim" type="String"> </argument> - <argument index="1" name="speed" type="float"> - </argument> <description> </description> </method> @@ -36417,43 +36728,39 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_animation_loop"> + <method name="get_frame" qualifiers="const"> + <return type="Object"> + </return> <argument index="0" name="anim" type="String"> </argument> - <argument index="1" name="loop" type="bool"> + <argument index="1" name="idx" type="int"> </argument> <description> </description> </method> - <method name="get_animation_loop" qualifiers="const"> - <return type="bool"> + <method name="get_frame_count" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="anim" type="String"> </argument> <description> </description> </method> - <method name="add_frame"> + <method name="has_animation" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="anim" type="String"> </argument> - <argument index="1" name="frame" type="Object"> - </argument> - <argument index="2" name="atpos" type="int" default="-1"> - </argument> <description> </description> </method> - <method name="get_frame_count" qualifiers="const"> - <return type="int"> - </return> + <method name="remove_animation"> <argument index="0" name="anim" type="String"> </argument> <description> </description> </method> - <method name="get_frame" qualifiers="const"> - <return type="Object"> - </return> + <method name="remove_frame"> <argument index="0" name="anim" type="String"> </argument> <argument index="1" name="idx" type="int"> @@ -36461,31 +36768,37 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_frame"> + <method name="rename_animation"> <argument index="0" name="anim" type="String"> </argument> - <argument index="1" name="idx" type="int"> - </argument> - <argument index="2" name="txt" type="Object"> + <argument index="1" name="newname" type="String"> </argument> <description> </description> </method> - <method name="remove_frame"> + <method name="set_animation_loop"> <argument index="0" name="anim" type="String"> </argument> - <argument index="1" name="idx" type="int"> + <argument index="1" name="loop" type="bool"> </argument> <description> </description> </method> - <method name="clear"> + <method name="set_animation_speed"> <argument index="0" name="anim" type="String"> </argument> + <argument index="1" name="speed" type="float"> + </argument> <description> </description> </method> - <method name="clear_all"> + <method name="set_frame"> + <argument index="0" name="anim" type="String"> + </argument> + <argument index="1" name="idx" type="int"> + </argument> + <argument index="2" name="txt" type="Object"> + </argument> <description> </description> </method> @@ -36503,25 +36816,11 @@ This method controls whether the position between two cached points is interpola Alternatively, a constant linear or angular velocity can be set for the static body, so even if it doesn't move, it affects other bodies as if it was moving (this is useful for simulating conveyor belts or conveyor wheels). </description> <methods> - <method name="set_constant_linear_velocity"> - <argument index="0" name="vel" type="Vector3"> - </argument> - <description> - Set a constant linear velocity for the body. This does not move the body, but affects other bodies touching it, as if it was moving. - </description> - </method> - <method name="set_constant_angular_velocity"> - <argument index="0" name="vel" type="Vector3"> - </argument> - <description> - Set a constant angular velocity for the body. This does not rotate the body, but affects other bodies touching it, as if it was rotating. - </description> - </method> - <method name="get_constant_linear_velocity" qualifiers="const"> - <return type="Vector3"> + <method name="get_bounce" qualifiers="const"> + <return type="float"> </return> <description> - Return the constant linear velocity for the body. + Return the body bounciness. </description> </method> <method name="get_constant_angular_velocity" qualifiers="const"> @@ -36531,11 +36830,11 @@ This method controls whether the position between two cached points is interpola Return the constant angular velocity for the body. </description> </method> - <method name="set_friction"> - <argument index="0" name="friction" type="float"> - </argument> + <method name="get_constant_linear_velocity" qualifiers="const"> + <return type="Vector3"> + </return> <description> - Set the body friction, from 0 (frictionless) to 1 (full friction). + Return the constant linear velocity for the body. </description> </method> <method name="get_friction" qualifiers="const"> @@ -36552,11 +36851,25 @@ This method controls whether the position between two cached points is interpola Set the body bounciness, from 0 (not bouncy) to 1 (bouncy). </description> </method> - <method name="get_bounce" qualifiers="const"> - <return type="float"> - </return> + <method name="set_constant_angular_velocity"> + <argument index="0" name="vel" type="Vector3"> + </argument> <description> - Return the body bounciness. + Set a constant angular velocity for the body. This does not rotate the body, but affects other bodies touching it, as if it was rotating. + </description> + </method> + <method name="set_constant_linear_velocity"> + <argument index="0" name="vel" type="Vector3"> + </argument> + <description> + Set a constant linear velocity for the body. This does not move the body, but affects other bodies touching it, as if it was moving. + </description> + </method> + <method name="set_friction"> + <argument index="0" name="friction" type="float"> + </argument> + <description> + Set the body friction, from 0 (frictionless) to 1 (full friction). </description> </method> </methods> @@ -36573,18 +36886,18 @@ This method controls whether the position between two cached points is interpola Alternatively, a constant linear or angular velocity can be set for the static body, so even if it doesn't move, it affects other bodies as if it was moving (this is useful for simulating conveyor belts or conveyor wheels). </description> <methods> - <method name="set_constant_linear_velocity"> - <argument index="0" name="vel" type="Vector2"> - </argument> + <method name="get_bounce" qualifiers="const"> + <return type="float"> + </return> <description> - Set a constant linear velocity for the body. This does not move the body, but affects other bodies touching it, as if it was moving. + Return the body bounciness. </description> </method> - <method name="set_constant_angular_velocity"> - <argument index="0" name="vel" type="float"> - </argument> + <method name="get_constant_angular_velocity" qualifiers="const"> + <return type="float"> + </return> <description> - Set a constant angular velocity for the body. This does not rotate the body, but affects other bodies touching it, as if it was rotating. + Return the constant angular velocity for the body. </description> </method> <method name="get_constant_linear_velocity" qualifiers="const"> @@ -36594,39 +36907,39 @@ This method controls whether the position between two cached points is interpola Return the constant linear velocity for the body. </description> </method> - <method name="get_constant_angular_velocity" qualifiers="const"> + <method name="get_friction" qualifiers="const"> <return type="float"> </return> <description> - Return the constant angular velocity for the body. + Return the body friction. </description> </method> - <method name="set_friction"> - <argument index="0" name="friction" type="float"> + <method name="set_bounce"> + <argument index="0" name="bounce" type="float"> </argument> <description> - Set the body friction, from 0 (frictionless) to 1 (full friction). + Set the body bounciness, from 0 (not bouncy) to 1 (bouncy). </description> </method> - <method name="get_friction" qualifiers="const"> - <return type="float"> - </return> + <method name="set_constant_angular_velocity"> + <argument index="0" name="vel" type="float"> + </argument> <description> - Return the body friction. + Set a constant angular velocity for the body. This does not rotate the body, but affects other bodies touching it, as if it was rotating. </description> </method> - <method name="set_bounce"> - <argument index="0" name="bounce" type="float"> + <method name="set_constant_linear_velocity"> + <argument index="0" name="vel" type="Vector2"> </argument> <description> - Set the body bounciness, from 0 (not bouncy) to 1 (bouncy). + Set a constant linear velocity for the body. This does not move the body, but affects other bodies touching it, as if it was moving. </description> </method> - <method name="get_bounce" qualifiers="const"> - <return type="float"> - </return> + <method name="set_friction"> + <argument index="0" name="friction" type="float"> + </argument> <description> - Return the body bounciness. + Set the body friction, from 0 (frictionless) to 1 (full friction). </description> </method> </methods> @@ -36641,40 +36954,32 @@ This method controls whether the position between two cached points is interpola StreamPeer is an abstraction and base class for stream-based protocols (such as TCP or Unix Sockets). It provides an API for sending and receiving data through streams as raw data or strings. </description> <methods> - <method name="put_data"> + <method name="get_16"> <return type="int"> </return> - <argument index="0" name="data" type="RawArray"> - </argument> <description> - Send a chunk of data through the connection, blocking if necessary until the data is done sending. This function returns an Error code. + Get a signed 16 bit value from the stream. </description> </method> - <method name="put_partial_data"> - <return type="Array"> + <method name="get_32"> + <return type="int"> </return> - <argument index="0" name="data" type="RawArray"> - </argument> <description> - Send a chunk of data through the connection, if all the data could not be sent at once, only part of it will. This function returns two values, an Error code and an integer, describing how much data was actually sent. + Get a signed 32 bit value from the stream. </description> </method> - <method name="get_data"> - <return type="Array"> + <method name="get_64"> + <return type="int"> </return> - <argument index="0" name="bytes" type="int"> - </argument> <description> - Return a chunk data with the received bytes. The amount of bytes to be received can be requested in the "bytes" argument. If not enough bytes are available, the function will block until the desired amount is received. This function returns two values, an Error code and a data array. + Get a signed 64 bit value from the stream. </description> </method> - <method name="get_partial_data"> - <return type="Array"> + <method name="get_8"> + <return type="int"> </return> - <argument index="0" name="bytes" type="int"> - </argument> <description> - Return a chunk data with the received bytes. The amount of bytes to be received can be requested in the "bytes" argument. If not enough bytes are available, the function will return how many were actually received. This function returns two values, an Error code, and a data array. + Get a signed byte from the stream. </description> </method> <method name="get_available_bytes" qualifiers="const"> @@ -36684,197 +36989,205 @@ This method controls whether the position between two cached points is interpola Return the amount of bytes this [StreamPeer] has available. </description> </method> - <method name="set_big_endian"> - <argument index="0" name="enable" type="bool"> + <method name="get_data"> + <return type="Array"> + </return> + <argument index="0" name="bytes" type="int"> </argument> <description> - Set this [StreamPeer] to use big-endian format. Default is false. + Return a chunk data with the received bytes. The amount of bytes to be received can be requested in the "bytes" argument. If not enough bytes are available, the function will block until the desired amount is received. This function returns two values, an Error code and a data array. </description> </method> - <method name="is_big_endian_enabled" qualifiers="const"> - <return type="bool"> + <method name="get_double"> + <return type="float"> </return> <description> - Return whether this [StreamPeer] is using big-endian format. + Get a double-precision float from the stream. </description> </method> - <method name="put_8"> - <argument index="0" name="val" type="int"> - </argument> + <method name="get_float"> + <return type="float"> + </return> <description> - Put a signed byte into the stream. + Get a single-precision float from the stream. </description> </method> - <method name="put_u8"> - <argument index="0" name="val" type="int"> + <method name="get_partial_data"> + <return type="Array"> + </return> + <argument index="0" name="bytes" type="int"> </argument> <description> - Put an unsigned byte into the stream. + Return a chunk data with the received bytes. The amount of bytes to be received can be requested in the "bytes" argument. If not enough bytes are available, the function will return how many were actually received. This function returns two values, an Error code, and a data array. </description> </method> - <method name="put_16"> - <argument index="0" name="val" type="int"> + <method name="get_string"> + <return type="String"> + </return> + <argument index="0" name="bytes" type="int"> </argument> <description> - Put a signed 16 bit value into the stream. + Get a string with byte-length "bytes" from the stream. </description> </method> - <method name="put_u16"> - <argument index="0" name="val" type="int"> - </argument> + <method name="get_u16"> + <return type="int"> + </return> <description> - Put an unsigned 16 bit value into the stream. + Get an unsigned 16 bit value from the stream. </description> </method> - <method name="put_32"> - <argument index="0" name="val" type="int"> - </argument> + <method name="get_u32"> + <return type="int"> + </return> <description> - Put a signed 32 bit value into the stream. + Get an unsigned 32 bit value from the stream. </description> </method> - <method name="put_u32"> - <argument index="0" name="val" type="int"> - </argument> + <method name="get_u64"> + <return type="int"> + </return> <description> - Put an unsigned 32 bit value into the stream. + Get an unsigned 16 bit value from the stream. </description> </method> - <method name="put_64"> - <argument index="0" name="val" type="int"> - </argument> + <method name="get_u8"> + <return type="int"> + </return> <description> - Put a signed 64 bit value into the stream. + Get an unsigned byte from the stream. </description> </method> - <method name="put_u64"> - <argument index="0" name="val" type="int"> + <method name="get_utf8_string"> + <return type="String"> + </return> + <argument index="0" name="bytes" type="int"> </argument> <description> - Put an unsigned 64 bit value into the stream. + Get an utf8 string with byte-length "bytes" from the stream (this decodes the string sent as utf8). </description> </method> - <method name="put_float"> - <argument index="0" name="val" type="float"> - </argument> + <method name="get_var"> + <return type="Variant"> + </return> <description> - Put a single-precision float into the stream. + Get a Variant from the stream. </description> </method> - <method name="put_double"> - <argument index="0" name="val" type="float"> - </argument> + <method name="is_big_endian_enabled" qualifiers="const"> + <return type="bool"> + </return> <description> - Put a double-precision float into the stream. + Return whether this [StreamPeer] is using big-endian format. </description> </method> - <method name="put_utf8_string"> - <argument index="0" name="val" type="String"> + <method name="put_16"> + <argument index="0" name="val" type="int"> </argument> <description> - Put a zero-terminated utf8 string into the stream. + Put a signed 16 bit value into the stream. </description> </method> - <method name="put_var"> - <argument index="0" name="val" type="Variant"> + <method name="put_32"> + <argument index="0" name="val" type="int"> </argument> <description> - Put a variable into the stream. + Put a signed 32 bit value into the stream. </description> </method> - <method name="get_8"> - <return type="int"> - </return> + <method name="put_64"> + <argument index="0" name="val" type="int"> + </argument> <description> - Get a signed byte from the stream. + Put a signed 64 bit value into the stream. </description> </method> - <method name="get_u8"> - <return type="int"> - </return> + <method name="put_8"> + <argument index="0" name="val" type="int"> + </argument> <description> - Get an unsigned byte from the stream. + Put a signed byte into the stream. </description> </method> - <method name="get_16"> + <method name="put_data"> <return type="int"> </return> + <argument index="0" name="data" type="RawArray"> + </argument> <description> - Get a signed 16 bit value from the stream. + Send a chunk of data through the connection, blocking if necessary until the data is done sending. This function returns an Error code. </description> </method> - <method name="get_u16"> - <return type="int"> - </return> + <method name="put_double"> + <argument index="0" name="val" type="float"> + </argument> <description> - Get an unsigned 16 bit value from the stream. + Put a double-precision float into the stream. </description> </method> - <method name="get_32"> - <return type="int"> - </return> + <method name="put_float"> + <argument index="0" name="val" type="float"> + </argument> <description> - Get a signed 32 bit value from the stream. + Put a single-precision float into the stream. </description> </method> - <method name="get_u32"> - <return type="int"> + <method name="put_partial_data"> + <return type="Array"> </return> + <argument index="0" name="data" type="RawArray"> + </argument> <description> - Get an unsigned 32 bit value from the stream. + Send a chunk of data through the connection, if all the data could not be sent at once, only part of it will. This function returns two values, an Error code and an integer, describing how much data was actually sent. </description> </method> - <method name="get_64"> - <return type="int"> - </return> + <method name="put_u16"> + <argument index="0" name="val" type="int"> + </argument> <description> - Get a signed 64 bit value from the stream. + Put an unsigned 16 bit value into the stream. </description> </method> - <method name="get_u64"> - <return type="int"> - </return> + <method name="put_u32"> + <argument index="0" name="val" type="int"> + </argument> <description> - Get an unsigned 16 bit value from the stream. + Put an unsigned 32 bit value into the stream. </description> </method> - <method name="get_float"> - <return type="float"> - </return> + <method name="put_u64"> + <argument index="0" name="val" type="int"> + </argument> <description> - Get a single-precision float from the stream. + Put an unsigned 64 bit value into the stream. </description> </method> - <method name="get_double"> - <return type="float"> - </return> + <method name="put_u8"> + <argument index="0" name="val" type="int"> + </argument> <description> - Get a double-precision float from the stream. + Put an unsigned byte into the stream. </description> </method> - <method name="get_string"> - <return type="String"> - </return> - <argument index="0" name="bytes" type="int"> + <method name="put_utf8_string"> + <argument index="0" name="val" type="String"> </argument> <description> - Get a string with byte-length "bytes" from the stream. + Put a zero-terminated utf8 string into the stream. </description> </method> - <method name="get_utf8_string"> - <return type="String"> - </return> - <argument index="0" name="bytes" type="int"> + <method name="put_var"> + <argument index="0" name="val" type="Variant"> </argument> <description> - Get an utf8 string with byte-length "bytes" from the stream (this decodes the string sent as utf8). + Put a Variant into the stream. </description> </method> - <method name="get_var"> - <return type="Variant"> - </return> + <method name="set_big_endian"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Get a variable from the stream. + Set this [StreamPeer] to use big-endian format. Default is false. </description> </method> </methods> @@ -36910,6 +37223,11 @@ This method controls whether the position between two cached points is interpola Connect to a peer using an underlying [StreamPeer] "stream", when "validate_certs" is true, [StreamPeerSSL] will validate that the certificate presented by the peer matches the "for_hostname". </description> </method> + <method name="disconnect"> + <description> + Disconnect from host. + </description> + </method> <method name="get_status" qualifiers="const"> <return type="int"> </return> @@ -36917,24 +37235,19 @@ This method controls whether the position between two cached points is interpola Return the status of the connection, one of STATUS_* enum. </description> </method> - <method name="disconnect"> - <description> - Disconnect from host. - </description> - </method> </methods> <constants> <constant name="STATUS_DISCONNECTED" value="0"> - A status representing a [StreamPeerSSL] that is disconnected. + A status representing a [StreamPeerSSL] that is disconnected. </constant> <constant name="STATUS_CONNECTED" value="1"> - A status representing a [StreamPeerSSL] that is connected to a host. + A status representing a [StreamPeerSSL] that is connected to a host. </constant> <constant name="STATUS_ERROR_NO_CERTIFICATE" value="2"> - An errot status that shows the peer did not present a SSL certificate and validation was requested. + An errot status that shows the peer did not present a SSL certificate and validation was requested. </constant> <constant name="STATUS_ERROR_HOSTNAME_MISMATCH" value="3"> - An error status that shows a mismatch in the SSL certificate domain presented by the host and the domain requested for validation. + An error status that shows a mismatch in the SSL certificate domain presented by the host and the domain requested for validation. </constant> </constants> </class> @@ -36957,18 +37270,9 @@ This method controls whether the position between two cached points is interpola Connect to the specified IP:port pair. Returns [OK] on success or [FAILED] on failure. </description> </method> - <method name="is_connected" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return whether this peer is connected. Returns true while connecting and connected. - </description> - </method> - <method name="get_status" qualifiers="const"> - <return type="int"> - </return> + <method name="disconnect"> <description> - Return the status of the connection, one of STATUS_* enum. + Disconnect from host. </description> </method> <method name="get_connected_host" qualifiers="const"> @@ -36985,24 +37289,33 @@ This method controls whether the position between two cached points is interpola Return the port of this peer. </description> </method> - <method name="disconnect"> + <method name="get_status" qualifiers="const"> + <return type="int"> + </return> <description> - Disconnect from host. + Return the status of the connection, one of STATUS_* enum. + </description> + </method> + <method name="is_connected" qualifiers="const"> + <return type="bool"> + </return> + <description> + Return whether this peer is connected. Returns true while connecting and connected. </description> </method> </methods> <constants> <constant name="STATUS_NONE" value="0"> - The initial status of the [StreamPeerTCP], also the status after a disconnect. + The initial status of the [StreamPeerTCP], also the status after a disconnect. </constant> <constant name="STATUS_CONNECTING" value="1"> - A status representing a [StreamPeerTCP] that is connecting to a host. + A status representing a [StreamPeerTCP] that is connecting to a host. </constant> <constant name="STATUS_CONNECTED" value="2"> - A status representing a [StreamPeerTCP] that is connected to a host. + A status representing a [StreamPeerTCP] that is connected to a host. </constant> <constant name="STATUS_ERROR" value="3"> - A staus representing a [StreamPeerTCP] in error state. + A staus representing a [StreamPeerTCP] in error state. </constant> </constants> </class> @@ -37014,58 +37327,74 @@ This method controls whether the position between two cached points is interpola Base class for audio stream playback. Audio stream players inherit from it. </description> <methods> - <method name="set_stream"> - <argument index="0" name="stream" type="AudioStream"> - </argument> + <method name="get_buffering_msec" qualifiers="const"> + <return type="int"> + </return> <description> - Set the [EventStream] this player will play. + Return the size of the audio buffer. </description> </method> - <method name="get_stream" qualifiers="const"> - <return type="AudioStream"> + <method name="get_length" qualifiers="const"> + <return type="float"> </return> <description> - Return the currently assigned stream. + Return the length of the stream, in seconds. </description> </method> - <method name="play"> - <argument index="0" name="offset" type="float" default="0"> - </argument> + <method name="get_loop_count" qualifiers="const"> + <return type="int"> + </return> <description> - Play the currently assigned stream, starting from a given position (in seconds). + Return the number of times the playback has looped. </description> </method> - <method name="stop"> + <method name="get_loop_restart_time" qualifiers="const"> + <return type="float"> + </return> <description> - Stop the playback. + Return the point in time the stream will rewind to, when looping. </description> </method> - <method name="is_playing" qualifiers="const"> - <return type="bool"> + <method name="get_pos" qualifiers="const"> + <return type="float"> </return> <description> - Return whether this player is playing. + Return the playback position, in seconds. </description> </method> - <method name="set_paused"> - <argument index="0" name="paused" type="bool"> - </argument> + <method name="get_stream" qualifiers="const"> + <return type="AudioStream"> + </return> <description> - Pause stream playback. + Return the currently assigned stream. </description> </method> - <method name="is_paused" qualifiers="const"> - <return type="bool"> + <method name="get_stream_name" qualifiers="const"> + <return type="String"> </return> <description> - Return whether the playback is currently paused. + Return the name of the currently assigned stream. This is not the file name, but a field inside the file. If no stream is assigned, if returns "<No Stream>". </description> </method> - <method name="set_loop"> - <argument index="0" name="enabled" type="bool"> - </argument> + <method name="get_volume" qualifiers="const"> + <return type="float"> + </return> <description> - Set whether the stream will be restarted at the end. + Return the playback volume for this player. + </description> + </method> + <method name="get_volume_db" qualifiers="const"> + <return type="float"> + </return> + <description> + Return the playback volume for this player, in decibels. + </description> + </method> + <method name="has_autoplay" qualifiers="const"> + <return type="bool"> + </return> + <description> + Return whether this player will start playing as soon as it enters the scene tree. </description> </method> <method name="has_loop" qualifiers="const"> @@ -37075,32 +37404,39 @@ This method controls whether the position between two cached points is interpola Return whether the stream will be restarted at the end. </description> </method> - <method name="set_volume"> - <argument index="0" name="volume" type="float"> - </argument> + <method name="is_paused" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the playback volume for this player. This is a float between 0.0 (silent) and 1.0 (full volume). Values over 1.0 will amplify sound even more, but may introduce distortion. Negative values will just invert the output waveform, which produces no audible difference. + Return whether the playback is currently paused. </description> </method> - <method name="get_volume" qualifiers="const"> - <return type="float"> + <method name="is_playing" qualifiers="const"> + <return type="bool"> </return> <description> - Return the playback volume for this player. + Return whether this player is playing. </description> </method> - <method name="set_volume_db"> - <argument index="0" name="db" type="float"> + <method name="play"> + <argument index="0" name="offset" type="float" default="0"> </argument> <description> - Set the playback volume for this player, in decibels. This is a float between -80.0 (silent) and 0.0 (full volume). Values under -79.0 get truncated to -80, but values over 0.0 do not, so the warnings for overamplifying (see [method set_volume]) still apply. + Play the currently assigned stream, starting from a given position (in seconds). </description> </method> - <method name="get_volume_db" qualifiers="const"> - <return type="float"> - </return> + <method name="seek_pos"> + <argument index="0" name="time" type="float"> + </argument> <description> - Return the playback volume for this player, in decibels. + Set the playback position, in seconds. + </description> + </method> + <method name="set_autoplay"> + <argument index="0" name="enabled" type="bool"> + </argument> + <description> + Set whether this player will start playing as soon as it enters the scene tree. </description> </method> <method name="set_buffering_msec"> @@ -37111,11 +37447,11 @@ This method controls whether the position between two cached points is interpola Default is 500 milliseconds. </description> </method> - <method name="get_buffering_msec" qualifiers="const"> - <return type="int"> - </return> + <method name="set_loop"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> - Return the size of the audio buffer. + Set whether the stream will be restarted at the end. </description> </method> <method name="set_loop_restart_time"> @@ -37125,60 +37461,37 @@ This method controls whether the position between two cached points is interpola Set the point in time the stream will rewind to, when looping. </description> </method> - <method name="get_loop_restart_time" qualifiers="const"> - <return type="float"> - </return> - <description> - Return the point in time the stream will rewind to, when looping. - </description> - </method> - <method name="get_stream_name" qualifiers="const"> - <return type="String"> - </return> - <description> - Return the name of the currently assigned stream. This is not the file name, but a field inside the file. If no stream is assigned, if returns "<No Stream>". - </description> - </method> - <method name="get_loop_count" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the number of times the playback has looped. - </description> - </method> - <method name="get_pos" qualifiers="const"> - <return type="float"> - </return> + <method name="set_paused"> + <argument index="0" name="paused" type="bool"> + </argument> <description> - Return the playback position, in seconds. + Pause stream playback. </description> </method> - <method name="seek_pos"> - <argument index="0" name="time" type="float"> + <method name="set_stream"> + <argument index="0" name="stream" type="AudioStream"> </argument> <description> - Set the playback position, in seconds. + Set the [EventStream] this player will play. </description> </method> - <method name="set_autoplay"> - <argument index="0" name="enabled" type="bool"> + <method name="set_volume"> + <argument index="0" name="volume" type="float"> </argument> <description> - Set whether this player will start playing as soon as it enters the scene tree. + Set the playback volume for this player. This is a float between 0.0 (silent) and 1.0 (full volume). Values over 1.0 will amplify sound even more, but may introduce distortion. Negative values will just invert the output waveform, which produces no audible difference. </description> </method> - <method name="has_autoplay" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_volume_db"> + <argument index="0" name="db" type="float"> + </argument> <description> - Return whether this player will start playing as soon as it enters the scene tree. + Set the playback volume for this player, in decibels. This is a float between -80.0 (silent) and 0.0 (full volume). Values under -79.0 get truncated to -80, but values over 0.0 do not, so the warnings for overamplifying (see [method set_volume]) still apply. </description> </method> - <method name="get_length" qualifiers="const"> - <return type="float"> - </return> + <method name="stop"> <description> - Return the length of the stream, in seconds. + Stop the playback. </description> </method> </methods> @@ -37216,6 +37529,13 @@ This method controls whether the position between two cached points is interpola Return true if the strings begins with the given string. </description> </method> + <method name="bigrams"> + <return type="StringArray"> + </return> + <description> + Return the bigrams (pairs of consecutive letters) of this string. + </description> + </method> <method name="c_escape"> <return type="String"> </return> @@ -37569,6 +37889,21 @@ This method controls whether the position between two cached points is interpola Return the right side of the string from a given position. </description> </method> + <method name="sha256_text"> + <return type="String"> + </return> + <description> + </description> + </method> + <method name="similarity"> + <return type="float"> + </return> + <argument index="0" name="text" type="String"> + </argument> + <description> + Return the similarity index of the text compared to this string. 1 means totally similar and 0 means totally dissimilar. + </description> + </method> <method name="split"> <return type="StringArray"> </return> @@ -37681,6 +38016,40 @@ This method controls whether the position between two cached points is interpola String Array. Array of strings. Can only contain strings. Optimized for memory usage, can't fragment the memory. </description> <methods> + <method name="StringArray"> + <return type="StringArray"> + </return> + <argument index="0" name="from" type="Array"> + </argument> + <description> + Create from a generic array. + </description> + </method> + <method name="append"> + <argument index="0" name="string" type="String"> + </argument> + <description> + Append an element at the end of the array (alias of [method push_back]). + </description> + </method> + <method name="append_array"> + <argument index="0" name="array" type="StringArray"> + </argument> + <description> + Append an [StringArray] at the end of this array. + </description> + </method> + <method name="insert"> + <return type="int"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="string" type="String"> + </argument> + <description> + Insert a new element at a given position in the array. The position must be valid, or at the end of the array (pos==size()). + </description> + </method> <method name="push_back"> <argument index="0" name="string" type="String"> </argument> @@ -37688,11 +38057,18 @@ This method controls whether the position between two cached points is interpola Append a string element at end of the array. </description> </method> + <method name="remove"> + <argument index="0" name="idx" type="int"> + </argument> + <description> + Remove an element from the array by index. + </description> + </method> <method name="resize"> <argument index="0" name="idx" type="int"> </argument> <description> - Reset the size of the array. + Set the size of the [StringArray]. If larger than the current size it will reserve some space beforehand, and if it is smaller it will cut off the array. </description> </method> <method name="set"> @@ -37701,6 +38077,7 @@ This method controls whether the position between two cached points is interpola <argument index="1" name="string" type="String"> </argument> <description> + Change the [String] at the given index. </description> </method> <method name="size"> @@ -37710,14 +38087,6 @@ This method controls whether the position between two cached points is interpola Return the size of the array. </description> </method> - <method name="StringArray"> - <return type="StringArray"> - </return> - <argument index="0" name="from" type="Array"> - </argument> - <description> - </description> - </method> </methods> <constants> </constants> @@ -37730,24 +38099,18 @@ This method controls whether the position between two cached points is interpola StyleBox is [Resource] that provides an abstract base class for drawing stylized boxes for the UI. StyleBoxes are used for drawing the styles of buttons, line edit backgrounds, tree backgrounds, etc. and also for testing a transparency mask for pointer signals. If mask test fails on a StyleBox assigned as mask to a control, clicks and motion signals will go through it to the one below. </description> <methods> - <method name="test_mask" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="point" type="Vector2"> + <method name="draw" qualifiers="const"> + <argument index="0" name="canvas_item" type="RID"> </argument> <argument index="1" name="rect" type="Rect2"> </argument> <description> - Test a position in a rectangle, return whether it passes the mask test. </description> </method> - <method name="set_default_margin"> - <argument index="0" name="margin" type="int"> - </argument> - <argument index="1" name="offset" type="float"> - </argument> + <method name="get_center_size" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Set the default offset "offset" of the margin "margin" (see MARGIN_* enum) for a StyleBox, Controls that draw styleboxes with context inside need to know the margin, so the border of the stylebox is not occluded. </description> </method> <method name="get_default_margin" qualifiers="const"> @@ -37775,25 +38138,31 @@ This method controls whether the position between two cached points is interpola Return the minimum size that this stylebox can be shrunk to. </description> </method> - <method name="get_center_size" qualifiers="const"> + <method name="get_offset" qualifiers="const"> <return type="Vector2"> </return> <description> + Return the "offset" of a stylebox, this is a helper function, like writing [code]Vector2(style.get_margin(MARGIN_LEFT), style.get_margin(MARGIN_TOP))[/code]. </description> </method> - <method name="get_offset" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_default_margin"> + <argument index="0" name="margin" type="int"> + </argument> + <argument index="1" name="offset" type="float"> + </argument> <description> - Return the "offset" of a stylebox, this is a helper function, like writing [code]Vector2(style.get_margin(MARGIN_LEFT), style.get_margin(MARGIN_TOP))[/code]. + Set the default offset "offset" of the margin "margin" (see MARGIN_* enum) for a StyleBox, Controls that draw styleboxes with context inside need to know the margin, so the border of the stylebox is not occluded. </description> </method> - <method name="draw" qualifiers="const"> - <argument index="0" name="canvas_item" type="RID"> + <method name="test_mask" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="point" type="Vector2"> </argument> <argument index="1" name="rect" type="Rect2"> </argument> <description> + Test a position in a rectangle, return whether it passes the mask test. </description> </method> </methods> @@ -37820,63 +38189,63 @@ This method controls whether the position between two cached points is interpola Stylebox of a single color. Displays the stylebox of a single color, alternatively a border with light/dark colors can be assigned. </description> <methods> - <method name="set_bg_color"> - <argument index="0" name="color" type="Color"> - </argument> + <method name="get_bg_color" qualifiers="const"> + <return type="Color"> + </return> <description> </description> </method> - <method name="get_bg_color" qualifiers="const"> - <return type="Color"> + <method name="get_border_blend" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="set_light_color"> - <argument index="0" name="color" type="Color"> - </argument> + <method name="get_border_size" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_light_color" qualifiers="const"> + <method name="get_dark_color" qualifiers="const"> <return type="Color"> </return> <description> </description> </method> - <method name="set_dark_color"> - <argument index="0" name="color" type="Color"> - </argument> + <method name="get_draw_center" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="get_dark_color" qualifiers="const"> + <method name="get_light_color" qualifiers="const"> <return type="Color"> </return> <description> </description> </method> - <method name="set_border_size"> - <argument index="0" name="size" type="int"> + <method name="set_bg_color"> + <argument index="0" name="color" type="Color"> </argument> <description> </description> </method> - <method name="get_border_size" qualifiers="const"> - <return type="int"> - </return> + <method name="set_border_blend"> + <argument index="0" name="blend" type="bool"> + </argument> <description> </description> </method> - <method name="set_border_blend"> - <argument index="0" name="blend" type="bool"> + <method name="set_border_size"> + <argument index="0" name="size" type="int"> </argument> <description> </description> </method> - <method name="get_border_blend" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_dark_color"> + <argument index="0" name="color" type="Color"> + </argument> <description> </description> </method> @@ -37886,9 +38255,9 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_draw_center" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_light_color"> + <argument index="0" name="color" type="Color"> + </argument> <description> </description> </method> @@ -37904,11 +38273,20 @@ This method controls whether the position between two cached points is interpola This StyleBox is similar to [StyleBoxTexture], but only meant to be used for mask testing. It takes an image and applies stretch rules to determine if the point clicked is masked or not. </description> <methods> - <method name="set_image"> - <argument index="0" name="image" type="Image"> + <method name="get_expand" qualifiers="const"> + <return type="bool"> + </return> + <description> + Return whether the expand property is set(default). When expanding, the image will use the same rules as [StyleBoxTexture] for expand. If not expanding, the image will always be tested at its original size. + </description> + </method> + <method name="get_expand_margin_size" qualifiers="const"> + <return type="float"> + </return> + <argument index="0" name="margin" type="int"> </argument> <description> - Set the image used for mask testing. Pixels (converted to grey) that have a value, less than 0.5 will fail the test. + Return the expand margin size (from enum MARGIN_*). Parts of the image below the size of the margin (and in the direction of the margin) will not expand. </description> </method> <method name="get_image" qualifiers="const"> @@ -37925,13 +38303,6 @@ This method controls whether the position between two cached points is interpola Set the expand property (default). When expanding, the image will use the same rules as [StyleBoxTexture] for expand. If not expanding, the image will always be tested at its original size. </description> </method> - <method name="get_expand" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return whether the expand property is set(default). When expanding, the image will use the same rules as [StyleBoxTexture] for expand. If not expanding, the image will always be tested at its original size. - </description> - </method> <method name="set_expand_margin_size"> <argument index="0" name="margin" type="int"> </argument> @@ -37941,13 +38312,11 @@ This method controls whether the position between two cached points is interpola Set an expand margin size (from enum MARGIN_*). Parts of the image below the size of the margin (and in the direction of the margin) will not expand. </description> </method> - <method name="get_expand_margin_size" qualifiers="const"> - <return type="float"> - </return> - <argument index="0" name="margin" type="int"> + <method name="set_image"> + <argument index="0" name="image" type="Image"> </argument> <description> - Return the expand margin size (from enum MARGIN_*). Parts of the image below the size of the margin (and in the direction of the margin) will not expand. + Set the image used for mask testing. Pixels (converted to grey) that have a value, less than 0.5 will fail the test. </description> </method> </methods> @@ -37962,23 +38331,17 @@ This method controls whether the position between two cached points is interpola Texture Based 3x3 scale style. This stylebox performs a 3x3 scaling of a texture, where only the center cell is fully stretched. This allows for the easy creation of bordered styles. </description> <methods> - <method name="set_texture"> - <argument index="0" name="texture" type="Texture"> - </argument> - <description> - </description> - </method> - <method name="get_texture" qualifiers="const"> - <return type="Texture"> + <method name="get_draw_center" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="set_margin_size"> + <method name="get_expand_margin_size" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="margin" type="int"> </argument> - <argument index="1" name="size" type="float"> - </argument> <description> </description> </method> @@ -37990,6 +38353,24 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> + <method name="get_region_rect" qualifiers="const"> + <return type="Rect2"> + </return> + <description> + </description> + </method> + <method name="get_texture" qualifiers="const"> + <return type="Texture"> + </return> + <description> + </description> + </method> + <method name="set_draw_center"> + <argument index="0" name="enable" type="bool"> + </argument> + <description> + </description> + </method> <method name="set_expand_margin_size"> <argument index="0" name="margin" type="int"> </argument> @@ -37998,11 +38379,11 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_expand_margin_size" qualifiers="const"> - <return type="float"> - </return> + <method name="set_margin_size"> <argument index="0" name="margin" type="int"> </argument> + <argument index="1" name="size" type="float"> + </argument> <description> </description> </method> @@ -38012,24 +38393,12 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_region_rect" qualifiers="const"> - <return type="Rect2"> - </return> - <description> - </description> - </method> - <method name="set_draw_center"> - <argument index="0" name="enable" type="bool"> + <method name="set_texture"> + <argument index="0" name="texture" type="Texture"> </argument> <description> </description> </method> - <method name="get_draw_center" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> </methods> <constants> </constants> @@ -38042,14 +38411,8 @@ This method controls whether the position between two cached points is interpola Helper tool to create geometry. </description> <methods> - <method name="begin"> - <argument index="0" name="primitive" type="int"> - </argument> - <description> - </description> - </method> - <method name="add_vertex"> - <argument index="0" name="vertex" type="Vector3"> + <method name="add_bones"> + <argument index="0" name="bones" type="IntArray"> </argument> <description> </description> @@ -38066,12 +38429,34 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> + <method name="add_smooth_group"> + <argument index="0" name="smooth" type="bool"> + </argument> + <description> + </description> + </method> <method name="add_tangent"> <argument index="0" name="tangent" type="Plane"> </argument> <description> </description> </method> + <method name="add_triangle_fan"> + <argument index="0" name="vertexes" type="Vector3Array"> + </argument> + <argument index="1" name="uvs" type="Vector2Array" default="Vector2Array()"> + </argument> + <argument index="2" name="colors" type="ColorArray" default="ColorArray([ColorArray])"> + </argument> + <argument index="3" name="uv2s" type="Vector2Array" default="Vector2Array()"> + </argument> + <argument index="4" name="normals" type="Vector3Array" default="Vector3Array()"> + </argument> + <argument index="5" name="tangents" type="Array" default="Array()"> + </argument> + <description> + </description> + </method> <method name="add_uv"> <argument index="0" name="uv" type="Vector2"> </argument> @@ -38084,8 +38469,8 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="add_bones"> - <argument index="0" name="bones" type="IntArray"> + <method name="add_vertex"> + <argument index="0" name="vertex" type="Vector3"> </argument> <description> </description> @@ -38096,38 +38481,24 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="add_smooth_group"> - <argument index="0" name="smooth" type="bool"> + <method name="begin"> + <argument index="0" name="primitive" type="int"> </argument> <description> </description> </method> - <method name="add_triangle_fan"> - <argument index="0" name="vertexes" type="Vector3Array"> - </argument> - <argument index="1" name="uvs" type="Vector2Array" default="Vector2Array()"> - </argument> - <argument index="2" name="colors" type="ColorArray" default="ColorArray([ColorArray])"> - </argument> - <argument index="3" name="uv2s" type="Vector2Array" default="Vector2Array()"> - </argument> - <argument index="4" name="normals" type="Vector3Array" default="Vector3Array()"> - </argument> - <argument index="5" name="tangents" type="Array" default="Array()"> - </argument> + <method name="clear"> <description> </description> </method> - <method name="set_material"> - <argument index="0" name="material" type="Material"> + <method name="commit"> + <return type="Mesh"> + </return> + <argument index="0" name="existing" type="Mesh" default="NULL"> </argument> <description> </description> </method> - <method name="index"> - <description> - </description> - </method> <method name="deindex"> <description> </description> @@ -38136,15 +38507,13 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="commit"> - <return type="Mesh"> - </return> - <argument index="0" name="existing" type="Mesh" default="NULL"> - </argument> + <method name="index"> <description> </description> </method> - <method name="clear"> + <method name="set_material"> + <argument index="0" name="material" type="Material"> + </argument> <description> </description> </method> @@ -38160,6 +38529,13 @@ This method controls whether the position between two cached points is interpola TCP Server class. Listens to connections on a port and returns a [StreamPeerTCP] when got a connection. </description> <methods> + <method name="is_connection_available" qualifiers="const"> + <return type="bool"> + </return> + <description> + Return true if a connection is available for taking. + </description> + </method> <method name="listen"> <return type="int"> </return> @@ -38171,11 +38547,9 @@ This method controls whether the position between two cached points is interpola Listen on a port, alternatively give a white-list of accepted hosts. </description> </method> - <method name="is_connection_available" qualifiers="const"> - <return type="bool"> - </return> + <method name="stop"> <description> - Return true if a connection is available for taking. + Stop listening. </description> </method> <method name="take_connection"> @@ -38185,11 +38559,6 @@ This method controls whether the position between two cached points is interpola If a connection is available, return a StreamPeerTCP with the connection/ </description> </method> - <method name="stop"> - <description> - Stop listening. - </description> - </method> </methods> <constants> </constants> @@ -38203,18 +38572,11 @@ This method controls whether the position between two cached points is interpola Children controls of this one automatically. </description> <methods> - <method name="get_tab_count" qualifiers="const"> - <return type="int"> + <method name="are_tabs_visible" qualifiers="const"> + <return type="bool"> </return> <description> - Return the amount of tabs. - </description> - </method> - <method name="set_current_tab"> - <argument index="0" name="tab_idx" type="int"> - </argument> - <description> - Bring a tab (and the Control it represents) to the front, and hide the rest. + Return whether the tabs should be visible or hidden. </description> </method> <method name="get_current_tab" qualifiers="const"> @@ -38230,21 +38592,12 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_tab_control" qualifiers="const"> - <return type="Control"> + <method name="get_popup" qualifiers="const"> + <return type="Popup"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> </description> </method> - <method name="set_tab_align"> - <argument index="0" name="align" type="int"> - </argument> - <description> - Set tab alignment, from the ALIGN_* enum. Moves tabs to the left, right or center. - </description> - </method> <method name="get_tab_align" qualifiers="const"> <return type="int"> </return> @@ -38252,27 +38605,27 @@ This method controls whether the position between two cached points is interpola Return tab alignment, from the ALIGN_* enum. </description> </method> - <method name="set_tabs_visible"> - <argument index="0" name="visible" type="bool"> + <method name="get_tab_control" qualifiers="const"> + <return type="Control"> + </return> + <argument index="0" name="idx" type="int"> </argument> <description> - Set whether the tabs should be visible or hidden. </description> </method> - <method name="are_tabs_visible" qualifiers="const"> - <return type="bool"> + <method name="get_tab_count" qualifiers="const"> + <return type="int"> </return> <description> - Return whether the tabs should be visible or hidden. + Return the amount of tabs. </description> </method> - <method name="set_tab_title"> + <method name="get_tab_icon" qualifiers="const"> + <return type="Texture"> + </return> <argument index="0" name="tab_idx" type="int"> </argument> - <argument index="1" name="title" type="String"> - </argument> <description> - Set a title for the tab. Tab titles are by default the children node name, but this can be overridden. </description> </method> <method name="get_tab_title" qualifiers="const"> @@ -38284,33 +38637,49 @@ This method controls whether the position between two cached points is interpola Return the title for the tab. Tab titles are by default the children node name, but this can be overridden. </description> </method> - <method name="set_tab_icon"> + <method name="set_current_tab"> <argument index="0" name="tab_idx" type="int"> </argument> - <argument index="1" name="icon" type="Texture"> + <description> + Bring a tab (and the Control it represents) to the front, and hide the rest. + </description> + </method> + <method name="set_popup"> + <argument index="0" name="popup" type="Popup"> </argument> <description> - Set an icon for a tab. </description> </method> - <method name="get_tab_icon" qualifiers="const"> - <return type="Texture"> - </return> + <method name="set_tab_align"> + <argument index="0" name="align" type="int"> + </argument> + <description> + Set tab alignment, from the ALIGN_* enum. Moves tabs to the left, right or center. + </description> + </method> + <method name="set_tab_icon"> <argument index="0" name="tab_idx" type="int"> </argument> + <argument index="1" name="icon" type="Texture"> + </argument> <description> + Set an icon for a tab. </description> </method> - <method name="set_popup"> - <argument index="0" name="popup" type="Popup"> + <method name="set_tab_title"> + <argument index="0" name="tab_idx" type="int"> + </argument> + <argument index="1" name="title" type="String"> </argument> <description> + Set a title for the tab. Tab titles are by default the children node name, but this can be overridden. </description> </method> - <method name="get_popup" qualifiers="const"> - <return type="Popup"> - </return> + <method name="set_tabs_visible"> + <argument index="0" name="visible" type="bool"> + </argument> <description> + Set whether the tabs should be visible or hidden. </description> </method> </methods> @@ -38330,39 +38699,39 @@ This method controls whether the position between two cached points is interpola <constants> </constants> <theme_items> - <theme_item name="label_valign_fg" type="int"> - </theme_item> - <theme_item name="hseparation" type="int"> - </theme_item> - <theme_item name="label_valign_bg" type="int"> + <theme_item name="decrement" type="Texture"> </theme_item> - <theme_item name="top_margin" type="int"> + <theme_item name="decrement_hilite" type="Texture"> </theme_item> - <theme_item name="side_margin" type="int"> + <theme_item name="font" type="Font"> </theme_item> <theme_item name="font_color_bg" type="Color"> </theme_item> <theme_item name="font_color_fg" type="Color"> </theme_item> - <theme_item name="menu_hilite" type="Texture"> + <theme_item name="hseparation" type="int"> + </theme_item> + <theme_item name="increment" type="Texture"> </theme_item> <theme_item name="increment_hilite" type="Texture"> </theme_item> - <theme_item name="menu" type="Texture"> + <theme_item name="label_valign_bg" type="int"> </theme_item> - <theme_item name="decrement_hilite" type="Texture"> + <theme_item name="label_valign_fg" type="int"> </theme_item> - <theme_item name="increment" type="Texture"> + <theme_item name="menu" type="Texture"> </theme_item> - <theme_item name="decrement" type="Texture"> + <theme_item name="menu_hilite" type="Texture"> </theme_item> - <theme_item name="font" type="Font"> + <theme_item name="panel" type="StyleBox"> </theme_item> - <theme_item name="tab_fg" type="StyleBox"> + <theme_item name="side_margin" type="int"> </theme_item> <theme_item name="tab_bg" type="StyleBox"> </theme_item> - <theme_item name="panel" type="StyleBox"> + <theme_item name="tab_fg" type="StyleBox"> + </theme_item> + <theme_item name="top_margin" type="int"> </theme_item> </theme_items> </class> @@ -38374,14 +38743,16 @@ This method controls whether the position between two cached points is interpola Simple tabs control, similar to [TabContainer] but is only in charge of drawing tabs, not interact with children. </description> <methods> - <method name="get_tab_count" qualifiers="const"> - <return type="int"> - </return> + <method name="add_tab"> + <argument index="0" name="title" type="String"> + </argument> + <argument index="1" name="icon" type="Texture"> + </argument> <description> </description> </method> - <method name="set_current_tab"> - <argument index="0" name="tab_idx" type="int"> + <method name="ensure_tab_visible"> + <argument index="0" name="idx" type="int"> </argument> <description> </description> @@ -38392,32 +38763,28 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_tab_title"> - <argument index="0" name="tab_idx" type="int"> - </argument> - <argument index="1" name="title" type="String"> - </argument> + <method name="get_tab_align" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_tab_title" qualifiers="const"> - <return type="String"> + <method name="get_tab_count" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="tab_idx" type="int"> - </argument> <description> </description> </method> - <method name="set_tab_icon"> + <method name="get_tab_icon" qualifiers="const"> + <return type="Texture"> + </return> <argument index="0" name="tab_idx" type="int"> </argument> - <argument index="1" name="icon" type="Texture"> - </argument> <description> </description> </method> - <method name="get_tab_icon" qualifiers="const"> - <return type="Texture"> + <method name="get_tab_title" qualifiers="const"> + <return type="String"> </return> <argument index="0" name="tab_idx" type="int"> </argument> @@ -38430,10 +38797,8 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="add_tab"> - <argument index="0" name="title" type="String"> - </argument> - <argument index="1" name="icon" type="Texture"> + <method name="set_current_tab"> + <argument index="0" name="tab_idx" type="int"> </argument> <description> </description> @@ -38444,33 +38809,37 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_tab_align" qualifiers="const"> - <return type="int"> - </return> + <method name="set_tab_icon"> + <argument index="0" name="tab_idx" type="int"> + </argument> + <argument index="1" name="icon" type="Texture"> + </argument> <description> </description> </method> - <method name="ensure_tab_visible"> - <argument index="0" name="idx" type="int"> + <method name="set_tab_title"> + <argument index="0" name="tab_idx" type="int"> + </argument> + <argument index="1" name="title" type="String"> </argument> <description> </description> </method> </methods> <signals> - <signal name="tab_close"> + <signal name="right_button_pressed"> <argument index="0" name="tab" type="int"> </argument> <description> </description> </signal> - <signal name="right_button_pressed"> + <signal name="tab_changed"> <argument index="0" name="tab" type="int"> </argument> <description> </description> </signal> - <signal name="tab_changed"> + <signal name="tab_close"> <argument index="0" name="tab" type="int"> </argument> <description> @@ -38484,47 +38853,47 @@ This method controls whether the position between two cached points is interpola </constant> <constant name="ALIGN_RIGHT" value="2"> </constant> + <constant name="CLOSE_BUTTON_SHOW_NEVER" value="0"> + </constant> <constant name="CLOSE_BUTTON_SHOW_ACTIVE_ONLY" value="1"> </constant> <constant name="CLOSE_BUTTON_SHOW_ALWAYS" value="2"> </constant> - <constant name="CLOSE_BUTTON_SHOW_NEVER" value="0"> - </constant> </constants> <theme_items> - <theme_item name="label_valign_fg" type="int"> + <theme_item name="button" type="StyleBox"> </theme_item> - <theme_item name="hseparation" type="int"> + <theme_item name="button_pressed" type="StyleBox"> </theme_item> - <theme_item name="label_valign_bg" type="int"> + <theme_item name="close" type="Texture"> </theme_item> - <theme_item name="top_margin" type="int"> + <theme_item name="decrement" type="Texture"> + </theme_item> + <theme_item name="decrement_hilite" type="Texture"> + </theme_item> + <theme_item name="font" type="Font"> </theme_item> <theme_item name="font_color_bg" type="Color"> </theme_item> <theme_item name="font_color_fg" type="Color"> </theme_item> - <theme_item name="increment_hilite" type="Texture"> - </theme_item> - <theme_item name="decrement_hilite" type="Texture"> + <theme_item name="hseparation" type="int"> </theme_item> <theme_item name="increment" type="Texture"> </theme_item> - <theme_item name="close" type="Texture"> - </theme_item> - <theme_item name="decrement" type="Texture"> + <theme_item name="increment_hilite" type="Texture"> </theme_item> - <theme_item name="font" type="Font"> + <theme_item name="label_valign_bg" type="int"> </theme_item> - <theme_item name="tab_fg" type="StyleBox"> + <theme_item name="label_valign_fg" type="int"> </theme_item> - <theme_item name="button" type="StyleBox"> + <theme_item name="panel" type="StyleBox"> </theme_item> <theme_item name="tab_bg" type="StyleBox"> </theme_item> - <theme_item name="panel" type="StyleBox"> + <theme_item name="tab_fg" type="StyleBox"> </theme_item> - <theme_item name="button_pressed" type="StyleBox"> + <theme_item name="top_margin" type="int"> </theme_item> </theme_items> </class> @@ -38548,57 +38917,55 @@ This method controls whether the position between two cached points is interpola TextEdit is meant for editing large, multiline text. It also has facilities for editing code, such as syntax highlighting support and multiple levels of undo/redo. </description> <methods> - <method name="set_text"> - <argument index="0" name="text" type="String"> + <method name="add_color_region"> + <argument index="0" name="begin_key" type="String"> + </argument> + <argument index="1" name="end_key" type="String"> + </argument> + <argument index="2" name="color" type="Color"> + </argument> + <argument index="3" name="line_only" type="bool" default="false"> </argument> <description> - Set the entire text. + Add color region (given the delimiters) and its colors. </description> </method> - <method name="insert_text_at_cursor"> - <argument index="0" name="text" type="String"> + <method name="add_keyword_color"> + <argument index="0" name="keyword" type="String"> + </argument> + <argument index="1" name="color" type="Color"> </argument> <description> - Insert a given text at the cursor position. + Add a keyword and its color. </description> </method> - <method name="get_line_count" qualifiers="const"> - <return type="int"> - </return> + <method name="clear_colors"> <description> - Return the amount of total lines in the text. + Clear all the syntax coloring information. </description> </method> - <method name="get_text"> - <return type="String"> - </return> + <method name="clear_undo_history"> <description> - Return the whole text. + Clear the undo history. </description> </method> - <method name="get_line" qualifiers="const"> - <return type="String"> - </return> - <argument index="0" name="line" type="int"> - </argument> + <method name="copy"> <description> - Return the text of a specific line. + Copy the current selection. </description> </method> - <method name="cursor_set_column"> - <argument index="0" name="column" type="int"> - </argument> - <argument index="1" name="adjust_viewport" type="bool" default="false"> - </argument> + <method name="cursor_get_blink_enabled" qualifiers="const"> + <return type="bool"> + </return> <description> + Gets whether the text editor caret is blinking. </description> </method> - <method name="cursor_set_line"> - <argument index="0" name="line" type="int"> - </argument> - <argument index="1" name="adjust_viewport" type="bool" default="false"> - </argument> + <method name="cursor_get_blink_speed" qualifiers="const"> + <return type="float"> + </return> <description> + Gets the text editor caret blink speed. </description> </method> <method name="cursor_get_column" qualifiers="const"> @@ -38622,13 +38989,6 @@ This method controls whether the position between two cached points is interpola Set the text editor caret to blink. </description> </method> - <method name="cursor_get_blink_enabled" qualifiers="const"> - <return type="bool"> - </return> - <description> - Gets whether the text editor caret is blinking. - </description> - </method> <method name="cursor_set_blink_speed"> <argument index="0" name="blink_speed" type="float"> </argument> @@ -38636,32 +38996,20 @@ This method controls whether the position between two cached points is interpola Set the text editor caret blink speed. Cannot be less then or equal to 0. </description> </method> - <method name="cursor_get_blink_speed" qualifiers="const"> - <return type="float"> - </return> - <description> - Gets the text editor caret blink speed. - </description> - </method> - <method name="set_readonly"> - <argument index="0" name="enable" type="bool"> + <method name="cursor_set_column"> + <argument index="0" name="column" type="int"> </argument> - <description> - Set the text editor as read-only. Text can be displayed but not edited. - </description> - </method> - <method name="set_wrap"> - <argument index="0" name="enable" type="bool"> + <argument index="1" name="adjust_viewport" type="bool" default="false"> </argument> <description> - Enable text wrapping when it goes beyond he edge of what is visible. </description> </method> - <method name="set_max_chars"> - <argument index="0" name="amount" type="int"> + <method name="cursor_set_line"> + <argument index="0" name="line" type="int"> + </argument> + <argument index="1" name="adjust_viewport" type="bool" default="false"> </argument> <description> - Set the maximum amount of characters editable. </description> </method> <method name="cut"> @@ -38669,39 +39017,33 @@ This method controls whether the position between two cached points is interpola Cut the current selection. </description> </method> - <method name="copy"> - <description> - Copy the current selection. - </description> - </method> - <method name="paste"> + <method name="get_line" qualifiers="const"> + <return type="String"> + </return> + <argument index="0" name="line" type="int"> + </argument> <description> - Paste the current selection. + Return the text of a specific line. </description> </method> - <method name="select_all"> + <method name="get_line_count" qualifiers="const"> + <return type="int"> + </return> <description> - Select all the text. + Return the amount of total lines in the text. </description> </method> - <method name="select"> - <argument index="0" name="from_line" type="int"> - </argument> - <argument index="1" name="from_column" type="int"> - </argument> - <argument index="2" name="to_line" type="int"> - </argument> - <argument index="3" name="to_column" type="int"> - </argument> + <method name="get_menu" qualifiers="const"> + <return type="PopupMenu"> + </return> <description> - Perform selection, from line/column to line/column. </description> </method> - <method name="is_selection_active" qualifiers="const"> - <return type="bool"> + <method name="get_selection_from_column" qualifiers="const"> + <return type="int"> </return> <description> - Return true if the selection is active. + Return the selection begin column. </description> </method> <method name="get_selection_from_line" qualifiers="const"> @@ -38711,32 +39053,32 @@ This method controls whether the position between two cached points is interpola Return the selection begin line. </description> </method> - <method name="get_selection_from_column" qualifiers="const"> - <return type="int"> + <method name="get_selection_text" qualifiers="const"> + <return type="String"> </return> <description> - Return the selection begin column. + Return the text inside the selection. </description> </method> - <method name="get_selection_to_line" qualifiers="const"> + <method name="get_selection_to_column" qualifiers="const"> <return type="int"> </return> <description> - Return the selection end line. + Return the selection end column. </description> </method> - <method name="get_selection_to_column" qualifiers="const"> + <method name="get_selection_to_line" qualifiers="const"> <return type="int"> </return> <description> - Return the selection end column. + Return the selection end line. </description> </method> - <method name="get_selection_text" qualifiers="const"> + <method name="get_text"> <return type="String"> </return> <description> - Return the text inside the selection. + Return the whole text. </description> </method> <method name="get_word_under_cursor" qualifiers="const"> @@ -38745,6 +39087,43 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> + <method name="insert_text_at_cursor"> + <argument index="0" name="text" type="String"> + </argument> + <description> + Insert a given text at the cursor position. + </description> + </method> + <method name="is_selection_active" qualifiers="const"> + <return type="bool"> + </return> + <description> + Return true if the selection is active. + </description> + </method> + <method name="is_syntax_coloring_enabled" qualifiers="const"> + <return type="bool"> + </return> + <description> + Return true if the syntax coloring is enabled. + </description> + </method> + <method name="menu_option"> + <argument index="0" name="arg0" type="int"> + </argument> + <description> + </description> + </method> + <method name="paste"> + <description> + Paste the current selection. + </description> + </method> + <method name="redo"> + <description> + Perform redo operation. + </description> + </method> <method name="search" qualifiers="const"> <return type="IntArray"> </return> @@ -38760,55 +39139,43 @@ This method controls whether the position between two cached points is interpola Perform a search inside the text. Search flags can be specified in the SEARCH_* enum. </description> </method> - <method name="undo"> - <description> - Perform undo operation. - </description> - </method> - <method name="redo"> + <method name="select"> + <argument index="0" name="from_line" type="int"> + </argument> + <argument index="1" name="from_column" type="int"> + </argument> + <argument index="2" name="to_line" type="int"> + </argument> + <argument index="3" name="to_column" type="int"> + </argument> <description> - Perform redo operation. + Perform selection, from line/column to line/column. </description> </method> - <method name="clear_undo_history"> + <method name="select_all"> <description> - Clear the undo history. + Select all the text. </description> </method> - <method name="set_syntax_coloring"> - <argument index="0" name="enable" type="bool"> + <method name="set_custom_bg_color"> + <argument index="0" name="color" type="Color"> </argument> <description> - Set to enable the syntax coloring. - </description> - </method> - <method name="is_syntax_coloring_enabled" qualifiers="const"> - <return type="bool"> - </return> - <description> - Return true if the syntax coloring is enabled. + Set a custom background color. A background color with alpha==0 disables this. </description> </method> - <method name="add_keyword_color"> - <argument index="0" name="keyword" type="String"> - </argument> - <argument index="1" name="color" type="Color"> + <method name="set_max_chars"> + <argument index="0" name="amount" type="int"> </argument> <description> - Add a keyword and its color. + Set the maximum amount of characters editable. </description> </method> - <method name="add_color_region"> - <argument index="0" name="begin_key" type="String"> - </argument> - <argument index="1" name="end_key" type="String"> - </argument> - <argument index="2" name="color" type="Color"> - </argument> - <argument index="3" name="line_only" type="bool" default="false"> + <method name="set_readonly"> + <argument index="0" name="enable" type="bool"> </argument> <description> - Add color region (given the delimiters) and its colors. + Set the text editor as read-only. Text can be displayed but not edited. </description> </method> <method name="set_symbol_color"> @@ -38818,37 +39185,34 @@ This method controls whether the position between two cached points is interpola Set the color for symbols. </description> </method> - <method name="set_custom_bg_color"> - <argument index="0" name="color" type="Color"> + <method name="set_syntax_coloring"> + <argument index="0" name="enable" type="bool"> </argument> <description> - Set a custom background color. A background color with alpha==0 disables this. + Set to enable the syntax coloring. </description> </method> - <method name="clear_colors"> + <method name="set_text"> + <argument index="0" name="text" type="String"> + </argument> <description> - Clear all the syntax coloring information. + Set the entire text. </description> </method> - <method name="menu_option"> - <argument index="0" name="arg0" type="int"> + <method name="set_wrap"> + <argument index="0" name="enable" type="bool"> </argument> <description> + Enable text wrapping when it goes beyond he edge of what is visible. </description> </method> - <method name="get_menu" qualifiers="const"> - <return type="PopupMenu"> - </return> + <method name="undo"> <description> + Perform undo operation. </description> </method> </methods> <signals> - <signal name="text_changed"> - <description> - Emitted when the text changes. - </description> - </signal> <signal name="cursor_changed"> <description> Emitted when the cursor changes. @@ -38858,17 +39222,13 @@ This method controls whether the position between two cached points is interpola <description> </description> </signal> + <signal name="text_changed"> + <description> + Emitted when the text changes. + </description> + </signal> </signals> <constants> - <constant name="SEARCH_MATCH_CASE" value="1"> - Match case when searching. - </constant> - <constant name="SEARCH_WHOLE_WORDS" value="2"> - Match whole words when searching. - </constant> - <constant name="SEARCH_BACKWARDS" value="4"> - Search from end to beginning. - </constant> <constant name="MENU_CUT" value="0"> </constant> <constant name="MENU_COPY" value="1"> @@ -38883,49 +39243,58 @@ This method controls whether the position between two cached points is interpola </constant> <constant name="MENU_MAX" value="6"> </constant> + <constant name="SEARCH_MATCH_CASE" value="1"> + Match case when searching. + </constant> + <constant name="SEARCH_WHOLE_WORDS" value="2"> + Match whole words when searching. + </constant> + <constant name="SEARCH_BACKWARDS" value="4"> + Search from end to beginning. + </constant> </constants> <theme_items> - <theme_item name="line_spacing" type="int"> - </theme_item> - <theme_item name="completion_lines" type="int"> - </theme_item> - <theme_item name="completion_max_width" type="int"> + <theme_item name="brace_mismatch_color" type="Color"> </theme_item> - <theme_item name="completion_scroll_width" type="int"> + <theme_item name="breakpoint_color" type="Color"> </theme_item> - <theme_item name="symbol_color" type="Color"> + <theme_item name="caret_color" type="Color"> </theme_item> - <theme_item name="selection_color" type="Color"> + <theme_item name="completion" type="StyleBox"> </theme_item> <theme_item name="completion_existing" type="Color"> </theme_item> - <theme_item name="caret_color" type="Color"> - </theme_item> - <theme_item name="breakpoint_color" type="Color"> - </theme_item> - <theme_item name="font_color_selected" type="Color"> + <theme_item name="completion_lines" type="int"> </theme_item> - <theme_item name="font_color" type="Color"> + <theme_item name="completion_max_width" type="int"> </theme_item> <theme_item name="completion_scroll_color" type="Color"> </theme_item> - <theme_item name="brace_mismatch_color" type="Color"> + <theme_item name="completion_scroll_width" type="int"> </theme_item> - <theme_item name="current_line_color" type="Color"> + <theme_item name="completion_selected" type="StyleBox"> </theme_item> - <theme_item name="mark_color" type="Color"> + <theme_item name="current_line_color" type="Color"> </theme_item> - <theme_item name="tab" type="Texture"> + <theme_item name="focus" type="StyleBox"> </theme_item> <theme_item name="font" type="Font"> </theme_item> - <theme_item name="focus" type="StyleBox"> + <theme_item name="font_color" type="Color"> + </theme_item> + <theme_item name="font_color_selected" type="Color"> + </theme_item> + <theme_item name="line_spacing" type="int"> + </theme_item> + <theme_item name="mark_color" type="Color"> </theme_item> <theme_item name="normal" type="StyleBox"> </theme_item> - <theme_item name="completion_selected" type="StyleBox"> + <theme_item name="selection_color" type="Color"> </theme_item> - <theme_item name="completion" type="StyleBox"> + <theme_item name="symbol_color" type="Color"> + </theme_item> + <theme_item name="tab" type="Texture"> </theme_item> </theme_items> </class> @@ -38937,54 +39306,6 @@ This method controls whether the position between two cached points is interpola A texture works by registering an image in the video hardware, which then can be used in 3D models or 2D [Sprite] or GUI [Control]. </description> <methods> - <method name="get_width" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the texture width. - </description> - </method> - <method name="get_height" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the texture height. - </description> - </method> - <method name="get_size" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - Return the texture size. - </description> - </method> - <method name="get_rid" qualifiers="const"> - <return type="RID"> - </return> - <description> - Return the texture RID as used in the [VisualServer]. - </description> - </method> - <method name="has_alpha" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> - <method name="set_flags"> - <argument index="0" name="flags" type="int"> - </argument> - <description> - Change the texture flags. - </description> - </method> - <method name="get_flags" qualifiers="const"> - <return type="int"> - </return> - <description> - Return the current texture flags. - </description> - </method> <method name="draw" qualifiers="const"> <argument index="0" name="canvas_item" type="RID"> </argument> @@ -39025,28 +39346,76 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> + <method name="get_flags" qualifiers="const"> + <return type="int"> + </return> + <description> + Return the current texture flags. + </description> + </method> + <method name="get_height" qualifiers="const"> + <return type="int"> + </return> + <description> + Return the texture height. + </description> + </method> + <method name="get_rid" qualifiers="const"> + <return type="RID"> + </return> + <description> + Return the texture RID as used in the [VisualServer]. + </description> + </method> + <method name="get_size" qualifiers="const"> + <return type="Vector2"> + </return> + <description> + Return the texture size. + </description> + </method> + <method name="get_width" qualifiers="const"> + <return type="int"> + </return> + <description> + Return the texture width. + </description> + </method> + <method name="has_alpha" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> + <method name="set_flags"> + <argument index="0" name="flags" type="int"> + </argument> + <description> + Change the texture flags. + </description> + </method> </methods> <constants> <constant name="FLAG_MIPMAPS" value="1"> Generate mipmaps, to enable smooth zooming out of the texture. </constant> + <constant name="FLAG_CONVERT_TO_LINEAR" value="16"> + </constant> <constant name="FLAG_REPEAT" value="2"> Repeat (instead of clamp to edge). </constant> + <constant name="FLAG_MIRRORED_REPEAT" value="32"> + </constant> <constant name="FLAG_FILTER" value="4"> Turn on magnifying filter, to enable smooth zooming in of the texture. </constant> <constant name="FLAG_VIDEO_SURFACE" value="4096"> Texture is a video surface. </constant> - <constant name="FLAGS_DEFAULT" value="7"> - Default flags. Generate mipmaps, repeat, and filter are enabled. - </constant> <constant name="FLAG_ANISOTROPIC_FILTER" value="8"> </constant> - <constant name="FLAG_CONVERT_TO_LINEAR" value="16"> - </constant> - <constant name="FLAG_MIRRORED_REPEAT" value="32"> + <constant name="FLAGS_DEFAULT" value="7"> + Default flags. Generate mipmaps, repeat, and filter are enabled. </constant> </constants> </class> @@ -39059,99 +39428,99 @@ This method controls whether the position between two cached points is interpola Only the normal texture is required, the others are optional. </description> <methods> - <method name="set_normal_texture"> - <argument index="0" name="texture" type="Texture"> - </argument> + <method name="get_click_mask" qualifiers="const"> + <return type="BitMap"> + </return> <description> </description> </method> - <method name="set_pressed_texture"> - <argument index="0" name="texture" type="Texture"> - </argument> + <method name="get_disabled_texture" qualifiers="const"> + <return type="Texture"> + </return> <description> </description> </method> - <method name="set_hover_texture"> - <argument index="0" name="texture" type="Texture"> - </argument> + <method name="get_focused_texture" qualifiers="const"> + <return type="Texture"> + </return> <description> </description> </method> - <method name="set_disabled_texture"> - <argument index="0" name="texture" type="Texture"> - </argument> + <method name="get_hover_texture" qualifiers="const"> + <return type="Texture"> + </return> <description> </description> </method> - <method name="set_focused_texture"> - <argument index="0" name="texture" type="Texture"> - </argument> + <method name="get_modulate" qualifiers="const"> + <return type="Color"> + </return> <description> </description> </method> - <method name="set_click_mask"> - <argument index="0" name="mask" type="BitMap"> - </argument> + <method name="get_normal_texture" qualifiers="const"> + <return type="Texture"> + </return> <description> </description> </method> - <method name="set_texture_scale"> - <argument index="0" name="scale" type="Vector2"> - </argument> + <method name="get_pressed_texture" qualifiers="const"> + <return type="Texture"> + </return> <description> </description> </method> - <method name="set_modulate"> - <argument index="0" name="color" type="Color"> - </argument> + <method name="get_texture_scale" qualifiers="const"> + <return type="Vector2"> + </return> <description> </description> </method> - <method name="get_normal_texture" qualifiers="const"> - <return type="Texture"> - </return> + <method name="set_click_mask"> + <argument index="0" name="mask" type="BitMap"> + </argument> <description> </description> </method> - <method name="get_pressed_texture" qualifiers="const"> - <return type="Texture"> - </return> + <method name="set_disabled_texture"> + <argument index="0" name="texture" type="Texture"> + </argument> <description> </description> </method> - <method name="get_hover_texture" qualifiers="const"> - <return type="Texture"> - </return> + <method name="set_focused_texture"> + <argument index="0" name="texture" type="Texture"> + </argument> <description> </description> </method> - <method name="get_disabled_texture" qualifiers="const"> - <return type="Texture"> - </return> + <method name="set_hover_texture"> + <argument index="0" name="texture" type="Texture"> + </argument> <description> </description> </method> - <method name="get_focused_texture" qualifiers="const"> - <return type="Texture"> - </return> + <method name="set_modulate"> + <argument index="0" name="color" type="Color"> + </argument> <description> </description> </method> - <method name="get_click_mask" qualifiers="const"> - <return type="BitMap"> - </return> + <method name="set_normal_texture"> + <argument index="0" name="texture" type="Texture"> + </argument> <description> </description> </method> - <method name="get_texture_scale" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_pressed_texture"> + <argument index="0" name="texture" type="Texture"> + </argument> <description> </description> </method> - <method name="get_modulate" qualifiers="const"> - <return type="Color"> - </return> + <method name="set_texture_scale"> + <argument index="0" name="scale" type="Vector2"> + </argument> <description> </description> </method> @@ -39167,26 +39536,26 @@ This method controls whether the position between two cached points is interpola Control frame that simply draws an assigned texture. It can stretch or not. It's a simple way to just show an image in a UI. </description> <methods> - <method name="set_texture"> - <argument index="0" name="texture" type="Object"> - </argument> + <method name="get_modulate" qualifiers="const"> + <return type="Color"> + </return> <description> </description> </method> - <method name="get_texture" qualifiers="const"> - <return type="Object"> + <method name="get_stretch_mode" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="set_modulate"> - <argument index="0" name="modulate" type="Color"> - </argument> + <method name="get_texture" qualifiers="const"> + <return type="Object"> + </return> <description> </description> </method> - <method name="get_modulate" qualifiers="const"> - <return type="Color"> + <method name="has_expand" qualifiers="const"> + <return type="bool"> </return> <description> </description> @@ -39197,9 +39566,9 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="has_expand" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_modulate"> + <argument index="0" name="modulate" type="Color"> + </argument> <description> </description> </method> @@ -39209,9 +39578,9 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_stretch_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_texture"> + <argument index="0" name="texture" type="Object"> + </argument> <description> </description> </method> @@ -39241,21 +39610,21 @@ This method controls whether the position between two cached points is interpola [ProgressBar] implementation that is easier to theme (by just passing a few textures). </description> <methods> - <method name="set_under_texture"> - <argument index="0" name="tex" type="Object"> - </argument> + <method name="get_fill_degrees"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_under_texture" qualifiers="const"> - <return type="Object"> + <method name="get_fill_mode"> + <return type="int"> </return> <description> </description> </method> - <method name="set_progress_texture"> - <argument index="0" name="tex" type="Object"> - </argument> + <method name="get_over_texture" qualifiers="const"> + <return type="Object"> + </return> <description> </description> </method> @@ -39265,39 +39634,45 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_over_texture"> - <argument index="0" name="tex" type="Object"> - </argument> + <method name="get_radial_center_offset"> + <return type="Vector2"> + </return> <description> </description> </method> - <method name="get_over_texture" qualifiers="const"> + <method name="get_radial_initial_angle"> + <return type="float"> + </return> + <description> + </description> + </method> + <method name="get_under_texture" qualifiers="const"> <return type="Object"> </return> <description> </description> </method> - <method name="set_fill_mode"> - <argument index="0" name="mode" type="int"> + <method name="set_fill_degrees"> + <argument index="0" name="mode" type="float"> </argument> <description> </description> </method> - <method name="get_fill_mode"> - <return type="int"> - </return> + <method name="set_fill_mode"> + <argument index="0" name="mode" type="int"> + </argument> <description> </description> </method> - <method name="set_radial_initial_angle"> - <argument index="0" name="mode" type="float"> + <method name="set_over_texture"> + <argument index="0" name="tex" type="Object"> </argument> <description> </description> </method> - <method name="get_radial_initial_angle"> - <return type="float"> - </return> + <method name="set_progress_texture"> + <argument index="0" name="tex" type="Object"> + </argument> <description> </description> </method> @@ -39307,21 +39682,15 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_radial_center_offset"> - <return type="Vector2"> - </return> - <description> - </description> - </method> - <method name="set_fill_degrees"> + <method name="set_radial_initial_angle"> <argument index="0" name="mode" type="float"> </argument> <description> </description> </method> - <method name="get_fill_degrees"> - <return type="float"> - </return> + <method name="set_under_texture"> + <argument index="0" name="tex" type="Object"> + </argument> <description> </description> </method> @@ -39350,19 +39719,15 @@ This method controls whether the position between two cached points is interpola Theme resources can be alternatively loaded by writing them in a .theme file, see wiki for more info. </description> <methods> - <method name="set_icon"> + <method name="clear_color"> <argument index="0" name="name" type="String"> </argument> <argument index="1" name="type" type="String"> </argument> - <argument index="2" name="texture" type="Texture"> - </argument> <description> </description> </method> - <method name="get_icon" qualifiers="const"> - <return type="Texture"> - </return> + <method name="clear_constant"> <argument index="0" name="name" type="String"> </argument> <argument index="1" name="type" type="String"> @@ -39370,9 +39735,7 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="has_icon" qualifiers="const"> - <return type="bool"> - </return> + <method name="clear_font"> <argument index="0" name="name" type="String"> </argument> <argument index="1" name="type" type="String"> @@ -39388,26 +39751,20 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_icon_list" qualifiers="const"> - <return type="StringArray"> - </return> - <argument index="0" name="type" type="String"> - </argument> - <description> - </description> - </method> - <method name="set_stylebox"> + <method name="clear_stylebox"> <argument index="0" name="name" type="String"> </argument> <argument index="1" name="type" type="String"> </argument> - <argument index="2" name="texture" type="StyleBox"> - </argument> <description> </description> </method> - <method name="get_stylebox" qualifiers="const"> - <return type="StyleBox"> + <method name="copy_default_theme"> + <description> + </description> + </method> + <method name="get_color" qualifiers="const"> + <return type="Color"> </return> <argument index="0" name="name" type="String"> </argument> @@ -39416,17 +39773,17 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="has_stylebox" qualifiers="const"> - <return type="bool"> + <method name="get_color_list" qualifiers="const"> + <return type="StringArray"> </return> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="type" type="String"> + <argument index="0" name="type" type="String"> </argument> <description> </description> </method> - <method name="clear_stylebox"> + <method name="get_constant" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="name" type="String"> </argument> <argument index="1" name="type" type="String"> @@ -39434,7 +39791,7 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_stylebox_list" qualifiers="const"> + <method name="get_constant_list" qualifiers="const"> <return type="StringArray"> </return> <argument index="0" name="type" type="String"> @@ -39442,24 +39799,32 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_stylebox_types" qualifiers="const"> - <return type="StringArray"> + <method name="get_default_font" qualifiers="const"> + <return type="Object"> </return> <description> </description> </method> - <method name="set_font"> + <method name="get_font" qualifiers="const"> + <return type="Font"> + </return> <argument index="0" name="name" type="String"> </argument> <argument index="1" name="type" type="String"> </argument> - <argument index="2" name="font" type="Font"> + <description> + </description> + </method> + <method name="get_font_list" qualifiers="const"> + <return type="StringArray"> + </return> + <argument index="0" name="type" type="String"> </argument> <description> </description> </method> - <method name="get_font" qualifiers="const"> - <return type="Font"> + <method name="get_icon" qualifiers="const"> + <return type="Texture"> </return> <argument index="0" name="name" type="String"> </argument> @@ -39468,17 +39833,17 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="has_font" qualifiers="const"> - <return type="bool"> + <method name="get_icon_list" qualifiers="const"> + <return type="StringArray"> </return> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="type" type="String"> + <argument index="0" name="type" type="String"> </argument> <description> </description> </method> - <method name="clear_font"> + <method name="get_stylebox" qualifiers="const"> + <return type="StyleBox"> + </return> <argument index="0" name="name" type="String"> </argument> <argument index="1" name="type" type="String"> @@ -39486,7 +39851,7 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_font_list" qualifiers="const"> + <method name="get_stylebox_list" qualifiers="const"> <return type="StringArray"> </return> <argument index="0" name="type" type="String"> @@ -39494,22 +39859,16 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_color"> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="type" type="String"> - </argument> - <argument index="2" name="color" type="Color"> - </argument> + <method name="get_stylebox_types" qualifiers="const"> + <return type="StringArray"> + </return> <description> </description> </method> - <method name="get_color" qualifiers="const"> - <return type="Color"> + <method name="get_type_list" qualifiers="const"> + <return type="StringArray"> </return> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="type" type="String"> + <argument index="0" name="type" type="String"> </argument> <description> </description> @@ -39524,7 +39883,9 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="clear_color"> + <method name="has_constant" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="name" type="String"> </argument> <argument index="1" name="type" type="String"> @@ -39532,26 +39893,18 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_color_list" qualifiers="const"> - <return type="StringArray"> + <method name="has_font" qualifiers="const"> + <return type="bool"> </return> - <argument index="0" name="type" type="String"> - </argument> - <description> - </description> - </method> - <method name="set_constant"> <argument index="0" name="name" type="String"> </argument> <argument index="1" name="type" type="String"> </argument> - <argument index="2" name="constant" type="int"> - </argument> <description> </description> </method> - <method name="get_constant" qualifiers="const"> - <return type="int"> + <method name="has_icon" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="name" type="String"> </argument> @@ -39560,7 +39913,7 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="has_constant" qualifiers="const"> + <method name="has_stylebox" qualifiers="const"> <return type="bool"> </return> <argument index="0" name="name" type="String"> @@ -39570,18 +39923,22 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="clear_constant"> + <method name="set_color"> <argument index="0" name="name" type="String"> </argument> <argument index="1" name="type" type="String"> </argument> + <argument index="2" name="color" type="Color"> + </argument> <description> </description> </method> - <method name="get_constant_list" qualifiers="const"> - <return type="StringArray"> - </return> - <argument index="0" name="type" type="String"> + <method name="set_constant"> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="type" type="String"> + </argument> + <argument index="2" name="constant" type="int"> </argument> <description> </description> @@ -39592,21 +39949,33 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_default_font" qualifiers="const"> - <return type="Object"> - </return> + <method name="set_font"> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="type" type="String"> + </argument> + <argument index="2" name="font" type="Font"> + </argument> <description> </description> </method> - <method name="get_type_list" qualifiers="const"> - <return type="StringArray"> - </return> - <argument index="0" name="type" type="String"> + <method name="set_icon"> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="type" type="String"> + </argument> + <argument index="2" name="texture" type="Texture"> </argument> <description> </description> </method> - <method name="copy_default_theme"> + <method name="set_stylebox"> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="type" type="String"> + </argument> + <argument index="2" name="texture" type="StyleBox"> + </argument> <description> </description> </method> @@ -39616,10 +39985,26 @@ This method controls whether the position between two cached points is interpola </class> <class name="Thread" inherits="Reference" category="Core"> <brief_description> + A unit of execution in a process. </brief_description> <description> + A unit of execution in a process. Can run methods on [Object]s simultaneously. The use of synchronization via [Mutex], [Semaphore] is advised if working with shared objects. </description> <methods> + <method name="get_id" qualifiers="const"> + <return type="String"> + </return> + <description> + Return the id of the thread, uniquely identifying it among all threads. + </description> + </method> + <method name="is_active" qualifiers="const"> + <return type="bool"> + </return> + <description> + Whether this thread is currently active, an active Thread cannot start work on a new method but can be joined with [method wait_to_finish]. + </description> + </method> <method name="start"> <return type="Error"> </return> @@ -39632,24 +40017,15 @@ This method controls whether the position between two cached points is interpola <argument index="3" name="priority" type="int" default="1"> </argument> <description> - </description> - </method> - <method name="get_id" qualifiers="const"> - <return type="String"> - </return> - <description> - </description> - </method> - <method name="is_active" qualifiers="const"> - <return type="bool"> - </return> - <description> + Start a new [Thread], it will run "method" on object "instance" using "userdata" as an argument and running with "priority", one of PRIORITY_* enum. + Returns OK on success, or ERR_CANT_CREATE on failure. </description> </method> <method name="wait_to_finish"> <return type="Variant"> </return> <description> + Joins the [Thread] and waits for it to finish. Returns what the method called returned. </description> </method> </methods> @@ -39671,233 +40047,192 @@ This method controls whether the position between two cached points is interpola To optimize drawing and culling (sort of like [GridMap]), you can specify a quadrant size, so chunks of the map will be batched together at drawing time. </description> <methods> - <method name="set_tileset"> - <argument index="0" name="tileset" type="TileSet"> - </argument> + <method name="clear"> <description> - Set the current tileset. + Clear all cells. </description> </method> - <method name="get_tileset" qualifiers="const"> - <return type="TileSet"> + <method name="get_cell" qualifiers="const"> + <return type="int"> </return> - <description> - Return the current tileset. - </description> - </method> - <method name="set_mode"> - <argument index="0" name="mode" type="int"> + <argument index="0" name="x" type="int"> + </argument> + <argument index="1" name="y" type="int"> </argument> <description> - Set the orientation mode as square, isometric or custom (use MODE_* constants as argument). + Return the tile index of the referenced cell. </description> </method> - <method name="get_mode" qualifiers="const"> - <return type="int"> + <method name="get_cell_size" qualifiers="const"> + <return type="Vector2"> </return> <description> - Return the orientation mode. - </description> - </method> - <method name="set_half_offset"> - <argument index="0" name="half_offset" type="int"> - </argument> - <description> - Set an half offset on the X coordinate, Y coordinate, or none (use HALF_OFFSET_* constants as argument). - Half offset sets every other tile off by a half tile size in the specified direction. + Return the cell size. </description> </method> - <method name="get_half_offset" qualifiers="const"> + <method name="get_cellv" qualifiers="const"> <return type="int"> </return> - <description> - Return the current half offset configuration. - </description> - </method> - <method name="set_custom_transform"> - <argument index="0" name="custom_transform" type="Matrix32"> + <argument index="0" name="pos" type="Vector2"> </argument> <description> - Set custom transform matrix, to use in combination with the custom orientation mode. + Return the tile index of the cell referenced by a Vector2. </description> </method> - <method name="get_custom_transform" qualifiers="const"> - <return type="Matrix32"> + <method name="get_center_x" qualifiers="const"> + <return type="bool"> </return> <description> - Return the custom transform matrix. + Return true if tiles are to be centered in x coordinate (by default this is false and they are drawn from upper left cell corner). </description> </method> - <method name="set_cell_size"> - <argument index="0" name="size" type="Vector2"> - </argument> + <method name="get_center_y" qualifiers="const"> + <return type="bool"> + </return> <description> - Set the cell size. + Return true if tiles are to be centered in y coordinate (by default this is false and they are drawn from upper left cell corner). </description> </method> - <method name="get_cell_size" qualifiers="const"> - <return type="Vector2"> + <method name="get_collision_bounce" qualifiers="const"> + <return type="float"> </return> <description> - Return the cell size. + Return the collision bounce parameter. </description> </method> - <method name="set_quadrant_size"> - <argument index="0" name="size" type="int"> - </argument> + <method name="get_collision_friction" qualifiers="const"> + <return type="float"> + </return> <description> - Set the quadrant size, this optimizes drawing by batching chunks of map at draw/cull time. - Allowed values are integers ranging from 1 to 128. + Return the collision friction parameter. </description> </method> - <method name="get_quadrant_size" qualifiers="const"> + <method name="get_collision_layer" qualifiers="const"> <return type="int"> </return> <description> - Return the quadrant size. - </description> - </method> - <method name="set_tile_origin"> - <argument index="0" name="origin" type="int"> - </argument> - <description> - Set the tile origin to the tile center or its top-left corner (use TILE_ORIGIN_* constants as argument). + Return the collision layer. </description> </method> - <method name="get_tile_origin" qualifiers="const"> + <method name="get_collision_mask" qualifiers="const"> <return type="int"> </return> <description> - Return the tile origin configuration. - </description> - </method> - <method name="set_center_x"> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - Set tiles to be centered in x coordinate. (by default this is false and they are drawn from upper left cell corner). + Return the collision mask. </description> </method> - <method name="get_center_x" qualifiers="const"> + <method name="get_collision_use_kinematic" qualifiers="const"> <return type="bool"> </return> <description> - Return true if tiles are to be centered in x coordinate (by default this is false and they are drawn from upper left cell corner). - </description> - </method> - <method name="set_center_y"> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - Set tiles to be centered in y coordinate. (by default this is false and they are drawn from upper left cell corner). + Return whether the tilemap handles collisions as a kinematic body. </description> </method> - <method name="get_center_y" qualifiers="const"> - <return type="bool"> + <method name="get_custom_transform" qualifiers="const"> + <return type="Matrix32"> </return> <description> - Return true if tiles are to be centered in y coordinate (by default this is false and they are drawn from upper left cell corner). - </description> - </method> - <method name="set_y_sort_mode"> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - Set the Y sort mode. Enabled Y sort mode means that children of the tilemap will be drawn in the order defined by their Y coordinate. - A tile with a higher Y coordinate will therefore be drawn later, potentially covering up the tile(s) above it if its sprite is higher than its cell size. + Return the custom transform matrix. </description> </method> - <method name="is_y_sort_mode_enabled" qualifiers="const"> - <return type="bool"> + <method name="get_half_offset" qualifiers="const"> + <return type="int"> </return> <description> - Return the Y sort mode. + Return the current half offset configuration. </description> </method> - <method name="set_collision_use_kinematic"> - <argument index="0" name="use_kinematic" type="bool"> - </argument> + <method name="get_mode" qualifiers="const"> + <return type="int"> + </return> <description> - Set the tilemap to handle collisions as a kinematic body (enabled) or a static body (disabled). + Return the orientation mode. </description> </method> - <method name="get_collision_use_kinematic" qualifiers="const"> - <return type="bool"> + <method name="get_occluder_light_mask" qualifiers="const"> + <return type="int"> </return> <description> - Return whether the tilemap handles collisions as a kinematic body. </description> </method> - <method name="set_collision_layer"> - <argument index="0" name="mask" type="int"> - </argument> + <method name="get_quadrant_size" qualifiers="const"> + <return type="int"> + </return> <description> - Set the collision layer. - Layers are referenced by binary indexes, so allowable values to describe the 20 available layers range from 0 to 2^20-1. + Return the quadrant size. </description> </method> - <method name="get_collision_layer" qualifiers="const"> + <method name="get_tile_origin" qualifiers="const"> <return type="int"> </return> <description> - Return the collision layer. + Return the tile origin configuration. </description> </method> - <method name="set_collision_mask"> - <argument index="0" name="mask" type="int"> - </argument> + <method name="get_tileset" qualifiers="const"> + <return type="TileSet"> + </return> <description> - Set the collision masks. - Masks are referenced by binary indexes, so allowable values to describe the 20 available masks range from 0 to 2^20-1. + Return the current tileset. </description> </method> - <method name="get_collision_mask" qualifiers="const"> - <return type="int"> + <method name="get_used_cells" qualifiers="const"> + <return type="Array"> </return> <description> - Return the collision mask. + Return an array of all cells containing a tile from the tileset (i.e. a tile index different from -1). </description> </method> - <method name="set_collision_friction"> - <argument index="0" name="value" type="float"> + <method name="is_cell_transposed" qualifiers="const"> + <return type="bool"> + </return> + <argument index="0" name="x" type="int"> + </argument> + <argument index="1" name="y" type="int"> </argument> <description> - Set the collision friction parameter. - Allowable values range from 0 to 1. + Return whether the referenced cell is transposed, i.e. the X and Y axes are swapped (mirroring with regard to the (1,1) vector). </description> </method> - <method name="get_collision_friction" qualifiers="const"> - <return type="float"> + <method name="is_cell_x_flipped" qualifiers="const"> + <return type="bool"> </return> - <description> - Return the collision friction parameter. - </description> - </method> - <method name="set_collision_bounce"> - <argument index="0" name="value" type="float"> + <argument index="0" name="x" type="int"> + </argument> + <argument index="1" name="y" type="int"> </argument> <description> - Set the collision bounce parameter. - Allowable values range from 0 to 1. + Return whether the referenced cell is flipped over the X axis. </description> </method> - <method name="get_collision_bounce" qualifiers="const"> - <return type="float"> + <method name="is_cell_y_flipped" qualifiers="const"> + <return type="bool"> </return> + <argument index="0" name="x" type="int"> + </argument> + <argument index="1" name="y" type="int"> + </argument> <description> - Return the collision bounce parameter. + Return whether the referenced cell is flipped over the Y axis. </description> </method> - <method name="set_occluder_light_mask"> - <argument index="0" name="mask" type="int"> - </argument> + <method name="is_y_sort_mode_enabled" qualifiers="const"> + <return type="bool"> + </return> <description> + Return the Y sort mode. </description> </method> - <method name="get_occluder_light_mask" qualifiers="const"> - <return type="int"> + <method name="map_to_world" qualifiers="const"> + <return type="Vector2"> </return> + <argument index="0" name="mappos" type="Vector2"> + </argument> + <argument index="1" name="ignore_half_ofs" type="bool" default="false"> + </argument> <description> + Return the absolute world position corresponding to the tilemap (grid-based) coordinates given as an argument. + Optionally, the tilemap's potential half offset can be ignored. </description> </method> <method name="set_cell"> @@ -39919,6 +40254,13 @@ This method controls whether the position between two cached points is interpola Optionally, the tile can also be flipped over the X and Y coordinates or transposed. </description> </method> + <method name="set_cell_size"> + <argument index="0" name="size" type="Vector2"> + </argument> + <description> + Set the cell size. + </description> + </method> <method name="set_cellv"> <argument index="0" name="pos" type="Vector2"> </argument> @@ -39936,81 +40278,115 @@ This method controls whether the position between two cached points is interpola Optionally, the tile can also be flipped over the X and Y axes or transposed. </description> </method> - <method name="get_cell" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="x" type="int"> + <method name="set_center_x"> + <argument index="0" name="enable" type="bool"> </argument> - <argument index="1" name="y" type="int"> + <description> + Set tiles to be centered in x coordinate. (by default this is false and they are drawn from upper left cell corner). + </description> + </method> + <method name="set_center_y"> + <argument index="0" name="enable" type="bool"> </argument> <description> - Return the tile index of the referenced cell. + Set tiles to be centered in y coordinate. (by default this is false and they are drawn from upper left cell corner). </description> </method> - <method name="get_cellv" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="pos" type="Vector2"> + <method name="set_collision_bounce"> + <argument index="0" name="value" type="float"> </argument> <description> - Return the tile index of the cell referenced by a Vector2. + Set the collision bounce parameter. + Allowable values range from 0 to 1. </description> </method> - <method name="is_cell_x_flipped" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="x" type="int"> + <method name="set_collision_friction"> + <argument index="0" name="value" type="float"> </argument> - <argument index="1" name="y" type="int"> + <description> + Set the collision friction parameter. + Allowable values range from 0 to 1. + </description> + </method> + <method name="set_collision_layer"> + <argument index="0" name="mask" type="int"> </argument> <description> - Return whether the referenced cell is flipped over the X axis. + Set the collision layer. + Layers are referenced by binary indexes, so allowable values to describe the 20 available layers range from 0 to 2^20-1. </description> </method> - <method name="is_cell_y_flipped" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="x" type="int"> + <method name="set_collision_mask"> + <argument index="0" name="mask" type="int"> </argument> - <argument index="1" name="y" type="int"> + <description> + Set the collision masks. + Masks are referenced by binary indexes, so allowable values to describe the 20 available masks range from 0 to 2^20-1. + </description> + </method> + <method name="set_collision_use_kinematic"> + <argument index="0" name="use_kinematic" type="bool"> </argument> <description> - Return whether the referenced cell is flipped over the Y axis. + Set the tilemap to handle collisions as a kinematic body (enabled) or a static body (disabled). </description> </method> - <method name="is_cell_transposed" qualifiers="const"> - <return type="bool"> - </return> - <argument index="0" name="x" type="int"> + <method name="set_custom_transform"> + <argument index="0" name="custom_transform" type="Matrix32"> </argument> - <argument index="1" name="y" type="int"> + <description> + Set custom transform matrix, to use in combination with the custom orientation mode. + </description> + </method> + <method name="set_half_offset"> + <argument index="0" name="half_offset" type="int"> </argument> <description> - Return whether the referenced cell is transposed, i.e. the X and Y axes are swapped (mirroring with regard to the (1,1) vector). + Set an half offset on the X coordinate, Y coordinate, or none (use HALF_OFFSET_* constants as argument). + Half offset sets every other tile off by a half tile size in the specified direction. </description> </method> - <method name="clear"> + <method name="set_mode"> + <argument index="0" name="mode" type="int"> + </argument> <description> - Clear all cells. + Set the orientation mode as square, isometric or custom (use MODE_* constants as argument). </description> </method> - <method name="get_used_cells" qualifiers="const"> - <return type="Array"> - </return> + <method name="set_occluder_light_mask"> + <argument index="0" name="mask" type="int"> + </argument> <description> - Return an array of all cells containing a tile from the tileset (i.e. a tile index different from -1). </description> </method> - <method name="map_to_world" qualifiers="const"> - <return type="Vector2"> - </return> - <argument index="0" name="mappos" type="Vector2"> + <method name="set_quadrant_size"> + <argument index="0" name="size" type="int"> </argument> - <argument index="1" name="ignore_half_ofs" type="bool" default="false"> + <description> + Set the quadrant size, this optimizes drawing by batching chunks of map at draw/cull time. + Allowed values are integers ranging from 1 to 128. + </description> + </method> + <method name="set_tile_origin"> + <argument index="0" name="origin" type="int"> </argument> <description> - Return the absolute world position corresponding to the tilemap (grid-based) coordinates given as an argument. - Optionally, the tilemap's potential half offset can be ignored. + Set the tile origin to the tile center or its top-left corner (use TILE_ORIGIN_* constants as argument). + </description> + </method> + <method name="set_tileset"> + <argument index="0" name="tileset" type="TileSet"> + </argument> + <description> + Set the current tileset. + </description> + </method> + <method name="set_y_sort_mode"> + <argument index="0" name="enable" type="bool"> + </argument> + <description> + Set the Y sort mode. Enabled Y sort mode means that children of the tilemap will be drawn in the order defined by their Y coordinate. + A tile with a higher Y coordinate will therefore be drawn later, potentially covering up the tile(s) above it if its sprite is higher than its cell size. </description> </method> <method name="world_to_map" qualifiers="const"> @@ -40031,6 +40407,15 @@ This method controls whether the position between two cached points is interpola </signal> </signals> <constants> + <constant name="HALF_OFFSET_X" value="0"> + Half offset on the X coordinate. + </constant> + <constant name="HALF_OFFSET_Y" value="1"> + Half offset on the Y coordinate. + </constant> + <constant name="HALF_OFFSET_DISABLED" value="2"> + Half offset disabled. + </constant> <constant name="INVALID_CELL" value="-1"> Returned when a cell doesn't exist. </constant> @@ -40043,15 +40428,6 @@ This method controls whether the position between two cached points is interpola <constant name="MODE_CUSTOM" value="2"> Custom orientation mode. </constant> - <constant name="HALF_OFFSET_X" value="0"> - Half offset on the X coordinate. - </constant> - <constant name="HALF_OFFSET_Y" value="1"> - Half offset on the Y coordinate. - </constant> - <constant name="HALF_OFFSET_DISABLED" value="2"> - Half offset disabled. - </constant> <constant name="TILE_ORIGIN_TOP_LEFT" value="0"> Tile origin at its top-left corner. </constant> @@ -40069,6 +40445,11 @@ This method controls whether the position between two cached points is interpola Tiles are referenced by a unique integer ID. </description> <methods> + <method name="clear"> + <description> + Clear all tiles. + </description> + </method> <method name="create_tile"> <argument index="0" name="id" type="int"> </argument> @@ -40076,49 +40457,43 @@ This method controls whether the position between two cached points is interpola Create a new tile which will be referenced by the given ID. </description> </method> - <method name="tile_set_name"> - <argument index="0" name="id" type="int"> - </argument> - <argument index="1" name="name" type="String"> + <method name="find_tile_by_name" qualifiers="const"> + <return type="int"> + </return> + <argument index="0" name="name" type="String"> </argument> <description> - Set the name of the tile, for descriptive purposes. + Find the first tile matching the given name. </description> </method> - <method name="tile_get_name" qualifiers="const"> - <return type="String"> + <method name="get_last_unused_tile_id" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="id" type="int"> - </argument> <description> - Return the name of the tile. + Return the ID following the last currently used ID, useful when creating a new tile. </description> </method> - <method name="tile_set_texture"> - <argument index="0" name="id" type="int"> - </argument> - <argument index="1" name="texture" type="Texture"> - </argument> + <method name="get_tiles_ids" qualifiers="const"> + <return type="Array"> + </return> <description> - Set the texture of the tile. + Return an array of all currently used tile IDs. </description> </method> - <method name="tile_get_texture" qualifiers="const"> - <return type="Texture"> - </return> + <method name="remove_tile"> <argument index="0" name="id" type="int"> </argument> <description> - Return the texture of the tile. + Remove the tile referenced by the given ID. </description> </method> - <method name="tile_set_material"> + <method name="tile_get_light_occluder" qualifiers="const"> + <return type="OccluderPolygon2D"> + </return> <argument index="0" name="id" type="int"> </argument> - <argument index="1" name="material" type="CanvasItemMaterial"> - </argument> <description> - Set the material of the tile. + Return the light occluder of the tile. </description> </method> <method name="tile_get_material" qualifiers="const"> @@ -40130,49 +40505,40 @@ This method controls whether the position between two cached points is interpola Return the material of the tile. </description> </method> - <method name="tile_set_texture_offset"> - <argument index="0" name="id" type="int"> - </argument> - <argument index="1" name="texture_offset" type="Vector2"> - </argument> - <description> - Set the texture offset of the tile. - </description> - </method> - <method name="tile_get_texture_offset" qualifiers="const"> - <return type="Vector2"> + <method name="tile_get_name" qualifiers="const"> + <return type="String"> </return> <argument index="0" name="id" type="int"> </argument> <description> - Return the texture offset of the tile. + Return the name of the tile. </description> </method> - <method name="tile_set_shape_offset"> + <method name="tile_get_navigation_polygon" qualifiers="const"> + <return type="NavigationPolygon"> + </return> <argument index="0" name="id" type="int"> </argument> - <argument index="1" name="shape_offset" type="Vector2"> - </argument> <description> - Set the shape offset of the tile. + Return the navigation polygon of the tile. </description> </method> - <method name="tile_get_shape_offset" qualifiers="const"> + <method name="tile_get_navigation_polygon_offset" qualifiers="const"> <return type="Vector2"> </return> <argument index="0" name="id" type="int"> </argument> <description> - Return the shape offset of the tile. + Return the offset of the tile's navigation polygon. </description> </method> - <method name="tile_set_region"> + <method name="tile_get_occluder_offset" qualifiers="const"> + <return type="Vector2"> + </return> <argument index="0" name="id" type="int"> </argument> - <argument index="1" name="region" type="Rect2"> - </argument> <description> - Set the tile sub-region in the texture. This is common in texture atlases. + Return the offset of the tile's light occluder. </description> </method> <method name="tile_get_region" qualifiers="const"> @@ -40184,15 +40550,6 @@ This method controls whether the position between two cached points is interpola Return the tile sub-region in the texture. </description> </method> - <method name="tile_set_shape"> - <argument index="0" name="id" type="int"> - </argument> - <argument index="1" name="shape" type="Shape2D"> - </argument> - <description> - Set a shape for the tile, enabling physics to collide with it. - </description> - </method> <method name="tile_get_shape" qualifiers="const"> <return type="Shape2D"> </return> @@ -40202,13 +40559,13 @@ This method controls whether the position between two cached points is interpola Return the shape of the tile. </description> </method> - <method name="tile_set_shapes"> + <method name="tile_get_shape_offset" qualifiers="const"> + <return type="Vector2"> + </return> <argument index="0" name="id" type="int"> </argument> - <argument index="1" name="shapes" type="Array"> - </argument> <description> - Set an array of shapes for the tile, enabling physics to collide with it. + Return the shape offset of the tile. </description> </method> <method name="tile_get_shapes" qualifiers="const"> @@ -40220,58 +40577,67 @@ This method controls whether the position between two cached points is interpola Return the array of shapes of the tile. </description> </method> - <method name="tile_set_navigation_polygon"> + <method name="tile_get_texture" qualifiers="const"> + <return type="Texture"> + </return> <argument index="0" name="id" type="int"> </argument> - <argument index="1" name="navigation_polygon" type="NavigationPolygon"> - </argument> <description> - Set a navigation polygon for the tile. + Return the texture of the tile. </description> </method> - <method name="tile_get_navigation_polygon" qualifiers="const"> - <return type="NavigationPolygon"> + <method name="tile_get_texture_offset" qualifiers="const"> + <return type="Vector2"> </return> <argument index="0" name="id" type="int"> </argument> <description> - Return the navigation polygon of the tile. + Return the texture offset of the tile. </description> </method> - <method name="tile_set_navigation_polygon_offset"> + <method name="tile_set_light_occluder"> <argument index="0" name="id" type="int"> </argument> - <argument index="1" name="navigation_polygon_offset" type="Vector2"> + <argument index="1" name="light_occluder" type="OccluderPolygon2D"> </argument> <description> - Set an offset for the tile's navigation polygon. + Set a light occluder for the tile. </description> </method> - <method name="tile_get_navigation_polygon_offset" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="tile_set_material"> <argument index="0" name="id" type="int"> </argument> + <argument index="1" name="material" type="CanvasItemMaterial"> + </argument> <description> - Return the offset of the tile's navigation polygon. + Set the material of the tile. </description> </method> - <method name="tile_set_light_occluder"> + <method name="tile_set_name"> <argument index="0" name="id" type="int"> </argument> - <argument index="1" name="light_occluder" type="OccluderPolygon2D"> + <argument index="1" name="name" type="String"> </argument> <description> - Set a light occluder for the tile. + Set the name of the tile, for descriptive purposes. </description> </method> - <method name="tile_get_light_occluder" qualifiers="const"> - <return type="OccluderPolygon2D"> - </return> + <method name="tile_set_navigation_polygon"> <argument index="0" name="id" type="int"> </argument> + <argument index="1" name="navigation_polygon" type="NavigationPolygon"> + </argument> <description> - Return the light occluder of the tile. + Set a navigation polygon for the tile. + </description> + </method> + <method name="tile_set_navigation_polygon_offset"> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="navigation_polygon_offset" type="Vector2"> + </argument> + <description> + Set an offset for the tile's navigation polygon. </description> </method> <method name="tile_set_occluder_offset"> @@ -40283,48 +40649,58 @@ This method controls whether the position between two cached points is interpola Set an offset for the tile's light occluder. </description> </method> - <method name="tile_get_occluder_offset" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="tile_set_region"> <argument index="0" name="id" type="int"> </argument> + <argument index="1" name="region" type="Rect2"> + </argument> <description> - Return the offset of the tile's light occluder. + Set the tile sub-region in the texture. This is common in texture atlases. </description> </method> - <method name="remove_tile"> + <method name="tile_set_shape"> <argument index="0" name="id" type="int"> </argument> + <argument index="1" name="shape" type="Shape2D"> + </argument> <description> - Remove the tile referenced by the given ID. + Set a shape for the tile, enabling physics to collide with it. </description> </method> - <method name="clear"> + <method name="tile_set_shape_offset"> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="shape_offset" type="Vector2"> + </argument> <description> - Clear all tiles. + Set the shape offset of the tile. </description> </method> - <method name="get_last_unused_tile_id" qualifiers="const"> - <return type="int"> - </return> + <method name="tile_set_shapes"> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="shapes" type="Array"> + </argument> <description> - Return the ID following the last currently used ID, useful when creating a new tile. + Set an array of shapes for the tile, enabling physics to collide with it. </description> </method> - <method name="find_tile_by_name" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="name" type="String"> + <method name="tile_set_texture"> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="texture" type="Texture"> </argument> <description> - Find the first tile matching the given name. + Set the texture of the tile. </description> </method> - <method name="get_tiles_ids" qualifiers="const"> - <return type="Array"> - </return> + <method name="tile_set_texture_offset"> + <argument index="0" name="id" type="int"> + </argument> + <argument index="1" name="texture_offset" type="Vector2"> + </argument> <description> - Return an array of all currently used tile IDs. + Set the texture offset of the tile. </description> </method> </methods> @@ -40339,39 +40715,25 @@ This method controls whether the position between two cached points is interpola Timer node. This is a simple node that will emit a timeout callback when the timer runs out. It can optionally be set to loop. </description> <methods> - <method name="set_wait_time"> - <argument index="0" name="time_sec" type="float"> - </argument> - <description> - Set wait time in seconds. When the time is over, it will emit the timeout signal. - </description> - </method> - <method name="get_wait_time" qualifiers="const"> + <method name="get_time_left" qualifiers="const"> <return type="float"> </return> <description> - Return the wait time in seconds. - </description> - </method> - <method name="set_one_shot"> - <argument index="0" name="enable" type="bool"> - </argument> - <description> - Set as one-shot. If enabled, the timer will stop after timeout, otherwise it will automatically restart. + Return the time left for timeout in seconds if the timer is active, 0 otherwise. </description> </method> - <method name="is_one_shot" qualifiers="const"> - <return type="bool"> + <method name="get_timer_process_mode" qualifiers="const"> + <return type="int"> </return> <description> - Return true if configured as one-shot. + Return the timer's processing mode. </description> </method> - <method name="set_autostart"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_wait_time" qualifiers="const"> + <return type="float"> + </return> <description> - Set to automatically start when entering the scene. + Return the wait time in seconds. </description> </method> <method name="has_autostart" qualifiers="const"> @@ -40381,14 +40743,18 @@ This method controls whether the position between two cached points is interpola Return true if set to automatically start when entering the scene. </description> </method> - <method name="start"> + <method name="is_active" qualifiers="const"> + <return type="bool"> + </return> <description> - Start the timer. + Return if the timer is active or not. </description> </method> - <method name="stop"> + <method name="is_one_shot" qualifiers="const"> + <return type="bool"> + </return> <description> - Stop (cancel) the timer. + Return true if configured as one-shot. </description> </method> <method name="set_active"> @@ -40398,18 +40764,18 @@ This method controls whether the position between two cached points is interpola Set whether the timer is active or not. An inactive timer will be paused until it is activated again. </description> </method> - <method name="is_active" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_autostart"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Return if the timer is active or not. + Set to automatically start when entering the scene. </description> </method> - <method name="get_time_left" qualifiers="const"> - <return type="float"> - </return> + <method name="set_one_shot"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Return the time left for timeout in seconds if the timer is active, 0 otherwise. + Set as one-shot. If enabled, the timer will stop after timeout, otherwise it will automatically restart. </description> </method> <method name="set_timer_process_mode"> @@ -40419,11 +40785,21 @@ This method controls whether the position between two cached points is interpola Set the timer's processing mode (fixed or idle, use TIMER_PROCESS_* constants as argument). </description> </method> - <method name="get_timer_process_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_wait_time"> + <argument index="0" name="time_sec" type="float"> + </argument> <description> - Return the timer's processing mode. + Set wait time in seconds. When the time is over, it will emit the timeout signal. + </description> + </method> + <method name="start"> + <description> + Start the timer. + </description> + </method> + <method name="stop"> + <description> + Stop (cancel) the timer. </description> </method> </methods> @@ -40453,28 +40829,28 @@ This method controls whether the position between two cached points is interpola <constants> </constants> <theme_items> - <theme_item name="hseparation" type="int"> + <theme_item name="disabled" type="StyleBox"> </theme_item> - <theme_item name="font_color_disabled" type="Color"> + <theme_item name="focus" type="StyleBox"> + </theme_item> + <theme_item name="font" type="Font"> </theme_item> <theme_item name="font_color" type="Color"> </theme_item> + <theme_item name="font_color_disabled" type="Color"> + </theme_item> <theme_item name="font_color_hover" type="Color"> </theme_item> <theme_item name="font_color_pressed" type="Color"> </theme_item> - <theme_item name="font" type="Font"> - </theme_item> <theme_item name="hover" type="StyleBox"> </theme_item> - <theme_item name="pressed" type="StyleBox"> - </theme_item> - <theme_item name="focus" type="StyleBox"> - </theme_item> - <theme_item name="disabled" type="StyleBox"> + <theme_item name="hseparation" type="int"> </theme_item> <theme_item name="normal" type="StyleBox"> </theme_item> + <theme_item name="pressed" type="StyleBox"> + </theme_item> </theme_items> </class> <class name="TouchScreenButton" inherits="Node2D" category="Core"> @@ -40483,21 +40859,21 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_texture"> - <argument index="0" name="texture" type="Object"> - </argument> + <method name="get_action" qualifiers="const"> + <return type="String"> + </return> <description> </description> </method> - <method name="get_texture" qualifiers="const"> + <method name="get_bitmask" qualifiers="const"> <return type="Object"> </return> <description> </description> </method> - <method name="set_texture_pressed"> - <argument index="0" name="texture_pressed" type="Object"> - </argument> + <method name="get_texture" qualifiers="const"> + <return type="Object"> + </return> <description> </description> </method> @@ -40507,39 +40883,33 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_bitmask"> - <argument index="0" name="bitmask" type="Object"> - </argument> - <description> - </description> - </method> - <method name="get_bitmask" qualifiers="const"> - <return type="Object"> + <method name="get_visibility_mode" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="set_action"> - <argument index="0" name="action" type="String"> - </argument> + <method name="is_passby_press_enabled" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="get_action" qualifiers="const"> - <return type="String"> + <method name="is_pressed" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="set_visibility_mode"> - <argument index="0" name="mode" type="int"> + <method name="set_action"> + <argument index="0" name="action" type="String"> </argument> <description> </description> </method> - <method name="get_visibility_mode" qualifiers="const"> - <return type="int"> - </return> + <method name="set_bitmask"> + <argument index="0" name="bitmask" type="Object"> + </argument> <description> </description> </method> @@ -40549,25 +40919,31 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="is_passby_press_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_texture"> + <argument index="0" name="texture" type="Object"> + </argument> <description> </description> </method> - <method name="is_pressed" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_texture_pressed"> + <argument index="0" name="texture_pressed" type="Object"> + </argument> + <description> + </description> + </method> + <method name="set_visibility_mode"> + <argument index="0" name="mode" type="int"> + </argument> <description> </description> </method> </methods> <signals> - <signal name="released"> + <signal name="pressed"> <description> </description> </signal> - <signal name="pressed"> + <signal name="released"> <description> </description> </signal> @@ -40583,6 +40959,59 @@ This method controls whether the position between two cached points is interpola Transform is used to store transformations, including translations. It consists of a Matrix3 "basis" and Vector3 "origin". Transform is used to represent transformations of any object in space. It is similar to a 4x3 matrix. </description> <methods> + <method name="Transform"> + <return type="Transform"> + </return> + <argument index="0" name="x_axis" type="Vector3"> + </argument> + <argument index="1" name="y_axis" type="Vector3"> + </argument> + <argument index="2" name="z_axis" type="Vector3"> + </argument> + <argument index="3" name="origin" type="Vector3"> + </argument> + <description> + Construct the Transform from four Vector3. Each axis creates the basis. + </description> + </method> + <method name="Transform"> + <return type="Transform"> + </return> + <argument index="0" name="basis" type="Matrix3"> + </argument> + <argument index="1" name="origin" type="Vector3"> + </argument> + <description> + Construct the Transform from a Matrix3 and Vector3. + </description> + </method> + <method name="Transform"> + <return type="Transform"> + </return> + <argument index="0" name="from" type="Matrix32"> + </argument> + <description> + Construct the Transform from a Matrix32. + </description> + </method> + <method name="Transform"> + <return type="Transform"> + </return> + <argument index="0" name="from" type="Quat"> + </argument> + <description> + Construct the Transform from a Quat. The origin will be Vector3(0, 0, 0) + </description> + </method> + <method name="Transform"> + <return type="Transform"> + </return> + <argument index="0" name="from" type="Matrix3"> + </argument> + <description> + Construct the Transform from a Matrix3. The origin will be Vector3(0, 0, 0) + </description> + </method> <method name="affine_inverse"> <return type="Transform"> </return> @@ -40662,59 +41091,6 @@ This method controls whether the position between two cached points is interpola Inverse-transforms vector "v" by this transform. </description> </method> - <method name="Transform"> - <return type="Transform"> - </return> - <argument index="0" name="x_axis" type="Vector3"> - </argument> - <argument index="1" name="y_axis" type="Vector3"> - </argument> - <argument index="2" name="z_axis" type="Vector3"> - </argument> - <argument index="3" name="origin" type="Vector3"> - </argument> - <description> - Construct the Transform from four Vector3. Each axis creates the basis. - </description> - </method> - <method name="Transform"> - <return type="Transform"> - </return> - <argument index="0" name="basis" type="Matrix3"> - </argument> - <argument index="1" name="origin" type="Vector3"> - </argument> - <description> - Construct the Transform from a Matrix3 and Vector3. - </description> - </method> - <method name="Transform"> - <return type="Transform"> - </return> - <argument index="0" name="from" type="Matrix32"> - </argument> - <description> - Construct the Transform from a Matrix32. - </description> - </method> - <method name="Transform"> - <return type="Transform"> - </return> - <argument index="0" name="from" type="Quat"> - </argument> - <description> - Construct the Transform from a Quat. The origin will be Vector3(0, 0, 0) - </description> - </method> - <method name="Transform"> - <return type="Transform"> - </return> - <argument index="0" name="from" type="Matrix3"> - </argument> - <description> - Construct the Transform from a Matrix3. The origin will be Vector3(0, 0, 0) - </description> - </method> </methods> <members> <member name="basis" type="Matrix3"> @@ -40735,11 +41111,20 @@ This method controls whether the position between two cached points is interpola Translations are resources that can be loaded/unloaded on demand. They map a string to another string. </description> <methods> - <method name="set_locale"> - <argument index="0" name="locale" type="String"> + <method name="add_message"> + <argument index="0" name="src_message" type="String"> + </argument> + <argument index="1" name="xlated_message" type="String"> </argument> <description> - Set the locale of the translation. + Add a message for translation. + </description> + </method> + <method name="erase_message"> + <argument index="0" name="src_message" type="String"> + </argument> + <description> + Erase a message. </description> </method> <method name="get_locale" qualifiers="const"> @@ -40749,15 +41134,6 @@ This method controls whether the position between two cached points is interpola Return the locale of the translation. </description> </method> - <method name="add_message"> - <argument index="0" name="src_message" type="String"> - </argument> - <argument index="1" name="xlated_message" type="String"> - </argument> - <description> - Add a message for translation. - </description> - </method> <method name="get_message" qualifiers="const"> <return type="String"> </return> @@ -40767,11 +41143,10 @@ This method controls whether the position between two cached points is interpola Return a message for translation. </description> </method> - <method name="erase_message"> - <argument index="0" name="src_message" type="String"> - </argument> + <method name="get_message_count" qualifiers="const"> + <return type="int"> + </return> <description> - Erase a message. </description> </method> <method name="get_message_list" qualifiers="const"> @@ -40781,10 +41156,11 @@ This method controls whether the position between two cached points is interpola Return all the messages (keys). </description> </method> - <method name="get_message_count" qualifiers="const"> - <return type="int"> - </return> + <method name="set_locale"> + <argument index="0" name="locale" type="String"> + </argument> <description> + Set the locale of the translation. </description> </method> </methods> @@ -40798,39 +41174,39 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_locale"> - <argument index="0" name="locale" type="String"> + <method name="add_translation"> + <argument index="0" name="translation" type="Translation"> </argument> <description> </description> </method> - <method name="get_locale" qualifiers="const"> - <return type="String"> - </return> + <method name="clear"> <description> </description> </method> - <method name="translate" qualifiers="const"> + <method name="get_locale" qualifiers="const"> <return type="String"> </return> - <argument index="0" name="message" type="String"> - </argument> <description> </description> </method> - <method name="add_translation"> + <method name="remove_translation"> <argument index="0" name="translation" type="Translation"> </argument> <description> </description> </method> - <method name="remove_translation"> - <argument index="0" name="translation" type="Translation"> + <method name="set_locale"> + <argument index="0" name="locale" type="String"> </argument> <description> </description> </method> - <method name="clear"> + <method name="translate" qualifiers="const"> + <return type="String"> + </return> + <argument index="0" name="message" type="String"> + </argument> <description> </description> </method> @@ -40844,6 +41220,12 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> + <method name="are_column_titles_visible" qualifiers="const"> + <return type="bool"> + </return> + <description> + </description> + </method> <method name="clear"> <description> </description> @@ -40856,25 +41238,29 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_root"> - <return type="TreeItem"> + <method name="ensure_cursor_is_visible"> + <description> + </description> + </method> + <method name="get_allow_rmb_select" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="set_column_min_width"> - <argument index="0" name="column" type="int"> - </argument> - <argument index="1" name="min_width" type="int"> + <method name="get_column_at_pos" qualifiers="const"> + <return type="int"> + </return> + <argument index="0" name="pos" type="Vector2"> </argument> <description> </description> </method> - <method name="set_column_expand"> + <method name="get_column_title" qualifiers="const"> + <return type="String"> + </return> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="expand" type="bool"> - </argument> <description> </description> </method> @@ -40886,147 +41272,143 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_hide_root"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_columns" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="get_next_selected"> - <return type="TreeItem"> + <method name="get_custom_popup_rect" qualifiers="const"> + <return type="Rect2"> </return> - <argument index="0" name="from" type="TreeItem"> - </argument> <description> </description> </method> - <method name="get_selected" qualifiers="const"> - <return type="TreeItem"> + <method name="get_drop_mode_flags" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="get_selected_column" qualifiers="const"> - <return type="int"> + <method name="get_edited" qualifiers="const"> + <return type="TreeItem"> </return> <description> </description> </method> - <method name="get_pressed_button" qualifiers="const"> + <method name="get_edited_column" qualifiers="const"> <return type="int"> </return> <description> </description> </method> - <method name="set_select_mode"> - <argument index="0" name="mode" type="int"> + <method name="get_item_area_rect" qualifiers="const"> + <return type="Rect2"> + </return> + <argument index="0" name="item" type="TreeItem"> </argument> - <description> - </description> - </method> - <method name="set_columns"> - <argument index="0" name="amount" type="int"> + <argument index="1" name="column" type="int" default="-1"> </argument> <description> </description> </method> - <method name="get_columns" qualifiers="const"> - <return type="int"> + <method name="get_item_at_pos" qualifiers="const"> + <return type="TreeItem"> </return> + <argument index="0" name="pos" type="Vector2"> + </argument> <description> </description> </method> - <method name="get_edited" qualifiers="const"> + <method name="get_next_selected"> <return type="TreeItem"> </return> + <argument index="0" name="from" type="TreeItem"> + </argument> <description> </description> </method> - <method name="get_edited_column" qualifiers="const"> + <method name="get_pressed_button" qualifiers="const"> <return type="int"> </return> <description> </description> </method> - <method name="get_custom_popup_rect" qualifiers="const"> - <return type="Rect2"> + <method name="get_root"> + <return type="TreeItem"> </return> <description> </description> </method> - <method name="get_item_area_rect" qualifiers="const"> - <return type="Rect2"> + <method name="get_scroll" qualifiers="const"> + <return type="Vector2"> </return> - <argument index="0" name="item" type="TreeItem"> - </argument> - <argument index="1" name="column" type="int" default="-1"> - </argument> <description> </description> </method> - <method name="get_item_at_pos" qualifiers="const"> + <method name="get_selected" qualifiers="const"> <return type="TreeItem"> </return> - <argument index="0" name="pos" type="Vector2"> - </argument> <description> </description> </method> - <method name="get_column_at_pos" qualifiers="const"> + <method name="get_selected_column" qualifiers="const"> <return type="int"> </return> - <argument index="0" name="pos" type="Vector2"> - </argument> <description> </description> </method> - <method name="ensure_cursor_is_visible"> + <method name="get_single_select_cell_editing_only_when_already_selected" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="set_column_titles_visible"> - <argument index="0" name="visible" type="bool"> - </argument> + <method name="is_folding_hidden" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="are_column_titles_visible" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_allow_rmb_select"> + <argument index="0" name="allow" type="bool"> + </argument> <description> </description> </method> - <method name="set_column_title"> + <method name="set_column_expand"> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="title" type="String"> + <argument index="1" name="expand" type="bool"> </argument> <description> </description> </method> - <method name="get_column_title" qualifiers="const"> - <return type="String"> - </return> + <method name="set_column_min_width"> <argument index="0" name="column" type="int"> </argument> + <argument index="1" name="min_width" type="int"> + </argument> <description> </description> </method> - <method name="get_scroll" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_column_title"> + <argument index="0" name="column" type="int"> + </argument> + <argument index="1" name="title" type="String"> + </argument> <description> </description> </method> - <method name="set_hide_folding"> - <argument index="0" name="hide" type="bool"> + <method name="set_column_titles_visible"> + <argument index="0" name="visible" type="bool"> </argument> <description> </description> </method> - <method name="is_folding_hidden" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_columns"> + <argument index="0" name="amount" type="int"> + </argument> <description> </description> </method> @@ -41036,21 +41418,21 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_drop_mode_flags" qualifiers="const"> - <return type="int"> - </return> + <method name="set_hide_folding"> + <argument index="0" name="hide" type="bool"> + </argument> <description> </description> </method> - <method name="set_allow_rmb_select"> - <argument index="0" name="allow" type="bool"> + <method name="set_hide_root"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="get_allow_rmb_select" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_select_mode"> + <argument index="0" name="mode" type="int"> + </argument> <description> </description> </method> @@ -41060,50 +41442,48 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_single_select_cell_editing_only_when_already_selected" qualifiers="const"> - <return type="bool"> - </return> - <description> - </description> - </method> </methods> <signals> - <signal name="item_activated"> - <description> - </description> - </signal> - <signal name="multi_selected"> + <signal name="button_pressed"> <argument index="0" name="item" type="Object"> </argument> <argument index="1" name="column" type="int"> </argument> - <argument index="2" name="selected" type="bool"> + <argument index="2" name="id" type="int"> </argument> <description> </description> </signal> + <signal name="cell_selected"> + <description> + </description> + </signal> <signal name="custom_popup_edited"> <argument index="0" name="arrow_clicked" type="bool"> </argument> <description> </description> </signal> - <signal name="item_collapsed"> - <argument index="0" name="item" type="Object"> + <signal name="empty_tree_rmb_selected"> + <argument index="0" name="pos" type="Vector2"> </argument> <description> </description> </signal> - <signal name="item_edited"> + <signal name="item_activated"> <description> </description> </signal> - <signal name="empty_tree_rmb_selected"> - <argument index="0" name="pos" type="Vector2"> + <signal name="item_collapsed"> + <argument index="0" name="item" type="Object"> </argument> <description> </description> </signal> + <signal name="item_edited"> + <description> + </description> + </signal> <signal name="item_rmb_selected"> <argument index="0" name="pos" type="Vector2"> </argument> @@ -41114,96 +41494,96 @@ This method controls whether the position between two cached points is interpola <description> </description> </signal> - <signal name="cell_selected"> - <description> - </description> - </signal> - <signal name="button_pressed"> + <signal name="multi_selected"> <argument index="0" name="item" type="Object"> </argument> <argument index="1" name="column" type="int"> </argument> - <argument index="2" name="id" type="int"> + <argument index="2" name="selected" type="bool"> </argument> <description> </description> </signal> </signals> <constants> - <constant name="SELECT_SINGLE" value="0"> - </constant> - <constant name="SELECT_ROW" value="1"> - </constant> - <constant name="SELECT_MULTI" value="2"> - </constant> <constant name="DROP_MODE_DISABLED" value="0"> </constant> <constant name="DROP_MODE_ON_ITEM" value="1"> </constant> <constant name="DROP_MODE_INBETWEEN" value="2"> </constant> + <constant name="SELECT_SINGLE" value="0"> + </constant> + <constant name="SELECT_ROW" value="1"> + </constant> + <constant name="SELECT_MULTI" value="2"> + </constant> </constants> <theme_items> - <theme_item name="item_margin" type="int"> + <theme_item name="arrow" type="Texture"> </theme_item> - <theme_item name="vseparation" type="int"> + <theme_item name="arrow_collapsed" type="Texture"> </theme_item> - <theme_item name="guide_width" type="int"> + <theme_item name="bg" type="StyleBox"> </theme_item> - <theme_item name="hseparation" type="int"> + <theme_item name="bg_focus" type="StyleBox"> </theme_item> <theme_item name="button_margin" type="int"> </theme_item> - <theme_item name="title_button_color" type="Color"> + <theme_item name="button_pressed" type="StyleBox"> </theme_item> - <theme_item name="guide_color" type="Color"> + <theme_item name="checked" type="Texture"> </theme_item> - <theme_item name="cursor_color" type="Color"> + <theme_item name="cursor" type="StyleBox"> </theme_item> - <theme_item name="selection_color" type="Color"> + <theme_item name="cursor_color" type="Color"> </theme_item> - <theme_item name="font_color_selected" type="Color"> + <theme_item name="cursor_unfocused" type="StyleBox"> </theme_item> - <theme_item name="font_color" type="Color"> + <theme_item name="draw_relationship_lines" type="int"> </theme_item> <theme_item name="drop_position_color" type="Color"> </theme_item> - <theme_item name="arrow" type="Texture"> - </theme_item> - <theme_item name="updown" type="Texture"> + <theme_item name="font" type="Font"> </theme_item> - <theme_item name="checked" type="Texture"> + <theme_item name="font_color" type="Color"> </theme_item> - <theme_item name="arrow_collapsed" type="Texture"> + <theme_item name="font_color_selected" type="Color"> </theme_item> - <theme_item name="select_arrow" type="Texture"> + <theme_item name="guide_color" type="Color"> </theme_item> - <theme_item name="unchecked" type="Texture"> + <theme_item name="guide_width" type="int"> </theme_item> - <theme_item name="title_button_font" type="Font"> + <theme_item name="hseparation" type="int"> </theme_item> - <theme_item name="font" type="Font"> + <theme_item name="item_margin" type="int"> </theme_item> - <theme_item name="title_button_normal" type="StyleBox"> + <theme_item name="relationship_line_color" type="Color"> </theme_item> - <theme_item name="cursor" type="StyleBox"> + <theme_item name="select_arrow" type="Texture"> </theme_item> - <theme_item name="title_button_hover" type="StyleBox"> + <theme_item name="selected" type="StyleBox"> </theme_item> <theme_item name="selected_focus" type="StyleBox"> </theme_item> - <theme_item name="bg_focus" type="StyleBox"> + <theme_item name="selection_color" type="Color"> </theme_item> - <theme_item name="button_pressed" type="StyleBox"> + <theme_item name="title_button_color" type="Color"> </theme_item> - <theme_item name="cursor_unfocused" type="StyleBox"> + <theme_item name="title_button_font" type="Font"> </theme_item> - <theme_item name="selected" type="StyleBox"> + <theme_item name="title_button_hover" type="StyleBox"> </theme_item> - <theme_item name="bg" type="StyleBox"> + <theme_item name="title_button_normal" type="StyleBox"> </theme_item> <theme_item name="title_button_pressed" type="StyleBox"> </theme_item> + <theme_item name="unchecked" type="Texture"> + </theme_item> + <theme_item name="updown" type="Texture"> + </theme_item> + <theme_item name="vseparation" type="int"> + </theme_item> </theme_items> </class> <class name="TreeItem" inherits="Object" category="Core"> @@ -41212,95 +41592,63 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_cell_mode"> + <method name="add_button"> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="mode" type="int"> - </argument> - <description> - </description> - </method> - <method name="get_cell_mode" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="column" type="int"> + <argument index="1" name="button" type="Texture"> </argument> - <description> - </description> - </method> - <method name="set_checked"> - <argument index="0" name="column" type="int"> + <argument index="2" name="button_idx" type="int" default="-1"> </argument> - <argument index="1" name="checked" type="bool"> + <argument index="3" name="disabled" type="bool" default="false"> </argument> <description> </description> </method> - <method name="is_checked" qualifiers="const"> - <return type="bool"> - </return> + <method name="clear_custom_bg_color"> <argument index="0" name="column" type="int"> </argument> <description> </description> </method> - <method name="set_text"> + <method name="clear_custom_color"> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="text" type="String"> - </argument> <description> </description> </method> - <method name="get_text" qualifiers="const"> - <return type="String"> - </return> + <method name="deselect"> <argument index="0" name="column" type="int"> </argument> <description> </description> </method> - <method name="set_icon"> + <method name="erase_button"> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="texture" type="Texture"> + <argument index="1" name="button_idx" type="int"> </argument> <description> </description> </method> - <method name="get_icon" qualifiers="const"> + <method name="get_button" qualifiers="const"> <return type="Texture"> </return> <argument index="0" name="column" type="int"> </argument> - <description> - </description> - </method> - <method name="set_icon_region"> - <argument index="0" name="column" type="int"> - </argument> - <argument index="1" name="region" type="Rect2"> + <argument index="1" name="button_idx" type="int"> </argument> <description> </description> </method> - <method name="get_icon_region" qualifiers="const"> - <return type="Rect2"> + <method name="get_button_count" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="column" type="int"> </argument> <description> </description> </method> - <method name="set_icon_max_width"> - <argument index="0" name="column" type="int"> - </argument> - <argument index="1" name="width" type="int"> - </argument> - <description> - </description> - </method> - <method name="get_icon_max_width" qualifiers="const"> + <method name="get_cell_mode" qualifiers="const"> <return type="int"> </return> <argument index="0" name="column" type="int"> @@ -41308,49 +41656,41 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_range"> - <argument index="0" name="column" type="int"> - </argument> - <argument index="1" name="value" type="float"> - </argument> + <method name="get_children"> + <return type="TreeItem"> + </return> <description> </description> </method> - <method name="get_range" qualifiers="const"> - <return type="float"> + <method name="get_custom_bg_color" qualifiers="const"> + <return type="Color"> </return> <argument index="0" name="column" type="int"> </argument> <description> </description> </method> - <method name="set_range_config"> + <method name="get_icon" qualifiers="const"> + <return type="Texture"> + </return> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="min" type="float"> - </argument> - <argument index="2" name="max" type="float"> - </argument> - <argument index="3" name="step" type="float"> - </argument> - <argument index="4" name="expr" type="bool" default="false"> - </argument> <description> </description> </method> - <method name="get_range_config"> - <return type="Dictionary"> + <method name="get_icon_max_width" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="column" type="int"> </argument> <description> </description> </method> - <method name="set_metadata"> + <method name="get_icon_region" qualifiers="const"> + <return type="Rect2"> + </return> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="meta" type="Variant"> - </argument> <description> </description> </method> @@ -41360,29 +41700,19 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="set_custom_draw"> - <argument index="0" name="column" type="int"> - </argument> - <argument index="1" name="object" type="Object"> - </argument> - <argument index="2" name="callback" type="String"> - </argument> - <description> - </description> - </method> - <method name="set_collapsed"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_next"> + <return type="TreeItem"> + </return> <description> </description> </method> - <method name="is_collapsed"> - <return type="bool"> + <method name="get_next_visible"> + <return type="TreeItem"> </return> <description> </description> </method> - <method name="get_next"> + <method name="get_parent"> <return type="TreeItem"> </return> <description> @@ -41394,47 +41724,55 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_parent"> + <method name="get_prev_visible"> <return type="TreeItem"> </return> <description> </description> </method> - <method name="get_children"> - <return type="TreeItem"> + <method name="get_range" qualifiers="const"> + <return type="float"> </return> + <argument index="0" name="column" type="int"> + </argument> <description> </description> </method> - <method name="get_next_visible"> - <return type="TreeItem"> + <method name="get_range_config"> + <return type="Dictionary"> </return> + <argument index="0" name="column" type="int"> + </argument> <description> </description> </method> - <method name="get_prev_visible"> - <return type="TreeItem"> + <method name="get_text" qualifiers="const"> + <return type="String"> </return> + <argument index="0" name="column" type="int"> + </argument> <description> </description> </method> - <method name="remove_child"> - <return type="TreeItem"> + <method name="get_tooltip" qualifiers="const"> + <return type="String"> </return> - <argument index="0" name="child" type="Object"> + <argument index="0" name="column" type="int"> </argument> <description> </description> </method> - <method name="set_selectable"> + <method name="is_button_disabled" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="selectable" type="bool"> + <argument index="1" name="button_idx" type="int"> </argument> <description> </description> </method> - <method name="is_selectable" qualifiers="const"> + <method name="is_checked" qualifiers="const"> <return type="bool"> </return> <argument index="0" name="column" type="int"> @@ -41442,53 +41780,77 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="is_selected"> + <method name="is_collapsed"> <return type="bool"> </return> - <argument index="0" name="column" type="int"> - </argument> <description> </description> </method> - <method name="select"> + <method name="is_editable"> + <return type="bool"> + </return> <argument index="0" name="column" type="int"> </argument> <description> </description> </method> - <method name="deselect"> + <method name="is_selectable" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="column" type="int"> </argument> <description> </description> </method> - <method name="set_editable"> + <method name="is_selected"> + <return type="bool"> + </return> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="enabled" type="bool"> - </argument> <description> </description> </method> - <method name="is_editable"> - <return type="bool"> + <method name="move_to_bottom"> + <description> + </description> + </method> + <method name="move_to_top"> + <description> + </description> + </method> + <method name="remove_child"> + <return type="TreeItem"> </return> + <argument index="0" name="child" type="Object"> + </argument> + <description> + </description> + </method> + <method name="select"> <argument index="0" name="column" type="int"> </argument> <description> </description> </method> - <method name="set_custom_color"> + <method name="set_cell_mode"> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="color" type="Color"> + <argument index="1" name="mode" type="int"> </argument> <description> </description> </method> - <method name="clear_custom_color"> + <method name="set_checked"> <argument index="0" name="column" type="int"> </argument> + <argument index="1" name="checked" type="bool"> + </argument> + <description> + </description> + </method> + <method name="set_collapsed"> + <argument index="0" name="enable" type="bool"> + </argument> <description> </description> </method> @@ -41502,89 +41864,107 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="clear_custom_bg_color"> + <method name="set_custom_color"> <argument index="0" name="column" type="int"> </argument> + <argument index="1" name="color" type="Color"> + </argument> <description> </description> </method> - <method name="get_custom_bg_color" qualifiers="const"> - <return type="Color"> - </return> + <method name="set_custom_draw"> <argument index="0" name="column" type="int"> </argument> + <argument index="1" name="object" type="Object"> + </argument> + <argument index="2" name="callback" type="String"> + </argument> <description> </description> </method> - <method name="add_button"> + <method name="set_editable"> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="button" type="Texture"> + <argument index="1" name="enabled" type="bool"> </argument> - <argument index="2" name="button_idx" type="int" default="-1"> + <description> + </description> + </method> + <method name="set_icon"> + <argument index="0" name="column" type="int"> </argument> - <argument index="3" name="disabled" type="bool" default="false"> + <argument index="1" name="texture" type="Texture"> </argument> <description> </description> </method> - <method name="get_button_count" qualifiers="const"> - <return type="int"> - </return> + <method name="set_icon_max_width"> <argument index="0" name="column" type="int"> </argument> + <argument index="1" name="width" type="int"> + </argument> <description> </description> </method> - <method name="get_button" qualifiers="const"> - <return type="Texture"> - </return> + <method name="set_icon_region"> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="button_idx" type="int"> + <argument index="1" name="region" type="Rect2"> </argument> <description> </description> </method> - <method name="erase_button"> + <method name="set_metadata"> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="button_idx" type="int"> + <argument index="1" name="meta" type="Variant"> </argument> <description> </description> </method> - <method name="is_button_disabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_range"> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="button_idx" type="int"> + <argument index="1" name="value" type="float"> </argument> <description> </description> </method> - <method name="set_tooltip"> + <method name="set_range_config"> <argument index="0" name="column" type="int"> </argument> - <argument index="1" name="tooltip" type="String"> + <argument index="1" name="min" type="float"> + </argument> + <argument index="2" name="max" type="float"> + </argument> + <argument index="3" name="step" type="float"> + </argument> + <argument index="4" name="expr" type="bool" default="false"> </argument> <description> </description> </method> - <method name="get_tooltip" qualifiers="const"> - <return type="String"> - </return> + <method name="set_selectable"> <argument index="0" name="column" type="int"> </argument> + <argument index="1" name="selectable" type="bool"> + </argument> <description> </description> </method> - <method name="move_to_top"> + <method name="set_text"> + <argument index="0" name="column" type="int"> + </argument> + <argument index="1" name="text" type="String"> + </argument> <description> </description> </method> - <method name="move_to_bottom"> + <method name="set_tooltip"> + <argument index="0" name="column" type="int"> + </argument> + <argument index="1" name="tooltip" type="String"> + </argument> <description> </description> </method> @@ -41620,39 +42000,63 @@ This method controls whether the position between two cached points is interpola Many of the methods accept [code]trans_type[/code] and [code]ease_type[/code]. The first accepts an TRANS_* constant, and refers to the way the timing of the animation is handled (you might want to see [code]http://easings.net/[/code] for some examples). The second accepts an EASE_* constant, and controls the where [code]trans_type[/code] is applied to the interpolation (in the begining, the end, or both). If you don't know which transision and easing to pick, you can try different TRANS_* constants with EASE_IN_OUT, and use the one that looks best. </description> <methods> - <method name="is_active" qualifiers="const"> + <method name="follow_method"> <return type="bool"> </return> - <description> - Returns true if any tweens are currently running, and false otherwise. Note that this method doesn't consider tweens that have ended. - </description> - </method> - <method name="set_active"> - <argument index="0" name="active" type="bool"> + <argument index="0" name="object" type="Object"> + </argument> + <argument index="1" name="method" type="String"> + </argument> + <argument index="2" name="initial_val" type="Variant"> + </argument> + <argument index="3" name="target" type="Object"> + </argument> + <argument index="4" name="target_method" type="String"> + </argument> + <argument index="5" name="times_in_sec" type="float"> + </argument> + <argument index="6" name="trans_type" type="int"> + </argument> + <argument index="7" name="ease_type" type="int"> + </argument> + <argument index="8" name="delay" type="float" default="0"> </argument> <description> - Activate/deactivate the tween. You can use this for pausing animations, though [method stop_all] and [method resume_all] might be more fit for this. + Follow [code]method[/code] of [code]object[/code] and apply the returned value on [code]target_method[/code] of [code]target[/code], beginning from [code]initial_val[/code] for [code]times_in_sec[/code] seconds, [code]delay[/code] later. Methods are animated by calling them with consequitive values. + [code]trans_type[/code] accepts TRANS_* constants, and is the way the animation is interpolated, while [code]ease_type[/code] accepts EASE_* constants, and controls the place of the interpolation (the begining, the end, or both). You can read more about them in the class description. </description> </method> - <method name="is_repeat" qualifiers="const"> + <method name="follow_property"> <return type="bool"> </return> - <description> - Returns true if repeat has been set from editor GUI or [method set_repeat]. - </description> - </method> - <method name="set_repeat"> - <argument index="0" name="repeat" type="bool"> + <argument index="0" name="object" type="Object"> + </argument> + <argument index="1" name="property" type="String"> + </argument> + <argument index="2" name="initial_val" type="Variant"> + </argument> + <argument index="3" name="target" type="Object"> + </argument> + <argument index="4" name="target_property" type="String"> + </argument> + <argument index="5" name="times_in_sec" type="float"> + </argument> + <argument index="6" name="trans_type" type="int"> + </argument> + <argument index="7" name="ease_type" type="int"> + </argument> + <argument index="8" name="delay" type="float" default="0"> </argument> <description> - Make the tween repeat after all tweens have finished. + Follow [code]property[/code] of [code]object[/code] and apply it on [code]target_property[/code] of [code]target[/code], beginning from [code]initial_val[/code] for [code]times_in_sec[/code] seconds, [code]delay[/code] seconds later. Note that [code]target:target_property[/code] would equal [code]object:property[/code] at the end of the tween. + [code]trans_type[/code] accepts TRANS_* constants, and is the way the animation is interpolated, while [code]ease_type[/code] accepts EASE_* constants, and controls the place of the interpolation (the begining, the end, or both). You can read more about them in the class description. </description> </method> - <method name="set_speed"> - <argument index="0" name="speed" type="float"> - </argument> + <method name="get_runtime" qualifiers="const"> + <return type="float"> + </return> <description> - Set the speed multiplier of the tween. Set it to 1 for normal speed, 2 for two times nromal speed, and 0.5 for half of the normal speed. Setting it to 0 would pause the animation, but you might consider using [method set_active] or [method stop_all] and [method resume_all] for this. + Returns the time needed for all tweens to end in seconds, measured from the start. Thus, if you have two tweens, one ending 10 seconds after the start and the other - 20 seconds, it would return 20 seconds, as by that time all tweens would have finished. </description> </method> <method name="get_speed" qualifiers="const"> @@ -41662,46 +42066,122 @@ This method controls whether the position between two cached points is interpola Returns the speed that has been set from editor GUI or [method set_repeat]. </description> </method> - <method name="set_tween_process_mode"> - <argument index="0" name="mode" type="int"> + <method name="get_tween_process_mode" qualifiers="const"> + <return type="int"> + </return> + <description> + Returns the process mode that has been set from editor GUI or [method set_tween_process_mode] + </description> + </method> + <method name="interpolate_callback"> + <return type="bool"> + </return> + <argument index="0" name="object" type="Object"> + </argument> + <argument index="1" name="times_in_sec" type="float"> + </argument> + <argument index="2" name="callback" type="String"> + </argument> + <argument index="3" name="arg1" type="Variant" default="NULL"> + </argument> + <argument index="4" name="arg2" type="Variant" default="NULL"> + </argument> + <argument index="5" name="arg3" type="Variant" default="NULL"> + </argument> + <argument index="6" name="arg4" type="Variant" default="NULL"> + </argument> + <argument index="7" name="arg5" type="Variant" default="NULL"> </argument> <description> - Set whether the Tween uses [code]_process[/code] or [code]_fixed_process[/code] (accepts TWEEN_PROCESS_IDLE and TWEEN_PROCESS_FIXED constants, respectively). + Call [code]callback[/code] of [code]object[/code] after [code]times_in_sec[/code]. [code]arg1[/code]-[code]arg5[/code] are arguments to be passed to the callback. </description> </method> - <method name="get_tween_process_mode" qualifiers="const"> - <return type="int"> + <method name="interpolate_deferred_callback"> + <return type="bool"> </return> + <argument index="0" name="object" type="Object"> + </argument> + <argument index="1" name="times_in_sec" type="float"> + </argument> + <argument index="2" name="callback" type="String"> + </argument> + <argument index="3" name="arg1" type="Variant" default="NULL"> + </argument> + <argument index="4" name="arg2" type="Variant" default="NULL"> + </argument> + <argument index="5" name="arg3" type="Variant" default="NULL"> + </argument> + <argument index="6" name="arg4" type="Variant" default="NULL"> + </argument> + <argument index="7" name="arg5" type="Variant" default="NULL"> + </argument> <description> - Returns the process mode that has been set from editor GUI or [method set_tween_process_mode] + Call [code]callback[/code] of [code]object[/code] after [code]times_in_sec[/code] on the main thread (similar to [methog Object.call_deferred). [code]arg1[/code]-[code]arg5[/code] are arguments to be passed to the callback. </description> </method> - <method name="start"> + <method name="interpolate_method"> <return type="bool"> </return> + <argument index="0" name="object" type="Object"> + </argument> + <argument index="1" name="method" type="String"> + </argument> + <argument index="2" name="initial_val" type="Variant"> + </argument> + <argument index="3" name="final_val" type="Variant"> + </argument> + <argument index="4" name="times_in_sec" type="float"> + </argument> + <argument index="5" name="trans_type" type="int"> + </argument> + <argument index="6" name="ease_type" type="int"> + </argument> + <argument index="7" name="delay" type="float" default="0"> + </argument> <description> - Start the tween node. You can define tweens both before and after this. + Animate [code]method[/code] of [code]object[/code] from [code]initial_val[/code] to [code]final_val[/code] for [code]times_in_sec[/code] seconds, [code]delay[/code] seconds later. Methods are animated by calling them with consecuitive values. + [code]trans_type[/code] accepts TRANS_* constants, and is the way the animation is interpolated, while [code]ease_type[/code] accepts EASE_* constants, and controls the place of the interpolation (the begining, the end, or both). You can read more about them in the class description. </description> </method> - <method name="reset"> + <method name="interpolate_property"> <return type="bool"> </return> <argument index="0" name="object" type="Object"> </argument> - <argument index="1" name="key" type="String"> + <argument index="1" name="property" type="String"> + </argument> + <argument index="2" name="initial_val" type="Variant"> + </argument> + <argument index="3" name="final_val" type="Variant"> + </argument> + <argument index="4" name="times_in_sec" type="float"> + </argument> + <argument index="5" name="trans_type" type="int"> + </argument> + <argument index="6" name="ease_type" type="int"> + </argument> + <argument index="7" name="delay" type="float" default="0"> </argument> <description> - Resets a tween to the initial value (the one given, not the one before the tween), given its object and property/method pair. + Animate [code]property[/code] of [code]object[/code] from [code]initial_val[/code] to [code]final_val[/code] for [code]times_in_sec[/code] seconds, [code]delay[/code] seconds later. + [code]trans_type[/code] accepts TRANS_* constants, and is the way the animation is interpolated, while [code]ease_type[/code] accepts EASE_* constants, and controls the place of the interpolation (the begining, the end, or both). You can read more about them in the class description. </description> </method> - <method name="reset_all"> + <method name="is_active" qualifiers="const"> <return type="bool"> </return> <description> - Resets all tweens to their initial values (the ones given, not those before the tween). + Returns true if any tweens are currently running, and false otherwise. Note that this method doesn't consider tweens that have ended. </description> </method> - <method name="stop"> + <method name="is_repeat" qualifiers="const"> + <return type="bool"> + </return> + <description> + Returns true if repeat has been set from editor GUI or [method set_repeat]. + </description> + </method> + <method name="remove"> <return type="bool"> </return> <argument index="0" name="object" type="Object"> @@ -41709,17 +42189,17 @@ This method controls whether the position between two cached points is interpola <argument index="1" name="key" type="String"> </argument> <description> - Stop animating a tween, given its object and property/method pair. + Stop animating and completely remove a tween, given its object and property/method pair. </description> </method> - <method name="stop_all"> + <method name="remove_all"> <return type="bool"> </return> <description> - Stop animating all tweens. + Stop animating and completely remove all tweens. </description> </method> - <method name="resume"> + <method name="reset"> <return type="bool"> </return> <argument index="0" name="object" type="Object"> @@ -41727,17 +42207,17 @@ This method controls whether the position between two cached points is interpola <argument index="1" name="key" type="String"> </argument> <description> - Continue animating a stopped tween, given its object and property/method pair. + Resets a tween to the initial value (the one given, not the one before the tween), given its object and property/method pair. </description> </method> - <method name="resume_all"> + <method name="reset_all"> <return type="bool"> </return> <description> - Continue animating all stopped tweens. + Resets all tweens to their initial values (the ones given, not those before the tween). </description> </method> - <method name="remove"> + <method name="resume"> <return type="bool"> </return> <argument index="0" name="object" type="Object"> @@ -41745,14 +42225,14 @@ This method controls whether the position between two cached points is interpola <argument index="1" name="key" type="String"> </argument> <description> - Stop animating and completely remove a tween, given its object and property/method pair. + Continue animating a stopped tween, given its object and property/method pair. </description> </method> - <method name="remove_all"> + <method name="resume_all"> <return type="bool"> </return> <description> - Stop animating and completely remove all tweens. + Continue animating all stopped tweens. </description> </method> <method name="seek"> @@ -41764,152 +42244,71 @@ This method controls whether the position between two cached points is interpola Seek the animation to the given [code]time[/code] in seconds. </description> </method> - <method name="tell" qualifiers="const"> - <return type="float"> - </return> + <method name="set_active"> + <argument index="0" name="active" type="bool"> + </argument> <description> - Returns the current time of the tween. + Activate/deactivate the tween. You can use this for pausing animations, though [method stop_all] and [method resume_all] might be more fit for this. </description> </method> - <method name="get_runtime" qualifiers="const"> - <return type="float"> - </return> + <method name="set_repeat"> + <argument index="0" name="repeat" type="bool"> + </argument> <description> - Returns the time needed for all tweens to end in seconds, measured from the start. Thus, if you have two tweens, one ending 10 seconds after the start and the other - 20 seconds, it would return 20 seconds, as by that time all tweens would have finished. + Make the tween repeat after all tweens have finished. </description> </method> - <method name="interpolate_property"> - <return type="bool"> - </return> - <argument index="0" name="object" type="Object"> - </argument> - <argument index="1" name="property" type="String"> - </argument> - <argument index="2" name="initial_val" type="Variant"> - </argument> - <argument index="3" name="final_val" type="Variant"> - </argument> - <argument index="4" name="times_in_sec" type="float"> - </argument> - <argument index="5" name="trans_type" type="int"> - </argument> - <argument index="6" name="ease_type" type="int"> - </argument> - <argument index="7" name="delay" type="float" default="0"> + <method name="set_speed"> + <argument index="0" name="speed" type="float"> </argument> <description> - Animate [code]property[/code] of [code]object[/code] from [code]initial_val[/code] to [code]final_val[/code] for [code]times_in_sec[/code] seconds, [code]delay[/code] seconds later. - [code]trans_type[/code] accepts TRANS_* constants, and is the way the animation is interpolated, while [code]ease_type[/code] accepts EASE_* constants, and controls the place of the interpolation (the begining, the end, or both). You can read more about them in the class description. + Set the speed multiplier of the tween. Set it to 1 for normal speed, 2 for two times nromal speed, and 0.5 for half of the normal speed. Setting it to 0 would pause the animation, but you might consider using [method set_active] or [method stop_all] and [method resume_all] for this. </description> </method> - <method name="interpolate_method"> - <return type="bool"> - </return> - <argument index="0" name="object" type="Object"> - </argument> - <argument index="1" name="method" type="String"> - </argument> - <argument index="2" name="initial_val" type="Variant"> - </argument> - <argument index="3" name="final_val" type="Variant"> - </argument> - <argument index="4" name="times_in_sec" type="float"> - </argument> - <argument index="5" name="trans_type" type="int"> - </argument> - <argument index="6" name="ease_type" type="int"> - </argument> - <argument index="7" name="delay" type="float" default="0"> + <method name="set_tween_process_mode"> + <argument index="0" name="mode" type="int"> </argument> <description> - Animate [code]method[/code] of [code]object[/code] from [code]initial_val[/code] to [code]final_val[/code] for [code]times_in_sec[/code] seconds, [code]delay[/code] seconds later. Methods are animated by calling them with consecuitive values. - [code]trans_type[/code] accepts TRANS_* constants, and is the way the animation is interpolated, while [code]ease_type[/code] accepts EASE_* constants, and controls the place of the interpolation (the begining, the end, or both). You can read more about them in the class description. + Set whether the Tween uses [code]_process[/code] or [code]_fixed_process[/code] (accepts TWEEN_PROCESS_IDLE and TWEEN_PROCESS_FIXED constants, respectively). </description> </method> - <method name="interpolate_callback"> + <method name="start"> <return type="bool"> </return> - <argument index="0" name="object" type="Object"> - </argument> - <argument index="1" name="times_in_sec" type="float"> - </argument> - <argument index="2" name="callback" type="String"> - </argument> - <argument index="3" name="arg1" type="Variant" default="NULL"> - </argument> - <argument index="4" name="arg2" type="Variant" default="NULL"> - </argument> - <argument index="5" name="arg3" type="Variant" default="NULL"> - </argument> - <argument index="6" name="arg4" type="Variant" default="NULL"> - </argument> - <argument index="7" name="arg5" type="Variant" default="NULL"> - </argument> <description> - Call [code]callback[/code] of [code]object[/code] after [code]times_in_sec[/code]. [code]arg1[/code]-[code]arg5[/code] are arguments to be passed to the callback. + Start the tween node. You can define tweens both before and after this. </description> </method> - <method name="interpolate_deferred_callback"> + <method name="stop"> <return type="bool"> </return> <argument index="0" name="object" type="Object"> </argument> - <argument index="1" name="times_in_sec" type="float"> - </argument> - <argument index="2" name="callback" type="String"> - </argument> - <argument index="3" name="arg1" type="Variant" default="NULL"> - </argument> - <argument index="4" name="arg2" type="Variant" default="NULL"> - </argument> - <argument index="5" name="arg3" type="Variant" default="NULL"> - </argument> - <argument index="6" name="arg4" type="Variant" default="NULL"> - </argument> - <argument index="7" name="arg5" type="Variant" default="NULL"> + <argument index="1" name="key" type="String"> </argument> <description> - Call [code]callback[/code] of [code]object[/code] after [code]times_in_sec[/code] on the main thread (similar to [methog Object.call_deferred). [code]arg1[/code]-[code]arg5[/code] are arguments to be passed to the callback. + Stop animating a tween, given its object and property/method pair. </description> </method> - <method name="follow_property"> + <method name="stop_all"> <return type="bool"> </return> - <argument index="0" name="object" type="Object"> - </argument> - <argument index="1" name="property" type="String"> - </argument> - <argument index="2" name="initial_val" type="Variant"> - </argument> - <argument index="3" name="target" type="Object"> - </argument> - <argument index="4" name="target_property" type="String"> - </argument> - <argument index="5" name="times_in_sec" type="float"> - </argument> - <argument index="6" name="trans_type" type="int"> - </argument> - <argument index="7" name="ease_type" type="int"> - </argument> - <argument index="8" name="delay" type="float" default="0"> - </argument> <description> - Follow [code]property[/code] of [code]object[/code] and apply it on [code]target_property[/code] of [code]target[/code], beginning from [code]initial_val[/code] for [code]times_in_sec[/code] seconds, [code]delay[/code] seconds later. Note that [code]target:target_property[/code] would equal [code]object:property[/code] at the end of the tween. - [code]trans_type[/code] accepts TRANS_* constants, and is the way the animation is interpolated, while [code]ease_type[/code] accepts EASE_* constants, and controls the place of the interpolation (the begining, the end, or both). You can read more about them in the class description. + Stop animating all tweens. </description> </method> - <method name="follow_method"> + <method name="targeting_method"> <return type="bool"> </return> <argument index="0" name="object" type="Object"> </argument> <argument index="1" name="method" type="String"> </argument> - <argument index="2" name="initial_val" type="Variant"> + <argument index="2" name="initial" type="Object"> </argument> - <argument index="3" name="target" type="Object"> + <argument index="3" name="initial_method" type="String"> </argument> - <argument index="4" name="target_method" type="String"> + <argument index="4" name="final_val" type="Variant"> </argument> <argument index="5" name="times_in_sec" type="float"> </argument> @@ -41920,7 +42319,7 @@ This method controls whether the position between two cached points is interpola <argument index="8" name="delay" type="float" default="0"> </argument> <description> - Follow [code]method[/code] of [code]object[/code] and apply the returned value on [code]target_method[/code] of [code]target[/code], beginning from [code]initial_val[/code] for [code]times_in_sec[/code] seconds, [code]delay[/code] later. Methods are animated by calling them with consequitive values. + Animate [code]method[/code] of [code]object[/code] from the value returned by [code]initial.initial_method[/code] to [code]final_val[/code] for [code]times_in_sec[/code] seconds, [code]delay[/code] seconds later. Methods are animated by calling them with consecuitive values. [code]trans_type[/code] accepts TRANS_* constants, and is the way the animation is interpolated, while [code]ease_type[/code] accepts EASE_* constants, and controls the place of the interpolation (the begining, the end, or both). You can read more about them in the class description. </description> </method> @@ -41950,30 +42349,11 @@ This method controls whether the position between two cached points is interpola [code]trans_type[/code] accepts TRANS_* constants, and is the way the animation is interpolated, while [code]ease_type[/code] accepts EASE_* constants, and controls the place of the interpolation (the begining, the end, or both). You can read more about them in the class description. </description> </method> - <method name="targeting_method"> - <return type="bool"> + <method name="tell" qualifiers="const"> + <return type="float"> </return> - <argument index="0" name="object" type="Object"> - </argument> - <argument index="1" name="method" type="String"> - </argument> - <argument index="2" name="initial" type="Object"> - </argument> - <argument index="3" name="initial_method" type="String"> - </argument> - <argument index="4" name="final_val" type="Variant"> - </argument> - <argument index="5" name="times_in_sec" type="float"> - </argument> - <argument index="6" name="trans_type" type="int"> - </argument> - <argument index="7" name="ease_type" type="int"> - </argument> - <argument index="8" name="delay" type="float" default="0"> - </argument> <description> - Animate [code]method[/code] of [code]object[/code] from the value returned by [code]initial.initial_method[/code] to [code]final_val[/code] for [code]times_in_sec[/code] seconds, [code]delay[/code] seconds later. Methods are animated by calling them with consecuitive values. - [code]trans_type[/code] accepts TRANS_* constants, and is the way the animation is interpolated, while [code]ease_type[/code] accepts EASE_* constants, and controls the place of the interpolation (the begining, the end, or both). You can read more about them in the class description. + Returns the current time of the tween. </description> </method> </methods> @@ -41987,35 +42367,41 @@ This method controls whether the position between two cached points is interpola This signal is emitted when a tween ends. </description> </signal> - <signal name="tween_step"> + <signal name="tween_start"> <argument index="0" name="object" type="Object"> </argument> <argument index="1" name="key" type="String"> </argument> - <argument index="2" name="elapsed" type="float"> - </argument> - <argument index="3" name="value" type="Object"> - </argument> <description> - This signal is emitted each step of the tweening. + This signal is emitted when a tween starts. </description> </signal> - <signal name="tween_start"> + <signal name="tween_step"> <argument index="0" name="object" type="Object"> </argument> <argument index="1" name="key" type="String"> </argument> + <argument index="2" name="elapsed" type="float"> + </argument> + <argument index="3" name="value" type="Object"> + </argument> <description> - This signal is emitted when a tween starts. + This signal is emitted each step of the tweening. </description> </signal> </signals> <constants> - <constant name="TWEEN_PROCESS_FIXED" value="0"> - The [Tween] should use [code]_fixed_process[/code] for timekeeping when this is enabled. + <constant name="EASE_IN" value="0"> + Signifies that the interpolation should be focused in the beginning. </constant> - <constant name="TWEEN_PROCESS_IDLE" value="1"> - The [Tween] should use [code]_process[/code] for timekeeping when this is enabled (default). + <constant name="EASE_OUT" value="1"> + Signifies that the interpolation should be focused in the end. + </constant> + <constant name="EASE_IN_OUT" value="2"> + Signifies that the interpolation should be focused in both ends. + </constant> + <constant name="EASE_OUT_IN" value="3"> + Signifies that the interpolation should be focused in both ends, but they should be switched (a bit hard to explain, try it for yourself to be sure). </constant> <constant name="TRANS_LINEAR" value="0"> Means that the animation is interpolated linearly. @@ -42023,6 +42409,9 @@ This method controls whether the position between two cached points is interpola <constant name="TRANS_SINE" value="1"> Means that the animation is interpolated using a sine wave. </constant> + <constant name="TRANS_BACK" value="10"> + Means that the animation is interpolated backing out at edges. + </constant> <constant name="TRANS_QUINT" value="2"> Means that the animation is interpolated with a quinary (to the power of 5) function. </constant> @@ -42047,20 +42436,11 @@ This method controls whether the position between two cached points is interpola <constant name="TRANS_BOUNCE" value="9"> Means that the animation is interpolated by bouncing at, but never surpassing, the end. </constant> - <constant name="TRANS_BACK" value="10"> - Means that the animation is interpolated backing out at edges. - </constant> - <constant name="EASE_IN" value="0"> - Signifies that the interpolation should be focused in the beginning. - </constant> - <constant name="EASE_OUT" value="1"> - Signifies that the interpolation should be focused in the end. - </constant> - <constant name="EASE_IN_OUT" value="2"> - Signifies that the interpolation should be focused in both ends. + <constant name="TWEEN_PROCESS_FIXED" value="0"> + The [Tween] should use [code]_fixed_process[/code] for timekeeping when this is enabled. </constant> - <constant name="EASE_OUT_IN" value="3"> - Signifies that the interpolation should be focused in both ends, but they should be switched (a bit hard to explain, try it for yourself to be sure). + <constant name="TWEEN_PROCESS_IDLE" value="1"> + The [Tween] should use [code]_process[/code] for timekeeping when this is enabled (default). </constant> </constants> </class> @@ -42076,24 +42456,6 @@ This method controls whether the position between two cached points is interpola functions or property changes, then commiting the action. </description> <methods> - <method name="create_action"> - <argument index="0" name="name" type="String"> - </argument> - <argument index="1" name="mergeable" type="bool" default="false"> - </argument> - <description> - Create a new action. After this is called, do all - your calls to [method add_do_method], - [method add_undo_method], [method add_do_property] - and [method add_undo_property]. - </description> - </method> - <method name="commit_action"> - <description> - Commit the action. All 'do' methods/properties are - called/set when this function is called. - </description> - </method> <method name="add_do_method"> <argument index="0" name="object" type="Object"> </argument> @@ -42114,6 +42476,26 @@ This method controls whether the position between two cached points is interpola arguments. </description> </method> + <method name="add_do_property"> + <argument index="0" name="object" type="Object"> + </argument> + <argument index="1" name="property" type="String"> + </argument> + <argument index="2" name="value" type="Variant"> + </argument> + <description> + Set a property with a custom value. + </description> + </method> + <method name="add_do_reference"> + <argument index="0" name="object" type="Object"> + </argument> + <description> + Add a 'do' reference that will be erased if the 'do' + history is lost. This is useful mostly for new nodes + created for the 'do' call. Do not use for resources. + </description> + </method> <method name="add_undo_method"> <argument index="0" name="object" type="Object"> </argument> @@ -42135,17 +42517,6 @@ This method controls whether the position between two cached points is interpola calls. </description> </method> - <method name="add_do_property"> - <argument index="0" name="object" type="Object"> - </argument> - <argument index="1" name="property" type="String"> - </argument> - <argument index="2" name="value" type="Variant"> - </argument> - <description> - Set a property with a custom value. - </description> - </method> <method name="add_undo_property"> <argument index="0" name="object" type="Object"> </argument> @@ -42157,15 +42528,6 @@ This method controls whether the position between two cached points is interpola Undo setting of a property with a custom value. </description> </method> - <method name="add_do_reference"> - <argument index="0" name="object" type="Object"> - </argument> - <description> - Add a 'do' reference that will be erased if the 'do' - history is lost. This is useful mostly for new nodes - created for the 'do' call. Do not use for resources. - </description> - </method> <method name="add_undo_reference"> <argument index="0" name="object" type="Object"> </argument> @@ -42182,6 +42544,24 @@ This method controls whether the position between two cached points is interpola references. </description> </method> + <method name="commit_action"> + <description> + Commit the action. All 'do' methods/properties are + called/set when this function is called. + </description> + </method> + <method name="create_action"> + <argument index="0" name="name" type="String"> + </argument> + <argument index="1" name="mergeable" type="bool" default="false"> + </argument> + <description> + Create a new action. After this is called, do all + your calls to [method add_do_method], + [method add_undo_method], [method add_do_property] + and [method add_undo_property]. + </description> + </method> <method name="get_current_action_name" qualifiers="const"> <return type="String"> </return> @@ -42235,24 +42615,24 @@ This method controls whether the position between two cached points is interpola <theme_items> <theme_item name="button_separator" type="int"> </theme_item> - <theme_item name="icon_separator" type="int"> + <theme_item name="focus" type="StyleBox"> </theme_item> - <theme_item name="font_color_selected" type="Color"> + <theme_item name="font" type="Font"> </theme_item> <theme_item name="font_color" type="Color"> </theme_item> - <theme_item name="font_selected" type="Font"> + <theme_item name="font_color_selected" type="Color"> </theme_item> - <theme_item name="font" type="Font"> + <theme_item name="font_selected" type="Font"> </theme_item> <theme_item name="hover" type="StyleBox"> </theme_item> - <theme_item name="focus" type="StyleBox"> - </theme_item> - <theme_item name="selected" type="StyleBox"> + <theme_item name="icon_separator" type="int"> </theme_item> <theme_item name="normal" type="StyleBox"> </theme_item> + <theme_item name="selected" type="StyleBox"> + </theme_item> </theme_items> </class> <class name="VScrollBar" inherits="ScrollBar" category="Core"> @@ -42266,22 +42646,22 @@ This method controls whether the position between two cached points is interpola <constants> </constants> <theme_items> - <theme_item name="increment_hilite" type="Texture"> + <theme_item name="decrement" type="Texture"> </theme_item> <theme_item name="decrement_hilite" type="Texture"> </theme_item> - <theme_item name="increment" type="Texture"> - </theme_item> - <theme_item name="decrement" type="Texture"> + <theme_item name="grabber" type="StyleBox"> </theme_item> <theme_item name="grabber_hilite" type="StyleBox"> </theme_item> - <theme_item name="grabber" type="StyleBox"> + <theme_item name="increment" type="Texture"> </theme_item> - <theme_item name="scroll_focus" type="StyleBox"> + <theme_item name="increment_hilite" type="Texture"> </theme_item> <theme_item name="scroll" type="StyleBox"> </theme_item> + <theme_item name="scroll_focus" type="StyleBox"> + </theme_item> </theme_items> </class> <class name="VSeparator" inherits="Separator" category="Core"> @@ -42314,16 +42694,16 @@ This method controls whether the position between two cached points is interpola <constants> </constants> <theme_items> - <theme_item name="tick" type="Texture"> + <theme_item name="grabber" type="Texture"> </theme_item> <theme_item name="grabber_hilite" type="Texture"> </theme_item> - <theme_item name="grabber" type="Texture"> - </theme_item> <theme_item name="grabber_hilite" type="StyleBox"> </theme_item> <theme_item name="slider" type="StyleBox"> </theme_item> + <theme_item name="tick" type="Texture"> + </theme_item> </theme_items> </class> <class name="VSplitContainer" inherits="SplitContainer" category="Core"> @@ -42340,11 +42720,11 @@ This method controls whether the position between two cached points is interpola <theme_items> <theme_item name="autohide" type="int"> </theme_item> - <theme_item name="separation" type="int"> + <theme_item name="bg" type="StyleBox"> </theme_item> <theme_item name="grabber" type="Texture"> </theme_item> - <theme_item name="bg" type="StyleBox"> + <theme_item name="separation" type="int"> </theme_item> </theme_items> </class> @@ -42356,6 +42736,17 @@ This method controls whether the position between two cached points is interpola 2-element structure that can be used to represent positions in 2d-space, or any other pair of numeric values. </description> <methods> + <method name="Vector2"> + <return type="Vector2"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <argument index="1" name="y" type="float"> + </argument> + <description> + Constructs a new Vector2 from the given x and y. + </description> + </method> <method name="abs"> <return type="Vector2"> </return> @@ -42526,31 +42917,20 @@ This method controls whether the position between two cached points is interpola Returns a perpendicular vector. </description> </method> - <method name="Vector2"> - <return type="Vector2"> - </return> - <argument index="0" name="x" type="float"> - </argument> - <argument index="1" name="y" type="float"> - </argument> - <description> - Constructs a new Vector2 from the given x and y. - </description> - </method> </methods> <members> + <member name="height" type="float"> + Height of the vector (Same as Y). + </member> + <member name="width" type="float"> + Width of the vector (Same as X). + </member> <member name="x" type="float"> X component of the vector. </member> <member name="y" type="float"> Y component of the vector. </member> - <member name="width" type="float"> - Width of the vector (Same as X). - </member> - <member name="height" type="float"> - Height of the vector (Same as Y). - </member> </members> <constants> </constants> @@ -42563,18 +42943,59 @@ This method controls whether the position between two cached points is interpola An Array specifically designed to hold Vector2. </description> <methods> + <method name="Vector2Array"> + <return type="Vector2Array"> + </return> + <argument index="0" name="from" type="Array"> + </argument> + <description> + Construct a new [Vector2Array]. Optionally, you can pass in an Array that will be converted. + </description> + </method> + <method name="append"> + <argument index="0" name="vector2" type="Vector2"> + </argument> + <description> + Append an element at the end of the array (alias of [method push_back]). + </description> + </method> + <method name="append_array"> + <argument index="0" name="array" type="Vector2Array"> + </argument> + <description> + Append an [Vector2Array] at the end of this array. + </description> + </method> + <method name="insert"> + <return type="int"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="vector2" type="Vector2"> + </argument> + <description> + Insert a new element at a given position in the array. The position must be valid, or at the end of the array (pos==size()). + </description> + </method> <method name="push_back"> <argument index="0" name="vector2" type="Vector2"> </argument> <description> - Inserts a Vector2 at the end. + Insert a [Vector2] at the end. + </description> + </method> + <method name="remove"> + <argument index="0" name="idx" type="int"> + </argument> + <description> + Remove an element from the array by index. </description> </method> <method name="resize"> <argument index="0" name="idx" type="int"> </argument> <description> - Sets the size of the Vector2Array. If larger than the current size it will reserve some space beforehand, and if it is smaller it will cut off the array. + Set the size of the Vector2Array. If larger than the current size it will reserve some space beforehand, and if it is smaller it will cut off the array. </description> </method> <method name="set"> @@ -42583,23 +43004,14 @@ This method controls whether the position between two cached points is interpola <argument index="1" name="vector2" type="Vector2"> </argument> <description> - Changes the Vector2 at the given index. + Change the [Vector2] at the given index. </description> </method> <method name="size"> <return type="int"> </return> <description> - Returns the size of the array. - </description> - </method> - <method name="Vector2Array"> - <return type="Vector2Array"> - </return> - <argument index="0" name="from" type="Array"> - </argument> - <description> - Constructs a new Vector2Array. Optionally, you can pass in an Array that will be converted. + Return the size of the array. </description> </method> </methods> @@ -42614,6 +43026,19 @@ This method controls whether the position between two cached points is interpola Vector3 is one of the core classes of the engine, and includes several built-in helper functions to perform basic vector math operations. </description> <methods> + <method name="Vector3"> + <return type="Vector3"> + </return> + <argument index="0" name="x" type="float"> + </argument> + <argument index="1" name="y" type="float"> + </argument> + <argument index="2" name="z" type="float"> + </argument> + <description> + Returns a Vector3 with the given components. + </description> + </method> <method name="abs"> <return type="Vector3"> </return> @@ -42777,19 +43202,6 @@ This method controls whether the position between two cached points is interpola Return a copy of the vector, snapped to the lowest neared multiple. </description> </method> - <method name="Vector3"> - <return type="Vector3"> - </return> - <argument index="0" name="x" type="float"> - </argument> - <argument index="1" name="y" type="float"> - </argument> - <argument index="2" name="z" type="float"> - </argument> - <description> - Returns a Vector3 with the given components. - </description> - </method> </methods> <members> <member name="x" type="float"> @@ -42822,18 +43234,59 @@ This method controls whether the position between two cached points is interpola An Array specifically designed to hold Vector3. </description> <methods> + <method name="Vector3Array"> + <return type="Vector3Array"> + </return> + <argument index="0" name="from" type="Array"> + </argument> + <description> + Construct a new Vector3Array. Optionally, you can pass in an Array that will be converted. + </description> + </method> + <method name="append"> + <argument index="0" name="vector3" type="Vector3"> + </argument> + <description> + Append an element at the end of the array (alias of [method push_back]). + </description> + </method> + <method name="append_array"> + <argument index="0" name="array" type="Vector3Array"> + </argument> + <description> + Append an [Vector3Array] at the end of this array. + </description> + </method> + <method name="insert"> + <return type="int"> + </return> + <argument index="0" name="idx" type="int"> + </argument> + <argument index="1" name="vector3" type="Vector3"> + </argument> + <description> + Insert a new element at a given position in the array. The position must be valid, or at the end of the array (pos==size()). + </description> + </method> <method name="push_back"> <argument index="0" name="vector3" type="Vector3"> </argument> <description> - Inserts a Vector3 at the end. + Insert a Vector3 at the end. + </description> + </method> + <method name="remove"> + <argument index="0" name="idx" type="int"> + </argument> + <description> + Remove an element from the array by index. </description> </method> <method name="resize"> <argument index="0" name="idx" type="int"> </argument> <description> - Sets the size of the Vector3Array. If larger than the current size it will reserve some space beforehand, and if it is smaller it will cut off the array. + Set the size of the Vector3Array. If larger than the current size it will reserve some space beforehand, and if it is smaller it will cut off the array. </description> </method> <method name="set"> @@ -42842,23 +43295,14 @@ This method controls whether the position between two cached points is interpola <argument index="1" name="vector3" type="Vector3"> </argument> <description> - Changes the Vector3 at the given index. + Change the [Vector3] at the given index. </description> </method> <method name="size"> <return type="int"> </return> <description> - Returns the size of the array. - </description> - </method> - <method name="Vector3Array"> - <return type="Vector3Array"> - </return> - <argument index="0" name="from" type="Array"> - </argument> - <description> - Constructs a new Vector3Array. Optionally, you can pass in an Array that will be converted. + Return the size of the array. </description> </method> </methods> @@ -42871,37 +43315,42 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_mass"> - <argument index="0" name="mass" type="float"> - </argument> + <method name="get_brake" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_mass" qualifiers="const"> + <method name="get_engine_force" qualifiers="const"> <return type="float"> </return> <description> </description> </method> - <method name="set_friction"> - <argument index="0" name="friction" type="float"> - </argument> + <method name="get_friction" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_friction" qualifiers="const"> - <return type="float"> + <method name="get_linear_velocity" qualifiers="const"> + <return type="Vector3"> </return> <description> + Returns the VehicleBody's velocity vector. To get the absolute speed in scalar value, get the length of the return vector in pixels/second. Example: + [codeblock] + # vehicle is an instance of VehicleBody + var speed = vehicle.get_linear_velocity().length() + [/codeblock] </description> </method> - <method name="set_engine_force"> - <argument index="0" name="engine_force" type="float"> - </argument> + <method name="get_mass" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_engine_force" qualifiers="const"> + <method name="get_steering" qualifiers="const"> <return type="float"> </return> <description> @@ -42913,33 +43362,28 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_brake" qualifiers="const"> - <return type="float"> - </return> + <method name="set_engine_force"> + <argument index="0" name="engine_force" type="float"> + </argument> <description> </description> </method> - <method name="set_steering"> - <argument index="0" name="steering" type="float"> + <method name="set_friction"> + <argument index="0" name="friction" type="float"> </argument> <description> </description> </method> - <method name="get_steering" qualifiers="const"> - <return type="float"> - </return> + <method name="set_mass"> + <argument index="0" name="mass" type="float"> + </argument> <description> </description> </method> - <method name="get_linear_velocity"> - <return type="Vector3"> - </return> + <method name="set_steering"> + <argument index="0" name="steering" type="float"> + </argument> <description> - Returns the VehicleBody's velocity vector. To get the absolute speed in scalar value, get the length of the return vector in pixels/second. Example: - [codeblock] - # vehicle is an instance of VehicleBody - var speed = vehicle.get_linear_velocity().length() - [/codeblock] </description> </method> </methods> @@ -42952,62 +43396,62 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_radius"> - <argument index="0" name="length" type="float"> - </argument> + <method name="get_damping_compression" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_radius" qualifiers="const"> + <method name="get_damping_relaxation" qualifiers="const"> <return type="float"> </return> <description> </description> </method> - <method name="set_suspension_rest_length"> - <argument index="0" name="length" type="float"> - </argument> + <method name="get_friction_slip" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_suspension_rest_length" qualifiers="const"> + <method name="get_radius" qualifiers="const"> <return type="float"> </return> <description> </description> </method> - <method name="set_suspension_travel"> - <argument index="0" name="length" type="float"> - </argument> + <method name="get_suspension_max_force" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_suspension_travel" qualifiers="const"> + <method name="get_suspension_rest_length" qualifiers="const"> <return type="float"> </return> <description> </description> </method> - <method name="set_suspension_stiffness"> - <argument index="0" name="length" type="float"> - </argument> + <method name="get_suspension_stiffness" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_suspension_stiffness" qualifiers="const"> + <method name="get_suspension_travel" qualifiers="const"> <return type="float"> </return> <description> </description> </method> - <method name="set_suspension_max_force"> - <argument index="0" name="length" type="float"> - </argument> + <method name="is_used_as_steering" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="get_suspension_max_force" qualifiers="const"> - <return type="float"> + <method name="is_used_as_traction" qualifiers="const"> + <return type="bool"> </return> <description> </description> @@ -43018,57 +43462,57 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_damping_compression" qualifiers="const"> - <return type="float"> - </return> + <method name="set_damping_relaxation"> + <argument index="0" name="length" type="float"> + </argument> <description> </description> </method> - <method name="set_damping_relaxation"> + <method name="set_friction_slip"> <argument index="0" name="length" type="float"> </argument> <description> </description> </method> - <method name="get_damping_relaxation" qualifiers="const"> - <return type="float"> - </return> + <method name="set_radius"> + <argument index="0" name="length" type="float"> + </argument> <description> </description> </method> - <method name="set_use_as_traction"> - <argument index="0" name="enable" type="bool"> + <method name="set_suspension_max_force"> + <argument index="0" name="length" type="float"> </argument> <description> </description> </method> - <method name="is_used_as_traction" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_suspension_rest_length"> + <argument index="0" name="length" type="float"> + </argument> <description> </description> </method> - <method name="set_use_as_steering"> - <argument index="0" name="enable" type="bool"> + <method name="set_suspension_stiffness"> + <argument index="0" name="length" type="float"> </argument> <description> </description> </method> - <method name="is_used_as_steering" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_suspension_travel"> + <argument index="0" name="length" type="float"> + </argument> <description> </description> </method> - <method name="set_friction_slip"> - <argument index="0" name="length" type="float"> + <method name="set_use_as_steering"> + <argument index="0" name="enable" type="bool"> </argument> <description> </description> </method> - <method name="get_friction_slip" qualifiers="const"> - <return type="float"> - </return> + <method name="set_use_as_traction"> + <argument index="0" name="enable" type="bool"> + </argument> <description> </description> </method> @@ -43082,89 +43526,85 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_stream"> - <argument index="0" name="stream" type="VideoStream"> - </argument> - <description> - </description> - </method> - <method name="get_stream" qualifiers="const"> - <return type="VideoStream"> + <method name="get_audio_track" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="play"> + <method name="get_buffering_msec" qualifiers="const"> + <return type="int"> + </return> <description> </description> </method> - <method name="stop"> + <method name="get_stream" qualifiers="const"> + <return type="VideoStream"> + </return> <description> </description> </method> - <method name="is_playing" qualifiers="const"> - <return type="bool"> + <method name="get_stream_name" qualifiers="const"> + <return type="String"> </return> <description> </description> </method> - <method name="set_paused"> - <argument index="0" name="paused" type="bool"> - </argument> + <method name="get_stream_pos" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="is_paused" qualifiers="const"> - <return type="bool"> + <method name="get_video_texture"> + <return type="Texture"> </return> <description> </description> </method> - <method name="set_volume"> - <argument index="0" name="volume" type="float"> - </argument> + <method name="get_volume" qualifiers="const"> + <return type="float"> + </return> <description> </description> </method> - <method name="get_volume" qualifiers="const"> + <method name="get_volume_db" qualifiers="const"> <return type="float"> </return> <description> </description> </method> - <method name="set_volume_db"> - <argument index="0" name="db" type="float"> - </argument> + <method name="has_autoplay" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="get_volume_db" qualifiers="const"> - <return type="float"> + <method name="has_expand" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="set_audio_track"> - <argument index="0" name="track" type="int"> - </argument> + <method name="is_paused" qualifiers="const"> + <return type="bool"> + </return> <description> </description> </method> - <method name="get_audio_track" qualifiers="const"> - <return type="int"> + <method name="is_playing" qualifiers="const"> + <return type="bool"> </return> <description> </description> </method> - <method name="get_stream_name" qualifiers="const"> - <return type="String"> - </return> + <method name="play"> <description> </description> </method> - <method name="get_stream_pos" qualifiers="const"> - <return type="float"> - </return> + <method name="set_audio_track"> + <argument index="0" name="track" type="int"> + </argument> <description> </description> </method> @@ -43174,9 +43614,9 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="has_autoplay" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_buffering_msec"> + <argument index="0" name="msec" type="int"> + </argument> <description> </description> </method> @@ -43186,27 +43626,31 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="has_expand" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_paused"> + <argument index="0" name="paused" type="bool"> + </argument> <description> </description> </method> - <method name="set_buffering_msec"> - <argument index="0" name="msec" type="int"> + <method name="set_stream"> + <argument index="0" name="stream" type="VideoStream"> </argument> <description> </description> </method> - <method name="get_buffering_msec" qualifiers="const"> - <return type="int"> - </return> + <method name="set_volume"> + <argument index="0" name="volume" type="float"> + </argument> <description> </description> </method> - <method name="get_video_texture"> - <return type="Texture"> - </return> + <method name="set_volume_db"> + <argument index="0" name="db" type="float"> + </argument> + <description> + </description> + </method> + <method name="stop"> <description> </description> </method> @@ -43247,18 +43691,11 @@ This method controls whether the position between two cached points is interpola Finally, viewports can also behave as render targets, in which case they will not be visible unless the associated texture is used to draw. </description> <methods> - <method name="set_rect"> - <argument index="0" name="rect" type="Rect2"> - </argument> - <description> - Set the viewport rect. If the viewport is child of a control, it will use the same rect as the parent. - </description> - </method> - <method name="get_rect" qualifiers="const"> - <return type="Rect2"> + <method name="find_world" qualifiers="const"> + <return type="World"> </return> <description> - Return the viewport rect. If the viewport is child of a control, it will use the same rect as the parent. Otherwise, if the rect is empty, the viewport will use all the allowed space. + Return the 3D world of the viewport, or if no such present, the one of the parent viewport. </description> </method> <method name="find_world_2d" qualifiers="const"> @@ -43268,32 +43705,11 @@ This method controls whether the position between two cached points is interpola Return the 2D world of the viewport. </description> </method> - <method name="set_world"> - <argument index="0" name="world" type="World"> - </argument> - <description> - Change the 3D world of the viewport. - </description> - </method> - <method name="get_world" qualifiers="const"> - <return type="World"> - </return> - <description> - Return the 3D world of the viewport. - </description> - </method> - <method name="find_world" qualifiers="const"> - <return type="World"> + <method name="get_camera" qualifiers="const"> + <return type="Camera"> </return> <description> - Return the 3D world of the viewport, or if no such present, the one of the parent viewport. - </description> - </method> - <method name="set_canvas_transform"> - <argument index="0" name="xform" type="Matrix32"> - </argument> - <description> - Set the canvas transform of the viewport, useful for changing the on-screen positions of all child [CanvasItem]s. This is relative to the global canvas transform of the viewport. + Return the active 3D camera. </description> </method> <method name="get_canvas_transform" qualifiers="const"> @@ -43303,11 +43719,11 @@ This method controls whether the position between two cached points is interpola Get the canvas transform of the viewport. </description> </method> - <method name="set_global_canvas_transform"> - <argument index="0" name="xform" type="Matrix32"> - </argument> + <method name="get_final_transform" qualifiers="const"> + <return type="Matrix32"> + </return> <description> - Set the global canvas transform of the viewport. The canvas transform is relative to this. + Get the total transform of the viewport. </description> </method> <method name="get_global_canvas_transform" qualifiers="const"> @@ -43317,76 +43733,67 @@ This method controls whether the position between two cached points is interpola Get the global canvas transform of the viewport. </description> </method> - <method name="get_final_transform" qualifiers="const"> - <return type="Matrix32"> + <method name="get_mouse_pos" qualifiers="const"> + <return type="Vector2"> </return> <description> - Get the total transform of the viewport. + Get the mouse position, relative to the viewport. </description> </method> - <method name="get_visible_rect" qualifiers="const"> - <return type="Rect2"> + <method name="get_physics_object_picking"> + <return type="bool"> </return> <description> - Return the final, visible rect in global screen coordinates. + Get whether picking for all physics objects inside the viewport is enabled. </description> </method> - <method name="set_transparent_background"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_rect" qualifiers="const"> + <return type="Rect2"> + </return> <description> - If this viewport is a child of another viewport, keep the previously drawn background visible. + Return the viewport rect. If the viewport is child of a control, it will use the same rect as the parent. Otherwise, if the rect is empty, the viewport will use all the allowed space. </description> </method> - <method name="has_transparent_background" qualifiers="const"> + <method name="get_render_target_clear_on_new_frame" qualifiers="const"> <return type="bool"> </return> <description> - Return whether the viewport lets whatever is behind it to show. - </description> - </method> - <method name="set_size_override"> - <argument index="0" name="enable" type="bool"> - </argument> - <argument index="1" name="size" type="Vector2" default="Vector2(-1,-1)"> - </argument> - <argument index="2" name="margin" type="Vector2" default="Vector2(0,0)"> - </argument> - <description> - Set the size of the viewport. If the enable parameter is true, it would use the override, otherwise it would use the default size. If the size parameter is equal to [code](-1, -1)[/code], it won't update the size. + Return whether automatic clearing of the render target on each frame is enabled. </description> </method> - <method name="get_size_override" qualifiers="const"> - <return type="Vector2"> + <method name="get_render_target_filter" qualifiers="const"> + <return type="bool"> </return> <description> - Get the size override set with [method set_size_override]. + Get whether the rendered texture has filters enabled. </description> </method> - <method name="is_size_override_enabled" qualifiers="const"> + <method name="get_render_target_gen_mipmaps" qualifiers="const"> <return type="bool"> </return> <description> - Get the enabled status of the size override set with [method set_size_override]. + Get whether the rendered texture will have mipmaps generated. </description> </method> - <method name="set_size_override_stretch"> - <argument index="0" name="enabled" type="bool"> - </argument> + <method name="get_render_target_texture" qualifiers="const"> + <return type="RenderTargetTexture"> + </return> <description> - Set whether the size override affects stretch as well. + Get the render target's texture, for use with various objects that you want to texture with the viewport. </description> </method> - <method name="is_size_override_stretch_enabled" qualifiers="const"> - <return type="bool"> + <method name="get_render_target_update_mode" qualifiers="const"> + <return type="int"> </return> <description> - Get the enabled status of the size strech override set with [method set_size_override_stretch]. + Get when the render target would be updated, will be one of the [code]RENDER_TARGET_UPDATE_*[/code] constants. </description> </method> - <method name="queue_screen_capture"> + <method name="get_render_target_vflip" qualifiers="const"> + <return type="bool"> + </return> <description> - Queue a multithreaded screenshot, you can retrive it at a later frame via [method get_screen_capture]. + Set whether the render target is flipped on the Y axis. </description> </method> <method name="get_screen_capture" qualifiers="const"> @@ -43396,187 +43803,195 @@ This method controls whether the position between two cached points is interpola Return the captured screenshot after [method queue_screen_capture]. You might need to check more than one frame untill the right image is returned. </description> </method> - <method name="set_as_render_target"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_size_override" qualifiers="const"> + <return type="Vector2"> + </return> <description> - Set the viewport's render target mode. + Get the size override set with [method set_size_override]. </description> </method> - <method name="is_set_as_render_target" qualifiers="const"> - <return type="bool"> + <method name="get_viewport" qualifiers="const"> + <return type="RID"> </return> <description> - Return whether the viewport is set as a render target by [method set_as_render_target]. + Get the viewport RID from the visual server. </description> </method> - <method name="set_render_target_vflip"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="get_visible_rect" qualifiers="const"> + <return type="Rect2"> + </return> <description> - Set whether the render target should be flipped on the Y axis. + Return the final, visible rect in global screen coordinates. </description> </method> - <method name="get_render_target_vflip" qualifiers="const"> - <return type="bool"> + <method name="get_world" qualifiers="const"> + <return type="World"> </return> <description> - Set whether the render target is flipped on the Y axis. + Return the 3D world of the viewport. </description> </method> - <method name="set_render_target_clear_on_new_frame"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="gui_get_drag_data" qualifiers="const"> + <return type="Variant"> + </return> <description> - Enable/disable automatic clearing of the render target on each frame. You might find it better to disable this if you are using the viewport for rarely updated textures. To clear manually, check [method render_target_clear] + Returs the drag data from the GUI, that was previously returned by [method Control.get_drag_data]. </description> </method> - <method name="get_render_target_clear_on_new_frame" qualifiers="const"> + <method name="gui_has_modal_stack" qualifiers="const"> <return type="bool"> </return> <description> - Return whether automatic clearing of the render target on each frame is enabled. + Returs whether there are shown modals on-screen. </description> </method> - <method name="render_target_clear"> + <method name="has_transparent_background" qualifiers="const"> + <return type="bool"> + </return> <description> - Clear the render target manually. + Return whether the viewport lets whatever is behind it to show. </description> </method> - <method name="set_render_target_filter"> - <argument index="0" name="enable" type="bool"> + <method name="input"> + <argument index="0" name="local_event" type="InputEvent"> </argument> <description> - Set whether the rendered texture should have filters enabled. Disable if you want the texture's pixels be visible. </description> </method> - <method name="get_render_target_filter" qualifiers="const"> + <method name="is_audio_listener" qualifiers="const"> <return type="bool"> </return> <description> - Get whether the rendered texture has filters enabled. + Returns whether the viewport sends sounds to the speakers. </description> </method> - <method name="set_render_target_gen_mipmaps"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="is_audio_listener_2d" qualifiers="const"> + <return type="bool"> + </return> <description> - Set whether the rendered texture should have mipmaps generated. Mipmaps allow the texture to have better antialiasing from far away. + Returns whether the viewport sends soundsfrom 2D emitters to the speakers. </description> </method> - <method name="get_render_target_gen_mipmaps" qualifiers="const"> + <method name="is_input_disabled" qualifiers="const"> <return type="bool"> </return> <description> - Get whether the rendered texture will have mipmaps generated. + Return whether input to the viewport is disabled. </description> </method> - <method name="set_render_target_update_mode"> - <argument index="0" name="mode" type="int"> - </argument> + <method name="is_set_as_render_target" qualifiers="const"> + <return type="bool"> + </return> <description> - Set when the render target should be updated, has to be one of the [code]RENDER_TARGET_UPDATE_*[/code] constants. + Return whether the viewport is set as a render target by [method set_as_render_target]. </description> </method> - <method name="get_render_target_update_mode" qualifiers="const"> - <return type="int"> + <method name="is_size_override_enabled" qualifiers="const"> + <return type="bool"> </return> <description> - Get when the render target would be updated, will be one of the [code]RENDER_TARGET_UPDATE_*[/code] constants. + Get the enabled status of the size override set with [method set_size_override]. </description> </method> - <method name="get_render_target_texture" qualifiers="const"> - <return type="RenderTargetTexture"> + <method name="is_size_override_stretch_enabled" qualifiers="const"> + <return type="bool"> </return> <description> - Get the render target's texture, for use with various objects that you want to texture with the viewport. + Get the enabled status of the size strech override set with [method set_size_override_stretch]. </description> </method> - <method name="set_physics_object_picking"> - <argument index="0" name="enable" type="bool"> - </argument> + <method name="is_using_own_world" qualifiers="const"> + <return type="bool"> + </return> <description> - Enable/disable picking for all physics objects inside the viewport. + Return whether the viewport is using a world separate from the parent viewport's world. </description> </method> - <method name="get_physics_object_picking"> - <return type="bool"> - </return> + <method name="queue_screen_capture"> <description> - Get whether picking for all physics objects inside the viewport is enabled. + Queue a multithreaded screenshot, you can retrive it at a later frame via [method get_screen_capture]. </description> </method> - <method name="get_viewport" qualifiers="const"> - <return type="RID"> - </return> + <method name="render_target_clear"> <description> - Get the viewport RID from the visual server. + Clear the render target manually. </description> </method> - <method name="input"> - <argument index="0" name="local_event" type="InputEvent"> + <method name="set_as_audio_listener"> + <argument index="0" name="enable" type="bool"> </argument> <description> + Makes the viewport send sounds to the speakers. </description> </method> - <method name="unhandled_input"> - <argument index="0" name="local_event" type="InputEvent"> + <method name="set_as_audio_listener_2d"> + <argument index="0" name="enable" type="bool"> </argument> <description> + Makes the viewport send sounds from 2D emitters to the speakers. </description> </method> - <method name="update_worlds"> + <method name="set_as_render_target"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Force update of the 2D and 3D worlds. + Set the viewport's render target mode. </description> </method> - <method name="set_use_own_world"> - <argument index="0" name="enable" type="bool"> + <method name="set_canvas_transform"> + <argument index="0" name="xform" type="Matrix32"> </argument> <description> - Make the viewport use a world separate from the parent viewport's world. + Set the canvas transform of the viewport, useful for changing the on-screen positions of all child [CanvasItem]s. This is relative to the global canvas transform of the viewport. </description> </method> - <method name="is_using_own_world" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_disable_input"> + <argument index="0" name="disable" type="bool"> + </argument> <description> - Return whether the viewport is using a world separate from the parent viewport's world. + Set whether input to the viewport is disabled. </description> </method> - <method name="get_camera" qualifiers="const"> - <return type="Camera"> - </return> + <method name="set_global_canvas_transform"> + <argument index="0" name="xform" type="Matrix32"> + </argument> <description> - Return the active 3D camera. + Set the global canvas transform of the viewport. The canvas transform is relative to this. </description> </method> - <method name="set_as_audio_listener"> + <method name="set_physics_object_picking"> <argument index="0" name="enable" type="bool"> </argument> <description> - Makes the viewport send sounds to the speakers. + Enable/disable picking for all physics objects inside the viewport. </description> </method> - <method name="is_audio_listener" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_rect"> + <argument index="0" name="rect" type="Rect2"> + </argument> <description> - Returns whether the viewport sends sounds to the speakers. + Set the viewport rect. If the viewport is child of a control, it will use the same rect as the parent. </description> </method> - <method name="set_as_audio_listener_2d"> + <method name="set_render_target_clear_on_new_frame"> <argument index="0" name="enable" type="bool"> </argument> <description> - Makes the viewport send sounds from 2D emitters to the speakers. + Enable/disable automatic clearing of the render target on each frame. You might find it better to disable this if you are using the viewport for rarely updated textures. To clear manually, check [method render_target_clear] </description> </method> - <method name="is_audio_listener_2d" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_render_target_filter"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Returns whether the viewport sends soundsfrom 2D emitters to the speakers. + Set whether the rendered texture should have filters enabled. Disable if you want the texture's pixels be visible. + </description> + </method> + <method name="set_render_target_gen_mipmaps"> + <argument index="0" name="enable" type="bool"> + </argument> + <description> + Set whether the rendered texture should have mipmaps generated. Mipmaps allow the texture to have better antialiasing from far away. </description> </method> <method name="set_render_target_to_screen_rect"> @@ -43586,46 +44001,75 @@ This method controls whether the position between two cached points is interpola Map a part of the screen to the render target directly. </description> </method> - <method name="get_mouse_pos" qualifiers="const"> - <return type="Vector2"> - </return> + <method name="set_render_target_update_mode"> + <argument index="0" name="mode" type="int"> + </argument> <description> - Get the mouse position, relative to the viewport. + Set when the render target should be updated, has to be one of the [code]RENDER_TARGET_UPDATE_*[/code] constants. </description> </method> - <method name="warp_mouse"> - <argument index="0" name="to_pos" type="Vector2"> + <method name="set_render_target_vflip"> + <argument index="0" name="enable" type="bool"> </argument> <description> - Wrap the mouse to a position, relative to the viewport. + Set whether the render target should be flipped on the Y axis. </description> </method> - <method name="gui_has_modal_stack" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_size_override"> + <argument index="0" name="enable" type="bool"> + </argument> + <argument index="1" name="size" type="Vector2" default="Vector2(-1,-1)"> + </argument> + <argument index="2" name="margin" type="Vector2" default="Vector2(0,0)"> + </argument> <description> - Returs whether there are shown modals on-screen. + Set the size of the viewport. If the enable parameter is true, it would use the override, otherwise it would use the default size. If the size parameter is equal to [code](-1, -1)[/code], it won't update the size. </description> </method> - <method name="gui_get_drag_data" qualifiers="const"> - <return type="Variant"> - </return> + <method name="set_size_override_stretch"> + <argument index="0" name="enabled" type="bool"> + </argument> <description> - Returs the drag data from the GUI, that was previously returned by [method Control.get_drag_data]. + Set whether the size override affects stretch as well. </description> </method> - <method name="set_disable_input"> - <argument index="0" name="disable" type="bool"> + <method name="set_transparent_background"> + <argument index="0" name="enable" type="bool"> </argument> <description> - Set whether input to the viewport is disabled. + If this viewport is a child of another viewport, keep the previously drawn background visible. </description> </method> - <method name="is_input_disabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_use_own_world"> + <argument index="0" name="enable" type="bool"> + </argument> <description> - Return whether input to the viewport is disabled. + Make the viewport use a world separate from the parent viewport's world. + </description> + </method> + <method name="set_world"> + <argument index="0" name="world" type="World"> + </argument> + <description> + Change the 3D world of the viewport. + </description> + </method> + <method name="unhandled_input"> + <argument index="0" name="local_event" type="InputEvent"> + </argument> + <description> + </description> + </method> + <method name="update_worlds"> + <description> + Force update of the 2D and 3D worlds. + </description> + </method> + <method name="warp_mouse"> + <argument index="0" name="to_pos" type="Vector2"> + </argument> + <description> + Wrap the mouse to a position, relative to the viewport. </description> </method> </methods> @@ -43659,25 +44103,25 @@ This method controls whether the position between two cached points is interpola Used to display a [Viewport] node at some position in the world, without having to mess with [RenderTargetTexture]s. </description> <methods> - <method name="set_viewport_path"> - <argument index="0" name="path" type="NodePath"> - </argument> + <method name="get_modulate" qualifiers="const"> + <return type="Color"> + </return> <description> - Set the path to the shown [Viewport] node. + Get color modulation for the texture. All texture pixels are multiplied by this color. </description> </method> - <method name="get_viewport_path" qualifiers="const"> - <return type="NodePath"> + <method name="get_offset" qualifiers="const"> + <return type="Vector2"> </return> <description> - Return the path to the shown [Viewport] node. + get the offset to the origin of the texture. </description> </method> - <method name="set_centered"> - <argument index="0" name="centered" type="bool"> - </argument> + <method name="get_viewport_path" qualifiers="const"> + <return type="NodePath"> + </return> <description> - Set whether the viewport's texture should be centered on the origin. + Return the path to the shown [Viewport] node. </description> </method> <method name="is_centered" qualifiers="const"> @@ -43687,18 +44131,11 @@ This method controls whether the position between two cached points is interpola Return whether the viewport's texture is centered on the origin. </description> </method> - <method name="set_offset"> - <argument index="0" name="offset" type="Vector2"> + <method name="set_centered"> + <argument index="0" name="centered" type="bool"> </argument> <description> - Set the offset to the origin of the texture. - </description> - </method> - <method name="get_offset" qualifiers="const"> - <return type="Vector2"> - </return> - <description> - get the offset to the origin of the texture. + Set whether the viewport's texture should be centered on the origin. </description> </method> <method name="set_modulate"> @@ -43708,11 +44145,18 @@ This method controls whether the position between two cached points is interpola Set color modulation for the texture. All texture pixels are multiplied by this color. Color may contain rgb values above 1 to achieve a highlight effect. </description> </method> - <method name="get_modulate" qualifiers="const"> - <return type="Color"> - </return> + <method name="set_offset"> + <argument index="0" name="offset" type="Vector2"> + </argument> <description> - Get color modulation for the texture. All texture pixels are multiplied by this color. + Set the offset to the origin of the texture. + </description> + </method> + <method name="set_viewport_path"> + <argument index="0" name="path" type="NodePath"> + </argument> + <description> + Set the path to the shown [Viewport] node. </description> </method> </methods> @@ -43727,32 +44171,32 @@ This method controls whether the position between two cached points is interpola The VisibilityEnabler will disable [RigidBody] and [AnimationPlayer] nodes when they are not visible. It will only affect other nodes within the same scene as the VisibilityEnabler itself. </description> <methods> - <method name="set_enabler"> + <method name="is_enabler_enabled" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="enabler" type="int"> </argument> - <argument index="1" name="enabled" type="bool"> - </argument> <description> - Set an enabler to true for all nodes of its type to be disabled when the VisibilityEnabler is not in view. See the constants for enablers and what they affect. + Returns whether the specified enabler was set to true or not. </description> </method> - <method name="is_enabler_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_enabler"> <argument index="0" name="enabler" type="int"> </argument> + <argument index="1" name="enabled" type="bool"> + </argument> <description> - Returns whether the specified enabler was set to true or not. + Set an enabler to true for all nodes of its type to be disabled when the VisibilityEnabler is not in view. See the constants for enablers and what they affect. </description> </method> </methods> <constants> - <constant name="ENABLER_FREEZE_BODIES" value="1"> - This enabler will freeze [RigidBody] nodes. - </constant> <constant name="ENABLER_PAUSE_ANIMATIONS" value="0"> This enabler will pause [AnimationPlayer] nodes. </constant> + <constant name="ENABLER_FREEZE_BODIES" value="1"> + This enabler will freeze [RigidBody] nodes. + </constant> <constant name="ENABLER_MAX" value="2"> </constant> </constants> @@ -43765,43 +44209,43 @@ This method controls whether the position between two cached points is interpola The VisibilityEnabler2D will disable [RigidBody2D], [AnimationPlayer], and other nodes when they are not visible. It will only affect other nodes within the same scene as the VisibilityEnabler2D itself. </description> <methods> - <method name="set_enabler"> + <method name="is_enabler_enabled" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="enabler" type="int"> </argument> - <argument index="1" name="enabled" type="bool"> - </argument> <description> - Set an enabler to true for all nodes of its type to be disabled when the VisibilityEnabler2D is not in view. See the constants for enablers and what they affect. + Returns whether the specified enabler was set to true or not. </description> </method> - <method name="is_enabler_enabled" qualifiers="const"> - <return type="bool"> - </return> + <method name="set_enabler"> <argument index="0" name="enabler" type="int"> </argument> + <argument index="1" name="enabled" type="bool"> + </argument> <description> - Returns whether the specified enabler was set to true or not. + Set an enabler to true for all nodes of its type to be disabled when the VisibilityEnabler2D is not in view. See the constants for enablers and what they affect. </description> </method> </methods> <constants> - <constant name="ENABLER_FREEZE_BODIES" value="1"> - This enabler will freeze [RigidBody2D] nodes. - </constant> <constant name="ENABLER_PAUSE_ANIMATIONS" value="0"> This enabler will pause [AnimationPlayer] nodes. </constant> + <constant name="ENABLER_FREEZE_BODIES" value="1"> + This enabler will freeze [RigidBody2D] nodes. + </constant> <constant name="ENABLER_PAUSE_PARTICLES" value="2"> This enabler will stop [Particles2D] nodes. </constant> - <constant name="ENABLER_PAUSE_ANIMATED_SPRITES" value="5"> - </constant> <constant name="ENABLER_PARENT_PROCESS" value="3"> This enabler will stop the parent's _process function. </constant> <constant name="ENABLER_PARENT_FIXED_PROCESS" value="4"> This enabler will stop the parent's _fixed_process function. </constant> + <constant name="ENABLER_PAUSE_ANIMATED_SPRITES" value="5"> + </constant> <constant name="ENABLER_MAX" value="6"> </constant> </constants> @@ -43814,13 +44258,6 @@ This method controls whether the position between two cached points is interpola The VisibilityNotifier is used to notify when its bounding box enters the screen, is visible on the screen, or when it exits the screen. </description> <methods> - <method name="set_aabb"> - <argument index="0" name="rect" type="AABB"> - </argument> - <description> - Set the visibility bounding box of the VisibilityNotifier. - </description> - </method> <method name="get_aabb" qualifiers="const"> <return type="AABB"> </return> @@ -43835,13 +44272,15 @@ This method controls whether the position between two cached points is interpola Return true if any part of the bounding box is on the screen. </description> </method> - </methods> - <signals> - <signal name="enter_screen"> + <method name="set_aabb"> + <argument index="0" name="rect" type="AABB"> + </argument> <description> - Emitted when the VisibilityNotifier enters the screen. + Set the visibility bounding box of the VisibilityNotifier. </description> - </signal> + </method> + </methods> + <signals> <signal name="enter_camera"> <argument index="0" name="camera" type="Object"> </argument> @@ -43849,9 +44288,9 @@ This method controls whether the position between two cached points is interpola Emitted when the VisibilityNotifier enters a [Camera]'s view. </description> </signal> - <signal name="exit_screen"> + <signal name="enter_screen"> <description> - Emitted when the VisibilityNotifier exits the screen. + Emitted when the VisibilityNotifier enters the screen. </description> </signal> <signal name="exit_camera"> @@ -43861,6 +44300,11 @@ This method controls whether the position between two cached points is interpola Emitted when the VisibilityNotifier exits a [Camera]'s view. </description> </signal> + <signal name="exit_screen"> + <description> + Emitted when the VisibilityNotifier exits the screen. + </description> + </signal> </signals> <constants> </constants> @@ -43873,13 +44317,6 @@ This method controls whether the position between two cached points is interpola The VisibilityNotifier2D is used to notify when its bounding rectangle enters the screen, is visible on the screen, or when it exits the screen. </description> <methods> - <method name="set_rect"> - <argument index="0" name="rect" type="Rect2"> - </argument> - <description> - Set the visibility bounding rectangle of the VisibilityNotifier2D. - </description> - </method> <method name="get_rect" qualifiers="const"> <return type="Rect2"> </return> @@ -43894,6 +44331,13 @@ This method controls whether the position between two cached points is interpola Return true if any part of the bounding rectangle is on the screen. </description> </method> + <method name="set_rect"> + <argument index="0" name="rect" type="Rect2"> + </argument> + <description> + Set the visibility bounding rectangle of the VisibilityNotifier2D. + </description> + </method> </methods> <signals> <signal name="enter_screen"> @@ -43930,6 +44374,12 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> + <method name="get_layer_mask" qualifiers="const"> + <return type="int"> + </return> + <description> + </description> + </method> <method name="set_base"> <argument index="0" name="base" type="RID"> </argument> @@ -43942,12 +44392,6 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_layer_mask" qualifiers="const"> - <return type="int"> - </return> - <description> - </description> - </method> </methods> <constants> </constants> @@ -43961,153 +44405,173 @@ This method controls whether the position between two cached points is interpola The visual server is completely opaque, the internals are entirely implementation specific and cannot be accessed. </description> <methods> - <method name="texture_create"> - <return type="RID"> - </return> - <description> - </description> - </method> - <method name="texture_create_from_image"> - <return type="RID"> - </return> - <argument index="0" name="arg0" type="Image"> + <method name="black_bars_set_images"> + <argument index="0" name="left" type="RID"> </argument> - <argument index="1" name="arg1" type="int" default="7"> + <argument index="1" name="top" type="RID"> + </argument> + <argument index="2" name="right" type="RID"> + </argument> + <argument index="3" name="bottom" type="RID"> </argument> <description> </description> </method> - <method name="texture_set_flags"> - <argument index="0" name="arg0" type="RID"> + <method name="black_bars_set_margins"> + <argument index="0" name="left" type="int"> </argument> - <argument index="1" name="arg1" type="int"> + <argument index="1" name="top" type="int"> + </argument> + <argument index="2" name="right" type="int"> + </argument> + <argument index="3" name="bottom" type="int"> </argument> <description> </description> </method> - <method name="texture_get_flags" qualifiers="const"> - <return type="int"> + <method name="camera_create"> + <return type="RID"> </return> - <argument index="0" name="arg0" type="RID"> - </argument> <description> </description> </method> - <method name="texture_get_width" qualifiers="const"> - <return type="int"> - </return> + <method name="camera_set_orthogonal"> <argument index="0" name="arg0" type="RID"> </argument> + <argument index="1" name="arg1" type="float"> + </argument> + <argument index="2" name="arg2" type="float"> + </argument> + <argument index="3" name="arg3" type="float"> + </argument> <description> </description> </method> - <method name="texture_get_height" qualifiers="const"> - <return type="int"> - </return> + <method name="camera_set_perspective"> <argument index="0" name="arg0" type="RID"> </argument> - <description> - </description> - </method> - <method name="texture_set_shrink_all_x2_on_set_data"> - <argument index="0" name="shrink" type="bool"> + <argument index="1" name="arg1" type="float"> </argument> - <description> - </description> - </method> - <method name="shader_create"> - <return type="RID"> - </return> - <argument index="0" name="mode" type="int" default="0"> + <argument index="2" name="arg2" type="float"> + </argument> + <argument index="3" name="arg3" type="float"> </argument> <description> </description> </method> - <method name="shader_set_mode"> - <argument index="0" name="shader" type="RID"> + <method name="camera_set_transform"> + <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="mode" type="int"> + <argument index="1" name="arg1" type="Transform"> </argument> <description> </description> </method> - <method name="material_create"> + <method name="canvas_create"> <return type="RID"> </return> <description> </description> </method> - <method name="material_set_shader"> - <argument index="0" name="shader" type="RID"> + <method name="canvas_item_add_circle"> + <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="RID"> + <argument index="1" name="arg1" type="Vector2"> + </argument> + <argument index="2" name="arg2" type="float"> + </argument> + <argument index="3" name="arg3" type="Color"> </argument> <description> </description> </method> - <method name="material_get_shader" qualifiers="const"> - <return type="RID"> - </return> + <method name="canvas_item_add_line"> <argument index="0" name="arg0" type="RID"> </argument> + <argument index="1" name="arg1" type="Vector2"> + </argument> + <argument index="2" name="arg2" type="Vector2"> + </argument> + <argument index="3" name="arg3" type="Color"> + </argument> + <argument index="4" name="arg4" type="float" default="1"> + </argument> <description> </description> </method> - <method name="material_set_param"> + <method name="canvas_item_add_rect"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="String"> + <argument index="1" name="arg1" type="Rect2"> </argument> - <argument index="2" name="arg2" type="Variant"> + <argument index="2" name="arg2" type="Color"> </argument> <description> </description> </method> - <method name="material_get_param" qualifiers="const"> + <method name="canvas_item_add_style_box"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="String"> + <argument index="1" name="arg1" type="Rect2"> + </argument> + <argument index="2" name="arg2" type="Rect2"> + </argument> + <argument index="3" name="arg3" type="RID"> + </argument> + <argument index="4" name="arg4" type="RealArray"> + </argument> + <argument index="5" name="arg5" type="Color" default="Color(1,1,1,1)"> </argument> <description> </description> </method> - <method name="material_set_flag"> + <method name="canvas_item_add_texture_rect"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> + <argument index="1" name="arg1" type="Rect2"> </argument> - <argument index="2" name="arg2" type="bool"> + <argument index="2" name="arg2" type="RID"> + </argument> + <argument index="3" name="arg3" type="bool"> + </argument> + <argument index="4" name="arg4" type="Color" default="Color(1,1,1,1)"> + </argument> + <argument index="5" name="arg5" type="bool" default="false"> </argument> <description> </description> </method> - <method name="material_get_flag" qualifiers="const"> - <return type="bool"> - </return> + <method name="canvas_item_add_texture_rect_region"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> + <argument index="1" name="arg1" type="Rect2"> + </argument> + <argument index="2" name="arg2" type="RID"> + </argument> + <argument index="3" name="arg3" type="Rect2"> + </argument> + <argument index="4" name="arg4" type="Color" default="Color(1,1,1,1)"> + </argument> + <argument index="5" name="arg5" type="bool" default="false"> </argument> <description> </description> </method> - <method name="material_set_blend_mode"> + <method name="canvas_item_clear"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> - </argument> <description> </description> </method> - <method name="material_get_blend_mode" qualifiers="const"> - <return type="int"> + <method name="canvas_item_create"> + <return type="RID"> </return> - <argument index="0" name="arg0" type="RID"> - </argument> <description> </description> </method> - <method name="material_set_line_width"> + <method name="canvas_item_get_opacity" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="arg0" type="RID"> </argument> <argument index="1" name="arg1" type="float"> @@ -44115,69 +44579,81 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="material_get_line_width" qualifiers="const"> - <return type="float"> + <method name="canvas_item_get_parent" qualifiers="const"> + <return type="RID"> </return> <argument index="0" name="arg0" type="RID"> </argument> <description> </description> </method> - <method name="mesh_create"> - <return type="RID"> + <method name="canvas_item_get_self_opacity" qualifiers="const"> + <return type="float"> </return> + <argument index="0" name="arg0" type="RID"> + </argument> + <argument index="1" name="arg1" type="float"> + </argument> <description> </description> </method> - <method name="mesh_add_surface"> + <method name="canvas_item_raise"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> + <description> + </description> + </method> + <method name="canvas_item_set_clip"> + <argument index="0" name="arg0" type="RID"> </argument> - <argument index="2" name="arg2" type="Array"> + <argument index="1" name="arg1" type="bool"> </argument> - <argument index="3" name="arg3" type="Array"> + <description> + </description> + </method> + <method name="canvas_item_set_custom_rect"> + <argument index="0" name="arg0" type="RID"> </argument> - <argument index="4" name="arg4" type="bool" default="-1"> + <argument index="1" name="arg1" type="bool"> + </argument> + <argument index="2" name="arg2" type="Rect2"> </argument> <description> </description> </method> - <method name="mesh_surface_set_material"> + <method name="canvas_item_set_opacity"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> + <argument index="1" name="arg1" type="float"> </argument> - <argument index="2" name="arg2" type="RID"> + <description> + </description> + </method> + <method name="canvas_item_set_parent"> + <argument index="0" name="arg0" type="RID"> </argument> - <argument index="3" name="arg3" type="bool" default="false"> + <argument index="1" name="arg1" type="RID"> </argument> <description> </description> </method> - <method name="mesh_surface_get_material" qualifiers="const"> - <return type="RID"> - </return> + <method name="canvas_item_set_self_opacity"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> + <argument index="1" name="arg1" type="float"> </argument> <description> </description> </method> - <method name="mesh_surface_get_array_len" qualifiers="const"> - <return type="int"> - </return> + <method name="canvas_item_set_transform"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> + <argument index="1" name="arg1" type="Matrix32"> </argument> <description> </description> </method> - <method name="mesh_surface_get_array_index_len" qualifiers="const"> - <return type="int"> - </return> + <method name="canvas_item_set_z"> <argument index="0" name="arg0" type="RID"> </argument> <argument index="1" name="arg1" type="int"> @@ -44185,137 +44661,119 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="mesh_surface_get_format" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="arg0" type="RID"> + <method name="cursor_set_pos"> + <argument index="0" name="arg0" type="Vector2"> </argument> <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="mesh_surface_get_primitive_type" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="arg0" type="RID"> + <method name="cursor_set_rotation"> + <argument index="0" name="arg0" type="float"> </argument> <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="mesh_remove_surface"> + <method name="cursor_set_texture"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> + <argument index="1" name="arg1" type="Vector2"> + </argument> + <argument index="2" name="arg2" type="int"> </argument> <description> </description> </method> - <method name="mesh_get_surface_count" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="arg0" type="RID"> + <method name="cursor_set_visible"> + <argument index="0" name="arg0" type="bool"> + </argument> + <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="multimesh_create"> - <return type="RID"> - </return> + <method name="draw"> <description> </description> </method> - <method name="multimesh_set_mesh"> + <method name="free_rid"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="RID"> - </argument> <description> </description> </method> - <method name="multimesh_set_aabb"> - <argument index="0" name="arg0" type="RID"> - </argument> - <argument index="1" name="arg1" type="AABB"> + <method name="get_render_info"> + <return type="int"> + </return> + <argument index="0" name="arg0" type="int"> </argument> <description> </description> </method> - <method name="multimesh_instance_set_transform"> + <method name="get_test_cube"> + <return type="RID"> + </return> + <description> + </description> + </method> + <method name="instance_attach_object_instance_ID"> <argument index="0" name="arg0" type="RID"> </argument> <argument index="1" name="arg1" type="int"> </argument> - <argument index="2" name="arg2" type="Transform"> - </argument> <description> </description> </method> - <method name="multimesh_instance_set_color"> + <method name="instance_attach_skeleton"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> - </argument> - <argument index="2" name="arg2" type="Color"> + <argument index="1" name="arg1" type="RID"> </argument> <description> </description> </method> - <method name="multimesh_get_mesh" qualifiers="const"> + <method name="instance_create"> <return type="RID"> </return> - <argument index="0" name="arg0" type="RID"> - </argument> <description> </description> </method> - <method name="multimesh_get_aabb" qualifiers="const"> - <return type="AABB"> + <method name="instance_geometry_get_material_param" qualifiers="const"> + <return type="RID"> </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="AABB"> - </argument> <description> </description> </method> - <method name="multimesh_instance_get_transform" qualifiers="const"> - <return type="Transform"> + <method name="instance_geometry_override_material_param" qualifiers="const"> + <return type="RID"> </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> - </argument> <description> </description> </method> - <method name="multimesh_instance_get_color" qualifiers="const"> - <return type="Color"> + <method name="instance_get_base" qualifiers="const"> + <return type="RID"> </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> - </argument> <description> </description> </method> - <method name="particles_create"> + <method name="instance_get_base_aabb" qualifiers="const"> <return type="RID"> </return> - <description> - </description> - </method> - <method name="particles_set_amount"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> - </argument> <description> </description> </method> - <method name="particles_get_amount" qualifiers="const"> + <method name="instance_get_object_instance_ID" qualifiers="const"> <return type="int"> </return> <argument index="0" name="arg0" type="RID"> @@ -44323,106 +44781,104 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="particles_set_emitting"> + <method name="instance_get_room" qualifiers="const"> + <return type="RID"> + </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="bool"> - </argument> <description> </description> </method> - <method name="particles_is_emitting" qualifiers="const"> - <return type="bool"> + <method name="instance_get_skeleton" qualifiers="const"> + <return type="RID"> </return> <argument index="0" name="arg0" type="RID"> </argument> <description> </description> </method> - <method name="particles_set_visibility_aabb"> + <method name="instance_get_transform" qualifiers="const"> + <return type="Transform"> + </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="AABB"> - </argument> <description> </description> </method> - <method name="particles_get_visibility_aabb" qualifiers="const"> - <return type="AABB"> + <method name="instance_is_exterior" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="arg0" type="RID"> </argument> <description> </description> </method> - <method name="particles_set_variable"> + <method name="instance_set_exterior"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> - </argument> - <argument index="2" name="arg2" type="float"> + <argument index="1" name="arg1" type="bool"> </argument> <description> </description> </method> - <method name="particles_get_variable" qualifiers="const"> - <return type="float"> - </return> + <method name="instance_set_room"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> + <argument index="1" name="arg1" type="RID"> </argument> <description> </description> </method> - <method name="particles_set_randomness"> + <method name="instance_set_transform"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> - </argument> - <argument index="2" name="arg2" type="float"> + <argument index="1" name="arg1" type="Transform"> </argument> <description> </description> </method> - <method name="particles_get_randomness" qualifiers="const"> - <return type="float"> + <method name="instances_cull_aabb" qualifiers="const"> + <return type="Array"> </return> - <argument index="0" name="arg0" type="RID"> + <argument index="0" name="arg0" type="AABB"> </argument> - <argument index="1" name="arg1" type="int"> + <argument index="1" name="arg1" type="RID"> </argument> <description> </description> </method> - <method name="particles_set_color_phases"> - <argument index="0" name="arg0" type="RID"> + <method name="instances_cull_convex" qualifiers="const"> + <return type="Array"> + </return> + <argument index="0" name="arg0" type="Array"> </argument> - <argument index="1" name="arg1" type="int"> + <argument index="1" name="arg1" type="RID"> </argument> <description> </description> </method> - <method name="particles_get_color_phases" qualifiers="const"> - <return type="int"> + <method name="instances_cull_ray" qualifiers="const"> + <return type="Array"> </return> - <argument index="0" name="arg0" type="RID"> + <argument index="0" name="arg0" type="Vector3"> + </argument> + <argument index="1" name="arg1" type="Vector3"> + </argument> + <argument index="2" name="arg2" type="RID"> </argument> <description> </description> </method> - <method name="particles_set_color_phase_pos"> - <argument index="0" name="arg0" type="RID"> - </argument> - <argument index="1" name="arg1" type="int"> - </argument> - <argument index="2" name="arg2" type="float"> + <method name="light_create"> + <return type="RID"> + </return> + <argument index="0" name="arg0" type="int"> </argument> <description> </description> </method> - <method name="particles_get_color_phase_pos" qualifiers="const"> - <return type="float"> + <method name="light_get_color" qualifiers="const"> + <return type="Color"> </return> <argument index="0" name="arg0" type="RID"> </argument> @@ -44431,27 +44887,25 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="particles_set_color_phase_color"> + <method name="light_get_projector" qualifiers="const"> + <return type="RID"> + </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> - </argument> - <argument index="2" name="arg2" type="Color"> - </argument> <description> </description> </method> - <method name="particles_get_color_phase_color" qualifiers="const"> - <return type="Color"> + <method name="light_get_type" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> - </argument> <description> </description> </method> - <method name="particles_set_attractors"> + <method name="light_get_var" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="arg0" type="RID"> </argument> <argument index="1" name="arg1" type="int"> @@ -44459,65 +44913,59 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="particles_get_attractors" qualifiers="const"> - <return type="int"> + <method name="light_has_shadow" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="arg0" type="RID"> </argument> <description> </description> </method> - <method name="particles_set_attractor_pos"> + <method name="light_is_volumetric" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> - </argument> - <argument index="2" name="arg2" type="Vector3"> - </argument> <description> </description> </method> - <method name="particles_get_attractor_pos" qualifiers="const"> - <return type="Vector3"> - </return> + <method name="light_set_color"> <argument index="0" name="arg0" type="RID"> </argument> <argument index="1" name="arg1" type="int"> </argument> + <argument index="2" name="arg2" type="Color"> + </argument> <description> </description> </method> - <method name="particles_set_attractor_strength"> + <method name="light_set_projector"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> - </argument> - <argument index="2" name="arg2" type="float"> + <argument index="1" name="arg1" type="RID"> </argument> <description> </description> </method> - <method name="particles_get_attractor_strength" qualifiers="const"> - <return type="float"> - </return> + <method name="light_set_shadow"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> + <argument index="1" name="arg1" type="bool"> </argument> <description> </description> </method> - <method name="particles_set_material"> + <method name="light_set_var"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="RID"> + <argument index="1" name="arg1" type="int"> </argument> - <argument index="2" name="arg2" type="bool" default="false"> + <argument index="2" name="arg2" type="float"> </argument> <description> </description> </method> - <method name="particles_set_height_from_velocity"> + <method name="light_set_volumetric"> <argument index="0" name="arg0" type="RID"> </argument> <argument index="1" name="arg1" type="bool"> @@ -44525,23 +44973,25 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="particles_has_height_from_velocity" qualifiers="const"> - <return type="bool"> + <method name="make_sphere_mesh"> + <return type="RID"> </return> - <argument index="0" name="arg0" type="RID"> + <argument index="0" name="arg0" type="int"> + </argument> + <argument index="1" name="arg1" type="int"> + </argument> + <argument index="2" name="arg2" type="float"> </argument> <description> </description> </method> - <method name="light_create"> + <method name="material_create"> <return type="RID"> </return> - <argument index="0" name="arg0" type="int"> - </argument> <description> </description> </method> - <method name="light_get_type" qualifiers="const"> + <method name="material_get_blend_mode" qualifiers="const"> <return type="int"> </return> <argument index="0" name="arg0" type="RID"> @@ -44549,109 +44999,113 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="light_set_color"> + <method name="material_get_flag" qualifiers="const"> + <return type="bool"> + </return> <argument index="0" name="arg0" type="RID"> </argument> <argument index="1" name="arg1" type="int"> </argument> - <argument index="2" name="arg2" type="Color"> - </argument> <description> </description> </method> - <method name="light_get_color" qualifiers="const"> - <return type="Color"> + <method name="material_get_line_width" qualifiers="const"> + <return type="float"> </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> - </argument> <description> </description> </method> - <method name="light_set_shadow"> + <method name="material_get_param" qualifiers="const"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="bool"> + <argument index="1" name="arg1" type="String"> </argument> <description> </description> </method> - <method name="light_has_shadow" qualifiers="const"> - <return type="bool"> + <method name="material_get_shader" qualifiers="const"> + <return type="RID"> </return> <argument index="0" name="arg0" type="RID"> </argument> <description> </description> </method> - <method name="light_set_volumetric"> + <method name="material_set_blend_mode"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="bool"> + <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="light_is_volumetric" qualifiers="const"> - <return type="bool"> - </return> + <method name="material_set_flag"> <argument index="0" name="arg0" type="RID"> </argument> + <argument index="1" name="arg1" type="int"> + </argument> + <argument index="2" name="arg2" type="bool"> + </argument> <description> </description> </method> - <method name="light_set_projector"> + <method name="material_set_line_width"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="RID"> + <argument index="1" name="arg1" type="float"> </argument> <description> </description> </method> - <method name="light_get_projector" qualifiers="const"> - <return type="RID"> - </return> + <method name="material_set_param"> <argument index="0" name="arg0" type="RID"> </argument> + <argument index="1" name="arg1" type="String"> + </argument> + <argument index="2" name="arg2" type="Variant"> + </argument> <description> </description> </method> - <method name="light_set_var"> + <method name="material_set_shader"> + <argument index="0" name="shader" type="RID"> + </argument> + <argument index="1" name="arg1" type="RID"> + </argument> + <description> + </description> + </method> + <method name="mesh_add_surface"> <argument index="0" name="arg0" type="RID"> </argument> <argument index="1" name="arg1" type="int"> </argument> - <argument index="2" name="arg2" type="float"> + <argument index="2" name="arg2" type="Array"> + </argument> + <argument index="3" name="arg3" type="Array"> + </argument> + <argument index="4" name="arg4" type="bool" default="-1"> </argument> <description> </description> </method> - <method name="light_get_var" qualifiers="const"> - <return type="float"> - </return> + <method name="mesh_add_surface_from_planes"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> + <argument index="1" name="arg1" type="Array"> </argument> <description> </description> </method> - <method name="skeleton_create"> + <method name="mesh_create"> <return type="RID"> </return> <description> </description> </method> - <method name="skeleton_resize"> - <argument index="0" name="arg0" type="RID"> - </argument> - <argument index="1" name="arg1" type="int"> - </argument> - <description> - </description> - </method> - <method name="skeleton_get_bone_count" qualifiers="const"> + <method name="mesh_get_surface_count" qualifiers="const"> <return type="int"> </return> <argument index="0" name="arg0" type="RID"> @@ -44659,18 +45113,16 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="skeleton_bone_set_transform"> + <method name="mesh_remove_surface"> <argument index="0" name="arg0" type="RID"> </argument> <argument index="1" name="arg1" type="int"> </argument> - <argument index="2" name="arg2" type="Transform"> - </argument> <description> </description> </method> - <method name="skeleton_bone_get_transform"> - <return type="Transform"> + <method name="mesh_surface_get_array_index_len" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="arg0" type="RID"> </argument> @@ -44679,213 +45131,221 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="room_create"> - <return type="RID"> + <method name="mesh_surface_get_array_len" qualifiers="const"> + <return type="int"> </return> - <description> - </description> - </method> - <method name="room_set_bounds"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="Dictionary"> + <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="room_get_bounds" qualifiers="const"> - <return type="Dictionary"> + <method name="mesh_surface_get_format" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="arg0" type="RID"> </argument> + <argument index="1" name="arg1" type="int"> + </argument> <description> </description> </method> - <method name="portal_create"> + <method name="mesh_surface_get_material" qualifiers="const"> <return type="RID"> </return> - <description> - </description> - </method> - <method name="portal_set_shape"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="Vector2Array"> + <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="portal_get_shape" qualifiers="const"> - <return type="Vector2Array"> + <method name="mesh_surface_get_primitive_type" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="arg0" type="RID"> </argument> + <argument index="1" name="arg1" type="int"> + </argument> <description> </description> </method> - <method name="portal_set_enabled"> + <method name="mesh_surface_set_material"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="bool"> + <argument index="1" name="arg1" type="int"> + </argument> + <argument index="2" name="arg2" type="RID"> + </argument> + <argument index="3" name="arg3" type="bool" default="false"> </argument> <description> </description> </method> - <method name="portal_is_enabled" qualifiers="const"> - <return type="bool"> + <method name="multimesh_create"> + <return type="RID"> </return> - <argument index="0" name="arg0" type="RID"> - </argument> <description> </description> </method> - <method name="portal_set_disable_distance"> + <method name="multimesh_get_aabb" qualifiers="const"> + <return type="AABB"> + </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="float"> + <argument index="1" name="arg1" type="AABB"> </argument> <description> </description> </method> - <method name="portal_get_disable_distance" qualifiers="const"> - <return type="float"> + <method name="multimesh_get_mesh" qualifiers="const"> + <return type="RID"> </return> <argument index="0" name="arg0" type="RID"> </argument> <description> </description> </method> - <method name="portal_set_disabled_color"> + <method name="multimesh_instance_get_color" qualifiers="const"> + <return type="Color"> + </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="Color"> + <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="portal_get_disabled_color" qualifiers="const"> - <return type="Color"> + <method name="multimesh_instance_get_transform" qualifiers="const"> + <return type="Transform"> </return> <argument index="0" name="arg0" type="RID"> </argument> + <argument index="1" name="arg1" type="int"> + </argument> <description> </description> </method> - <method name="camera_create"> - <return type="RID"> - </return> + <method name="multimesh_instance_set_color"> + <argument index="0" name="arg0" type="RID"> + </argument> + <argument index="1" name="arg1" type="int"> + </argument> + <argument index="2" name="arg2" type="Color"> + </argument> <description> </description> </method> - <method name="camera_set_perspective"> + <method name="multimesh_instance_set_transform"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="float"> - </argument> - <argument index="2" name="arg2" type="float"> + <argument index="1" name="arg1" type="int"> </argument> - <argument index="3" name="arg3" type="float"> + <argument index="2" name="arg2" type="Transform"> </argument> <description> </description> </method> - <method name="camera_set_orthogonal"> + <method name="multimesh_set_aabb"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="float"> - </argument> - <argument index="2" name="arg2" type="float"> - </argument> - <argument index="3" name="arg3" type="float"> + <argument index="1" name="arg1" type="AABB"> </argument> <description> </description> </method> - <method name="camera_set_transform"> + <method name="multimesh_set_mesh"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="Transform"> + <argument index="1" name="arg1" type="RID"> </argument> <description> </description> </method> - <method name="viewport_create"> + <method name="particles_create"> <return type="RID"> </return> <description> </description> </method> - <method name="viewport_set_rect"> + <method name="particles_get_amount" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="Rect2"> - </argument> <description> </description> </method> - <method name="viewport_get_rect" qualifiers="const"> - <return type="Rect2"> + <method name="particles_get_attractor_pos" qualifiers="const"> + <return type="Vector3"> </return> <argument index="0" name="arg0" type="RID"> </argument> + <argument index="1" name="arg1" type="int"> + </argument> <description> </description> </method> - <method name="viewport_attach_camera"> + <method name="particles_get_attractor_strength" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="RID" default="RID()"> + <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="viewport_get_attached_camera" qualifiers="const"> - <return type="RID"> + <method name="particles_get_attractors" qualifiers="const"> + <return type="int"> </return> <argument index="0" name="arg0" type="RID"> </argument> <description> </description> </method> - <method name="viewport_get_scenario" qualifiers="const"> - <return type="RID"> + <method name="particles_get_color_phase_color" qualifiers="const"> + <return type="Color"> </return> <argument index="0" name="arg0" type="RID"> </argument> + <argument index="1" name="arg1" type="int"> + </argument> <description> </description> </method> - <method name="viewport_attach_canvas"> + <method name="particles_get_color_phase_pos" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="RID"> + <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="viewport_remove_canvas"> + <method name="particles_get_color_phases" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="RID"> - </argument> <description> </description> </method> - <method name="viewport_set_global_canvas_transform"> + <method name="particles_get_randomness" qualifiers="const"> + <return type="float"> + </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="Matrix32"> + <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="scenario_create"> - <return type="RID"> + <method name="particles_get_variable" qualifiers="const"> + <return type="float"> </return> - <description> - </description> - </method> - <method name="scenario_set_debug"> <argument index="0" name="arg0" type="RID"> </argument> <argument index="1" name="arg1" type="int"> @@ -44893,93 +45353,95 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="instance_create"> - <return type="RID"> + <method name="particles_get_visibility_aabb" qualifiers="const"> + <return type="AABB"> </return> + <argument index="0" name="arg0" type="RID"> + </argument> <description> </description> </method> - <method name="instance_get_base" qualifiers="const"> - <return type="RID"> + <method name="particles_has_height_from_velocity" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="arg0" type="RID"> </argument> <description> </description> </method> - <method name="instance_get_base_aabb" qualifiers="const"> - <return type="RID"> + <method name="particles_is_emitting" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="arg0" type="RID"> </argument> <description> </description> </method> - <method name="instance_set_transform"> + <method name="particles_set_amount"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="Transform"> + <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="instance_get_transform" qualifiers="const"> - <return type="Transform"> - </return> + <method name="particles_set_attractor_pos"> <argument index="0" name="arg0" type="RID"> </argument> + <argument index="1" name="arg1" type="int"> + </argument> + <argument index="2" name="arg2" type="Vector3"> + </argument> <description> </description> </method> - <method name="instance_attach_object_instance_ID"> + <method name="particles_set_attractor_strength"> <argument index="0" name="arg0" type="RID"> </argument> <argument index="1" name="arg1" type="int"> </argument> - <description> - </description> - </method> - <method name="instance_get_object_instance_ID" qualifiers="const"> - <return type="int"> - </return> - <argument index="0" name="arg0" type="RID"> + <argument index="2" name="arg2" type="float"> </argument> <description> </description> </method> - <method name="instance_attach_skeleton"> + <method name="particles_set_attractors"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="RID"> + <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="instance_get_skeleton" qualifiers="const"> - <return type="RID"> - </return> + <method name="particles_set_color_phase_color"> <argument index="0" name="arg0" type="RID"> </argument> + <argument index="1" name="arg1" type="int"> + </argument> + <argument index="2" name="arg2" type="Color"> + </argument> <description> </description> </method> - <method name="instance_set_room"> + <method name="particles_set_color_phase_pos"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="RID"> + <argument index="1" name="arg1" type="int"> + </argument> + <argument index="2" name="arg2" type="float"> </argument> <description> </description> </method> - <method name="instance_get_room" qualifiers="const"> - <return type="RID"> - </return> + <method name="particles_set_color_phases"> <argument index="0" name="arg0" type="RID"> </argument> + <argument index="1" name="arg1" type="int"> + </argument> <description> </description> </method> - <method name="instance_set_exterior"> + <method name="particles_set_emitting"> <argument index="0" name="arg0" type="RID"> </argument> <argument index="1" name="arg1" type="bool"> @@ -44987,115 +45449,107 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="instance_is_exterior" qualifiers="const"> - <return type="bool"> - </return> + <method name="particles_set_height_from_velocity"> <argument index="0" name="arg0" type="RID"> </argument> + <argument index="1" name="arg1" type="bool"> + </argument> <description> </description> </method> - <method name="instances_cull_aabb" qualifiers="const"> - <return type="Array"> - </return> - <argument index="0" name="arg0" type="AABB"> + <method name="particles_set_material"> + <argument index="0" name="arg0" type="RID"> </argument> <argument index="1" name="arg1" type="RID"> </argument> + <argument index="2" name="arg2" type="bool" default="false"> + </argument> <description> </description> </method> - <method name="instances_cull_ray" qualifiers="const"> - <return type="Array"> - </return> - <argument index="0" name="arg0" type="Vector3"> + <method name="particles_set_randomness"> + <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="Vector3"> + <argument index="1" name="arg1" type="int"> </argument> - <argument index="2" name="arg2" type="RID"> + <argument index="2" name="arg2" type="float"> </argument> <description> </description> </method> - <method name="instances_cull_convex" qualifiers="const"> - <return type="Array"> - </return> - <argument index="0" name="arg0" type="Array"> + <method name="particles_set_variable"> + <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="RID"> + <argument index="1" name="arg1" type="int"> </argument> - <description> - </description> - </method> - <method name="instance_geometry_override_material_param" qualifiers="const"> - <return type="RID"> - </return> - <argument index="0" name="arg0" type="RID"> + <argument index="2" name="arg2" type="float"> </argument> <description> </description> </method> - <method name="instance_geometry_get_material_param" qualifiers="const"> - <return type="RID"> - </return> + <method name="particles_set_visibility_aabb"> <argument index="0" name="arg0" type="RID"> </argument> + <argument index="1" name="arg1" type="AABB"> + </argument> <description> </description> </method> - <method name="get_test_cube"> + <method name="portal_create"> <return type="RID"> </return> <description> </description> </method> - <method name="canvas_create"> - <return type="RID"> + <method name="portal_get_disable_distance" qualifiers="const"> + <return type="float"> </return> + <argument index="0" name="arg0" type="RID"> + </argument> <description> </description> </method> - <method name="canvas_item_create"> - <return type="RID"> + <method name="portal_get_disabled_color" qualifiers="const"> + <return type="Color"> </return> + <argument index="0" name="arg0" type="RID"> + </argument> <description> </description> </method> - <method name="canvas_item_set_parent"> + <method name="portal_get_shape" qualifiers="const"> + <return type="Vector2Array"> + </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="RID"> - </argument> <description> </description> </method> - <method name="canvas_item_get_parent" qualifiers="const"> - <return type="RID"> + <method name="portal_is_enabled" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="arg0" type="RID"> </argument> <description> </description> </method> - <method name="canvas_item_set_transform"> + <method name="portal_set_disable_distance"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="Matrix32"> + <argument index="1" name="arg1" type="float"> </argument> <description> </description> </method> - <method name="canvas_item_set_custom_rect"> + <method name="portal_set_disabled_color"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="bool"> - </argument> - <argument index="2" name="arg2" type="Rect2"> + <argument index="1" name="arg1" type="Color"> </argument> <description> </description> </method> - <method name="canvas_item_set_clip"> + <method name="portal_set_enabled"> <argument index="0" name="arg0" type="RID"> </argument> <argument index="1" name="arg1" type="bool"> @@ -45103,43 +45557,43 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="canvas_item_set_opacity"> + <method name="portal_set_shape"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="float"> + <argument index="1" name="arg1" type="Vector2Array"> </argument> <description> </description> </method> - <method name="canvas_item_get_opacity" qualifiers="const"> - <return type="float"> + <method name="room_create"> + <return type="RID"> + </return> + <description> + </description> + </method> + <method name="room_get_bounds" qualifiers="const"> + <return type="Dictionary"> </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="float"> - </argument> <description> </description> </method> - <method name="canvas_item_set_self_opacity"> + <method name="room_set_bounds"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="float"> + <argument index="1" name="arg1" type="Dictionary"> </argument> <description> </description> </method> - <method name="canvas_item_get_self_opacity" qualifiers="const"> - <return type="float"> + <method name="scenario_create"> + <return type="RID"> </return> - <argument index="0" name="arg0" type="RID"> - </argument> - <argument index="1" name="arg1" type="float"> - </argument> <description> </description> </method> - <method name="canvas_item_set_z"> + <method name="scenario_set_debug"> <argument index="0" name="arg0" type="RID"> </argument> <argument index="1" name="arg1" type="int"> @@ -45147,286 +45601,276 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="canvas_item_add_line"> - <argument index="0" name="arg0" type="RID"> - </argument> - <argument index="1" name="arg1" type="Vector2"> - </argument> - <argument index="2" name="arg2" type="Vector2"> - </argument> - <argument index="3" name="arg3" type="Color"> - </argument> - <argument index="4" name="arg4" type="float" default="1"> + <method name="set_default_clear_color"> + <argument index="0" name="arg0" type="Color"> </argument> <description> </description> </method> - <method name="canvas_item_add_rect"> - <argument index="0" name="arg0" type="RID"> + <method name="shader_create"> + <return type="RID"> + </return> + <argument index="0" name="mode" type="int" default="0"> </argument> - <argument index="1" name="arg1" type="Rect2"> + <description> + </description> + </method> + <method name="shader_set_mode"> + <argument index="0" name="shader" type="RID"> </argument> - <argument index="2" name="arg2" type="Color"> + <argument index="1" name="mode" type="int"> </argument> <description> </description> </method> - <method name="canvas_item_add_texture_rect"> + <method name="skeleton_bone_get_transform"> + <return type="Transform"> + </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="Rect2"> - </argument> - <argument index="2" name="arg2" type="RID"> - </argument> - <argument index="3" name="arg3" type="bool"> - </argument> - <argument index="4" name="arg4" type="Color" default="Color(1,1,1,1)"> - </argument> - <argument index="5" name="arg5" type="bool" default="false"> + <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="canvas_item_add_texture_rect_region"> + <method name="skeleton_bone_set_transform"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="Rect2"> - </argument> - <argument index="2" name="arg2" type="RID"> - </argument> - <argument index="3" name="arg3" type="Rect2"> - </argument> - <argument index="4" name="arg4" type="Color" default="Color(1,1,1,1)"> + <argument index="1" name="arg1" type="int"> </argument> - <argument index="5" name="arg5" type="bool" default="false"> + <argument index="2" name="arg2" type="Transform"> </argument> <description> </description> </method> - <method name="canvas_item_add_style_box"> + <method name="skeleton_create"> + <return type="RID"> + </return> + <description> + </description> + </method> + <method name="skeleton_get_bone_count" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="Rect2"> - </argument> - <argument index="2" name="arg2" type="Rect2"> - </argument> - <argument index="3" name="arg3" type="RID"> - </argument> - <argument index="4" name="arg4" type="RealArray"> - </argument> - <argument index="5" name="arg5" type="Color" default="Color(1,1,1,1)"> - </argument> <description> </description> </method> - <method name="canvas_item_add_circle"> + <method name="skeleton_resize"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="Vector2"> - </argument> - <argument index="2" name="arg2" type="float"> - </argument> - <argument index="3" name="arg3" type="Color"> + <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="viewport_set_canvas_transform"> - <argument index="0" name="arg0" type="RID"> - </argument> - <argument index="1" name="arg1" type="RID"> + <method name="sync"> + <description> + </description> + </method> + <method name="texture_create"> + <return type="RID"> + </return> + <description> + </description> + </method> + <method name="texture_create_from_image"> + <return type="RID"> + </return> + <argument index="0" name="arg0" type="Image"> </argument> - <argument index="2" name="arg2" type="Matrix32"> + <argument index="1" name="arg1" type="int" default="7"> </argument> <description> </description> </method> - <method name="canvas_item_clear"> + <method name="texture_get_flags" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="arg0" type="RID"> </argument> <description> </description> </method> - <method name="canvas_item_raise"> + <method name="texture_get_height" qualifiers="const"> + <return type="int"> + </return> <argument index="0" name="arg0" type="RID"> </argument> <description> </description> </method> - <method name="cursor_set_rotation"> - <argument index="0" name="arg0" type="float"> - </argument> - <argument index="1" name="arg1" type="int"> + <method name="texture_get_width" qualifiers="const"> + <return type="int"> + </return> + <argument index="0" name="arg0" type="RID"> </argument> <description> </description> </method> - <method name="cursor_set_texture"> + <method name="texture_set_flags"> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="Vector2"> - </argument> - <argument index="2" name="arg2" type="int"> + <argument index="1" name="arg1" type="int"> </argument> <description> </description> </method> - <method name="cursor_set_visible"> - <argument index="0" name="arg0" type="bool"> - </argument> - <argument index="1" name="arg1" type="int"> + <method name="texture_set_shrink_all_x2_on_set_data"> + <argument index="0" name="shrink" type="bool"> </argument> <description> </description> </method> - <method name="cursor_set_pos"> - <argument index="0" name="arg0" type="Vector2"> + <method name="viewport_attach_camera"> + <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="int"> + <argument index="1" name="arg1" type="RID" default="RID()"> </argument> <description> </description> </method> - <method name="black_bars_set_margins"> - <argument index="0" name="left" type="int"> - </argument> - <argument index="1" name="top" type="int"> - </argument> - <argument index="2" name="right" type="int"> + <method name="viewport_attach_canvas"> + <argument index="0" name="arg0" type="RID"> </argument> - <argument index="3" name="bottom" type="int"> + <argument index="1" name="arg1" type="RID"> </argument> <description> </description> </method> - <method name="black_bars_set_images"> - <argument index="0" name="left" type="RID"> - </argument> - <argument index="1" name="top" type="RID"> - </argument> - <argument index="2" name="right" type="RID"> - </argument> - <argument index="3" name="bottom" type="RID"> - </argument> + <method name="viewport_create"> + <return type="RID"> + </return> <description> </description> </method> - <method name="make_sphere_mesh"> + <method name="viewport_get_attached_camera" qualifiers="const"> <return type="RID"> </return> - <argument index="0" name="arg0" type="int"> - </argument> - <argument index="1" name="arg1" type="int"> - </argument> - <argument index="2" name="arg2" type="float"> + <argument index="0" name="arg0" type="RID"> </argument> <description> </description> </method> - <method name="mesh_add_surface_from_planes"> + <method name="viewport_get_rect" qualifiers="const"> + <return type="Rect2"> + </return> <argument index="0" name="arg0" type="RID"> </argument> - <argument index="1" name="arg1" type="Array"> - </argument> <description> </description> </method> - <method name="draw"> + <method name="viewport_get_scenario" qualifiers="const"> + <return type="RID"> + </return> + <argument index="0" name="arg0" type="RID"> + </argument> <description> </description> </method> - <method name="sync"> + <method name="viewport_remove_canvas"> + <argument index="0" name="arg0" type="RID"> + </argument> + <argument index="1" name="arg1" type="RID"> + </argument> <description> </description> </method> - <method name="free"> + <method name="viewport_set_canvas_transform"> <argument index="0" name="arg0" type="RID"> </argument> + <argument index="1" name="arg1" type="RID"> + </argument> + <argument index="2" name="arg2" type="Matrix32"> + </argument> <description> </description> </method> - <method name="set_default_clear_color"> - <argument index="0" name="arg0" type="Color"> + <method name="viewport_set_global_canvas_transform"> + <argument index="0" name="arg0" type="RID"> + </argument> + <argument index="1" name="arg1" type="Matrix32"> </argument> <description> </description> </method> - <method name="get_render_info"> - <return type="int"> - </return> - <argument index="0" name="arg0" type="int"> + <method name="viewport_set_rect"> + <argument index="0" name="arg0" type="RID"> + </argument> + <argument index="1" name="arg1" type="Rect2"> </argument> <description> </description> </method> </methods> <constants> - <constant name="NO_INDEX_ARRAY" value="-1"> - </constant> - <constant name="CUSTOM_ARRAY_SIZE" value="8"> - </constant> - <constant name="ARRAY_WEIGHTS_SIZE" value="4"> - </constant> - <constant name="MAX_PARTICLE_COLOR_PHASES" value="4"> - </constant> - <constant name="MAX_PARTICLE_ATTRACTORS" value="4"> + <constant name="ARRAY_VERTEX" value="0"> </constant> - <constant name="MAX_CURSORS" value="8"> + <constant name="ARRAY_FORMAT_VERTEX" value="1"> </constant> - <constant name="TEXTURE_FLAG_MIPMAPS" value="1"> + <constant name="ARRAY_NORMAL" value="1"> </constant> - <constant name="TEXTURE_FLAG_REPEAT" value="2"> + <constant name="ARRAY_FORMAT_WEIGHTS" value="128"> </constant> - <constant name="TEXTURE_FLAG_FILTER" value="4"> + <constant name="ARRAY_FORMAT_TEX_UV" value="16"> </constant> - <constant name="TEXTURE_FLAG_CUBEMAP" value="2048"> + <constant name="ARRAY_FORMAT_NORMAL" value="2"> </constant> - <constant name="TEXTURE_FLAGS_DEFAULT" value="7"> + <constant name="ARRAY_TANGENT" value="2"> </constant> - <constant name="CUBEMAP_LEFT" value="0"> + <constant name="ARRAY_FORMAT_INDEX" value="256"> </constant> - <constant name="CUBEMAP_RIGHT" value="1"> + <constant name="ARRAY_COLOR" value="3"> </constant> - <constant name="CUBEMAP_BOTTOM" value="2"> + <constant name="ARRAY_FORMAT_TANGENT" value="4"> </constant> - <constant name="CUBEMAP_TOP" value="3"> + <constant name="ARRAY_TEX_UV" value="4"> </constant> - <constant name="CUBEMAP_FRONT" value="4"> + <constant name="ARRAY_WEIGHTS_SIZE" value="4"> </constant> - <constant name="CUBEMAP_BACK" value="5"> + <constant name="ARRAY_BONES" value="6"> </constant> - <constant name="SHADER_MATERIAL" value="0"> + <constant name="ARRAY_FORMAT_BONES" value="64"> </constant> - <constant name="SHADER_POST_PROCESS" value="2"> + <constant name="ARRAY_WEIGHTS" value="7"> </constant> - <constant name="MATERIAL_FLAG_VISIBLE" value="0"> + <constant name="ARRAY_FORMAT_COLOR" value="8"> </constant> - <constant name="MATERIAL_FLAG_DOUBLE_SIDED" value="1"> + <constant name="ARRAY_INDEX" value="8"> </constant> - <constant name="MATERIAL_FLAG_INVERT_FACES" value="2"> + <constant name="ARRAY_MAX" value="9"> </constant> - <constant name="MATERIAL_FLAG_UNSHADED" value="3"> + <constant name="CUBEMAP_LEFT" value="0"> </constant> - <constant name="MATERIAL_FLAG_ONTOP" value="4"> + <constant name="CUBEMAP_RIGHT" value="1"> </constant> - <constant name="MATERIAL_FLAG_MAX" value="7"> + <constant name="CUBEMAP_BOTTOM" value="2"> </constant> - <constant name="MATERIAL_BLEND_MODE_MIX" value="0"> + <constant name="CUBEMAP_TOP" value="3"> </constant> - <constant name="MATERIAL_BLEND_MODE_ADD" value="1"> + <constant name="CUBEMAP_FRONT" value="4"> </constant> - <constant name="MATERIAL_BLEND_MODE_SUB" value="2"> + <constant name="CUBEMAP_BACK" value="5"> </constant> - <constant name="MATERIAL_BLEND_MODE_MUL" value="3"> + <constant name="CUSTOM_ARRAY_SIZE" value="8"> </constant> <constant name="FIXED_MATERIAL_PARAM_DIFFUSE" value="0"> </constant> + <constant name="FIXED_MATERIAL_TEXCOORD_UV" value="0"> + </constant> <constant name="FIXED_MATERIAL_PARAM_DETAIL" value="1"> </constant> + <constant name="FIXED_MATERIAL_TEXCOORD_UV_TRANSFORM" value="1"> + </constant> <constant name="FIXED_MATERIAL_PARAM_SPECULAR" value="2"> </constant> + <constant name="FIXED_MATERIAL_TEXCOORD_UV2" value="2"> + </constant> <constant name="FIXED_MATERIAL_PARAM_EMISSION" value="3"> </constant> + <constant name="FIXED_MATERIAL_TEXCOORD_SPHERE" value="3"> + </constant> <constant name="FIXED_MATERIAL_PARAM_SPECULAR_EXP" value="4"> </constant> <constant name="FIXED_MATERIAL_PARAM_GLOW" value="5"> @@ -45437,153 +45881,153 @@ This method controls whether the position between two cached points is interpola </constant> <constant name="FIXED_MATERIAL_PARAM_MAX" value="8"> </constant> - <constant name="FIXED_MATERIAL_TEXCOORD_SPHERE" value="3"> + <constant name="INFO_OBJECTS_IN_FRAME" value="0"> </constant> - <constant name="FIXED_MATERIAL_TEXCOORD_UV" value="0"> + <constant name="INFO_VERTICES_IN_FRAME" value="1"> </constant> - <constant name="FIXED_MATERIAL_TEXCOORD_UV_TRANSFORM" value="1"> + <constant name="INFO_MATERIAL_CHANGES_IN_FRAME" value="2"> </constant> - <constant name="FIXED_MATERIAL_TEXCOORD_UV2" value="2"> + <constant name="INFO_SHADER_CHANGES_IN_FRAME" value="3"> </constant> - <constant name="ARRAY_VERTEX" value="0"> + <constant name="INFO_SURFACE_CHANGES_IN_FRAME" value="4"> </constant> - <constant name="ARRAY_NORMAL" value="1"> + <constant name="INFO_DRAW_CALLS_IN_FRAME" value="5"> </constant> - <constant name="ARRAY_TANGENT" value="2"> + <constant name="INFO_USAGE_VIDEO_MEM_TOTAL" value="6"> </constant> - <constant name="ARRAY_COLOR" value="3"> + <constant name="INFO_VIDEO_MEM_USED" value="7"> </constant> - <constant name="ARRAY_TEX_UV" value="4"> + <constant name="INFO_TEXTURE_MEM_USED" value="8"> </constant> - <constant name="ARRAY_BONES" value="6"> + <constant name="INFO_VERTEX_MEM_USED" value="9"> </constant> - <constant name="ARRAY_WEIGHTS" value="7"> + <constant name="INSTANCE_MESH" value="1"> </constant> - <constant name="ARRAY_INDEX" value="8"> + <constant name="INSTANCE_MULTIMESH" value="2"> </constant> - <constant name="ARRAY_MAX" value="9"> + <constant name="INSTANCE_GEOMETRY_MASK" value="30"> </constant> - <constant name="ARRAY_FORMAT_VERTEX" value="1"> + <constant name="INSTANCE_PARTICLES" value="4"> </constant> - <constant name="ARRAY_FORMAT_NORMAL" value="2"> + <constant name="INSTANCE_LIGHT" value="5"> </constant> - <constant name="ARRAY_FORMAT_TANGENT" value="4"> + <constant name="INSTANCE_ROOM" value="6"> </constant> - <constant name="ARRAY_FORMAT_COLOR" value="8"> + <constant name="INSTANCE_PORTAL" value="7"> </constant> - <constant name="ARRAY_FORMAT_TEX_UV" value="16"> + <constant name="LIGHT_COLOR_DIFFUSE" value="0"> </constant> - <constant name="ARRAY_FORMAT_BONES" value="64"> + <constant name="LIGHT_DIRECTIONAL" value="0"> </constant> - <constant name="ARRAY_FORMAT_WEIGHTS" value="128"> + <constant name="LIGHT_PARAM_SPOT_ATTENUATION" value="0"> </constant> - <constant name="ARRAY_FORMAT_INDEX" value="256"> + <constant name="LIGHT_COLOR_SPECULAR" value="1"> </constant> - <constant name="PRIMITIVE_POINTS" value="0"> + <constant name="LIGHT_OMNI" value="1"> </constant> - <constant name="PRIMITIVE_LINES" value="1"> + <constant name="LIGHT_PARAM_SPOT_ANGLE" value="1"> </constant> - <constant name="PRIMITIVE_LINE_STRIP" value="2"> + <constant name="LIGHT_PARAM_MAX" value="10"> </constant> - <constant name="PRIMITIVE_LINE_LOOP" value="3"> + <constant name="LIGHT_PARAM_RADIUS" value="2"> </constant> - <constant name="PRIMITIVE_TRIANGLES" value="4"> + <constant name="LIGHT_SPOT" value="2"> </constant> - <constant name="PRIMITIVE_TRIANGLE_STRIP" value="5"> + <constant name="LIGHT_PARAM_ENERGY" value="3"> </constant> - <constant name="PRIMITIVE_TRIANGLE_FAN" value="6"> + <constant name="LIGHT_PARAM_ATTENUATION" value="4"> </constant> - <constant name="PRIMITIVE_MAX" value="7"> + <constant name="MATERIAL_BLEND_MODE_MIX" value="0"> </constant> - <constant name="PARTICLE_LIFETIME" value="0"> + <constant name="MATERIAL_FLAG_VISIBLE" value="0"> </constant> - <constant name="PARTICLE_SPREAD" value="1"> + <constant name="MATERIAL_BLEND_MODE_ADD" value="1"> </constant> - <constant name="PARTICLE_GRAVITY" value="2"> + <constant name="MATERIAL_FLAG_DOUBLE_SIDED" value="1"> </constant> - <constant name="PARTICLE_LINEAR_VELOCITY" value="3"> + <constant name="MATERIAL_BLEND_MODE_SUB" value="2"> </constant> - <constant name="PARTICLE_ANGULAR_VELOCITY" value="4"> + <constant name="MATERIAL_FLAG_INVERT_FACES" value="2"> </constant> - <constant name="PARTICLE_LINEAR_ACCELERATION" value="5"> + <constant name="MATERIAL_BLEND_MODE_MUL" value="3"> </constant> - <constant name="PARTICLE_RADIAL_ACCELERATION" value="6"> + <constant name="MATERIAL_FLAG_UNSHADED" value="3"> </constant> - <constant name="PARTICLE_TANGENTIAL_ACCELERATION" value="7"> + <constant name="MATERIAL_FLAG_ONTOP" value="4"> </constant> - <constant name="PARTICLE_INITIAL_SIZE" value="9"> + <constant name="MATERIAL_FLAG_MAX" value="7"> </constant> - <constant name="PARTICLE_FINAL_SIZE" value="10"> + <constant name="MAX_PARTICLE_ATTRACTORS" value="4"> </constant> - <constant name="PARTICLE_INITIAL_ANGLE" value="11"> + <constant name="MAX_PARTICLE_COLOR_PHASES" value="4"> </constant> - <constant name="PARTICLE_HEIGHT" value="12"> + <constant name="MAX_CURSORS" value="8"> </constant> - <constant name="PARTICLE_HEIGHT_SPEED_SCALE" value="13"> + <constant name="NO_INDEX_ARRAY" value="-1"> </constant> - <constant name="PARTICLE_VAR_MAX" value="14"> + <constant name="PARTICLE_LIFETIME" value="0"> </constant> - <constant name="LIGHT_DIRECTIONAL" value="0"> + <constant name="PARTICLE_SPREAD" value="1"> </constant> - <constant name="LIGHT_OMNI" value="1"> + <constant name="PARTICLE_FINAL_SIZE" value="10"> </constant> - <constant name="LIGHT_SPOT" value="2"> + <constant name="PARTICLE_INITIAL_ANGLE" value="11"> </constant> - <constant name="LIGHT_COLOR_DIFFUSE" value="0"> + <constant name="PARTICLE_HEIGHT" value="12"> </constant> - <constant name="LIGHT_COLOR_SPECULAR" value="1"> + <constant name="PARTICLE_HEIGHT_SPEED_SCALE" value="13"> </constant> - <constant name="LIGHT_PARAM_SPOT_ATTENUATION" value="0"> + <constant name="PARTICLE_VAR_MAX" value="14"> </constant> - <constant name="LIGHT_PARAM_SPOT_ANGLE" value="1"> + <constant name="PARTICLE_GRAVITY" value="2"> </constant> - <constant name="LIGHT_PARAM_RADIUS" value="2"> + <constant name="PARTICLE_LINEAR_VELOCITY" value="3"> </constant> - <constant name="LIGHT_PARAM_ENERGY" value="3"> + <constant name="PARTICLE_ANGULAR_VELOCITY" value="4"> </constant> - <constant name="LIGHT_PARAM_ATTENUATION" value="4"> + <constant name="PARTICLE_LINEAR_ACCELERATION" value="5"> </constant> - <constant name="LIGHT_PARAM_MAX" value="10"> + <constant name="PARTICLE_RADIAL_ACCELERATION" value="6"> </constant> - <constant name="SCENARIO_DEBUG_DISABLED" value="0"> + <constant name="PARTICLE_TANGENTIAL_ACCELERATION" value="7"> </constant> - <constant name="SCENARIO_DEBUG_WIREFRAME" value="1"> + <constant name="PARTICLE_INITIAL_SIZE" value="9"> </constant> - <constant name="SCENARIO_DEBUG_OVERDRAW" value="2"> + <constant name="PRIMITIVE_POINTS" value="0"> </constant> - <constant name="INSTANCE_MESH" value="1"> + <constant name="PRIMITIVE_LINES" value="1"> </constant> - <constant name="INSTANCE_MULTIMESH" value="2"> + <constant name="PRIMITIVE_LINE_STRIP" value="2"> </constant> - <constant name="INSTANCE_PARTICLES" value="4"> + <constant name="PRIMITIVE_LINE_LOOP" value="3"> </constant> - <constant name="INSTANCE_LIGHT" value="5"> + <constant name="PRIMITIVE_TRIANGLES" value="4"> </constant> - <constant name="INSTANCE_ROOM" value="6"> + <constant name="PRIMITIVE_TRIANGLE_STRIP" value="5"> </constant> - <constant name="INSTANCE_PORTAL" value="7"> + <constant name="PRIMITIVE_TRIANGLE_FAN" value="6"> </constant> - <constant name="INSTANCE_GEOMETRY_MASK" value="30"> + <constant name="PRIMITIVE_MAX" value="7"> </constant> - <constant name="INFO_OBJECTS_IN_FRAME" value="0"> + <constant name="SCENARIO_DEBUG_DISABLED" value="0"> </constant> - <constant name="INFO_VERTICES_IN_FRAME" value="1"> + <constant name="SCENARIO_DEBUG_WIREFRAME" value="1"> </constant> - <constant name="INFO_MATERIAL_CHANGES_IN_FRAME" value="2"> + <constant name="SCENARIO_DEBUG_OVERDRAW" value="2"> </constant> - <constant name="INFO_SHADER_CHANGES_IN_FRAME" value="3"> + <constant name="SHADER_MATERIAL" value="0"> </constant> - <constant name="INFO_SURFACE_CHANGES_IN_FRAME" value="4"> + <constant name="SHADER_POST_PROCESS" value="2"> </constant> - <constant name="INFO_DRAW_CALLS_IN_FRAME" value="5"> + <constant name="TEXTURE_FLAG_MIPMAPS" value="1"> </constant> - <constant name="INFO_USAGE_VIDEO_MEM_TOTAL" value="6"> + <constant name="TEXTURE_FLAG_REPEAT" value="2"> </constant> - <constant name="INFO_VIDEO_MEM_USED" value="7"> + <constant name="TEXTURE_FLAG_CUBEMAP" value="2048"> </constant> - <constant name="INFO_TEXTURE_MEM_USED" value="8"> + <constant name="TEXTURE_FLAG_FILTER" value="4"> </constant> - <constant name="INFO_VERTEX_MEM_USED" value="9"> + <constant name="TEXTURE_FLAGS_DEFAULT" value="7"> </constant> </constants> </class> @@ -45614,11 +46058,11 @@ This method controls whether the position between two cached points is interpola Windowdialog is the base class for all window-based dialogs. It's a by-default toplevel [Control] that draws a window decoration and allows motion and resizing. </description> <methods> - <method name="set_title"> - <argument index="0" name="title" type="String"> - </argument> + <method name="get_close_button"> + <return type="TextureButton"> + </return> <description> - Set the title of the window. + Return the close [TextureButton]. </description> </method> <method name="get_title" qualifiers="const"> @@ -45628,34 +46072,34 @@ This method controls whether the position between two cached points is interpola Return the title of the window. </description> </method> - <method name="get_close_button"> - <return type="TextureButton"> - </return> + <method name="set_title"> + <argument index="0" name="title" type="String"> + </argument> <description> - Return the close [TextureButton]. + Set the title of the window. </description> </method> </methods> <constants> </constants> <theme_items> - <theme_item name="close_h_ofs" type="int"> + <theme_item name="close" type="Texture"> </theme_item> - <theme_item name="titlebar_height" type="int"> + <theme_item name="close_h_ofs" type="int"> </theme_item> - <theme_item name="title_height" type="int"> + <theme_item name="close_hilite" type="Texture"> </theme_item> <theme_item name="close_v_ofs" type="int"> </theme_item> - <theme_item name="title_color" type="Color"> - </theme_item> - <theme_item name="close_hilite" type="Texture"> + <theme_item name="panel" type="StyleBox"> </theme_item> - <theme_item name="close" type="Texture"> + <theme_item name="title_color" type="Color"> </theme_item> <theme_item name="title_font" type="Font"> </theme_item> - <theme_item name="panel" type="StyleBox"> + <theme_item name="title_height" type="int"> + </theme_item> + <theme_item name="titlebar_height" type="int"> </theme_item> </theme_items> </class> @@ -45667,39 +46111,39 @@ This method controls whether the position between two cached points is interpola Class that has everything pertaining to a world. A physics space, a visual scenario and a sound space. Spatial nodes register their resources into the current world. </description> <methods> - <method name="get_space" qualifiers="const"> - <return type="RID"> + <method name="get_direct_space_state"> + <return type="PhysicsDirectSpaceState"> </return> <description> </description> </method> - <method name="get_scenario" qualifiers="const"> - <return type="RID"> + <method name="get_environment" qualifiers="const"> + <return type="Environment"> </return> <description> </description> </method> - <method name="get_sound_space" qualifiers="const"> + <method name="get_scenario" qualifiers="const"> <return type="RID"> </return> <description> </description> </method> - <method name="set_environment"> - <argument index="0" name="env" type="Environment"> - </argument> + <method name="get_sound_space" qualifiers="const"> + <return type="RID"> + </return> <description> </description> </method> - <method name="get_environment" qualifiers="const"> - <return type="Environment"> + <method name="get_space" qualifiers="const"> + <return type="RID"> </return> <description> </description> </method> - <method name="get_direct_space_state"> - <return type="PhysicsDirectSpaceState"> - </return> + <method name="set_environment"> + <argument index="0" name="env" type="Environment"> + </argument> <description> </description> </method> @@ -45721,8 +46165,8 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_space"> - <return type="RID"> + <method name="get_direct_space_state"> + <return type="Physics2DDirectSpaceState"> </return> <description> </description> @@ -45733,8 +46177,8 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_direct_space_state"> - <return type="Physics2DDirectSpaceState"> + <method name="get_space"> + <return type="RID"> </return> <description> </description> @@ -45749,18 +46193,18 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="set_environment"> - <argument index="0" name="env" type="Environment"> - </argument> - <description> - </description> - </method> <method name="get_environment" qualifiers="const"> <return type="Environment"> </return> <description> </description> </method> + <method name="set_environment"> + <argument index="0" name="env" type="Environment"> + </argument> + <description> + </description> + </method> </methods> <constants> </constants> @@ -45771,76 +46215,76 @@ This method controls whether the position between two cached points is interpola <description> </description> <methods> - <method name="read"> + <method name="get_attribute_count" qualifiers="const"> <return type="int"> </return> <description> </description> </method> - <method name="get_node_type"> - <return type="int"> + <method name="get_attribute_name" qualifiers="const"> + <return type="String"> </return> + <argument index="0" name="idx" type="int"> + </argument> <description> </description> </method> - <method name="get_node_name" qualifiers="const"> + <method name="get_attribute_value" qualifiers="const"> <return type="String"> </return> + <argument index="0" name="idx" type="int"> + </argument> <description> </description> </method> - <method name="get_node_data" qualifiers="const"> - <return type="String"> + <method name="get_current_line" qualifiers="const"> + <return type="int"> </return> <description> </description> </method> - <method name="get_node_offset" qualifiers="const"> - <return type="int"> + <method name="get_named_attribute_value" qualifiers="const"> + <return type="String"> </return> + <argument index="0" name="name" type="String"> + </argument> <description> </description> </method> - <method name="get_attribute_count" qualifiers="const"> - <return type="int"> + <method name="get_named_attribute_value_safe" qualifiers="const"> + <return type="String"> </return> + <argument index="0" name="name" type="String"> + </argument> <description> </description> </method> - <method name="get_attribute_name" qualifiers="const"> + <method name="get_node_data" qualifiers="const"> <return type="String"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> </description> </method> - <method name="get_attribute_value" qualifiers="const"> + <method name="get_node_name" qualifiers="const"> <return type="String"> </return> - <argument index="0" name="idx" type="int"> - </argument> <description> </description> </method> - <method name="has_attribute" qualifiers="const"> - <return type="bool"> + <method name="get_node_offset" qualifiers="const"> + <return type="int"> </return> - <argument index="0" name="name" type="String"> - </argument> <description> </description> </method> - <method name="get_named_attribute_value" qualifiers="const"> - <return type="String"> + <method name="get_node_type"> + <return type="int"> </return> - <argument index="0" name="name" type="String"> - </argument> <description> </description> </method> - <method name="get_named_attribute_value_safe" qualifiers="const"> - <return type="String"> + <method name="has_attribute" qualifiers="const"> + <return type="bool"> </return> <argument index="0" name="name" type="String"> </argument> @@ -45853,40 +46297,40 @@ This method controls whether the position between two cached points is interpola <description> </description> </method> - <method name="get_current_line" qualifiers="const"> + <method name="open"> <return type="int"> </return> + <argument index="0" name="file" type="String"> + </argument> <description> </description> </method> - <method name="skip_section"> - <description> - </description> - </method> - <method name="seek"> + <method name="open_buffer"> <return type="int"> </return> - <argument index="0" name="pos" type="int"> + <argument index="0" name="buffer" type="RawArray"> </argument> <description> </description> </method> - <method name="open"> + <method name="read"> <return type="int"> </return> - <argument index="0" name="file" type="String"> - </argument> <description> </description> </method> - <method name="open_buffer"> + <method name="seek"> <return type="int"> </return> - <argument index="0" name="buffer" type="RawArray"> + <argument index="0" name="pos" type="int"> </argument> <description> </description> </method> + <method name="skip_section"> + <description> + </description> + </method> </methods> <constants> <constant name="NODE_NONE" value="0"> @@ -45913,13 +46357,6 @@ This method controls whether the position between two cached points is interpola Sort all child nodes based on their Y positions. The child node must inherit from [CanvasItem] for it to be sorted. Nodes that have a higher Y position will be drawn later, so they will appear on top of nodes that have a lower Y position. </description> <methods> - <method name="set_sort_enabled"> - <argument index="0" name="enabled" type="bool"> - </argument> - <description> - Set whether the children nodes are sorted or not. (default true) - </description> - </method> <method name="is_sort_enabled" qualifiers="const"> <return type="bool"> </return> @@ -45927,6 +46364,13 @@ This method controls whether the position between two cached points is interpola Returns true if the children nodes are being sorted. </description> </method> + <method name="set_sort_enabled"> + <argument index="0" name="enabled" type="bool"> + </argument> + <description> + Set whether the children nodes are sorted or not. (default true) + </description> + </method> </methods> <constants> </constants> diff --git a/doc/tools/makerst.py b/doc/tools/makerst.py index 060dbc805d..45e690cb65 100644 --- a/doc/tools/makerst.py +++ b/doc/tools/makerst.py @@ -1,6 +1,7 @@ #!/usr/bin/python # -*- coding: utf-8 -*- +import codecs import sys import xml.etree.ElementTree as ET @@ -32,7 +33,7 @@ def ul_string(str,ul): def make_class_list(class_list, columns): - f = open('class_list.rst', 'wb') + f = codecs.open('class_list.rst', 'wb', 'utf-8') prev = 0 col_max = len(class_list) / columns + 1 print ('col max is ', col_max) @@ -347,7 +348,7 @@ def make_rst_class(node): name = node.attrib['name'] - f = open("class_"+name.lower() + '.rst', 'wb') + f = codecs.open("class_"+name.lower() + '.rst', 'wb', 'utf-8') # Warn contributors not to edit this file directly f.write(".. Generated automatically by doc/tools/makerst.py in Godot's source tree.\n") diff --git a/drivers/chibi/cp_player_data_reserved.cpp b/drivers/chibi/cp_player_data_reserved.cpp deleted file mode 100644 index a626ffd111..0000000000 --- a/drivers/chibi/cp_player_data_reserved.cpp +++ /dev/null @@ -1,32 +0,0 @@ -/*************************************************************************/ -/* cp_player_data_reserved.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "cp_player_data.h" - - - diff --git a/drivers/chibi/event_stream_chibi.cpp b/drivers/chibi/event_stream_chibi.cpp index 3449583d36..b88f4ee70e 100644 --- a/drivers/chibi/event_stream_chibi.cpp +++ b/drivers/chibi/event_stream_chibi.cpp @@ -616,7 +616,7 @@ void CPFileAccessWrapperImpl::store_dword(uint32_t p_dest){ Error EventStreamPlaybackChibi::_play() { last_order=0; - loops++; + loops=0; player->play_start_song(); total_usec=0; @@ -628,10 +628,12 @@ bool EventStreamPlaybackChibi::_update(AudioMixer* p_mixer, uint64_t p_usec){ total_usec+=p_usec; mixer.process_usecs(p_usec,volume,pitch_scale,tempo_scale); int order=player->get_current_order(); - if (order<last_order && !loop) { - stop(); - } else { - loops++; + if (order<last_order) { + if (!loop) { + stop(); + } else { + loops++; + } } last_order=order; return false; diff --git a/drivers/convex_decomp/b2d_decompose.cpp b/drivers/convex_decomp/b2d_decompose.cpp index 1567fd0d44..36fbfa1fee 100644 --- a/drivers/convex_decomp/b2d_decompose.cpp +++ b/drivers/convex_decomp/b2d_decompose.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* b2d_decompose.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "b2d_decompose.h" #include "b2Polygon.h" diff --git a/drivers/convex_decomp/b2d_decompose.h b/drivers/convex_decomp/b2d_decompose.h index 44aa004120..2a66b033a7 100644 --- a/drivers/convex_decomp/b2d_decompose.h +++ b/drivers/convex_decomp/b2d_decompose.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* b2d_decompose.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef B2D_DECOMPOSE_H #define B2D_DECOMPOSE_H diff --git a/drivers/dds/texture_loader_dds.cpp b/drivers/dds/texture_loader_dds.cpp index 9b2e401fd9..0cef77e638 100644 --- a/drivers/dds/texture_loader_dds.cpp +++ b/drivers/dds/texture_loader_dds.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* texture_loader_dds.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "texture_loader_dds.h" #include "os/file_access.h" diff --git a/drivers/dds/texture_loader_dds.h b/drivers/dds/texture_loader_dds.h index c8b3610063..371eb1858c 100644 --- a/drivers/dds/texture_loader_dds.h +++ b/drivers/dds/texture_loader_dds.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* texture_loader_dds.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef TEXTURE_LOADER_DDS_H #define TEXTURE_LOADER_DDS_H diff --git a/drivers/etc1/image_etc.cpp b/drivers/etc1/image_etc.cpp index 62a7364847..cf2384240b 100644 --- a/drivers/etc1/image_etc.cpp +++ b/drivers/etc1/image_etc.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* image_etc.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "image_etc.h" #include "image.h" #include "rg_etc1.h" diff --git a/drivers/etc1/image_etc.h b/drivers/etc1/image_etc.h index 44859690aa..edcff39bfd 100644 --- a/drivers/etc1/image_etc.h +++ b/drivers/etc1/image_etc.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* image_etc.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef IMAGE_ETC1_H #define IMAGE_ETC1_H diff --git a/drivers/gl_context/context_gl.cpp b/drivers/gl_context/context_gl.cpp index c1bf6b38ea..3e15783d5f 100644 --- a/drivers/gl_context/context_gl.cpp +++ b/drivers/gl_context/context_gl.cpp @@ -1,14 +1,31 @@ -/*************************************************/ -/* context_gl.cpp */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* context_gl.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "context_gl.h" diff --git a/drivers/jpegd/image_loader_jpegd.cpp b/drivers/jpegd/image_loader_jpegd.cpp index 5339e9f69d..913a7bdf39 100644 --- a/drivers/jpegd/image_loader_jpegd.cpp +++ b/drivers/jpegd/image_loader_jpegd.cpp @@ -1,14 +1,31 @@ -/*************************************************/ -/* image_loader_jpg.cpp */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* image_loader_jpegd.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "image_loader_jpegd.h" #include "print_string.h" diff --git a/drivers/jpegd/image_loader_jpegd.h b/drivers/jpegd/image_loader_jpegd.h index 1b2165ab47..2c52309ab1 100644 --- a/drivers/jpegd/image_loader_jpegd.h +++ b/drivers/jpegd/image_loader_jpegd.h @@ -1,14 +1,31 @@ -/*************************************************/ -/* image_loader_jpg.h */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* image_loader_jpegd.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef IMAGE_LOADER_JPG_H #define IMAGE_LOADER_JPG_H diff --git a/drivers/mpc/audio_stream_mpc.cpp b/drivers/mpc/audio_stream_mpc.cpp index fe6aa05d00..9713eb3c77 100644 --- a/drivers/mpc/audio_stream_mpc.cpp +++ b/drivers/mpc/audio_stream_mpc.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* audio_stream_mpc.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "audio_stream_mpc.h" diff --git a/drivers/mpc/audio_stream_mpc.h b/drivers/mpc/audio_stream_mpc.h index 122d0d0bbb..27f55777d6 100644 --- a/drivers/mpc/audio_stream_mpc.h +++ b/drivers/mpc/audio_stream_mpc.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* audio_stream_mpc.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef AUDIO_STREAM_MPC_H #define AUDIO_STREAM_MPC_H diff --git a/drivers/nedmalloc/Benchmarks.xls b/drivers/nedmalloc/Benchmarks.xls Binary files differdeleted file mode 100644 index 5001a18a22..0000000000 --- a/drivers/nedmalloc/Benchmarks.xls +++ /dev/null diff --git a/drivers/nedmalloc/SCsub b/drivers/nedmalloc/SCsub index 8e6edd1f96..6699efef75 100644 --- a/drivers/nedmalloc/SCsub +++ b/drivers/nedmalloc/SCsub @@ -2,4 +2,3 @@ Import('env') Export('env'); env.add_source_files(env.drivers_sources,"*.cpp") -#env.add_source_files(env.drivers_sources,"*.c") diff --git a/drivers/nedmalloc/memory_pool_static_nedmalloc.cpp b/drivers/nedmalloc/memory_pool_static_nedmalloc.cpp index 301e94bb7b..21da056f07 100644 --- a/drivers/nedmalloc/memory_pool_static_nedmalloc.cpp +++ b/drivers/nedmalloc/memory_pool_static_nedmalloc.cpp @@ -1,14 +1,31 @@ -/*************************************************/ -/* memory_pool_static_nedmalloc.cpp */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* memory_pool_static_nedmalloc.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifdef NEDMALLOC_ENABLED // diff --git a/drivers/nedmalloc/memory_pool_static_nedmalloc.h b/drivers/nedmalloc/memory_pool_static_nedmalloc.h index 20b060537c..0033353a67 100644 --- a/drivers/nedmalloc/memory_pool_static_nedmalloc.h +++ b/drivers/nedmalloc/memory_pool_static_nedmalloc.h @@ -1,14 +1,31 @@ -/*************************************************/ -/* memory_pool_static_nedmalloc.h */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* memory_pool_static_nedmalloc.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifdef NEDMALLOC_ENABLED // diff --git a/drivers/nedmalloc/nedmalloc.sln b/drivers/nedmalloc/nedmalloc.sln deleted file mode 100644 index 6ffd9fb83f..0000000000 --- a/drivers/nedmalloc/nedmalloc.sln +++ /dev/null @@ -1,19 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "nedmalloc", "nedmalloc.vcproj", "{B89384F5-360B-4AB2-8F43-2F5F98A947FE}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {B89384F5-360B-4AB2-8F43-2F5F98A947FE}.Debug|Win32.ActiveCfg = Debug|Win32
- {B89384F5-360B-4AB2-8F43-2F5F98A947FE}.Debug|Win32.Build.0 = Debug|Win32
- {B89384F5-360B-4AB2-8F43-2F5F98A947FE}.Release|Win32.ActiveCfg = Release|Win32
- {B89384F5-360B-4AB2-8F43-2F5F98A947FE}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/drivers/nedmalloc/nedmalloc.vcproj b/drivers/nedmalloc/nedmalloc.vcproj deleted file mode 100644 index c5b0563d4f..0000000000 --- a/drivers/nedmalloc/nedmalloc.vcproj +++ /dev/null @@ -1,259 +0,0 @@ -<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="9.00"
- Name="nedmalloc"
- ProjectGUID="{B89384F5-360B-4AB2-8F43-2F5F98A947FE}"
- Keyword="Win32Proj"
- TargetFrameworkVersion="131072"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory="Debug"
- IntermediateDirectory="Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
- MinimalRebuild="true"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="4"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)/nedmalloc.exe"
- LinkIncremental="2"
- GenerateDebugInformation="true"
- ProgramDatabaseFile="$(OutDir)/nedmalloc.pdb"
- SubSystem="1"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory="Release"
- IntermediateDirectory="Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- />
- <Tool
- Name="VCCLCompilerTool"
- AdditionalOptions="/Ow"
- InlineFunctionExpansion="0"
- EnableIntrinsicFunctions="true"
- FavorSizeOrSpeed="1"
- OmitFramePointers="true"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- BufferSecurityCheck="false"
- EnableEnhancedInstructionSet="1"
- UsePrecompiledHeader="0"
- WarningLevel="3"
- Detect64BitPortabilityProblems="false"
- DebugInformationFormat="3"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)/nedmalloc.exe"
- LinkIncremental="1"
- GenerateDebugInformation="true"
- SubSystem="1"
- OptimizeReferences="2"
- EnableCOMDATFolding="2"
- RandomizedBaseAddress="1"
- DataExecutionPrevention="0"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
- UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
- >
- <File
- RelativePath=".\nedmalloc.c"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath=".\test.c"
- >
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl;inc;xsd"
- UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
- >
- <File
- RelativePath=".\malloc.c.h"
- >
- </File>
- <File
- RelativePath=".\nedmalloc.h"
- >
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
- UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
- >
- </Filter>
- <File
- RelativePath="..\..\..\..\gcLink.cc"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath=".\Readme.txt"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/drivers/nedmalloc/test.c b/drivers/nedmalloc/test.c deleted file mode 100644 index 8b9fed81d0..0000000000 --- a/drivers/nedmalloc/test.c +++ /dev/null @@ -1,356 +0,0 @@ -/* test.c
-An example of how to use nedalloc
-(C) 2005-2007 Niall Douglas
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "nedmalloc.c"
-
-#define THREADS 5
-#define RECORDS (100000/THREADS)
-#define TORTURETEST 1
-
-static int whichmalloc;
-static int doRealloc;
-static struct threadstuff_t
-{
- int ops;
- unsigned int *toalloc;
- void **allocs;
- char cachesync1[128];
- int done;
- char cachesync2[128];
-} threadstuff[THREADS];
-
-static void threadcode(int);
-
-#ifdef WIN32
-static DWORD WINAPI _threadcode(LPVOID a)
-{
- threadcode((int)(size_t) a);
- return 0;
-}
-#define THREADVAR HANDLE
-#define THREADINIT(v, id) (*v=CreateThread(NULL, 0, _threadcode, (LPVOID)(size_t) id, 0, NULL))
-#define THREADSLEEP(v) SleepEx(v, FALSE)
-#define THREADWAIT(v) (WaitForSingleObject(v, INFINITE), 0)
-
-typedef unsigned __int64 usCount;
-static FORCEINLINE usCount GetUsCount()
-{
- static LARGE_INTEGER ticksPerSec;
- static double scalefactor;
- LARGE_INTEGER val;
- if(!scalefactor)
- {
- if(QueryPerformanceFrequency(&ticksPerSec))
- scalefactor=ticksPerSec.QuadPart/1000000000000.0;
- else
- scalefactor=1;
- }
- if(!QueryPerformanceCounter(&val))
- return (usCount) GetTickCount() * 1000000000;
- return (usCount) (val.QuadPart/scalefactor);
-}
-
-static HANDLE win32heap;
-static void *win32malloc(size_t size)
-{
- return HeapAlloc(win32heap, 0, size);
-}
-static void *win32realloc(void *p, size_t size)
-{
- return HeapReAlloc(win32heap, 0, p, size);
-}
-static void win32free(void *mem)
-{
- HeapFree(win32heap, 0, mem);
-}
-
-static void *(*const mallocs[])(size_t size)={ malloc, nedmalloc, win32malloc };
-static void *(*const reallocs[])(void *p, size_t size)={ realloc, nedrealloc, win32realloc };
-static void (*const frees[])(void *mem)={ free, nedfree, win32free };
-#else
-static void *_threadcode(void *a)
-{
- threadcode((int)(size_t) a);
- return 0;
-}
-#define THREADVAR pthread_t
-#define THREADINIT(v, id) pthread_create(v, NULL, _threadcode, (void *)(size_t) id)
-#define THREADSLEEP(v) usleep(v*1000)
-#define THREADWAIT(v) pthread_join(v, NULL)
-
-typedef unsigned long long usCount;
-static FORCEINLINE usCount GetUsCount()
-{
- struct timeval tv;
- gettimeofday(&tv, 0);
- return ((usCount) tv.tv_sec*1000000000000LL)+tv.tv_usec*1000000LL;
-}
-
-static void *(*const mallocs[])(size_t size)={ malloc, nedmalloc };
-static void *(*const reallocs[])(void *p, size_t size)={ realloc, nedrealloc };
-static void (*const frees[])(void *mem)={ free, nedfree };
-#endif
-static usCount times[THREADS];
-
-
-static FORCEINLINE unsigned int myrandom(unsigned int *seed)
-{
- *seed=1664525UL*(*seed)+1013904223UL;
- return *seed;
-}
-
-static void threadcode(int threadidx)
-{
- int n;
- unsigned int *toallocptr=threadstuff[threadidx].toalloc;
- void **allocptr=threadstuff[threadidx].allocs;
- unsigned int seed=threadidx;
- usCount start;
- threadstuff[threadidx].done=0;
- /*neddisablethreadcache(0);*/
- THREADSLEEP(100);
- start=GetUsCount();
-#ifdef TORTURETEST
- /* A randomised malloc/realloc/free test (torture test) */
- for(n=0; n<RECORDS*100; n++)
- {
- unsigned int r=myrandom(&seed), i;
- i=(int)(r % RECORDS);
- if(!allocptr[i])
- {
- allocptr[i]=mallocs[whichmalloc](r & 0x1FFF);
- threadstuff[threadidx].ops++;
- }
- else if(r & (1<<31))
- {
- allocptr[i]=reallocs[whichmalloc](allocptr[i], r & 0x1FFF);
- threadstuff[threadidx].ops++;
- }
- else
- {
- frees[whichmalloc](allocptr[i]);
- allocptr[i]=0;
- }
- }
- for(n=0; n<RECORDS; n++)
- {
- if(allocptr[n])
- {
- frees[whichmalloc](allocptr[n]);
- allocptr[n]=0;
- }
- }
-#else
- /* A simple stack which allocates and deallocates off the top (speed test) */
- for(n=0; n<RECORDS;)
- {
-#if 1
- r=myrandom(&seed);
- if(allocptr>threadstuff[threadidx].allocs && (r & 65535)<32760) /*<32760)*/
- { /* free */
- --toallocptr;
- --allocptr;
- --n;
- frees[whichmalloc](*allocptr);
- *allocptr=0;
- }
- else
-#endif
- {
- if(doRealloc && allocptr>threadstuff[threadidx].allocs && (r & 1))
- {
- allocptr[-1]=reallocs[whichmalloc](allocptr[-1], *toallocptr);
- }
- else
- {
- allocptr[0]=mallocs[whichmalloc](*toallocptr);
- allocptr++;
- }
- n++;
- toallocptr++;
- threadstuff[threadidx].ops++;
- }
- }
- while(allocptr>threadstuff[threadidx].allocs)
- {
- frees[whichmalloc](*--allocptr);
- }
-#endif
- times[threadidx]+=GetUsCount()-start;
- neddisablethreadcache(0);
- threadstuff[threadidx].done=1;
-}
-
-static double runtest()
-{
- unsigned int seed=1;
- int n, i;
- double opspersec=0;
- THREADVAR threads[THREADS];
- for(n=0; n<THREADS; n++)
- {
- unsigned int *toallocptr;
- int m;
- threadstuff[n].ops=0;
- times[n]=0;
- threadstuff[n].toalloc=toallocptr=calloc(RECORDS, sizeof(unsigned int));
- threadstuff[n].allocs=calloc(RECORDS, sizeof(void *));
- for(m=0; m<RECORDS; m++)
- {
- unsigned int size=myrandom(&seed);
- if(size<(1<<30))
- { /* Make it two power multiple of less than 512 bytes to
- model frequent C++ new's */
- size=4<<(size & 7);
- }
- else
- {
- size&=0x3FFF; /* < 16Kb */
- /*size&=0x1FFF;*/ /* < 8Kb */
- /*size=(1<<6)<<(size & 7);*/ /* < 8Kb */
- }
- *toallocptr++=size;
- }
- }
-#ifdef TORTURETEST
- for(n=0; n<THREADS; n++)
- {
- THREADINIT(&threads[n], n);
- }
- for(i=0; i<32; i++)
- {
- int found=-1;
- do
- {
- for(n=0; n<THREADS; n++)
- {
- THREADSLEEP(100);
- if(threadstuff[n].done)
- {
- found=n;
- break;
- }
- }
- } while(found<0);
- THREADWAIT(threads[found]);
- threads[found]=0;
- THREADINIT(&threads[found], found);
- printf("Relaunched thread %d\n", found);
- }
- for(n=THREADS-1; n>=0; n--)
- {
- THREADWAIT(threads[n]);
- threads[n]=0;
- }
-#else
-#if 1
- for(n=0; n<THREADS; n++)
- {
- THREADINIT(&threads[n], n);
- }
- for(n=THREADS-1; n>=0; n--)
- {
- THREADWAIT(threads[n]);
- threads[n]=0;
- }
-#else
- /* Quick realloc() test */
- doRealloc=1;
- for(n=0; n<THREADS; n++)
- {
- THREADINIT(&threads[n], n);
- }
- for(n=THREADS-1; n>=0; n--)
- {
- THREADWAIT(threads[n]);
- threads[n]=0;
- }
-#endif
-#endif
- {
- usCount totaltime=0;
- int totalops=0;
- for(n=0; n<THREADS; n++)
- {
- totaltime+=times[n];
- totalops+=threadstuff[n].ops;
- }
- opspersec=1000000000000.0*totalops/totaltime*THREADS;
- printf("This allocator achieves %lfops/sec under %d threads\n", opspersec, THREADS);
- }
- for(n=THREADS-1; n>=0; n--)
- {
- free(threadstuff[n].allocs); threadstuff[n].allocs=0;
- free(threadstuff[n].toalloc); threadstuff[n].toalloc=0;
- }
- return opspersec;
-}
-
-int main(void)
-{
- double std=0, ned=0;
-
-#if 0
- {
- usCount start, end;
- start=GetUsCount();
- THREADSLEEP(5000);
- end=GetUsCount();
- printf("Wait was %lf\n", (end-start)/1000000000000.0);
- }
-#endif
-#ifdef WIN32
- { /* Force load of user32.dll so we can debug */
- BOOL v;
- SystemParametersInfo(SPI_GETBEEP, 0, &v, 0);
- }
-#endif
-
- if(0)
- {
- printf("\nTesting standard allocator with %d threads ...\n", THREADS);
- std=runtest();
- }
- if(1)
- {
- printf("\nTesting nedmalloc with %d threads ...\n", THREADS);
- whichmalloc=1;
- ned=runtest();
- }
-#ifdef WIN32
- if(0)
- {
- ULONG data=2;
- win32heap=HeapCreate(0, 0, 0);
- HeapSetInformation(win32heap, HeapCompatibilityInformation, &data, sizeof(data));
- HeapQueryInformation(win32heap, HeapCompatibilityInformation, &data, sizeof(data), NULL);
- if(2!=data)
- {
- printf("The win32 low frag allocator won't work under a debugger!\n");
- }
- else
- {
- printf("Testing win32 low frag allocator with %d threads ...\n\n", THREADS);
- whichmalloc=2;
- runtest();
- }
- HeapDestroy(win32heap);
- }
-#endif
- if(std && ned)
- { // ned should have more ops/sec
- printf("\n\nnedmalloc allocator is %lf times faster than standard\n", ned/std);
- }
- printf("\nPress a key to trim\n");
- getchar();
- nedmalloc_trim(0);
-#ifdef _MSC_VER
- printf("\nPress a key to end\n");
- getchar();
-#endif
- return 0;
-}
diff --git a/drivers/nrex/regex.cpp b/drivers/nrex/regex.cpp index 5d6c9583ef..7bf14d14ad 100644 --- a/drivers/nrex/regex.cpp +++ b/drivers/nrex/regex.cpp @@ -1,14 +1,31 @@ -/*************************************************/ -/* regex.cpp */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* regex.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "regex.h" #include "nrex.hpp" #include "core/os/memory.h" diff --git a/drivers/nrex/regex.h b/drivers/nrex/regex.h index 4b063f0bf1..74495442c7 100644 --- a/drivers/nrex/regex.h +++ b/drivers/nrex/regex.h @@ -1,14 +1,31 @@ -/*************************************************/ -/* regex.h */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* regex.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef REGEX_H #define REGEX_H diff --git a/drivers/ogg/bitwise.c b/drivers/ogg/bitwise.c index 3d02198094..145901d185 100644 --- a/drivers/ogg/bitwise.c +++ b/drivers/ogg/bitwise.c @@ -5,13 +5,13 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010 * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2014 * * by the Xiph.Org Foundation http://www.xiph.org/ * * * ******************************************************************** function: packing variable sized words into an octet stream - last mod: $Id: bitwise.c 17287 2010-06-10 13:42:06Z tterribe $ + last mod: $Id: bitwise.c 19149 2014-05-27 16:26:23Z giles $ ********************************************************************/ @@ -93,11 +93,11 @@ void oggpack_write(oggpack_buffer *b,unsigned long value,int bits){ b->ptr=b->buffer+b->endbyte; } - value&=mask[bits]; + value&=mask[bits]; bits+=b->endbit; - b->ptr[0]|=value<<b->endbit; - + b->ptr[0]|=value<<b->endbit; + if(bits>=8){ b->ptr[1]=(unsigned char)(value>>(8-b->endbit)); if(bits>=16){ @@ -136,11 +136,11 @@ void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits){ b->ptr=b->buffer+b->endbyte; } - value=(value&mask[bits])<<(32-bits); + value=(value&mask[bits])<<(32-bits); bits+=b->endbit; - b->ptr[0]|=value>>(24+b->endbit); - + b->ptr[0]|=value>>(24+b->endbit); + if(bits>=8){ b->ptr[1]=(unsigned char)(value>>(16+b->endbit)); if(bits>=16){ @@ -187,37 +187,41 @@ static void oggpack_writecopy_helper(oggpack_buffer *b, unsigned char *ptr=(unsigned char *)source; long bytes=bits/8; + long pbytes=(b->endbit+bits)/8; bits-=bytes*8; + /* expand storage up-front */ + if(b->endbyte+pbytes>=b->storage){ + void *ret; + if(!b->ptr) goto err; + if(b->storage>b->endbyte+pbytes+BUFFER_INCREMENT) goto err; + b->storage=b->endbyte+pbytes+BUFFER_INCREMENT; + ret=_ogg_realloc(b->buffer,b->storage); + if(!ret) goto err; + b->buffer=ret; + b->ptr=b->buffer+b->endbyte; + } + + /* copy whole octets */ if(b->endbit){ int i; /* unaligned copy. Do it the hard way. */ for(i=0;i<bytes;i++) - w(b,(unsigned long)(ptr[i]),8); + w(b,(unsigned long)(ptr[i]),8); }else{ /* aligned block copy */ - if(b->endbyte+bytes+1>=b->storage){ - void *ret; - if(!b->ptr) goto err; - if(b->endbyte+bytes+BUFFER_INCREMENT>b->storage) goto err; - b->storage=b->endbyte+bytes+BUFFER_INCREMENT; - ret=_ogg_realloc(b->buffer,b->storage); - if(!ret) goto err; - b->buffer=ret; - b->ptr=b->buffer+b->endbyte; - } - memmove(b->ptr,source,bytes); b->ptr+=bytes; b->endbyte+=bytes; *b->ptr=0; - } + + /* copy trailing bits */ if(bits){ if(msb) - w(b,(unsigned long)(ptr[bytes]>>(8-bits)),bits); + w(b,(unsigned long)(ptr[bytes]>>(8-bits)),bits); else - w(b,(unsigned long)(ptr[bytes]),bits); + w(b,(unsigned long)(ptr[bytes]),bits); } return; err: @@ -281,11 +285,11 @@ long oggpack_look(oggpack_buffer *b,int bits){ ret=b->ptr[0]>>b->endbit; if(bits>8){ - ret|=b->ptr[1]<<(8-b->endbit); + ret|=b->ptr[1]<<(8-b->endbit); if(bits>16){ - ret|=b->ptr[2]<<(16-b->endbit); + ret|=b->ptr[2]<<(16-b->endbit); if(bits>24){ - ret|=b->ptr[3]<<(24-b->endbit); + ret|=b->ptr[3]<<(24-b->endbit); if(bits>32 && b->endbit) ret|=b->ptr[4]<<(32-b->endbit); } @@ -312,11 +316,11 @@ long oggpackB_look(oggpack_buffer *b,int bits){ ret=b->ptr[0]<<(24+b->endbit); if(bits>8){ - ret|=b->ptr[1]<<(16+b->endbit); + ret|=b->ptr[1]<<(16+b->endbit); if(bits>16){ - ret|=b->ptr[2]<<(8+b->endbit); + ret|=b->ptr[2]<<(8+b->endbit); if(bits>24){ - ret|=b->ptr[3]<<(b->endbit); + ret|=b->ptr[3]<<(b->endbit); if(bits>32 && b->endbit) ret|=b->ptr[4]>>(8-b->endbit); } @@ -386,11 +390,11 @@ long oggpack_read(oggpack_buffer *b,int bits){ ret=b->ptr[0]>>b->endbit; if(bits>8){ - ret|=b->ptr[1]<<(8-b->endbit); + ret|=b->ptr[1]<<(8-b->endbit); if(bits>16){ - ret|=b->ptr[2]<<(16-b->endbit); + ret|=b->ptr[2]<<(16-b->endbit); if(bits>24){ - ret|=b->ptr[3]<<(24-b->endbit); + ret|=b->ptr[3]<<(24-b->endbit); if(bits>32 && b->endbit){ ret|=b->ptr[4]<<(32-b->endbit); } @@ -429,11 +433,11 @@ long oggpackB_read(oggpack_buffer *b,int bits){ ret=b->ptr[0]<<(24+b->endbit); if(bits>8){ - ret|=b->ptr[1]<<(16+b->endbit); + ret|=b->ptr[1]<<(16+b->endbit); if(bits>16){ - ret|=b->ptr[2]<<(8+b->endbit); + ret|=b->ptr[2]<<(8+b->endbit); if(bits>24){ - ret|=b->ptr[3]<<(b->endbit); + ret|=b->ptr[3]<<(b->endbit); if(bits>32 && b->endbit) ret|=b->ptr[4]>>(8-b->endbit); } @@ -511,7 +515,7 @@ long oggpackB_bytes(oggpack_buffer *b){ long oggpackB_bits(oggpack_buffer *b){ return oggpack_bits(b); } - + unsigned char *oggpack_get_buffer(oggpack_buffer *b){ return(b->buffer); } @@ -534,7 +538,7 @@ static int ilog(unsigned int v){ } return(ret); } - + oggpack_buffer o; oggpack_buffer r; @@ -581,7 +585,7 @@ void cliptest(unsigned long *b,int vals,int bits,int *comp,int compsize){ void cliptestB(unsigned long *b,int vals,int bits,int *comp,int compsize){ long bytes,i; unsigned char *buffer; - + oggpackB_reset(&o); for(i=0;i<vals;i++) oggpackB_write(&o,b[i],bits?bits:ilog(b[i])); @@ -613,9 +617,190 @@ void cliptestB(unsigned long *b,int vals,int bits,int *comp,int compsize){ if(oggpackB_bytes(&r)!=bytes)report("leftover bytes after read!\n"); } +void copytest(int prefill, int copy){ + oggpack_buffer source_write; + oggpack_buffer dest_write; + oggpack_buffer source_read; + oggpack_buffer dest_read; + unsigned char *source; + unsigned char *dest; + long source_bytes,dest_bytes; + int i; + + oggpack_writeinit(&source_write); + oggpack_writeinit(&dest_write); + + for(i=0;i<(prefill+copy+7)/8;i++) + oggpack_write(&source_write,(i^0x5a)&0xff,8); + source=oggpack_get_buffer(&source_write); + source_bytes=oggpack_bytes(&source_write); + + /* prefill */ + oggpack_writecopy(&dest_write,source,prefill); + + /* check buffers; verify end byte masking */ + dest=oggpack_get_buffer(&dest_write); + dest_bytes=oggpack_bytes(&dest_write); + if(dest_bytes!=(prefill+7)/8){ + fprintf(stderr,"wrong number of bytes after prefill! %ld!=%d\n",dest_bytes,(prefill+7)/8); + exit(1); + } + oggpack_readinit(&source_read,source,source_bytes); + oggpack_readinit(&dest_read,dest,dest_bytes); + + for(i=0;i<prefill;i+=8){ + int s=oggpack_read(&source_read,prefill-i<8?prefill-i:8); + int d=oggpack_read(&dest_read,prefill-i<8?prefill-i:8); + if(s!=d){ + fprintf(stderr,"prefill=%d mismatch! byte %d, %x!=%x\n",prefill,i/8,s,d); + exit(1); + } + } + if(prefill<dest_bytes){ + if(oggpack_read(&dest_read,dest_bytes-prefill)!=0){ + fprintf(stderr,"prefill=%d mismatch! trailing bits not zero\n",prefill); + exit(1); + } + } + + /* second copy */ + oggpack_writecopy(&dest_write,source,copy); + + /* check buffers; verify end byte masking */ + dest=oggpack_get_buffer(&dest_write); + dest_bytes=oggpack_bytes(&dest_write); + if(dest_bytes!=(copy+prefill+7)/8){ + fprintf(stderr,"wrong number of bytes after prefill+copy! %ld!=%d\n",dest_bytes,(copy+prefill+7)/8); + exit(1); + } + oggpack_readinit(&source_read,source,source_bytes); + oggpack_readinit(&dest_read,dest,dest_bytes); + + for(i=0;i<prefill;i+=8){ + int s=oggpack_read(&source_read,prefill-i<8?prefill-i:8); + int d=oggpack_read(&dest_read,prefill-i<8?prefill-i:8); + if(s!=d){ + fprintf(stderr,"prefill=%d mismatch! byte %d, %x!=%x\n",prefill,i/8,s,d); + exit(1); + } + } + + oggpack_readinit(&source_read,source,source_bytes); + for(i=0;i<copy;i+=8){ + int s=oggpack_read(&source_read,copy-i<8?copy-i:8); + int d=oggpack_read(&dest_read,copy-i<8?copy-i:8); + if(s!=d){ + fprintf(stderr,"prefill=%d copy=%d mismatch! byte %d, %x!=%x\n",prefill,copy,i/8,s,d); + exit(1); + } + } + + if(copy+prefill<dest_bytes){ + if(oggpack_read(&dest_read,dest_bytes-copy-prefill)!=0){ + fprintf(stderr,"prefill=%d copy=%d mismatch! trailing bits not zero\n",prefill,copy); + exit(1); + } + } + + oggpack_writeclear(&source_write); + oggpack_writeclear(&dest_write); + + +} + +void copytestB(int prefill, int copy){ + oggpack_buffer source_write; + oggpack_buffer dest_write; + oggpack_buffer source_read; + oggpack_buffer dest_read; + unsigned char *source; + unsigned char *dest; + long source_bytes,dest_bytes; + int i; + + oggpackB_writeinit(&source_write); + oggpackB_writeinit(&dest_write); + + for(i=0;i<(prefill+copy+7)/8;i++) + oggpackB_write(&source_write,(i^0x5a)&0xff,8); + source=oggpackB_get_buffer(&source_write); + source_bytes=oggpackB_bytes(&source_write); + + /* prefill */ + oggpackB_writecopy(&dest_write,source,prefill); + + /* check buffers; verify end byte masking */ + dest=oggpackB_get_buffer(&dest_write); + dest_bytes=oggpackB_bytes(&dest_write); + if(dest_bytes!=(prefill+7)/8){ + fprintf(stderr,"wrong number of bytes after prefill! %ld!=%d\n",dest_bytes,(prefill+7)/8); + exit(1); + } + oggpackB_readinit(&source_read,source,source_bytes); + oggpackB_readinit(&dest_read,dest,dest_bytes); + + for(i=0;i<prefill;i+=8){ + int s=oggpackB_read(&source_read,prefill-i<8?prefill-i:8); + int d=oggpackB_read(&dest_read,prefill-i<8?prefill-i:8); + if(s!=d){ + fprintf(stderr,"prefill=%d mismatch! byte %d, %x!=%x\n",prefill,i/8,s,d); + exit(1); + } + } + if(prefill<dest_bytes){ + if(oggpackB_read(&dest_read,dest_bytes-prefill)!=0){ + fprintf(stderr,"prefill=%d mismatch! trailing bits not zero\n",prefill); + exit(1); + } + } + + /* second copy */ + oggpackB_writecopy(&dest_write,source,copy); + + /* check buffers; verify end byte masking */ + dest=oggpackB_get_buffer(&dest_write); + dest_bytes=oggpackB_bytes(&dest_write); + if(dest_bytes!=(copy+prefill+7)/8){ + fprintf(stderr,"wrong number of bytes after prefill+copy! %ld!=%d\n",dest_bytes,(copy+prefill+7)/8); + exit(1); + } + oggpackB_readinit(&source_read,source,source_bytes); + oggpackB_readinit(&dest_read,dest,dest_bytes); + + for(i=0;i<prefill;i+=8){ + int s=oggpackB_read(&source_read,prefill-i<8?prefill-i:8); + int d=oggpackB_read(&dest_read,prefill-i<8?prefill-i:8); + if(s!=d){ + fprintf(stderr,"prefill=%d mismatch! byte %d, %x!=%x\n",prefill,i/8,s,d); + exit(1); + } + } + + oggpackB_readinit(&source_read,source,source_bytes); + for(i=0;i<copy;i+=8){ + int s=oggpackB_read(&source_read,copy-i<8?copy-i:8); + int d=oggpackB_read(&dest_read,copy-i<8?copy-i:8); + if(s!=d){ + fprintf(stderr,"prefill=%d copy=%d mismatch! byte %d, %x!=%x\n",prefill,copy,i/8,s,d); + exit(1); + } + } + + if(copy+prefill<dest_bytes){ + if(oggpackB_read(&dest_read,dest_bytes-copy-prefill)!=0){ + fprintf(stderr,"prefill=%d copy=%d mismatch! trailing bits not zero\n",prefill,copy); + exit(1); + } + } + + oggpackB_writeclear(&source_write); + oggpackB_writeclear(&dest_write); + +} + int main(void){ unsigned char *buffer; - long bytes,i; + long bytes,i,j; static unsigned long testbuffer1[]= {18,12,103948,4325,543,76,432,52,3,65,4,56,32,42,34,21,1,23,32,546,456,7, 567,56,8,8,55,3,52,342,341,4,265,7,67,86,2199,21,7,1,5,1,4}; @@ -761,7 +946,31 @@ int main(void){ exit(1); } oggpack_writeclear(&o); - fprintf(stderr,"ok.\n"); + fprintf(stderr,"ok."); + + /* this is partly glassbox; we're mostly concerned about the allocation boundaries */ + + fprintf(stderr,"\nTesting aligned writecopies (LSb): "); + for(i=0;i<71;i++) + for(j=0;j<5;j++) + copytest(j*8,i); + for(i=BUFFER_INCREMENT*8-71;i<BUFFER_INCREMENT*8+71;i++) + for(j=0;j<5;j++) + copytest(j*8,i); + fprintf(stderr,"ok. "); + + fprintf(stderr,"\nTesting unaligned writecopies (LSb): "); + for(i=0;i<71;i++) + for(j=1;j<40;j++) + if(j&0x7) + copytest(j,i); + for(i=BUFFER_INCREMENT*8-71;i<BUFFER_INCREMENT*8+71;i++) + for(j=1;j<40;j++) + if(j&0x7) + copytest(j,i); + + fprintf(stderr,"ok. \n"); + /********** lazy, cut-n-paste retest with MSb packing ***********/ @@ -846,12 +1055,34 @@ int main(void){ fprintf(stderr,"failed; read past end without -1.\n"); exit(1); } + fprintf(stderr,"ok."); oggpackB_writeclear(&o); - fprintf(stderr,"ok.\n\n"); + /* this is partly glassbox; we're mostly concerned about the allocation boundaries */ + + fprintf(stderr,"\nTesting aligned writecopies (MSb): "); + for(i=0;i<71;i++) + for(j=0;j<5;j++) + copytestB(j*8,i); + for(i=BUFFER_INCREMENT*8-71;i<BUFFER_INCREMENT*8+71;i++) + for(j=0;j<5;j++) + copytestB(j*8,i); + fprintf(stderr,"ok. "); + + fprintf(stderr,"\nTesting unaligned writecopies (MSb): "); + for(i=0;i<71;i++) + for(j=1;j<40;j++) + if(j&0x7) + copytestB(j,i); + for(i=BUFFER_INCREMENT*8-71;i<BUFFER_INCREMENT*8+71;i++) + for(j=1;j<40;j++) + if(j&0x7) + copytestB(j,i); + + fprintf(stderr,"ok. \n\n"); return(0); -} +} #endif /* _V_SELFTEST */ #undef BUFFER_INCREMENT diff --git a/drivers/ogg/framing.c b/drivers/ogg/framing.c index 25f0e88dbc..3a2f0a6058 100644 --- a/drivers/ogg/framing.c +++ b/drivers/ogg/framing.c @@ -12,7 +12,7 @@ function: code raw packets into framed OggSquish stream and decode Ogg streams back into raw packets - last mod: $Id: framing.c 17592 2010-11-01 20:27:54Z xiphmont $ + last mod: $Id: framing.c 18758 2013-01-08 16:29:56Z tterribe $ note: The CRC code is directly derived from public domain code by Ross Williams (ross@guest.adelaide.edu.au). See docs/framing.html @@ -21,6 +21,7 @@ ********************************************************************/ #include <stdlib.h> +#include <limits.h> #include <string.h> #include <ogg/ogg.h> @@ -61,7 +62,7 @@ int ogg_page_serialno(const ogg_page *og){ (og->header[16]<<16) | (og->header[17]<<24)); } - + long ogg_page_pageno(const ogg_page *og){ return(og->header[18] | (og->header[19]<<8) | @@ -76,16 +77,16 @@ long ogg_page_pageno(const ogg_page *og){ page, it's counted */ /* NOTE: -If a page consists of a packet begun on a previous page, and a new -packet begun (but not completed) on this page, the return will be: - ogg_page_packets(page) ==1, - ogg_page_continued(page) !=0 - -If a page happens to be a single packet that was begun on a -previous page, and spans to the next page (in the case of a three or -more page packet), the return will be: - ogg_page_packets(page) ==0, - ogg_page_continued(page) !=0 + If a page consists of a packet begun on a previous page, and a new + packet begun (but not completed) on this page, the return will be: + ogg_page_packets(page) ==1, + ogg_page_continued(page) !=0 + + If a page happens to be a single packet that was begun on a + previous page, and spans to the next page (in the case of a three or + more page packet), the return will be: + ogg_page_packets(page) ==0, + ogg_page_continued(page) !=0 */ int ogg_page_packets(const ogg_page *og){ @@ -205,7 +206,7 @@ int ogg_stream_init(ogg_stream_state *os,int serialno){ return(0); } return(-1); -} +} /* async/delayed error detection for the ogg_stream_state */ int ogg_stream_check(ogg_stream_state *os){ @@ -220,10 +221,10 @@ int ogg_stream_clear(ogg_stream_state *os){ if(os->lacing_vals)_ogg_free(os->lacing_vals); if(os->granule_vals)_ogg_free(os->granule_vals); - memset(os,0,sizeof(*os)); + memset(os,0,sizeof(*os)); } return(0); -} +} int ogg_stream_destroy(ogg_stream_state *os){ if(os){ @@ -231,44 +232,56 @@ int ogg_stream_destroy(ogg_stream_state *os){ _ogg_free(os); } return(0); -} +} /* Helpers for ogg_stream_encode; this keeps the structure and what's happening fairly clear */ -static int _os_body_expand(ogg_stream_state *os,int needed){ - if(os->body_storage<=os->body_fill+needed){ +static int _os_body_expand(ogg_stream_state *os,long needed){ + if(os->body_storage-needed<=os->body_fill){ + long body_storage; void *ret; - ret=_ogg_realloc(os->body_data,(os->body_storage+needed+1024)* - sizeof(*os->body_data)); + if(os->body_storage>LONG_MAX-needed){ + ogg_stream_clear(os); + return -1; + } + body_storage=os->body_storage+needed; + if(body_storage<LONG_MAX-1024)body_storage+=1024; + ret=_ogg_realloc(os->body_data,body_storage*sizeof(*os->body_data)); if(!ret){ ogg_stream_clear(os); return -1; } - os->body_storage+=(needed+1024); + os->body_storage=body_storage; os->body_data=ret; } return 0; } -static int _os_lacing_expand(ogg_stream_state *os,int needed){ - if(os->lacing_storage<=os->lacing_fill+needed){ +static int _os_lacing_expand(ogg_stream_state *os,long needed){ + if(os->lacing_storage-needed<=os->lacing_fill){ + long lacing_storage; void *ret; - ret=_ogg_realloc(os->lacing_vals,(os->lacing_storage+needed+32)* - sizeof(*os->lacing_vals)); + if(os->lacing_storage>LONG_MAX-needed){ + ogg_stream_clear(os); + return -1; + } + lacing_storage=os->lacing_storage+needed; + if(lacing_storage<LONG_MAX-32)lacing_storage+=32; + ret=_ogg_realloc(os->lacing_vals,lacing_storage*sizeof(*os->lacing_vals)); if(!ret){ ogg_stream_clear(os); return -1; } os->lacing_vals=ret; - ret=_ogg_realloc(os->granule_vals,(os->lacing_storage+needed+32)* + ret=_ogg_realloc(os->granule_vals,lacing_storage* sizeof(*os->granule_vals)); if(!ret){ ogg_stream_clear(os); return -1; } os->granule_vals=ret; - os->lacing_storage+=(needed+32); + os->lacing_storage=lacing_storage; } return 0; } @@ -287,12 +300,12 @@ void ogg_page_checksum_set(ogg_page *og){ og->header[23]=0; og->header[24]=0; og->header[25]=0; - + for(i=0;i<og->header_len;i++) crc_reg=(crc_reg<<8)^crc_lookup[((crc_reg >> 24)&0xff)^og->header[i]]; for(i=0;i<og->body_len;i++) crc_reg=(crc_reg<<8)^crc_lookup[((crc_reg >> 24)&0xff)^og->body[i]]; - + og->header[22]=(unsigned char)(crc_reg&0xff); og->header[23]=(unsigned char)((crc_reg>>8)&0xff); og->header[24]=(unsigned char)((crc_reg>>16)&0xff); @@ -304,26 +317,31 @@ void ogg_page_checksum_set(ogg_page *og){ int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov, int count, long e_o_s, ogg_int64_t granulepos){ - int bytes = 0, lacing_vals, i; + long bytes = 0, lacing_vals; + int i; if(ogg_stream_check(os)) return -1; if(!iov) return 0; - - for (i = 0; i < count; ++i) bytes += (int)iov[i].iov_len; + + for (i = 0; i < count; ++i){ + if(iov[i].iov_len>LONG_MAX) return -1; + if(bytes>LONG_MAX-(long)iov[i].iov_len) return -1; + bytes += (long)iov[i].iov_len; + } lacing_vals=bytes/255+1; if(os->body_returned){ /* advance packet data according to the body_returned pointer. We had to keep it around to return a pointer into the buffer last call */ - + os->body_fill-=os->body_returned; if(os->body_fill) memmove(os->body_data,os->body_data+os->body_returned, os->body_fill); os->body_returned=0; } - + /* make sure we have the buffer storage */ if(_os_body_expand(os,bytes) || _os_lacing_expand(os,lacing_vals)) return -1; @@ -467,33 +485,33 @@ static int ogg_stream_flush_i(ogg_stream_state *os,ogg_page *og, int force, int pageno>>=8; } } - + /* zero for computation; filled in later */ os->header[22]=0; os->header[23]=0; os->header[24]=0; os->header[25]=0; - + /* segment table */ os->header[26]=(unsigned char)(vals&0xff); for(i=0;i<vals;i++) bytes+=os->header[i+27]=(unsigned char)(os->lacing_vals[i]&0xff); - + /* set pointers in the ogg_page struct */ og->header=os->header; og->header_len=os->header_fill=vals+27; og->body=os->body_data+os->body_returned; og->body_len=bytes; - + /* advance the lacing data and set the body_returned pointer */ - + os->lacing_fill-=vals; memmove(os->lacing_vals,os->lacing_vals+vals,os->lacing_fill*sizeof(*os->lacing_vals)); memmove(os->granule_vals,os->granule_vals+vals,os->lacing_fill*sizeof(*os->granule_vals)); os->body_returned+=bytes; - + /* calculate the checksum */ - + ogg_page_checksum_set(og); /* done */ @@ -512,12 +530,20 @@ static int ogg_stream_flush_i(ogg_stream_state *os,ogg_page *og, int force, int since ogg_stream_flush will flush the last page in a stream even if it's undersized, you almost certainly want to use ogg_stream_pageout (and *not* ogg_stream_flush) unless you specifically need to flush - an page regardless of size in the middle of a stream. */ + a page regardless of size in the middle of a stream. */ int ogg_stream_flush(ogg_stream_state *os,ogg_page *og){ return ogg_stream_flush_i(os,og,1,4096); } +/* Like the above, but an argument is provided to adjust the nominal + page size for applications which are smart enough to provide their + own delay based flushing */ + +int ogg_stream_flush_fill(ogg_stream_state *os,ogg_page *og, int nfill){ + return ogg_stream_flush_i(os,og,1,nfill); +} + /* This constructs pages from buffered packet segments. The pointers returned are to static buffers; do not free. The returned buffers are good only until the next call (using the same ogg_stream_state) */ @@ -533,10 +559,10 @@ int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og){ return(ogg_stream_flush_i(os,og,force,4096)); } -/* Like the above, but an argument is provided to adjust the nominal +/* Like the above, but an argument is provided to adjust the nominal page size for applications which are smart enough to provide their own delay based flushing */ - + int ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill){ int force=0; if(ogg_stream_check(os)) return 0; @@ -645,7 +671,7 @@ int ogg_sync_wrote(ogg_sync_state *oy, long bytes){ -n) skipped n bytes 0) page not ready; more data (no bytes skipped) n) page synced at current location; page length n bytes - + */ long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og){ @@ -654,54 +680,54 @@ long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og){ long bytes=oy->fill-oy->returned; if(ogg_sync_check(oy))return 0; - + if(oy->headerbytes==0){ int headerbytes,i; if(bytes<27)return(0); /* not enough for a header */ - + /* verify capture pattern */ if(memcmp(page,"OggS",4))goto sync_fail; - + headerbytes=page[26]+27; if(bytes<headerbytes)return(0); /* not enough for header + seg table */ - + /* count up body length in the segment table */ - + for(i=0;i<page[26];i++) oy->bodybytes+=page[27+i]; oy->headerbytes=headerbytes; } - + if(oy->bodybytes+oy->headerbytes>bytes)return(0); - + /* The whole test page is buffered. Verify the checksum */ { /* Grab the checksum bytes, set the header field to zero */ char chksum[4]; ogg_page log; - + memcpy(chksum,page+22,4); memset(page+22,0,4); - + /* set up a temp page struct and recompute the checksum */ log.header=page; log.header_len=oy->headerbytes; log.body=page+oy->headerbytes; log.body_len=oy->bodybytes; ogg_page_checksum_set(&log); - + /* Compare */ if(memcmp(chksum,page+22,4)){ /* D'oh. Mismatch! Corrupt page (or miscapture and not a page at all) */ /* replace the computed checksum with the one actually read in */ memcpy(page+22,chksum,4); - + /* Bad checksum. Lose sync */ goto sync_fail; } } - + /* yes, have a whole page all ready to go */ { unsigned char *page=oy->data+oy->returned; @@ -720,12 +746,12 @@ long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og){ oy->bodybytes=0; return(bytes); } - + sync_fail: - + oy->headerbytes=0; oy->bodybytes=0; - + /* search for possible capture */ next=memchr(page+1,'O',bytes-1); if(!next) @@ -764,7 +790,7 @@ int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og){ /* need more data */ return(0); } - + /* head did not start a synced page... skipped some bytes */ if(!oy->unsynced){ oy->unsynced=1; @@ -793,7 +819,7 @@ int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og){ int serialno=ogg_page_serialno(og); long pageno=ogg_page_pageno(og); int segments=header[26]; - + if(ogg_stream_check(os)) return -1; /* clean up 'returned data' */ @@ -848,7 +874,7 @@ int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og){ /* are we a 'continued packet' page? If so, we may need to skip some segments */ if(continued){ - if(os->lacing_fill<1 || + if(os->lacing_fill<1 || os->lacing_vals[os->lacing_fill-1]==0x400){ bos=0; for(;segptr<segments;segptr++){ @@ -862,7 +888,7 @@ int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og){ } } } - + if(bodysize){ if(_os_body_expand(os,bodysize)) return -1; memcpy(os->body_data+os->body_fill,body,bodysize); @@ -875,20 +901,20 @@ int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og){ int val=header[27+segptr]; os->lacing_vals[os->lacing_fill]=val; os->granule_vals[os->lacing_fill]=-1; - + if(bos){ os->lacing_vals[os->lacing_fill]|=0x100; bos=0; } - + if(val<255)saved=os->lacing_fill; - + os->lacing_fill++; segptr++; - + if(val<255)os->lacing_packet=os->lacing_fill; } - + /* set the granulepos on the last granuleval of the last full packet */ if(saved!=-1){ os->granule_vals[saved]=granulepos; @@ -1493,7 +1519,7 @@ void test_pack(const int *pl, const int **headers, int byteskip, /* construct a test packet */ ogg_packet op; int len=pl[i]; - + op.packet=data+inptr; op.bytes=len; op.e_o_s=(pl[i+1]<0?1:0); @@ -1509,7 +1535,7 @@ void test_pack(const int *pl, const int **headers, int byteskip, /* retrieve any finished pages */ { ogg_page og; - + while(ogg_stream_pageout(&os_en,&og)){ /* We have a page. Check it carefully */ @@ -1558,7 +1584,7 @@ void test_pack(const int *pl, const int **headers, int byteskip, if(ret==0)break; if(ret<0)continue; /* got a page. Happy happy. Verify that it's good. */ - + fprintf(stderr,"(%d), ",pageout); check_page(data+deptr,headers[pageout],&og_de); @@ -1572,7 +1598,7 @@ void test_pack(const int *pl, const int **headers, int byteskip, while(ogg_stream_packetpeek(&os_de,&op_de2)>0){ ogg_stream_packetpeek(&os_de,NULL); ogg_stream_packetout(&os_de,&op_de); /* just catching them all */ - + /* verify peek and out match */ if(memcmp(&op_de,&op_de2,sizeof(op_de))){ fprintf(stderr,"packetout != packetpeek! pos=%ld\n", @@ -1598,7 +1624,7 @@ void test_pack(const int *pl, const int **headers, int byteskip, } bosflag=1; depacket+=op_de.bytes; - + /* check eos flag */ if(eosflag){ fprintf(stderr,"Multiple decoded packets with eos flag!\n"); @@ -1745,7 +1771,7 @@ int main(void){ 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,50,-1}; const int *headret[]={head1_5,head2_5,head3_5,NULL}; - + fprintf(stderr,"testing max packet segments... "); test_pack(packets,headret,0,0,0); } @@ -1754,7 +1780,7 @@ int main(void){ /* packet that overspans over an entire page */ const int packets[]={0,100,130049,259,255,-1}; const int *headret[]={head1_6,head2_6,head3_6,head4_6,NULL}; - + fprintf(stderr,"testing very large packets... "); test_pack(packets,headret,0,0,0); } @@ -1764,7 +1790,7 @@ int main(void){ found by Josh Coalson) */ const int packets[]={0,100,130049,259,255,-1}; const int *headret[]={head1_6,head2_6,head3_6,head4_6,NULL}; - + fprintf(stderr,"testing continuation resync in very large packets... "); test_pack(packets,headret,100,2,3); } @@ -1773,7 +1799,7 @@ int main(void){ /* term only page. why not? */ const int packets[]={0,100,64770,-1}; const int *headret[]={head1_7,head2_7,head3_7,NULL}; - + fprintf(stderr,"testing zero data page (1 nil packet)... "); test_pack(packets,headret,0,0,0); } @@ -1786,13 +1812,13 @@ int main(void){ int pl[]={0, 1,1,98,4079, 1,1,2954,2057, 76,34,912,0,234,1000,1000, 1000,300,-1}; int inptr=0,i,j; ogg_page og[5]; - + ogg_stream_reset(&os_en); for(i=0;pl[i]!=-1;i++){ ogg_packet op; int len=pl[i]; - + op.packet=data+inptr; op.bytes=len; op.e_o_s=(pl[i+1]<0?1:0); @@ -1840,7 +1866,7 @@ int main(void){ ogg_stream_pagein(&os_de,&temp); /* do we get the expected results/packets? */ - + if(ogg_stream_packetout(&os_de,&test)!=1)error(); checkpacket(&test,0,0,0); if(ogg_stream_packetout(&os_de,&test)!=1)error(); @@ -1991,13 +2017,13 @@ int main(void){ fprintf(stderr,"ok.\n"); } - + /* Test recapture: garbage + page */ { ogg_page og_de; fprintf(stderr,"Testing search for capture... "); - ogg_sync_reset(&oy); - + ogg_sync_reset(&oy); + /* 'garbage' */ memcpy(ogg_sync_buffer(&oy,og[1].body_len),og[1].body, og[1].body_len); @@ -2033,7 +2059,7 @@ int main(void){ { ogg_page og_de; fprintf(stderr,"Testing recapture... "); - ogg_sync_reset(&oy); + ogg_sync_reset(&oy); memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header, og[1].header_len); @@ -2077,13 +2103,9 @@ int main(void){ free_page(&og[i]); } } - } + } return(0); } #endif - - - - diff --git a/drivers/ogg/ogg.h b/drivers/ogg/ogg.h index cea5c16edc..cea4ebed75 100644 --- a/drivers/ogg/ogg.h +++ b/drivers/ogg/ogg.h @@ -11,7 +11,7 @@ ******************************************************************** function: toplevel libogg include - last mod: $Id: ogg.h 17571 2010-10-27 13:28:20Z xiphmont $ + last mod: $Id: ogg.h 18044 2011-08-01 17:55:20Z gmaxwell $ ********************************************************************/ #ifndef _OGG_H @@ -161,6 +161,7 @@ extern int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov, extern int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og); extern int ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill); extern int ogg_stream_flush(ogg_stream_state *os, ogg_page *og); +extern int ogg_stream_flush_fill(ogg_stream_state *os, ogg_page *og, int nfill); /* Ogg BITSTREAM PRIMITIVES: decoding **************************/ diff --git a/drivers/ogg/os_types.h b/drivers/ogg/os_types.h index d6691b703d..8bf82107e5 100644 --- a/drivers/ogg/os_types.h +++ b/drivers/ogg/os_types.h @@ -11,7 +11,7 @@ ******************************************************************** function: #ifdef jail to whip a few platforms into the UNIX ideal. - last mod: $Id: os_types.h 17712 2010-12-03 17:10:02Z xiphmont $ + last mod: $Id: os_types.h 19098 2014-02-26 19:06:45Z giles $ ********************************************************************/ #ifndef _OS_TYPES_H @@ -24,7 +24,7 @@ #define _ogg_realloc realloc #define _ogg_free free -#if defined(_WIN32) +#if defined(_WIN32) # if defined(__CYGWIN__) # include <stdint.h> diff --git a/drivers/openssl/register_openssl.cpp b/drivers/openssl/register_openssl.cpp index ed2150bef5..0d2f9fd537 100644 --- a/drivers/openssl/register_openssl.cpp +++ b/drivers/openssl/register_openssl.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* register_openssl.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "register_openssl.h" #include "stream_peer_openssl.h" diff --git a/drivers/openssl/register_openssl.h b/drivers/openssl/register_openssl.h index e547a2b750..a66ca1e9c0 100644 --- a/drivers/openssl/register_openssl.h +++ b/drivers/openssl/register_openssl.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* register_openssl.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef REGISTER_OPENSSL_H #define REGISTER_OPENSSL_H diff --git a/drivers/openssl/stream_peer_openssl.cpp b/drivers/openssl/stream_peer_openssl.cpp index aad3a11b7e..67f58b6028 100644 --- a/drivers/openssl/stream_peer_openssl.cpp +++ b/drivers/openssl/stream_peer_openssl.cpp @@ -1,4 +1,31 @@ - +/*************************************************************************/ +/* stream_peer_openssl.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifdef OPENSSL_ENABLED #include "stream_peer_openssl.h" //hostname matching code from curl diff --git a/drivers/openssl/stream_peer_openssl.h b/drivers/openssl/stream_peer_openssl.h index 20266ee584..f1f25f4fc5 100644 --- a/drivers/openssl/stream_peer_openssl.h +++ b/drivers/openssl/stream_peer_openssl.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* stream_peer_openssl.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef STREAM_PEER_OPEN_SSL_H #define STREAM_PEER_OPEN_SSL_H diff --git a/drivers/png/SCsub b/drivers/png/SCsub index 9dbffeed1f..96ef9fa5f8 100644 --- a/drivers/png/SCsub +++ b/drivers/png/SCsub @@ -3,7 +3,6 @@ Import('env_drivers') png_sources = [ - "png/example.c", "png/png.c", "png/pngerror.c", "png/pngget.c", diff --git a/drivers/png/example.c b/drivers/png/example.c deleted file mode 100644 index 7171d9847e..0000000000 --- a/drivers/png/example.c +++ /dev/null @@ -1,879 +0,0 @@ - -#if 0 /* in case someone actually tries to compile this */ - -/* example.c - an example of using libpng - * Last changed in libpng 1.5.19 [August 21, 2014] - * Maintained 1998-2014 Glenn Randers-Pehrson - * Maintained 1996, 1997 Andreas Dilger - * Written 1995, 1996 Guy Eric Schalnat, Group 42, Inc. - */ - -/* This is an example of how to use libpng to read and write PNG files. - * The file libpng-manual.txt is much more verbose then this. If you have not - * read it, do so first. This was designed to be a starting point of an - * implementation. This is not officially part of libpng, is hereby placed - * in the public domain, and therefore does not require a copyright notice. - * To the extent possible under law, the authors have waived all copyright and - * related or neighboring rights to this file. - * - * This file does not currently compile, because it is missing certain - * parts, like allocating memory to hold an image. You will have to - * supply these parts to get it to compile. For an example of a minimal - * working PNG reader/writer, see pngtest.c, included in this distribution; - * see also the programs in the contrib directory. - */ - -#define _POSIX_SOURCE 1 /* libpng and zlib are POSIX-compliant. You may - * change this if your application uses non-POSIX - * extensions. */ - -#include "png.h" - - /* The png_jmpbuf() macro, used in error handling, became available in - * libpng version 1.0.6. If you want to be able to run your code with older - * versions of libpng, you must define the macro yourself (but only if it - * is not already defined by libpng!). - */ - -#ifndef png_jmpbuf -# define png_jmpbuf(png_ptr) ((png_ptr)->png_jmpbuf) -#endif - -/* Check to see if a file is a PNG file using png_sig_cmp(). png_sig_cmp() - * returns zero if the image is a PNG and nonzero if it isn't a PNG. - * - * The function check_if_png() shown here, but not used, returns nonzero (true) - * if the file can be opened and is a PNG, 0 (false) otherwise. - * - * If this call is successful, and you are going to keep the file open, - * you should call png_set_sig_bytes(png_ptr, PNG_BYTES_TO_CHECK); once - * you have created the png_ptr, so that libpng knows your application - * has read that many bytes from the start of the file. Make sure you - * don't call png_set_sig_bytes() with more than 8 bytes read or give it - * an incorrect number of bytes read, or you will either have read too - * many bytes (your fault), or you are telling libpng to read the wrong - * number of magic bytes (also your fault). - * - * Many applications already read the first 2 or 4 bytes from the start - * of the image to determine the file type, so it would be easiest just - * to pass the bytes to png_sig_cmp() or even skip that if you know - * you have a PNG file, and call png_set_sig_bytes(). - */ -#define PNG_BYTES_TO_CHECK 4 -int check_if_png(char *file_name, FILE **fp) -{ - char buf[PNG_BYTES_TO_CHECK]; - - /* Open the prospective PNG file. */ - if ((*fp = fopen(file_name, "rb")) == NULL) - return 0; - - /* Read in some of the signature bytes */ - if (fread(buf, 1, PNG_BYTES_TO_CHECK, *fp) != PNG_BYTES_TO_CHECK) - return 0; - - /* Compare the first PNG_BYTES_TO_CHECK bytes of the signature. - Return nonzero (true) if they match */ - - return(!png_sig_cmp(buf, (png_size_t)0, PNG_BYTES_TO_CHECK)); -} - -/* Read a PNG file. You may want to return an error code if the read - * fails (depending upon the failure). There are two "prototypes" given - * here - one where we are given the filename, and we need to open the - * file, and the other where we are given an open file (possibly with - * some or all of the magic bytes read - see comments above). - */ -#ifdef open_file /* prototype 1 */ -void read_png(char *file_name) /* We need to open the file */ -{ - png_structp png_ptr; - png_infop info_ptr; - int sig_read = 0; - png_uint_32 width, height; - int bit_depth, color_type, interlace_type; - FILE *fp; - - if ((fp = fopen(file_name, "rb")) == NULL) - return (ERROR); - -#else no_open_file /* prototype 2 */ -void read_png(FILE *fp, int sig_read) /* File is already open */ -{ - png_structp png_ptr; - png_infop info_ptr; - png_uint_32 width, height; - int bit_depth, color_type, interlace_type; -#endif no_open_file /* Only use one prototype! */ - - /* Create and initialize the png_struct with the desired error handler - * functions. If you want to use the default stderr and longjump method, - * you can supply NULL for the last three parameters. We also supply the - * the compiler header file version, so that we know if the application - * was compiled with a compatible version of the library. REQUIRED - */ - png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, - png_voidp user_error_ptr, user_error_fn, user_warning_fn); - - if (png_ptr == NULL) - { - fclose(fp); - return (ERROR); - } - - /* Allocate/initialize the memory for image information. REQUIRED. */ - info_ptr = png_create_info_struct(png_ptr); - if (info_ptr == NULL) - { - fclose(fp); - png_destroy_read_struct(&png_ptr, NULL, NULL); - return (ERROR); - } - - /* Set error handling if you are using the setjmp/longjmp method (this is - * the normal method of doing things with libpng). REQUIRED unless you - * set up your own error handlers in the png_create_read_struct() earlier. - */ - - if (setjmp(png_jmpbuf(png_ptr))) - { - /* Free all of the memory associated with the png_ptr and info_ptr */ - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - fclose(fp); - /* If we get here, we had a problem reading the file */ - return (ERROR); - } - - /* One of the following I/O initialization methods is REQUIRED */ -#ifdef streams /* PNG file I/O method 1 */ - /* Set up the input control if you are using standard C streams */ - png_init_io(png_ptr, fp); - -#else no_streams /* PNG file I/O method 2 */ - /* If you are using replacement read functions, instead of calling - * png_init_io() here you would call: - */ - png_set_read_fn(png_ptr, (void *)user_io_ptr, user_read_fn); - /* where user_io_ptr is a structure you want available to the callbacks */ -#endif no_streams /* Use only one I/O method! */ - - /* If we have already read some of the signature */ - png_set_sig_bytes(png_ptr, sig_read); - -#ifdef hilevel - /* - * If you have enough memory to read in the entire image at once, - * and you need to specify only transforms that can be controlled - * with one of the PNG_TRANSFORM_* bits (this presently excludes - * quantizing, filling, setting background, and doing gamma - * adjustment), then you can read the entire image (including - * pixels) into the info structure with this call: - */ - png_read_png(png_ptr, info_ptr, png_transforms, NULL); - -#else - /* OK, you're doing it the hard way, with the lower-level functions */ - - /* The call to png_read_info() gives us all of the information from the - * PNG file before the first IDAT (image data chunk). REQUIRED - */ - png_read_info(png_ptr, info_ptr); - - png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, - &interlace_type, NULL, NULL); - - /* Set up the data transformations you want. Note that these are all - * optional. Only call them if you want/need them. Many of the - * transformations only work on specific types of images, and many - * are mutually exclusive. - */ - - /* Tell libpng to strip 16 bits/color files down to 8 bits/color. - * Use accurate scaling if it's available, otherwise just chop off the - * low byte. - */ -#ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED - png_set_scale_16(png_ptr); -#else - png_set_strip_16(png_ptr); -#endif - - /* Strip alpha bytes from the input data without combining with the - * background (not recommended). - */ - png_set_strip_alpha(png_ptr); - - /* Extract multiple pixels with bit depths of 1, 2, and 4 from a single - * byte into separate bytes (useful for paletted and grayscale images). - */ - png_set_packing(png_ptr); - - /* Change the order of packed pixels to least significant bit first - * (not useful if you are using png_set_packing). */ - png_set_packswap(png_ptr); - - /* Expand paletted colors into true RGB triplets */ - if (color_type == PNG_COLOR_TYPE_PALETTE) - png_set_palette_to_rgb(png_ptr); - - /* Expand grayscale images to the full 8 bits from 1, 2, or 4 bits/pixel */ - if (color_type == PNG_COLOR_TYPE_GRAY && bit_depth < 8) - png_set_expand_gray_1_2_4_to_8(png_ptr); - - /* Expand paletted or RGB images with transparency to full alpha channels - * so the data will be available as RGBA quartets. - */ - if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) - png_set_tRNS_to_alpha(png_ptr); - - /* Set the background color to draw transparent and alpha images over. - * It is possible to set the red, green, and blue components directly - * for paletted images instead of supplying a palette index. Note that - * even if the PNG file supplies a background, you are not required to - * use it - you should use the (solid) application background if it has one. - */ - - png_color_16 my_background, *image_background; - - if (png_get_bKGD(png_ptr, info_ptr, &image_background)) - png_set_background(png_ptr, image_background, - PNG_BACKGROUND_GAMMA_FILE, 1, 1.0); - else - png_set_background(png_ptr, &my_background, - PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0); - - /* Some suggestions as to how to get a screen gamma value - * - * Note that screen gamma is the display_exponent, which includes - * the CRT_exponent and any correction for viewing conditions - */ - if (/* We have a user-defined screen gamma value */) - { - screen_gamma = user-defined screen_gamma; - } - /* This is one way that applications share the same screen gamma value */ - else if ((gamma_str = getenv("SCREEN_GAMMA")) != NULL) - { - screen_gamma = atof(gamma_str); - } - /* If we don't have another value */ - else - { - screen_gamma = PNG_DEFAULT_sRGB; /* A good guess for a PC monitor - in a dimly lit room */ - screen_gamma = PNG_GAMMA_MAC_18 or 1.0; /* Good guesses for Mac systems */ - } - - /* Tell libpng to handle the gamma conversion for you. The final call - * is a good guess for PC generated images, but it should be configurable - * by the user at run time by the user. It is strongly suggested that - * your application support gamma correction. - */ - - int intent; - - if (png_get_sRGB(png_ptr, info_ptr, &intent)) - png_set_gamma(png_ptr, screen_gamma, PNG_DEFAULT_sRGB); - else - { - double image_gamma; - if (png_get_gAMA(png_ptr, info_ptr, &image_gamma)) - png_set_gamma(png_ptr, screen_gamma, image_gamma); - else - png_set_gamma(png_ptr, screen_gamma, 0.45455); - } - -#ifdef PNG_READ_QUANTIZE_SUPPORTED - /* Quantize RGB files down to 8-bit palette or reduce palettes - * to the number of colors available on your screen. - */ - if (color_type & PNG_COLOR_MASK_COLOR) - { - int num_palette; - png_colorp palette; - - /* This reduces the image to the application supplied palette */ - if (/* We have our own palette */) - { - /* An array of colors to which the image should be quantized */ - png_color std_color_cube[MAX_SCREEN_COLORS]; - - png_set_quantize(png_ptr, std_color_cube, MAX_SCREEN_COLORS, - MAX_SCREEN_COLORS, NULL, 0); - } - /* This reduces the image to the palette supplied in the file */ - else if (png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette)) - { - png_uint_16p histogram = NULL; - - png_get_hIST(png_ptr, info_ptr, &histogram); - - png_set_quantize(png_ptr, palette, num_palette, - max_screen_colors, histogram, 0); - } - } -#endif /* PNG_READ_QUANTIZE_SUPPORTED */ - - /* Invert monochrome files to have 0 as white and 1 as black */ - png_set_invert_mono(png_ptr); - - /* If you want to shift the pixel values from the range [0,255] or - * [0,65535] to the original [0,7] or [0,31], or whatever range the - * colors were originally in: - */ - if (png_get_valid(png_ptr, info_ptr, PNG_INFO_sBIT)) - { - png_color_8p sig_bit_p; - - png_get_sBIT(png_ptr, info_ptr, &sig_bit_p); - png_set_shift(png_ptr, sig_bit_p); - } - - /* Flip the RGB pixels to BGR (or RGBA to BGRA) */ - if (color_type & PNG_COLOR_MASK_COLOR) - png_set_bgr(png_ptr); - - /* Swap the RGBA or GA data to ARGB or AG (or BGRA to ABGR) */ - png_set_swap_alpha(png_ptr); - - /* Swap bytes of 16-bit files to least significant byte first */ - png_set_swap(png_ptr); - - /* Add filler (or alpha) byte (before/after each RGB triplet) */ - png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER); - -#ifdef PNG_READ_INTERLACING_SUPPORTED - /* Turn on interlace handling. REQUIRED if you are not using - * png_read_image(). To see how to handle interlacing passes, - * see the png_read_row() method below: - */ - number_passes = png_set_interlace_handling(png_ptr); -#else - number_passes = 1; -#endif /* PNG_READ_INTERLACING_SUPPORTED */ - - - /* Optional call to gamma correct and add the background to the palette - * and update info structure. REQUIRED if you are expecting libpng to - * update the palette for you (ie you selected such a transform above). - */ - png_read_update_info(png_ptr, info_ptr); - - /* Allocate the memory to hold the image using the fields of info_ptr. */ - - /* The easiest way to read the image: */ - png_bytep row_pointers[height]; - - /* Clear the pointer array */ - for (row = 0; row < height; row++) - row_pointers[row] = NULL; - - for (row = 0; row < height; row++) - row_pointers[row] = png_malloc(png_ptr, png_get_rowbytes(png_ptr, - info_ptr)); - - /* Now it's time to read the image. One of these methods is REQUIRED */ -#ifdef entire /* Read the entire image in one go */ - png_read_image(png_ptr, row_pointers); - -#else no_entire /* Read the image one or more scanlines at a time */ - /* The other way to read images - deal with interlacing: */ - - for (pass = 0; pass < number_passes; pass++) - { -#ifdef single /* Read the image a single row at a time */ - for (y = 0; y < height; y++) - { - png_read_rows(png_ptr, &row_pointers[y], NULL, 1); - } - -#else no_single /* Read the image several rows at a time */ - for (y = 0; y < height; y += number_of_rows) - { -#ifdef sparkle /* Read the image using the "sparkle" effect. */ - png_read_rows(png_ptr, &row_pointers[y], NULL, - number_of_rows); -#else no_sparkle /* Read the image using the "rectangle" effect */ - png_read_rows(png_ptr, NULL, &row_pointers[y], - number_of_rows); -#endif no_sparkle /* Use only one of these two methods */ - } - - /* If you want to display the image after every pass, do so here */ -#endif no_single /* Use only one of these two methods */ - } -#endif no_entire /* Use only one of these two methods */ - - /* Read rest of file, and get additional chunks in info_ptr - REQUIRED */ - png_read_end(png_ptr, info_ptr); -#endif hilevel - - /* At this point you have read the entire image */ - - /* Clean up after the read, and free any memory allocated - REQUIRED */ - png_destroy_read_struct(&png_ptr, &info_ptr, NULL); - - /* Close the file */ - fclose(fp); - - /* That's it */ - return (OK); -} - -/* Progressively read a file */ - -int -initialize_png_reader(png_structp *png_ptr, png_infop *info_ptr) -{ - /* Create and initialize the png_struct with the desired error handler - * functions. If you want to use the default stderr and longjump method, - * you can supply NULL for the last three parameters. We also check that - * the library version is compatible in case we are using dynamically - * linked libraries. - */ - *png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, - png_voidp user_error_ptr, user_error_fn, user_warning_fn); - - if (*png_ptr == NULL) - { - *info_ptr = NULL; - return (ERROR); - } - - *info_ptr = png_create_info_struct(png_ptr); - - if (*info_ptr == NULL) - { - png_destroy_read_struct(png_ptr, info_ptr, NULL); - return (ERROR); - } - - if (setjmp(png_jmpbuf((*png_ptr)))) - { - png_destroy_read_struct(png_ptr, info_ptr, NULL); - return (ERROR); - } - - /* This one's new. You will need to provide all three - * function callbacks, even if you aren't using them all. - * If you aren't using all functions, you can specify NULL - * parameters. Even when all three functions are NULL, - * you need to call png_set_progressive_read_fn(). - * These functions shouldn't be dependent on global or - * static variables if you are decoding several images - * simultaneously. You should store stream specific data - * in a separate struct, given as the second parameter, - * and retrieve the pointer from inside the callbacks using - * the function png_get_progressive_ptr(png_ptr). - */ - png_set_progressive_read_fn(*png_ptr, (void *)stream_data, - info_callback, row_callback, end_callback); - - return (OK); -} - -int -process_data(png_structp *png_ptr, png_infop *info_ptr, - png_bytep buffer, png_uint_32 length) -{ - if (setjmp(png_jmpbuf((*png_ptr)))) - { - /* Free the png_ptr and info_ptr memory on error */ - png_destroy_read_struct(png_ptr, info_ptr, NULL); - return (ERROR); - } - - /* This one's new also. Simply give it chunks of data as - * they arrive from the data stream (in order, of course). - * On segmented machines, don't give it any more than 64K. - * The library seems to run fine with sizes of 4K, although - * you can give it much less if necessary (I assume you can - * give it chunks of 1 byte, but I haven't tried with less - * than 256 bytes yet). When this function returns, you may - * want to display any rows that were generated in the row - * callback, if you aren't already displaying them there. - */ - png_process_data(*png_ptr, *info_ptr, buffer, length); - return (OK); -} - -info_callback(png_structp png_ptr, png_infop info) -{ - /* Do any setup here, including setting any of the transformations - * mentioned in the Reading PNG files section. For now, you _must_ - * call either png_start_read_image() or png_read_update_info() - * after all the transformations are set (even if you don't set - * any). You may start getting rows before png_process_data() - * returns, so this is your last chance to prepare for that. - */ -} - -row_callback(png_structp png_ptr, png_bytep new_row, - png_uint_32 row_num, int pass) -{ - /* - * This function is called for every row in the image. If the - * image is interlaced, and you turned on the interlace handler, - * this function will be called for every row in every pass. - * - * In this function you will receive a pointer to new row data from - * libpng called new_row that is to replace a corresponding row (of - * the same data format) in a buffer allocated by your application. - * - * The new row data pointer "new_row" may be NULL, indicating there is - * no new data to be replaced (in cases of interlace loading). - * - * If new_row is not NULL then you need to call - * png_progressive_combine_row() to replace the corresponding row as - * shown below: - */ - - /* Get pointer to corresponding row in our - * PNG read buffer. - */ - png_bytep old_row = ((png_bytep *)our_data)[row_num]; - -#ifdef PNG_READ_INTERLACING_SUPPORTED - /* If both rows are allocated then copy the new row - * data to the corresponding row data. - */ - if ((old_row != NULL) && (new_row != NULL)) - png_progressive_combine_row(png_ptr, old_row, new_row); - - /* - * The rows and passes are called in order, so you don't really - * need the row_num and pass, but I'm supplying them because it - * may make your life easier. - * - * For the non-NULL rows of interlaced images, you must call - * png_progressive_combine_row() passing in the new row and the - * old row, as demonstrated above. You can call this function for - * NULL rows (it will just return) and for non-interlaced images - * (it just does the png_memcpy for you) if it will make the code - * easier. Thus, you can just do this for all cases: - */ - - png_progressive_combine_row(png_ptr, old_row, new_row); - - /* where old_row is what was displayed for previous rows. Note - * that the first pass (pass == 0 really) will completely cover - * the old row, so the rows do not have to be initialized. After - * the first pass (and only for interlaced images), you will have - * to pass the current row as new_row, and the function will combine - * the old row and the new row. - */ -#endif /* PNG_READ_INTERLACING_SUPPORTED */ -} - -end_callback(png_structp png_ptr, png_infop info) -{ - /* This function is called when the whole image has been read, - * including any chunks after the image (up to and including - * the IEND). You will usually have the same info chunk as you - * had in the header, although some data may have been added - * to the comments and time fields. - * - * Most people won't do much here, perhaps setting a flag that - * marks the image as finished. - */ -} - -/* Write a png file */ -void write_png(char *file_name /* , ... other image information ... */) -{ - FILE *fp; - png_structp png_ptr; - png_infop info_ptr; - png_colorp palette; - - /* Open the file */ - fp = fopen(file_name, "wb"); - if (fp == NULL) - return (ERROR); - - /* Create and initialize the png_struct with the desired error handler - * functions. If you want to use the default stderr and longjump method, - * you can supply NULL for the last three parameters. We also check that - * the library version is compatible with the one used at compile time, - * in case we are using dynamically linked libraries. REQUIRED. - */ - png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, - png_voidp user_error_ptr, user_error_fn, user_warning_fn); - - if (png_ptr == NULL) - { - fclose(fp); - return (ERROR); - } - - /* Allocate/initialize the image information data. REQUIRED */ - info_ptr = png_create_info_struct(png_ptr); - if (info_ptr == NULL) - { - fclose(fp); - png_destroy_write_struct(&png_ptr, NULL); - return (ERROR); - } - - /* Set error handling. REQUIRED if you aren't supplying your own - * error handling functions in the png_create_write_struct() call. - */ - if (setjmp(png_jmpbuf(png_ptr))) - { - /* If we get here, we had a problem writing the file */ - fclose(fp); - png_destroy_write_struct(&png_ptr, &info_ptr); - return (ERROR); - } - - /* One of the following I/O initialization functions is REQUIRED */ - -#ifdef streams /* I/O initialization method 1 */ - /* Set up the output control if you are using standard C streams */ - png_init_io(png_ptr, fp); - -#else no_streams /* I/O initialization method 2 */ - /* If you are using replacement write functions, instead of calling - * png_init_io() here you would call - */ - png_set_write_fn(png_ptr, (void *)user_io_ptr, user_write_fn, - user_IO_flush_function); - /* where user_io_ptr is a structure you want available to the callbacks */ -#endif no_streams /* Only use one initialization method */ - -#ifdef hilevel - /* This is the easy way. Use it if you already have all the - * image info living in the structure. You could "|" many - * PNG_TRANSFORM flags into the png_transforms integer here. - */ - png_write_png(png_ptr, info_ptr, png_transforms, NULL); - -#else - /* This is the hard way */ - - /* Set the image information here. Width and height are up to 2^31, - * bit_depth is one of 1, 2, 4, 8, or 16, but valid values also depend on - * the color_type selected. color_type is one of PNG_COLOR_TYPE_GRAY, - * PNG_COLOR_TYPE_GRAY_ALPHA, PNG_COLOR_TYPE_PALETTE, PNG_COLOR_TYPE_RGB, - * or PNG_COLOR_TYPE_RGB_ALPHA. interlace is either PNG_INTERLACE_NONE or - * PNG_INTERLACE_ADAM7, and the compression_type and filter_type MUST - * currently be PNG_COMPRESSION_TYPE_BASE and PNG_FILTER_TYPE_BASE. REQUIRED - */ - png_set_IHDR(png_ptr, info_ptr, width, height, bit_depth, PNG_COLOR_TYPE_???, - PNG_INTERLACE_????, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); - - /* Set the palette if there is one. REQUIRED for indexed-color images */ - palette = (png_colorp)png_malloc(png_ptr, PNG_MAX_PALETTE_LENGTH - * png_sizeof(png_color)); - /* ... Set palette colors ... */ - png_set_PLTE(png_ptr, info_ptr, palette, PNG_MAX_PALETTE_LENGTH); - /* You must not free palette here, because png_set_PLTE only makes a link to - * the palette that you malloced. Wait until you are about to destroy - * the png structure. - */ - - /* Optional significant bit (sBIT) chunk */ - png_color_8 sig_bit; - - /* If we are dealing with a grayscale image then */ - sig_bit.gray = true_bit_depth; - - /* Otherwise, if we are dealing with a color image then */ - sig_bit.red = true_red_bit_depth; - sig_bit.green = true_green_bit_depth; - sig_bit.blue = true_blue_bit_depth; - - /* If the image has an alpha channel then */ - sig_bit.alpha = true_alpha_bit_depth; - - png_set_sBIT(png_ptr, info_ptr, &sig_bit); - - - /* Optional gamma chunk is strongly suggested if you have any guess - * as to the correct gamma of the image. - */ - png_set_gAMA(png_ptr, info_ptr, gamma); - - /* Optionally write comments into the image */ - { - png_text text_ptr[3]; - - char key0[]="Title"; - char text0[]="Mona Lisa"; - text_ptr[0].key = key0; - text_ptr[0].text = text0; - text_ptr[0].compression = PNG_TEXT_COMPRESSION_NONE; - text_ptr[0].itxt_length = 0; - text_ptr[0].lang = NULL; - text_ptr[0].lang_key = NULL; - - char key1[]="Author"; - char text1[]="Leonardo DaVinci"; - text_ptr[1].key = key1; - text_ptr[1].text = text1; - text_ptr[1].compression = PNG_TEXT_COMPRESSION_NONE; - text_ptr[1].itxt_length = 0; - text_ptr[1].lang = NULL; - text_ptr[1].lang_key = NULL; - - char key2[]="Description"; - char text2[]="<long text>"; - text_ptr[2].key = key2; - text_ptr[2].text = text2; - text_ptr[2].compression = PNG_TEXT_COMPRESSION_zTXt; - text_ptr[2].itxt_length = 0; - text_ptr[2].lang = NULL; - text_ptr[2].lang_key = NULL; - - png_set_text(write_ptr, write_info_ptr, text_ptr, 3); - } - - /* Other optional chunks like cHRM, bKGD, tRNS, tIME, oFFs, pHYs */ - - /* Note that if sRGB is present the gAMA and cHRM chunks must be ignored - * on read and, if your application chooses to write them, they must - * be written in accordance with the sRGB profile - */ - - /* Write the file header information. REQUIRED */ - png_write_info(png_ptr, info_ptr); - - /* If you want, you can write the info in two steps, in case you need to - * write your private chunk ahead of PLTE: - * - * png_write_info_before_PLTE(write_ptr, write_info_ptr); - * write_my_chunk(); - * png_write_info(png_ptr, info_ptr); - * - * However, given the level of known- and unknown-chunk support in 1.2.0 - * and up, this should no longer be necessary. - */ - - /* Once we write out the header, the compression type on the text - * chunk gets changed to PNG_TEXT_COMPRESSION_NONE_WR or - * PNG_TEXT_COMPRESSION_zTXt_WR, so it doesn't get written out again - * at the end. - */ - - /* Set up the transformations you want. Note that these are - * all optional. Only call them if you want them. - */ - - /* Invert monochrome pixels */ - png_set_invert_mono(png_ptr); - - /* Shift the pixels up to a legal bit depth and fill in - * as appropriate to correctly scale the image. - */ - png_set_shift(png_ptr, &sig_bit); - - /* Pack pixels into bytes */ - png_set_packing(png_ptr); - - /* Swap location of alpha bytes from ARGB to RGBA */ - png_set_swap_alpha(png_ptr); - - /* Get rid of filler (OR ALPHA) bytes, pack XRGB/RGBX/ARGB/RGBA into - * RGB (4 channels -> 3 channels). The second parameter is not used. - */ - png_set_filler(png_ptr, 0, PNG_FILLER_BEFORE); - - /* Flip BGR pixels to RGB */ - png_set_bgr(png_ptr); - - /* Swap bytes of 16-bit files to most significant byte first */ - png_set_swap(png_ptr); - - /* Swap bits of 1-bit, 2-bit, 4-bit packed pixel formats */ - png_set_packswap(png_ptr); - - /* Turn on interlace handling if you are not using png_write_image() */ - if (interlacing != 0) - number_passes = png_set_interlace_handling(png_ptr); - - else - number_passes = 1; - - /* The easiest way to write the image (you may have a different memory - * layout, however, so choose what fits your needs best). You need to - * use the first method if you aren't handling interlacing yourself. - */ - png_uint_32 k, height, width; - - /* In this example, "image" is a one-dimensional array of bytes */ - png_byte image[height*width*bytes_per_pixel]; - - png_bytep row_pointers[height]; - - if (height > PNG_UINT_32_MAX/png_sizeof(png_bytep)) - png_error (png_ptr, "Image is too tall to process in memory"); - - /* Set up pointers into your "image" byte array */ - for (k = 0; k < height; k++) - row_pointers[k] = image + k*width*bytes_per_pixel; - - /* One of the following output methods is REQUIRED */ - -#ifdef entire /* Write out the entire image data in one call */ - png_write_image(png_ptr, row_pointers); - - /* The other way to write the image - deal with interlacing */ - -#else no_entire /* Write out the image data by one or more scanlines */ - - /* The number of passes is either 1 for non-interlaced images, - * or 7 for interlaced images. - */ - for (pass = 0; pass < number_passes; pass++) - { - /* Write a few rows at a time. */ - png_write_rows(png_ptr, &row_pointers[first_row], number_of_rows); - - /* If you are only writing one row at a time, this works */ - for (y = 0; y < height; y++) - png_write_rows(png_ptr, &row_pointers[y], 1); - } -#endif no_entire /* Use only one output method */ - - /* You can write optional chunks like tEXt, zTXt, and tIME at the end - * as well. Shouldn't be necessary in 1.2.0 and up as all the public - * chunks are supported and you can use png_set_unknown_chunks() to - * register unknown chunks into the info structure to be written out. - */ - - /* It is REQUIRED to call this to finish writing the rest of the file */ - png_write_end(png_ptr, info_ptr); -#endif hilevel - - /* If you png_malloced a palette, free it here (don't free info_ptr->palette, - * as recommended in versions 1.0.5m and earlier of this example; if - * libpng mallocs info_ptr->palette, libpng will free it). If you - * allocated it with malloc() instead of png_malloc(), use free() instead - * of png_free(). - */ - png_free(png_ptr, palette); - palette = NULL; - - /* Similarly, if you png_malloced any data that you passed in with - * png_set_something(), such as a hist or trans array, free it here, - * when you can be sure that libpng is through with it. - */ - png_free(png_ptr, trans); - trans = NULL; - /* Whenever you use png_free() it is a good idea to set the pointer to - * NULL in case your application inadvertently tries to png_free() it - * again. When png_free() sees a NULL it returns without action, thus - * avoiding the double-free security problem. - */ - - /* Clean up after the write, and free any memory allocated */ - png_destroy_write_struct(&png_ptr, &info_ptr); - - /* Close the file */ - fclose(fp); - - /* That's it */ - return (OK); -} - -#endif /* if 0 */ diff --git a/drivers/png/resource_saver_png.h b/drivers/png/resource_saver_png.h index 116d425d24..d2e0753b40 100644 --- a/drivers/png/resource_saver_png.h +++ b/drivers/png/resource_saver_png.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* resource_saver_png.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef RESOURCE_SAVER_PNG_H #define RESOURCE_SAVER_PNG_H diff --git a/drivers/pnm/bitmap_loader_pnm.cpp b/drivers/pnm/bitmap_loader_pnm.cpp index c9298be26a..e06d4c80f0 100644 --- a/drivers/pnm/bitmap_loader_pnm.cpp +++ b/drivers/pnm/bitmap_loader_pnm.cpp @@ -1,14 +1,31 @@ -/*************************************************/ -/* image_loader_jpg.cpp */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* bitmap_loader_pnm.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "bitmap_loader_pnm.h" #include "os/file_access.h" #include "scene/resources/bit_mask.h" diff --git a/drivers/pnm/bitmap_loader_pnm.h b/drivers/pnm/bitmap_loader_pnm.h index 6e6c8a59c8..965cf7a451 100644 --- a/drivers/pnm/bitmap_loader_pnm.h +++ b/drivers/pnm/bitmap_loader_pnm.h @@ -1,14 +1,31 @@ -/*************************************************/ -/* image_loader_jpg.h */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* bitmap_loader_pnm.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef BITMAP_LOADER_PNM_H #define BITMAP_LOADER_PNM_H diff --git a/drivers/pulseaudio/audio_driver_pulseaudio.cpp b/drivers/pulseaudio/audio_driver_pulseaudio.cpp index 813a95816b..4804bc5630 100644 --- a/drivers/pulseaudio/audio_driver_pulseaudio.cpp +++ b/drivers/pulseaudio/audio_driver_pulseaudio.cpp @@ -1,5 +1,5 @@ /*************************************************************************/ -/* audio_driver_alsa.cpp */ +/* audio_driver_pulseaudio.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ diff --git a/drivers/pvr/texture_loader_pvr.cpp b/drivers/pvr/texture_loader_pvr.cpp index eb67dad8cf..3ab3240512 100644 --- a/drivers/pvr/texture_loader_pvr.cpp +++ b/drivers/pvr/texture_loader_pvr.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* texture_loader_pvr.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "texture_loader_pvr.h" #include "os/file_access.h" #include <string.h> diff --git a/drivers/pvr/texture_loader_pvr.h b/drivers/pvr/texture_loader_pvr.h index 735cb2b48b..5efb3b2507 100644 --- a/drivers/pvr/texture_loader_pvr.h +++ b/drivers/pvr/texture_loader_pvr.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* texture_loader_pvr.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef TEXTURE_LOADER_PVR_H #define TEXTURE_LOADER_PVR_H diff --git a/drivers/register_driver_types.cpp b/drivers/register_driver_types.cpp index 2f9767440e..8354de8c6f 100644 --- a/drivers/register_driver_types.cpp +++ b/drivers/register_driver_types.cpp @@ -1,14 +1,31 @@ -/*************************************************/ -/* register_driver_types.cpp */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* register_driver_types.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "register_driver_types.h" #include "png/image_loader_png.h" diff --git a/drivers/register_driver_types.h b/drivers/register_driver_types.h index 8a13ad4471..0d9ffff2c9 100644 --- a/drivers/register_driver_types.h +++ b/drivers/register_driver_types.h @@ -1,14 +1,31 @@ -/*************************************************/ -/* register_driver_types.h */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* register_driver_types.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef REGISTER_DRIVER_TYPES_H #define REGISTER_DRIVER_TYPES_H diff --git a/drivers/rtaudio/audio_driver_rtaudio.cpp b/drivers/rtaudio/audio_driver_rtaudio.cpp index b172ef6e09..1bea828680 100644 --- a/drivers/rtaudio/audio_driver_rtaudio.cpp +++ b/drivers/rtaudio/audio_driver_rtaudio.cpp @@ -1,14 +1,31 @@ -/*************************************************/ -/* audio_driver_rtaudio.cpp */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* audio_driver_rtaudio.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "audio_driver_rtaudio.h" #include "globals.h" #include "os/os.h" diff --git a/drivers/rtaudio/audio_driver_rtaudio.h b/drivers/rtaudio/audio_driver_rtaudio.h index 115953ce1f..ccb3d005c1 100644 --- a/drivers/rtaudio/audio_driver_rtaudio.h +++ b/drivers/rtaudio/audio_driver_rtaudio.h @@ -1,14 +1,31 @@ -/*************************************************/ -/* audio_driver_rtaudio.h */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* audio_driver_rtaudio.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef AUDIO_DRIVER_RTAUDIO_H #define AUDIO_DRIVER_RTAUDIO_H diff --git a/drivers/speex/audio_stream_speex.cpp b/drivers/speex/audio_stream_speex.cpp index 1bb4952cc8..79f3e58ac0 100644 --- a/drivers/speex/audio_stream_speex.cpp +++ b/drivers/speex/audio_stream_speex.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* audio_stream_speex.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "audio_stream_speex.h" #include "os_support.h" diff --git a/drivers/speex/audio_stream_speex.h b/drivers/speex/audio_stream_speex.h index f0617b302f..491c593e47 100644 --- a/drivers/speex/audio_stream_speex.h +++ b/drivers/speex/audio_stream_speex.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* audio_stream_speex.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef AUDIO_STREAM_SPEEX_H #define AUDIO_STREAM_SPEEX_H diff --git a/drivers/squish/image_compress_squish.cpp b/drivers/squish/image_compress_squish.cpp index 2c520bd1e9..95de83d5a5 100644 --- a/drivers/squish/image_compress_squish.cpp +++ b/drivers/squish/image_compress_squish.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* image_compress_squish.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "image_compress_squish.h" #include "squish/squish.h" #include "print_string.h" diff --git a/drivers/squish/image_compress_squish.h b/drivers/squish/image_compress_squish.h index 4fec8d7ef7..8c37ac2caa 100644 --- a/drivers/squish/image_compress_squish.h +++ b/drivers/squish/image_compress_squish.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* image_compress_squish.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef IMAGE_COMPRESS_SQUISH_H #define IMAGE_COMPRESS_SQUISH_H diff --git a/drivers/theora/codec.h b/drivers/theora/codec.h index 9b816e5cfd..5c2669630c 100644 --- a/drivers/theora/codec.h +++ b/drivers/theora/codec.h @@ -15,7 +15,7 @@ ********************************************************************/ -/**\file +/**\mainpage * * \section intro Introduction * diff --git a/drivers/theora/decode.c b/drivers/theora/decode.c index 882606ae77..7be66463d8 100644 --- a/drivers/theora/decode.c +++ b/drivers/theora/decode.c @@ -1611,35 +1611,28 @@ static void oc_filter_hedge(unsigned char *_dst,int _dst_ystride, int sum1; int bx; int by; - int _rlimit1; - int _rlimit2; rdst=_dst; rsrc=_src; - for(bx=0;bx<8;++bx){ + for(bx=0;bx<8;bx++){ cdst=rdst; csrc=rsrc; - _rlimit1 = _rlimit2 = _flimit; - for(by=0;by<10;++by){ + for(by=0;by<10;by++){ r[by]=*csrc; csrc+=_src_ystride; } sum0=sum1=0; - for(by=0;by<4;++by){ - int sumed = abs(r[by+1]-r[by]); - sum0+=sumed; - _rlimit1-=sumed; - sumed = abs(r[by+5]-r[by+6]); - sum1+=sumed; - _rlimit2-=sumed; + for(by=0;by<4;by++){ + sum0+=abs(r[by+1]-r[by]); + sum1+=abs(r[by+5]-r[by+6]); } *_variance0+=OC_MINI(255,sum0); *_variance1+=OC_MINI(255,sum1); - if(_rlimit1&&_rlimit2&&!(r[5]-r[4]-_qstep)&&!(r[4]-r[5]-_qstep)){ + if(sum0<_flimit&&sum1<_flimit&&r[5]-r[4]<_qstep&&r[4]-r[5]<_qstep){ *cdst=(unsigned char)(r[0]*3+r[1]*2+r[2]+r[3]+r[4]+4>>3); cdst+=_dst_ystride; *cdst=(unsigned char)(r[0]*2+r[1]+r[2]*2+r[3]+r[4]+r[5]+4>>3); cdst+=_dst_ystride; - for(by=0;by<4;++by){ + for(by=0;by<4;by++){ *cdst=(unsigned char)(r[by]+r[by+1]+r[by+2]+r[by+3]*2+ r[by+4]+r[by+5]+r[by+6]+4>>3); cdst+=_dst_ystride; @@ -1649,13 +1642,13 @@ static void oc_filter_hedge(unsigned char *_dst,int _dst_ystride, *cdst=(unsigned char)(r[5]+r[6]+r[7]+r[8]*2+r[9]*3+4>>3); } else{ - for(by=1;by<=8;++by){ + for(by=1;by<=8;by++){ *cdst=(unsigned char)r[by]; cdst+=_dst_ystride; } } - ++rdst; - ++rsrc; + rdst++; + rsrc++; } } @@ -1670,26 +1663,19 @@ static void oc_filter_vedge(unsigned char *_dst,int _dst_ystride, int sum1; int bx; int by; - int _rlimit1; - int _rlimit2; cdst=_dst; - for(by=0;by<8;++by){ + for(by=0;by<8;by++){ rsrc=cdst-1; rdst=cdst; - for(bx=0;bx<10;++bx)r[bx]=*rsrc++; + for(bx=0;bx<10;bx++)r[bx]=*rsrc++; sum0=sum1=0; - _rlimit1 = _rlimit2 = _flimit; - for(bx=0;bx<4;++bx){ - int sumed = abs(r[bx+1]-r[bx]); - sum0+=sumed; - _rlimit1-=sumed; - sumed = abs(r[bx+5]-r[bx+6]); - sum1+=sumed; - _rlimit2-=sumed; + for(bx=0;bx<4;bx++){ + sum0+=abs(r[bx+1]-r[bx]); + sum1+=abs(r[bx+5]-r[bx+6]); } _variances[0]+=OC_MINI(255,sum0); _variances[1]+=OC_MINI(255,sum1); - if(_rlimit1&&_rlimit2&&!(r[5]-r[4]-_qstep)&&!(r[4]-r[5]-_qstep)){ + if(sum0<_flimit&&sum1<_flimit&&r[5]-r[4]<_qstep&&r[4]-r[5]<_qstep){ *rdst++=(unsigned char)(r[0]*3+r[1]*2+r[2]+r[3]+r[4]+4>>3); *rdst++=(unsigned char)(r[0]*2+r[1]+r[2]*2+r[3]+r[4]+r[5]+4>>3); for(bx=0;bx<4;bx++){ diff --git a/drivers/theora/encint.h b/drivers/theora/encint.h index 82338256dc..97897d5a04 100644 --- a/drivers/theora/encint.h +++ b/drivers/theora/encint.h @@ -14,7 +14,6 @@ last mod: $Id: encint.h 16503 2009-08-22 18:14:02Z giles $ ********************************************************************/ - #if !defined(_encint_H) # define _encint_H (1) # if defined(HAVE_CONFIG_H) diff --git a/drivers/theora/video_stream_theora.cpp b/drivers/theora/video_stream_theora.cpp index e577c3f932..fa2a79dc7b 100644 --- a/drivers/theora/video_stream_theora.cpp +++ b/drivers/theora/video_stream_theora.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* video_stream_theora.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifdef THEORA_ENABLED #include "video_stream_theora.h" @@ -513,7 +541,7 @@ void VideoStreamPlaybackTheora::update(float p_delta) { } bool frame_done=false; - bool audio_done=false; + bool audio_done=!vorbis_p; bool theora_done=false; diff --git a/drivers/theora/video_stream_theora.h b/drivers/theora/video_stream_theora.h index f07acb2935..5484815844 100644 --- a/drivers/theora/video_stream_theora.h +++ b/drivers/theora/video_stream_theora.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* video_stream_theora.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef VIDEO_STREAM_THEORA_H #define VIDEO_STREAM_THEORA_H diff --git a/drivers/unix/dir_access_unix.cpp b/drivers/unix/dir_access_unix.cpp index 8b097ad25e..f0e4511b1d 100644 --- a/drivers/unix/dir_access_unix.cpp +++ b/drivers/unix/dir_access_unix.cpp @@ -66,7 +66,7 @@ bool DirAccessUnix::file_exists(String p_file) { if (p_file.is_rel_path()) - p_file=current_dir+"/"+p_file; + p_file=current_dir.plus_file(p_file); else p_file=fix_path(p_file); @@ -104,7 +104,7 @@ bool DirAccessUnix::dir_exists(String p_dir) { uint64_t DirAccessUnix::get_modified_time(String p_file) { if (p_file.is_rel_path()) - p_file=current_dir+"/"+p_file; + p_file=current_dir.plus_file(p_file); else p_file=fix_path(p_file); @@ -138,11 +138,9 @@ String DirAccessUnix::get_next() { //typedef struct stat Stat; struct stat flags; - String fname; - if (fname.parse_utf8(entry->d_name)) - fname=entry->d_name; //no utf8, maybe latin? + String fname = fix_unicode_name(entry->d_name); - String f=current_dir+"/"+fname; + String f=current_dir.plus_file(fname); if (stat(f.utf8().get_data(),&flags)==0) { @@ -201,8 +199,17 @@ Error DirAccessUnix::make_dir(String p_dir) { GLOBAL_LOCK_FUNCTION - p_dir=fix_path(p_dir); - + if (p_dir.is_rel_path()) + p_dir=get_current_dir().plus_file(p_dir); + else + p_dir=fix_path(p_dir); +#if 1 + + + bool success=(mkdir(p_dir.utf8().get_data(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)==0); + int err = errno; + +#else char real_current_dir_name[2048]; getcwd(real_current_dir_name,2048); chdir(current_dir.utf8().get_data()); //ascii since this may be unicode or wathever the host os wants @@ -211,7 +218,7 @@ Error DirAccessUnix::make_dir(String p_dir) { int err = errno; chdir(real_current_dir_name); - +#endif if (success) { return OK; }; @@ -314,7 +321,7 @@ size_t DirAccessUnix::get_space_left() { struct statvfs vfs; if (statvfs(current_dir.utf8().get_data(), &vfs) != 0) { - return -1; + return 0; }; return vfs.f_bfree * vfs.f_bsize; diff --git a/drivers/unix/dir_access_unix.h b/drivers/unix/dir_access_unix.h index 9cba1ed3e0..b2f1aed10f 100644 --- a/drivers/unix/dir_access_unix.h +++ b/drivers/unix/dir_access_unix.h @@ -51,7 +51,10 @@ class DirAccessUnix : public DirAccess { String current_dir; bool _cisdir; bool _cishidden; - +protected: + + virtual String fix_unicode_name(const char* p_name) const { return String::utf8(p_name); } + public: virtual bool list_dir_begin(); ///< This starts dir listing diff --git a/drivers/unix/packet_peer_udp_posix.cpp b/drivers/unix/packet_peer_udp_posix.cpp index 2111619080..0201a85651 100644 --- a/drivers/unix/packet_peer_udp_posix.cpp +++ b/drivers/unix/packet_peer_udp_posix.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* packet_peer_udp_posix.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "packet_peer_udp_posix.h" #ifdef UNIX_ENABLED @@ -96,7 +124,6 @@ Error PacketPeerUDPPosix::listen(int p_port, int p_recv_buffer_size){ close(); return ERR_UNAVAILABLE; } - printf("UDP Connection listening on port %i bufsize %i \n", p_port,p_recv_buffer_size); rb.resize(nearest_shift(p_recv_buffer_size)); return OK; } diff --git a/drivers/unix/packet_peer_udp_posix.h b/drivers/unix/packet_peer_udp_posix.h index b14568eb5f..a11282e5d6 100644 --- a/drivers/unix/packet_peer_udp_posix.h +++ b/drivers/unix/packet_peer_udp_posix.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* packet_peer_udp_posix.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef PACKET_PEER_UDP_POSIX_H #define PACKET_PEER_UDP_POSIX_H diff --git a/drivers/unix/tcp_server_posix.cpp b/drivers/unix/tcp_server_posix.cpp index 98451957fd..c67bb51334 100644 --- a/drivers/unix/tcp_server_posix.cpp +++ b/drivers/unix/tcp_server_posix.cpp @@ -67,7 +67,6 @@ void TCPServerPosix::make_default() { Error TCPServerPosix::listen(uint16_t p_port,const List<String> *p_accepted_hosts) { - printf("********* listening on port %i\n", p_port); int sockfd; sockfd = socket(AF_INET, SOCK_STREAM, 0); ERR_FAIL_COND_V(sockfd == -1, FAILED); @@ -80,8 +79,7 @@ Error TCPServerPosix::listen(uint16_t p_port,const List<String> *p_accepted_host int reuse=1; if(setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse, sizeof(reuse)) < 0) { - - printf("REUSEADDR failed!"); + WARN_PRINT("REUSEADDR failed!") } struct sockaddr_in my_addr; @@ -103,14 +101,11 @@ Error TCPServerPosix::listen(uint16_t p_port,const List<String> *p_accepted_host }; if (listen_sockfd != -1) { - - printf("FAILED\n"); stop(); }; listen_sockfd = sockfd; - printf("OK! %i\n", listen_sockfd); return OK; }; @@ -129,7 +124,6 @@ bool TCPServerPosix::is_connection_available() const { ERR_FAIL_COND_V(ret < 0, FAILED); if (ret && (pfd.revents & POLLIN)) { - printf("has connection!\n"); return true; }; @@ -164,7 +158,6 @@ Ref<StreamPeerTCP> TCPServerPosix::take_connection() { void TCPServerPosix::stop() { if (listen_sockfd != -1) { - print_line("CLOSING CONNECTION"); int ret = close(listen_sockfd); ERR_FAIL_COND(ret!=0); }; diff --git a/drivers/vorbis/COPYING b/drivers/vorbis/COPYING index 28de72a970..8f1d18cc2b 100644 --- a/drivers/vorbis/COPYING +++ b/drivers/vorbis/COPYING @@ -1,4 +1,4 @@ -Copyright (c) 2002-2008 Xiph.org Foundation +Copyright (c) 2002-2015 Xiph.org Foundation Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions diff --git a/drivers/vorbis/barkmel.c b/drivers/vorbis/barkmel.c index 6adb715406..37b6c4c7ba 100644 --- a/drivers/vorbis/barkmel.c +++ b/drivers/vorbis/barkmel.c @@ -11,7 +11,7 @@ ******************************************************************** function: bark scale utility - last mod: $Id: barkmel.c 16037 2009-05-26 21:10:58Z xiphmont $ + last mod: $Id: barkmel.c 19454 2015-03-02 22:39:28Z xiphmont $ ********************************************************************/ diff --git a/drivers/vorbis/block.c b/drivers/vorbis/block.c index eee9abfca7..345c042769 100644 --- a/drivers/vorbis/block.c +++ b/drivers/vorbis/block.c @@ -5,13 +5,13 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 * * by the Xiph.Org Foundation http://www.xiph.org/ * * * ******************************************************************** function: PCM data vector blocking, windowing and dis/reassembly - last mod: $Id: block.c 17561 2010-10-23 10:34:24Z xiphmont $ + last mod: $Id: block.c 19457 2015-03-03 00:15:29Z giles $ Handle windowing, overlap-add, etc of the PCM vectors. This is made more amusing by Vorbis' current two allowed block sizes. @@ -31,16 +31,6 @@ #include "registry.h" #include "misc.h" -static int ilog2(unsigned int v){ - int ret=0; - if(v)--v; - while(v){ - ret++; - v>>=1; - } - return(ret); -} - /* pcm accumulator examples (not exhaustive): <-------------- lW ----------------> @@ -184,14 +174,19 @@ static int _vds_shared_init(vorbis_dsp_state *v,vorbis_info *vi,int encp){ private_state *b=NULL; int hs; - if(ci==NULL) return 1; + if(ci==NULL|| + ci->modes<=0|| + ci->blocksizes[0]<64|| + ci->blocksizes[1]<ci->blocksizes[0]){ + return 1; + } hs=ci->halfrate_flag; memset(v,0,sizeof(*v)); b=v->backend_state=_ogg_calloc(1,sizeof(*b)); v->vi=vi; - b->modebits=ilog2(ci->modes); + b->modebits=ov_ilog(ci->modes-1); b->transform[0]=_ogg_calloc(VI_TRANSFORMB,sizeof(*b->transform[0])); b->transform[1]=_ogg_calloc(VI_TRANSFORMB,sizeof(*b->transform[1])); @@ -204,8 +199,14 @@ static int _vds_shared_init(vorbis_dsp_state *v,vorbis_info *vi,int encp){ mdct_init(b->transform[1][0],ci->blocksizes[1]>>hs); /* Vorbis I uses only window type 0 */ - b->window[0]=ilog2(ci->blocksizes[0])-6; - b->window[1]=ilog2(ci->blocksizes[1])-6; + /* note that the correct computation below is technically: + b->window[0]=ov_ilog(ci->blocksizes[0]-1)-6; + b->window[1]=ov_ilog(ci->blocksizes[1]-1)-6; + but since blocksizes are always powers of two, + the below is equivalent. + */ + b->window[0]=ov_ilog(ci->blocksizes[0])-7; + b->window[1]=ov_ilog(ci->blocksizes[1])-7; if(encp){ /* encode/decode differ here */ @@ -771,14 +772,14 @@ int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){ if(v->lW){ if(v->W){ /* large/large */ - float *w=_vorbis_window_get(b->window[1]-hs); + const float *w=_vorbis_window_get(b->window[1]-hs); float *pcm=v->pcm[j]+prevCenter; float *p=vb->pcm[j]; for(i=0;i<n1;i++) pcm[i]=pcm[i]*w[n1-i-1] + p[i]*w[i]; }else{ /* large/small */ - float *w=_vorbis_window_get(b->window[0]-hs); + const float *w=_vorbis_window_get(b->window[0]-hs); float *pcm=v->pcm[j]+prevCenter+n1/2-n0/2; float *p=vb->pcm[j]; for(i=0;i<n0;i++) @@ -787,7 +788,7 @@ int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){ }else{ if(v->W){ /* small/large */ - float *w=_vorbis_window_get(b->window[0]-hs); + const float *w=_vorbis_window_get(b->window[0]-hs); float *pcm=v->pcm[j]+prevCenter; float *p=vb->pcm[j]+n1/2-n0/2; for(i=0;i<n0;i++) @@ -796,7 +797,7 @@ int vorbis_synthesis_blockin(vorbis_dsp_state *v,vorbis_block *vb){ pcm[i]=p[i]; }else{ /* small/small */ - float *w=_vorbis_window_get(b->window[0]-hs); + const float *w=_vorbis_window_get(b->window[0]-hs); float *pcm=v->pcm[j]+prevCenter; float *p=vb->pcm[j]; for(i=0;i<n0;i++) @@ -1035,7 +1036,7 @@ int vorbis_synthesis_lapout(vorbis_dsp_state *v,float ***pcm){ } -float *vorbis_window(vorbis_dsp_state *v,int W){ +const float *vorbis_window(vorbis_dsp_state *v,int W){ vorbis_info *vi=v->vi; codec_setup_info *ci=vi->codec_setup; int hs=ci->halfrate_flag; diff --git a/drivers/vorbis/books/Makefile.am b/drivers/vorbis/books/Makefile.am deleted file mode 100644 index 3697a7177e..0000000000 --- a/drivers/vorbis/books/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -## Process this file with automake to produce Makefile.in - -SUBDIRS = coupled uncoupled floor diff --git a/drivers/vorbis/books/Makefile.in b/drivers/vorbis/books/Makefile.in deleted file mode 100644 index 0d957f0cf6..0000000000 --- a/drivers/vorbis/books/Makefile.in +++ /dev/null @@ -1,514 +0,0 @@ -# Makefile.in generated by automake 1.10.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -subdir = lib/books -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/add_cflags.m4 \ - $(top_srcdir)/m4/ogg.m4 $(top_srcdir)/m4/pkg.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEBUG = @DEBUG@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -HAVE_DOXYGEN = @HAVE_DOXYGEN@ -HTLATEX = @HTLATEX@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OGG_CFLAGS = @OGG_CFLAGS@ -OGG_LIBS = @OGG_LIBS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PDFLATEX = @PDFLATEX@ -PKG_CONFIG = @PKG_CONFIG@ -PROFILE = @PROFILE@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VE_LIB_AGE = @VE_LIB_AGE@ -VE_LIB_CURRENT = @VE_LIB_CURRENT@ -VE_LIB_REVISION = @VE_LIB_REVISION@ -VF_LIB_AGE = @VF_LIB_AGE@ -VF_LIB_CURRENT = @VF_LIB_CURRENT@ -VF_LIB_REVISION = @VF_LIB_REVISION@ -VORBIS_LIBS = @VORBIS_LIBS@ -V_LIB_AGE = @V_LIB_AGE@ -V_LIB_CURRENT = @V_LIB_CURRENT@ -V_LIB_REVISION = @V_LIB_REVISION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -pthread_lib = @pthread_lib@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = coupled uncoupled floor -all: all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/books/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu lib/books/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$tags $$unique; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - tags=; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$tags$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$tags $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && cd $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) $$here - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done - list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - distdir=`$(am__cd) $(distdir) && pwd`; \ - top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ - (cd $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$top_distdir" \ - distdir="$$distdir/$$subdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-exec-am: - -install-html: install-html-recursive - -install-info: install-info-recursive - -install-man: - -install-pdf: install-pdf-recursive - -install-ps: install-ps-recursive - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ - install-strip - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/drivers/vorbis/books/coupled/Makefile.am b/drivers/vorbis/books/coupled/Makefile.am deleted file mode 100644 index 1115201dd0..0000000000 --- a/drivers/vorbis/books/coupled/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -## Process this file with automake to produce Makefile.in - -EXTRA_DIST = res_books_stereo.h res_books_51.h diff --git a/drivers/vorbis/books/coupled/Makefile.in b/drivers/vorbis/books/coupled/Makefile.in deleted file mode 100644 index ec9d98ead2..0000000000 --- a/drivers/vorbis/books/coupled/Makefile.in +++ /dev/null @@ -1,356 +0,0 @@ -# Makefile.in generated by automake 1.10.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -subdir = lib/books/coupled -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/add_cflags.m4 \ - $(top_srcdir)/m4/ogg.m4 $(top_srcdir)/m4/pkg.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEBUG = @DEBUG@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -HAVE_DOXYGEN = @HAVE_DOXYGEN@ -HTLATEX = @HTLATEX@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OGG_CFLAGS = @OGG_CFLAGS@ -OGG_LIBS = @OGG_LIBS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PDFLATEX = @PDFLATEX@ -PKG_CONFIG = @PKG_CONFIG@ -PROFILE = @PROFILE@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VE_LIB_AGE = @VE_LIB_AGE@ -VE_LIB_CURRENT = @VE_LIB_CURRENT@ -VE_LIB_REVISION = @VE_LIB_REVISION@ -VF_LIB_AGE = @VF_LIB_AGE@ -VF_LIB_CURRENT = @VF_LIB_CURRENT@ -VF_LIB_REVISION = @VF_LIB_REVISION@ -VORBIS_LIBS = @VORBIS_LIBS@ -V_LIB_AGE = @V_LIB_AGE@ -V_LIB_CURRENT = @V_LIB_CURRENT@ -V_LIB_REVISION = @V_LIB_REVISION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -pthread_lib = @pthread_lib@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -EXTRA_DIST = res_books_stereo.h res_books_51.h -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/books/coupled/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu lib/books/coupled/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-exec-am: - -install-html: install-html-am - -install-info: install-info-am - -install-man: - -install-pdf: install-pdf-am - -install-ps: install-ps-am - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/drivers/vorbis/books/coupled/res_books_51.h b/drivers/vorbis/books/coupled/res_books_51.h index 917a95583a..93910ff481 100644 --- a/drivers/vorbis/books/coupled/res_books_51.h +++ b/drivers/vorbis/books/coupled/res_books_51.h @@ -1,3 +1,20 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010 * + * by the Xiph.Org Foundation http://www.xiph.org/ * + * * + ******************************************************************** + * + * function: static codebooks for 5.1 surround + * last modified: $Id: res_books_51.h 19057 2014-01-22 12:32:31Z xiphmont $ + * + ********************************************************************/ + static const long _vq_quantlist__44p0_l0_0[] = { 6, 5, @@ -14,7 +31,7 @@ static const long _vq_quantlist__44p0_l0_0[] = { 12, }; -static const long _vq_lengthlist__44p0_l0_0[] = { +static const char _vq_lengthlist__44p0_l0_0[] = { 1, 3, 4, 7, 7, 8, 8, 9, 9, 9,10,10,10, 5, 6, 5, 8, 7, 9, 8, 9, 9,10, 9,11,10, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11, 8, 9, 8,10, 9,10, 9,10, 9, @@ -30,7 +47,7 @@ static const long _vq_lengthlist__44p0_l0_0[] = { static const static_codebook _44p0_l0_0 = { 2, 169, - (long *)_vq_lengthlist__44p0_l0_0, + (char *)_vq_lengthlist__44p0_l0_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44p0_l0_0, 0 @@ -44,14 +61,14 @@ static const long _vq_quantlist__44p0_l0_1[] = { 4, }; -static const long _vq_lengthlist__44p0_l0_1[] = { +static const char _vq_lengthlist__44p0_l0_1[] = { 1, 4, 4, 6, 6, 5, 5, 5, 7, 5, 5, 5, 5, 6, 7, 7, 6, 7, 7, 7, 6, 7, 7, 7, 7, }; static const static_codebook _44p0_l0_1 = { 2, 25, - (long *)_vq_lengthlist__44p0_l0_1, + (char *)_vq_lengthlist__44p0_l0_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p0_l0_1, 0 @@ -63,31 +80,31 @@ static const long _vq_quantlist__44p0_l1_0[] = { 2, }; -static const long _vq_lengthlist__44p0_l1_0[] = { +static const char _vq_lengthlist__44p0_l1_0[] = { 1, 4, 4, 4, 4, 4, 4, 4, 4, }; static const static_codebook _44p0_l1_0 = { 2, 9, - (long *)_vq_lengthlist__44p0_l1_0, + (char *)_vq_lengthlist__44p0_l1_0, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44p0_l1_0, 0 }; -static const long _huff_lengthlist__44p0_lfe[] = { +static const char _huff_lengthlist__44p0_lfe[] = { 1, 3, 2, 3, }; static const static_codebook _huff_book__44p0_lfe = { 2, 4, - (long *)_huff_lengthlist__44p0_lfe, + (char *)_huff_lengthlist__44p0_lfe, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44p0_long[] = { +static const char _huff_lengthlist__44p0_long[] = { 2, 3, 6, 7,10,14,16, 3, 2, 5, 7,11,14,17, 6, 5, 5, 7,10,12,14, 7, 7, 6, 6, 7, 9,13,10,11, 9, 6, 6, 9,11,15,15,13,10, 9,10,12,18,18,16,14,12,13, @@ -96,7 +113,7 @@ static const long _huff_lengthlist__44p0_long[] = { static const static_codebook _huff_book__44p0_long = { 2, 49, - (long *)_huff_lengthlist__44p0_long, + (char *)_huff_lengthlist__44p0_long, 0, 0, 0, 0, 0, NULL, 0 @@ -108,7 +125,7 @@ static const long _vq_quantlist__44p0_p1_0[] = { 2, }; -static const long _vq_lengthlist__44p0_p1_0[] = { +static const char _vq_lengthlist__44p0_p1_0[] = { 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -129,7 +146,7 @@ static const long _vq_lengthlist__44p0_p1_0[] = { static const static_codebook _44p0_p1_0 = { 5, 243, - (long *)_vq_lengthlist__44p0_p1_0, + (char *)_vq_lengthlist__44p0_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p0_p1_0, 0 @@ -141,7 +158,7 @@ static const long _vq_quantlist__44p0_p2_0[] = { 2, }; -static const long _vq_lengthlist__44p0_p2_0[] = { +static const char _vq_lengthlist__44p0_p2_0[] = { 1, 5, 5, 0, 7, 7, 0, 8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 0, 6, 6, 0,11, 11, 0,12,12, 0,12,12, 0,15,15, 0,11,11, 0,12,12, @@ -162,7 +179,7 @@ static const long _vq_lengthlist__44p0_p2_0[] = { static const static_codebook _44p0_p2_0 = { 5, 243, - (long *)_vq_lengthlist__44p0_p2_0, + (char *)_vq_lengthlist__44p0_p2_0, 1, -533200896, 1614282752, 2, 0, (long *)_vq_quantlist__44p0_p2_0, 0 @@ -174,7 +191,7 @@ static const long _vq_quantlist__44p0_p2_1[] = { 2, }; -static const long _vq_lengthlist__44p0_p2_1[] = { +static const char _vq_lengthlist__44p0_p2_1[] = { 1, 3, 3, 0, 9, 9, 0, 9, 9, 0,10,10, 0, 9, 9, 0, 10,10, 0,10,10, 0, 9, 9, 0,10,10, 0, 7, 7, 0, 7, 7, 0, 6, 6, 0, 8, 8, 0, 7, 7, 0, 8, 8, 0, 8, 9, @@ -195,7 +212,7 @@ static const long _vq_lengthlist__44p0_p2_1[] = { static const static_codebook _44p0_p2_1 = { 5, 243, - (long *)_vq_lengthlist__44p0_p2_1, + (char *)_vq_lengthlist__44p0_p2_1, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p0_p2_1, 0 @@ -207,7 +224,7 @@ static const long _vq_quantlist__44p0_p3_0[] = { 2, }; -static const long _vq_lengthlist__44p0_p3_0[] = { +static const char _vq_lengthlist__44p0_p3_0[] = { 1, 6, 6, 7, 8, 8, 7, 8, 8, 7, 9, 9,10,12,11, 9, 8, 8, 7, 9, 9,11,12,12, 9, 9, 9, 6, 7, 7,10,11, 11,10,11,11,10,11,11,13,13,14,12,12,12,11,11,11, @@ -228,7 +245,7 @@ static const long _vq_lengthlist__44p0_p3_0[] = { static const static_codebook _44p0_p3_0 = { 5, 243, - (long *)_vq_lengthlist__44p0_p3_0, + (char *)_vq_lengthlist__44p0_p3_0, 1, -531365888, 1616117760, 2, 0, (long *)_vq_quantlist__44p0_p3_0, 0 @@ -242,7 +259,7 @@ static const long _vq_quantlist__44p0_p3_1[] = { 4, }; -static const long _vq_lengthlist__44p0_p3_1[] = { +static const char _vq_lengthlist__44p0_p3_1[] = { 2, 4, 4, 8, 8,10,12,12,11,11, 9,11,11,12,13,11, 12,12,11,11,11,12,12,12,12,10,13,12,13,13,11,12, 12,13,13,11,12,12,13,13,11,12,13,13,13,11,13,13, @@ -443,7 +460,7 @@ static const long _vq_lengthlist__44p0_p3_1[] = { static const static_codebook _44p0_p3_1 = { 5, 3125, - (long *)_vq_lengthlist__44p0_p3_1, + (char *)_vq_lengthlist__44p0_p3_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p0_p3_1, 0 @@ -457,7 +474,7 @@ static const long _vq_quantlist__44p0_p4_0[] = { 4, }; -static const long _vq_lengthlist__44p0_p4_0[] = { +static const char _vq_lengthlist__44p0_p4_0[] = { 2, 6, 6,14,14, 6, 8, 8,14,14, 7, 7, 7,14,14, 0, 13,13,15,16, 0,13,13,15,15, 7, 8, 8,15,15, 9,10, 10,16,16, 9, 8, 8,14,15, 0,13,13,17,17, 0,13,13, @@ -658,7 +675,7 @@ static const long _vq_lengthlist__44p0_p4_0[] = { static const static_codebook _44p0_p4_0 = { 5, 3125, - (long *)_vq_lengthlist__44p0_p4_0, + (char *)_vq_lengthlist__44p0_p4_0, 1, -528744448, 1616642048, 3, 0, (long *)_vq_quantlist__44p0_p4_0, 0 @@ -674,13 +691,13 @@ static const long _vq_quantlist__44p0_p4_1[] = { 6, }; -static const long _vq_lengthlist__44p0_p4_1[] = { +static const char _vq_lengthlist__44p0_p4_1[] = { 2, 3, 3, 3, 3, 3, 3, }; static const static_codebook _44p0_p4_1 = { 1, 7, - (long *)_vq_lengthlist__44p0_p4_1, + (char *)_vq_lengthlist__44p0_p4_1, 1, -533200896, 1611661312, 3, 0, (long *)_vq_quantlist__44p0_p4_1, 0 @@ -692,7 +709,7 @@ static const long _vq_quantlist__44p0_p5_0[] = { 2, }; -static const long _vq_lengthlist__44p0_p5_0[] = { +static const char _vq_lengthlist__44p0_p5_0[] = { 1, 6, 6, 6, 8, 8, 7, 8, 8, 7, 9, 8,10,11,11, 9, 8, 8, 7, 8, 8,11,11,11, 9, 8, 8, 6, 7, 7,10,10, 10,10,10,10,10,10,10,14,13,13,12,11,11,10,10,10, @@ -713,7 +730,7 @@ static const long _vq_lengthlist__44p0_p5_0[] = { static const static_codebook _44p0_p5_0 = { 5, 243, - (long *)_vq_lengthlist__44p0_p5_0, + (char *)_vq_lengthlist__44p0_p5_0, 1, -527106048, 1620377600, 2, 0, (long *)_vq_quantlist__44p0_p5_0, 0 @@ -725,7 +742,7 @@ static const long _vq_quantlist__44p0_p5_1[] = { 2, }; -static const long _vq_lengthlist__44p0_p5_1[] = { +static const char _vq_lengthlist__44p0_p5_1[] = { 2, 7, 7, 7, 8, 8, 7, 7, 7, 7, 8, 8, 8, 8, 9, 8, 7, 7, 8, 8, 8, 9, 9, 9, 9, 7, 7, 6, 6, 6, 9, 7, 7, 9, 7, 7, 9, 8, 8,10, 8, 8,10, 8, 8,10, 8, 8, @@ -746,7 +763,7 @@ static const long _vq_lengthlist__44p0_p5_1[] = { static const static_codebook _44p0_p5_1 = { 5, 243, - (long *)_vq_lengthlist__44p0_p5_1, + (char *)_vq_lengthlist__44p0_p5_1, 1, -530841600, 1616642048, 2, 0, (long *)_vq_quantlist__44p0_p5_1, 0 @@ -758,7 +775,7 @@ static const long _vq_quantlist__44p0_p6_0[] = { 2, }; -static const long _vq_lengthlist__44p0_p6_0[] = { +static const char _vq_lengthlist__44p0_p6_0[] = { 1, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -779,7 +796,7 @@ static const long _vq_lengthlist__44p0_p6_0[] = { static const static_codebook _44p0_p6_0 = { 5, 243, - (long *)_vq_lengthlist__44p0_p6_0, + (char *)_vq_lengthlist__44p0_p6_0, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44p0_p6_0, 0 @@ -813,14 +830,14 @@ static const long _vq_quantlist__44p0_p6_1[] = { 24, }; -static const long _vq_lengthlist__44p0_p6_1[] = { +static const char _vq_lengthlist__44p0_p6_1[] = { 1, 3, 2, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11, 11,12,12,12,14,14,14,15,15, }; static const static_codebook _44p0_p6_1 = { 1, 25, - (long *)_vq_lengthlist__44p0_p6_1, + (char *)_vq_lengthlist__44p0_p6_1, 1, -518864896, 1620639744, 5, 0, (long *)_vq_quantlist__44p0_p6_1, 0 @@ -854,20 +871,20 @@ static const long _vq_quantlist__44p0_p6_2[] = { 24, }; -static const long _vq_lengthlist__44p0_p6_2[] = { +static const char _vq_lengthlist__44p0_p6_2[] = { 3, 4, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44p0_p6_2 = { 1, 25, - (long *)_vq_lengthlist__44p0_p6_2, + (char *)_vq_lengthlist__44p0_p6_2, 1, -529006592, 1611661312, 5, 0, (long *)_vq_quantlist__44p0_p6_2, 0 }; -static const long _huff_lengthlist__44p0_short[] = { +static const char _huff_lengthlist__44p0_short[] = { 3, 3, 7, 8,10,13,16, 3, 2, 5, 7, 9,13,16, 6, 4, 4, 6,10,14,15, 7, 5, 5, 7,10,13,14, 9, 8, 9, 9, 9,11,13,12,11,12, 9, 7, 8,11,14,12,10, 6, 5, 7, @@ -876,7 +893,7 @@ static const long _huff_lengthlist__44p0_short[] = { static const static_codebook _huff_book__44p0_short = { 2, 49, - (long *)_huff_lengthlist__44p0_short, + (char *)_huff_lengthlist__44p0_short, 0, 0, 0, 0, 0, NULL, 0 @@ -898,7 +915,7 @@ static const long _vq_quantlist__44p1_l0_0[] = { 12, }; -static const long _vq_lengthlist__44p1_l0_0[] = { +static const char _vq_lengthlist__44p1_l0_0[] = { 1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 4, 6, 5, 8, 6, 9, 8,10, 9,10,10,11,10, 5, 5, 6, 6, 8, 8, 9, 9,10,10,10,10,11, 7, 8, 8, 9, 8,10, 9,10, 9, @@ -914,7 +931,7 @@ static const long _vq_lengthlist__44p1_l0_0[] = { static const static_codebook _44p1_l0_0 = { 2, 169, - (long *)_vq_lengthlist__44p1_l0_0, + (char *)_vq_lengthlist__44p1_l0_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44p1_l0_0, 0 @@ -928,14 +945,14 @@ static const long _vq_quantlist__44p1_l0_1[] = { 4, }; -static const long _vq_lengthlist__44p1_l0_1[] = { +static const char _vq_lengthlist__44p1_l0_1[] = { 1, 4, 4, 6, 6, 5, 5, 5, 6, 6, 5, 6, 5, 6, 6, 6, 6, 7, 7, 7, 6, 7, 6, 7, 7, }; static const static_codebook _44p1_l0_1 = { 2, 25, - (long *)_vq_lengthlist__44p1_l0_1, + (char *)_vq_lengthlist__44p1_l0_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p1_l0_1, 0 @@ -947,31 +964,31 @@ static const long _vq_quantlist__44p1_l1_0[] = { 2, }; -static const long _vq_lengthlist__44p1_l1_0[] = { +static const char _vq_lengthlist__44p1_l1_0[] = { 1, 4, 4, 4, 4, 4, 4, 4, 4, }; static const static_codebook _44p1_l1_0 = { 2, 9, - (long *)_vq_lengthlist__44p1_l1_0, + (char *)_vq_lengthlist__44p1_l1_0, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44p1_l1_0, 0 }; -static const long _huff_lengthlist__44p1_lfe[] = { +static const char _huff_lengthlist__44p1_lfe[] = { 1, 3, 2, 3, }; static const static_codebook _huff_book__44p1_lfe = { 2, 4, - (long *)_huff_lengthlist__44p1_lfe, + (char *)_huff_lengthlist__44p1_lfe, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44p1_long[] = { +static const char _huff_lengthlist__44p1_long[] = { 3, 3, 7, 7, 9,13,16, 3, 2, 4, 6,10,13,17, 7, 4, 4, 6, 9,12,14, 7, 6, 6, 5, 7, 9,12,10,10, 9, 6, 6, 9,12,14,14,13, 9, 8,10,11,18,18,15,13,11,10, @@ -980,7 +997,7 @@ static const long _huff_lengthlist__44p1_long[] = { static const static_codebook _huff_book__44p1_long = { 2, 49, - (long *)_huff_lengthlist__44p1_long, + (char *)_huff_lengthlist__44p1_long, 0, 0, 0, 0, 0, NULL, 0 @@ -992,7 +1009,7 @@ static const long _vq_quantlist__44p1_p1_0[] = { 2, }; -static const long _vq_lengthlist__44p1_p1_0[] = { +static const char _vq_lengthlist__44p1_p1_0[] = { 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1013,7 +1030,7 @@ static const long _vq_lengthlist__44p1_p1_0[] = { static const static_codebook _44p1_p1_0 = { 5, 243, - (long *)_vq_lengthlist__44p1_p1_0, + (char *)_vq_lengthlist__44p1_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p1_p1_0, 0 @@ -1025,7 +1042,7 @@ static const long _vq_quantlist__44p1_p2_0[] = { 2, }; -static const long _vq_lengthlist__44p1_p2_0[] = { +static const char _vq_lengthlist__44p1_p2_0[] = { 1, 4, 4, 0, 7, 7, 0, 8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 0, 6, 6, 0,11, 11, 0,11,11, 0,12,12, 0,14,14, 0,11,11, 0,12,12, @@ -1046,7 +1063,7 @@ static const long _vq_lengthlist__44p1_p2_0[] = { static const static_codebook _44p1_p2_0 = { 5, 243, - (long *)_vq_lengthlist__44p1_p2_0, + (char *)_vq_lengthlist__44p1_p2_0, 1, -533200896, 1614282752, 2, 0, (long *)_vq_quantlist__44p1_p2_0, 0 @@ -1058,7 +1075,7 @@ static const long _vq_quantlist__44p1_p2_1[] = { 2, }; -static const long _vq_lengthlist__44p1_p2_1[] = { +static const char _vq_lengthlist__44p1_p2_1[] = { 1, 3, 3, 0, 8, 8, 0, 8, 8, 0,10,10, 0, 9, 9, 0, 10,10, 0,10,10, 0, 9, 9, 0,10,10, 0, 7, 7, 0, 7, 7, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 9, 9, @@ -1079,7 +1096,7 @@ static const long _vq_lengthlist__44p1_p2_1[] = { static const static_codebook _44p1_p2_1 = { 5, 243, - (long *)_vq_lengthlist__44p1_p2_1, + (char *)_vq_lengthlist__44p1_p2_1, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p1_p2_1, 0 @@ -1091,7 +1108,7 @@ static const long _vq_quantlist__44p1_p3_0[] = { 2, }; -static const long _vq_lengthlist__44p1_p3_0[] = { +static const char _vq_lengthlist__44p1_p3_0[] = { 1, 6, 6, 6, 7, 7, 7, 8, 8, 7, 8, 8,10,11,11, 9, 8, 8, 7, 9, 9,11,12,12, 9, 8, 8, 6, 7, 7, 9,11, 11,10,11,11,10,11,11,13,13,13,11,12,12,10,11,11, @@ -1112,7 +1129,7 @@ static const long _vq_lengthlist__44p1_p3_0[] = { static const static_codebook _44p1_p3_0 = { 5, 243, - (long *)_vq_lengthlist__44p1_p3_0, + (char *)_vq_lengthlist__44p1_p3_0, 1, -531365888, 1616117760, 2, 0, (long *)_vq_quantlist__44p1_p3_0, 0 @@ -1126,7 +1143,7 @@ static const long _vq_quantlist__44p1_p3_1[] = { 4, }; -static const long _vq_lengthlist__44p1_p3_1[] = { +static const char _vq_lengthlist__44p1_p3_1[] = { 2, 3, 4, 7, 7,10,12,12,12,12,10,11,11,13,13,11, 12,12,11,11,12,12,12,12,12,11,13,13,13,13,12,12, 12,13,14,12,13,13,13,13,12,13,13,13,13,12,13,13, @@ -1327,7 +1344,7 @@ static const long _vq_lengthlist__44p1_p3_1[] = { static const static_codebook _44p1_p3_1 = { 5, 3125, - (long *)_vq_lengthlist__44p1_p3_1, + (char *)_vq_lengthlist__44p1_p3_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p1_p3_1, 0 @@ -1341,7 +1358,7 @@ static const long _vq_quantlist__44p1_p4_0[] = { 4, }; -static const long _vq_lengthlist__44p1_p4_0[] = { +static const char _vq_lengthlist__44p1_p4_0[] = { 2, 6, 6,14,14, 6, 7, 7,14,14, 7, 7, 7,14,14, 0, 13,13,16,16, 0,13,13,15,14, 7, 8, 8,15,15, 9,10, 10,16,16, 9, 8, 8,15,15, 0,13,13,17,16, 0,13,13, @@ -1542,7 +1559,7 @@ static const long _vq_lengthlist__44p1_p4_0[] = { static const static_codebook _44p1_p4_0 = { 5, 3125, - (long *)_vq_lengthlist__44p1_p4_0, + (char *)_vq_lengthlist__44p1_p4_0, 1, -528744448, 1616642048, 3, 0, (long *)_vq_quantlist__44p1_p4_0, 0 @@ -1558,13 +1575,13 @@ static const long _vq_quantlist__44p1_p4_1[] = { 6, }; -static const long _vq_lengthlist__44p1_p4_1[] = { +static const char _vq_lengthlist__44p1_p4_1[] = { 2, 3, 3, 3, 3, 3, 3, }; static const static_codebook _44p1_p4_1 = { 1, 7, - (long *)_vq_lengthlist__44p1_p4_1, + (char *)_vq_lengthlist__44p1_p4_1, 1, -533200896, 1611661312, 3, 0, (long *)_vq_quantlist__44p1_p4_1, 0 @@ -1576,7 +1593,7 @@ static const long _vq_quantlist__44p1_p5_0[] = { 2, }; -static const long _vq_lengthlist__44p1_p5_0[] = { +static const char _vq_lengthlist__44p1_p5_0[] = { 1, 6, 6, 7, 8, 8, 7, 8, 8, 7, 9, 8,10,11,11, 9, 8, 8, 7, 8, 8,11,11,11, 9, 8, 8, 6, 7, 7,10,10, 10,10,10,10,10,10,10,14,13,13,12,11,11,10,10,10, @@ -1597,7 +1614,7 @@ static const long _vq_lengthlist__44p1_p5_0[] = { static const static_codebook _44p1_p5_0 = { 5, 243, - (long *)_vq_lengthlist__44p1_p5_0, + (char *)_vq_lengthlist__44p1_p5_0, 1, -527106048, 1620377600, 2, 0, (long *)_vq_quantlist__44p1_p5_0, 0 @@ -1609,7 +1626,7 @@ static const long _vq_quantlist__44p1_p5_1[] = { 2, }; -static const long _vq_lengthlist__44p1_p5_1[] = { +static const char _vq_lengthlist__44p1_p5_1[] = { 2, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 8, 8, 8, 7, 7, 8, 8, 8, 9, 8, 8, 9, 7, 7, 6, 6, 6, 9, 8, 7, 9, 7, 7, 9, 8, 8,10, 8, 8,10, 8, 8,10, 8, 8, @@ -1630,7 +1647,7 @@ static const long _vq_lengthlist__44p1_p5_1[] = { static const static_codebook _44p1_p5_1 = { 5, 243, - (long *)_vq_lengthlist__44p1_p5_1, + (char *)_vq_lengthlist__44p1_p5_1, 1, -530841600, 1616642048, 2, 0, (long *)_vq_quantlist__44p1_p5_1, 0 @@ -1642,7 +1659,7 @@ static const long _vq_quantlist__44p1_p6_0[] = { 2, }; -static const long _vq_lengthlist__44p1_p6_0[] = { +static const char _vq_lengthlist__44p1_p6_0[] = { 1, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -1663,7 +1680,7 @@ static const long _vq_lengthlist__44p1_p6_0[] = { static const static_codebook _44p1_p6_0 = { 5, 243, - (long *)_vq_lengthlist__44p1_p6_0, + (char *)_vq_lengthlist__44p1_p6_0, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44p1_p6_0, 0 @@ -1697,14 +1714,14 @@ static const long _vq_quantlist__44p1_p6_1[] = { 24, }; -static const long _vq_lengthlist__44p1_p6_1[] = { +static const char _vq_lengthlist__44p1_p6_1[] = { 1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9,10,10,11,11,12, 12,13,13,13,14,16,16,16,16, }; static const static_codebook _44p1_p6_1 = { 1, 25, - (long *)_vq_lengthlist__44p1_p6_1, + (char *)_vq_lengthlist__44p1_p6_1, 1, -518864896, 1620639744, 5, 0, (long *)_vq_quantlist__44p1_p6_1, 0 @@ -1738,20 +1755,20 @@ static const long _vq_quantlist__44p1_p6_2[] = { 24, }; -static const long _vq_lengthlist__44p1_p6_2[] = { +static const char _vq_lengthlist__44p1_p6_2[] = { 3, 4, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44p1_p6_2 = { 1, 25, - (long *)_vq_lengthlist__44p1_p6_2, + (char *)_vq_lengthlist__44p1_p6_2, 1, -529006592, 1611661312, 5, 0, (long *)_vq_quantlist__44p1_p6_2, 0 }; -static const long _huff_lengthlist__44p1_short[] = { +static const char _huff_lengthlist__44p1_short[] = { 4, 5, 7, 8,10,13,14, 4, 2, 4, 6, 8,11,12, 7, 4, 3, 5, 8,12,14, 8, 5, 4, 4, 8,12,12, 9, 7, 7, 7, 9,10,11,13,11,11, 9, 7, 8,10,13,11,10, 6, 5, 7, @@ -1760,7 +1777,7 @@ static const long _huff_lengthlist__44p1_short[] = { static const static_codebook _huff_book__44p1_short = { 2, 49, - (long *)_huff_lengthlist__44p1_short, + (char *)_huff_lengthlist__44p1_short, 0, 0, 0, 0, 0, NULL, 0 @@ -1782,7 +1799,7 @@ static const long _vq_quantlist__44p2_l0_0[] = { 12, }; -static const long _vq_lengthlist__44p2_l0_0[] = { +static const char _vq_lengthlist__44p2_l0_0[] = { 1, 4, 4, 7, 7, 8, 8, 9, 9,10,10,11,11, 4, 6, 5, 8, 7, 9, 8,10, 9,11,10,11,11, 4, 5, 6, 7, 8, 8, 9, 9,10,10,10,10,11, 8, 9, 8,10, 8,10, 9,11,10, @@ -1798,7 +1815,7 @@ static const long _vq_lengthlist__44p2_l0_0[] = { static const static_codebook _44p2_l0_0 = { 2, 169, - (long *)_vq_lengthlist__44p2_l0_0, + (char *)_vq_lengthlist__44p2_l0_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44p2_l0_0, 0 @@ -1812,14 +1829,14 @@ static const long _vq_quantlist__44p2_l0_1[] = { 4, }; -static const long _vq_lengthlist__44p2_l0_1[] = { +static const char _vq_lengthlist__44p2_l0_1[] = { 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5, 5, 6, 6, 6, 5, 6, 5, 6, 6, }; static const static_codebook _44p2_l0_1 = { 2, 25, - (long *)_vq_lengthlist__44p2_l0_1, + (char *)_vq_lengthlist__44p2_l0_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p2_l0_1, 0 @@ -1831,31 +1848,31 @@ static const long _vq_quantlist__44p2_l1_0[] = { 2, }; -static const long _vq_lengthlist__44p2_l1_0[] = { +static const char _vq_lengthlist__44p2_l1_0[] = { 1, 4, 4, 4, 4, 4, 4, 4, 4, }; static const static_codebook _44p2_l1_0 = { 2, 9, - (long *)_vq_lengthlist__44p2_l1_0, + (char *)_vq_lengthlist__44p2_l1_0, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44p2_l1_0, 0 }; -static const long _huff_lengthlist__44p2_lfe[] = { +static const char _huff_lengthlist__44p2_lfe[] = { 1, 3, 2, 3, }; static const static_codebook _huff_book__44p2_lfe = { 2, 4, - (long *)_huff_lengthlist__44p2_lfe, + (char *)_huff_lengthlist__44p2_lfe, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44p2_long[] = { +static const char _huff_lengthlist__44p2_long[] = { 3, 4, 9, 8, 8,10,13,16, 4, 2, 9, 5, 7,10,14,18, 9, 7, 6, 5, 7, 9,12,16, 7, 5, 5, 3, 5, 8,11,13, 8, 7, 7, 5, 5, 7, 9,11,10,10, 9, 8, 6, 6, 8,10, @@ -1864,7 +1881,7 @@ static const long _huff_lengthlist__44p2_long[] = { static const static_codebook _huff_book__44p2_long = { 2, 64, - (long *)_huff_lengthlist__44p2_long, + (char *)_huff_lengthlist__44p2_long, 0, 0, 0, 0, 0, NULL, 0 @@ -1876,7 +1893,7 @@ static const long _vq_quantlist__44p2_p1_0[] = { 2, }; -static const long _vq_lengthlist__44p2_p1_0[] = { +static const char _vq_lengthlist__44p2_p1_0[] = { 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1897,7 +1914,7 @@ static const long _vq_lengthlist__44p2_p1_0[] = { static const static_codebook _44p2_p1_0 = { 5, 243, - (long *)_vq_lengthlist__44p2_p1_0, + (char *)_vq_lengthlist__44p2_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p2_p1_0, 0 @@ -1911,7 +1928,7 @@ static const long _vq_quantlist__44p2_p2_0[] = { 4, }; -static const long _vq_lengthlist__44p2_p2_0[] = { +static const char _vq_lengthlist__44p2_p2_0[] = { 1, 4, 4, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, 10,10, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,11,11, 0, 0, 0, 0, 0, @@ -2112,7 +2129,7 @@ static const long _vq_lengthlist__44p2_p2_0[] = { static const static_codebook _44p2_p2_0 = { 5, 3125, - (long *)_vq_lengthlist__44p2_p2_0, + (char *)_vq_lengthlist__44p2_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p2_p2_0, 0 @@ -2124,7 +2141,7 @@ static const long _vq_quantlist__44p2_p3_0[] = { 2, }; -static const long _vq_lengthlist__44p2_p3_0[] = { +static const char _vq_lengthlist__44p2_p3_0[] = { 1, 5, 5, 6, 7, 7, 0, 8, 8, 6, 9, 9, 8,11,11, 0, 8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 5, 7, 7, 7,10, 10, 0,12,12, 8,11,11, 9,12,12, 0,11,12, 0,12,12, @@ -2145,7 +2162,7 @@ static const long _vq_lengthlist__44p2_p3_0[] = { static const static_codebook _44p2_p3_0 = { 5, 243, - (long *)_vq_lengthlist__44p2_p3_0, + (char *)_vq_lengthlist__44p2_p3_0, 1, -533200896, 1614282752, 2, 0, (long *)_vq_quantlist__44p2_p3_0, 0 @@ -2157,7 +2174,7 @@ static const long _vq_quantlist__44p2_p3_1[] = { 2, }; -static const long _vq_lengthlist__44p2_p3_1[] = { +static const char _vq_lengthlist__44p2_p3_1[] = { 2, 3, 3, 0, 8, 8, 0, 8, 8, 0, 9, 9, 0, 9, 9, 0, 9, 9, 0, 9, 9, 0, 9, 9, 0, 8, 8, 0, 6, 6, 0, 7, 7, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 8, 8, @@ -2178,7 +2195,7 @@ static const long _vq_lengthlist__44p2_p3_1[] = { static const static_codebook _44p2_p3_1 = { 5, 243, - (long *)_vq_lengthlist__44p2_p3_1, + (char *)_vq_lengthlist__44p2_p3_1, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p2_p3_1, 0 @@ -2190,7 +2207,7 @@ static const long _vq_quantlist__44p2_p4_0[] = { 2, }; -static const long _vq_lengthlist__44p2_p4_0[] = { +static const char _vq_lengthlist__44p2_p4_0[] = { 1, 6, 6, 6, 7, 7, 7, 8, 8, 7, 8, 8,10,11,11, 9, 8, 8, 7, 8, 8,11,11,11, 9, 8, 8, 6, 7, 7, 9,11, 11, 9,11,11,10,11,11,12,13,13,11,12,12,10,11,11, @@ -2211,7 +2228,7 @@ static const long _vq_lengthlist__44p2_p4_0[] = { static const static_codebook _44p2_p4_0 = { 5, 243, - (long *)_vq_lengthlist__44p2_p4_0, + (char *)_vq_lengthlist__44p2_p4_0, 1, -531365888, 1616117760, 2, 0, (long *)_vq_quantlist__44p2_p4_0, 0 @@ -2225,7 +2242,7 @@ static const long _vq_quantlist__44p2_p4_1[] = { 4, }; -static const long _vq_lengthlist__44p2_p4_1[] = { +static const char _vq_lengthlist__44p2_p4_1[] = { 3, 4, 4, 8, 8,11, 9, 9,12,12,11,10,10,12,12,12, 10,10,11,11,12,12,12,12,12,12,11,11,13,13,12,12, 12,13,13,12,10,10,12,12,12,11,11,13,13,12,13,13, @@ -2426,7 +2443,7 @@ static const long _vq_lengthlist__44p2_p4_1[] = { static const static_codebook _44p2_p4_1 = { 5, 3125, - (long *)_vq_lengthlist__44p2_p4_1, + (char *)_vq_lengthlist__44p2_p4_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p2_p4_1, 0 @@ -2440,7 +2457,7 @@ static const long _vq_quantlist__44p2_p5_0[] = { 4, }; -static const long _vq_lengthlist__44p2_p5_0[] = { +static const char _vq_lengthlist__44p2_p5_0[] = { 2, 6, 6,14,14, 6, 7, 7,14,14, 7, 7, 7,15,15, 0, 13,13,16,16, 0,13,13,15,15, 7, 8, 8,15,15, 9,10, 10,17,16, 9, 8, 8,15,15, 0,13,13,18,17, 0,13,13, @@ -2641,7 +2658,7 @@ static const long _vq_lengthlist__44p2_p5_0[] = { static const static_codebook _44p2_p5_0 = { 5, 3125, - (long *)_vq_lengthlist__44p2_p5_0, + (char *)_vq_lengthlist__44p2_p5_0, 1, -528744448, 1616642048, 3, 0, (long *)_vq_quantlist__44p2_p5_0, 0 @@ -2657,13 +2674,13 @@ static const long _vq_quantlist__44p2_p5_1[] = { 6, }; -static const long _vq_lengthlist__44p2_p5_1[] = { +static const char _vq_lengthlist__44p2_p5_1[] = { 2, 3, 3, 3, 3, 3, 3, }; static const static_codebook _44p2_p5_1 = { 1, 7, - (long *)_vq_lengthlist__44p2_p5_1, + (char *)_vq_lengthlist__44p2_p5_1, 1, -533200896, 1611661312, 3, 0, (long *)_vq_quantlist__44p2_p5_1, 0 @@ -2675,7 +2692,7 @@ static const long _vq_quantlist__44p2_p6_0[] = { 2, }; -static const long _vq_lengthlist__44p2_p6_0[] = { +static const char _vq_lengthlist__44p2_p6_0[] = { 1, 7, 7, 7, 8, 8, 7, 8, 8, 7, 9, 9,10,11,11, 9, 8, 8, 7, 8, 9,11,11,11, 9, 8, 8, 6, 7, 7,10,10, 10,10,10,10,10,10,10,14,14,14,12,11,11,10,11,11, @@ -2696,7 +2713,7 @@ static const long _vq_lengthlist__44p2_p6_0[] = { static const static_codebook _44p2_p6_0 = { 5, 243, - (long *)_vq_lengthlist__44p2_p6_0, + (char *)_vq_lengthlist__44p2_p6_0, 1, -527106048, 1620377600, 2, 0, (long *)_vq_quantlist__44p2_p6_0, 0 @@ -2708,7 +2725,7 @@ static const long _vq_quantlist__44p2_p6_1[] = { 2, }; -static const long _vq_lengthlist__44p2_p6_1[] = { +static const char _vq_lengthlist__44p2_p6_1[] = { 2, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 8, 7, 7, 8, 8, 8, 9, 9, 9, 9, 8, 8, 6, 7, 7, 9, 8, 8, 9, 7, 7, 9, 8, 8,10, 8, 8,10, 8, 8,10, 8, 8, @@ -2729,7 +2746,7 @@ static const long _vq_lengthlist__44p2_p6_1[] = { static const static_codebook _44p2_p6_1 = { 5, 243, - (long *)_vq_lengthlist__44p2_p6_1, + (char *)_vq_lengthlist__44p2_p6_1, 1, -530841600, 1616642048, 2, 0, (long *)_vq_quantlist__44p2_p6_1, 0 @@ -2741,7 +2758,7 @@ static const long _vq_quantlist__44p2_p7_0[] = { 2, }; -static const long _vq_lengthlist__44p2_p7_0[] = { +static const char _vq_lengthlist__44p2_p7_0[] = { 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -2762,7 +2779,7 @@ static const long _vq_lengthlist__44p2_p7_0[] = { static const static_codebook _44p2_p7_0 = { 5, 243, - (long *)_vq_lengthlist__44p2_p7_0, + (char *)_vq_lengthlist__44p2_p7_0, 1, -513979392, 1633504256, 2, 0, (long *)_vq_quantlist__44p2_p7_0, 0 @@ -2774,7 +2791,7 @@ static const long _vq_quantlist__44p2_p7_1[] = { 2, }; -static const long _vq_lengthlist__44p2_p7_1[] = { +static const char _vq_lengthlist__44p2_p7_1[] = { 1, 9, 9, 6, 9, 9, 5, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -2795,7 +2812,7 @@ static const long _vq_lengthlist__44p2_p7_1[] = { static const static_codebook _44p2_p7_1 = { 5, 243, - (long *)_vq_lengthlist__44p2_p7_1, + (char *)_vq_lengthlist__44p2_p7_1, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44p2_p7_1, 0 @@ -2829,14 +2846,14 @@ static const long _vq_quantlist__44p2_p7_2[] = { 24, }; -static const long _vq_lengthlist__44p2_p7_2[] = { +static const char _vq_lengthlist__44p2_p7_2[] = { 1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9,10,10,11,11,12, 12,13,13,14,14,15,15,15,15, }; static const static_codebook _44p2_p7_2 = { 1, 25, - (long *)_vq_lengthlist__44p2_p7_2, + (char *)_vq_lengthlist__44p2_p7_2, 1, -518864896, 1620639744, 5, 0, (long *)_vq_quantlist__44p2_p7_2, 0 @@ -2870,20 +2887,20 @@ static const long _vq_quantlist__44p2_p7_3[] = { 24, }; -static const long _vq_lengthlist__44p2_p7_3[] = { +static const char _vq_lengthlist__44p2_p7_3[] = { 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44p2_p7_3 = { 1, 25, - (long *)_vq_lengthlist__44p2_p7_3, + (char *)_vq_lengthlist__44p2_p7_3, 1, -529006592, 1611661312, 5, 0, (long *)_vq_quantlist__44p2_p7_3, 0 }; -static const long _huff_lengthlist__44p2_short[] = { +static const char _huff_lengthlist__44p2_short[] = { 4, 4,12, 9, 8,12,15,17, 4, 2,11, 6, 5, 9,13,15, 11, 7, 8, 7, 7,10,14,13, 8, 5, 7, 5, 5, 8,12,12, 8, 4, 7, 4, 3, 6,11,12,11, 8, 9, 7, 6, 8,11,12, @@ -2892,7 +2909,7 @@ static const long _huff_lengthlist__44p2_short[] = { static const static_codebook _huff_book__44p2_short = { 2, 64, - (long *)_huff_lengthlist__44p2_short, + (char *)_huff_lengthlist__44p2_short, 0, 0, 0, 0, 0, NULL, 0 @@ -2914,7 +2931,7 @@ static const long _vq_quantlist__44p3_l0_0[] = { 12, }; -static const long _vq_lengthlist__44p3_l0_0[] = { +static const char _vq_lengthlist__44p3_l0_0[] = { 1, 4, 4, 8, 8, 8, 8, 9, 9,10,10,10,10, 4, 6, 5, 8, 7, 9, 9, 9, 9,10, 9,11, 9, 4, 5, 6, 7, 8, 9, 9, 9, 9, 9,10, 9,10, 8, 9, 8, 9, 8,10, 9,11, 9, @@ -2930,7 +2947,7 @@ static const long _vq_lengthlist__44p3_l0_0[] = { static const static_codebook _44p3_l0_0 = { 2, 169, - (long *)_vq_lengthlist__44p3_l0_0, + (char *)_vq_lengthlist__44p3_l0_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44p3_l0_0, 0 @@ -2944,14 +2961,14 @@ static const long _vq_quantlist__44p3_l0_1[] = { 4, }; -static const long _vq_lengthlist__44p3_l0_1[] = { +static const char _vq_lengthlist__44p3_l0_1[] = { 3, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, }; static const static_codebook _44p3_l0_1 = { 2, 25, - (long *)_vq_lengthlist__44p3_l0_1, + (char *)_vq_lengthlist__44p3_l0_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p3_l0_1, 0 @@ -2963,31 +2980,31 @@ static const long _vq_quantlist__44p3_l1_0[] = { 2, }; -static const long _vq_lengthlist__44p3_l1_0[] = { +static const char _vq_lengthlist__44p3_l1_0[] = { 1, 4, 4, 4, 4, 4, 4, 4, 4, }; static const static_codebook _44p3_l1_0 = { 2, 9, - (long *)_vq_lengthlist__44p3_l1_0, + (char *)_vq_lengthlist__44p3_l1_0, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44p3_l1_0, 0 }; -static const long _huff_lengthlist__44p3_lfe[] = { +static const char _huff_lengthlist__44p3_lfe[] = { 1, 3, 2, 3, }; static const static_codebook _huff_book__44p3_lfe = { 2, 4, - (long *)_huff_lengthlist__44p3_lfe, + (char *)_huff_lengthlist__44p3_lfe, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44p3_long[] = { +static const char _huff_lengthlist__44p3_long[] = { 3, 4,13, 9, 9,12,15,17, 4, 2,18, 5, 7,10,14,18, 11, 8, 6, 5, 6, 8,11,14, 8, 5, 5, 3, 5, 8,11,13, 9, 6, 7, 5, 5, 7, 9,10,11,10, 9, 8, 6, 6, 8,10, @@ -2996,7 +3013,7 @@ static const long _huff_lengthlist__44p3_long[] = { static const static_codebook _huff_book__44p3_long = { 2, 64, - (long *)_huff_lengthlist__44p3_long, + (char *)_huff_lengthlist__44p3_long, 0, 0, 0, 0, 0, NULL, 0 @@ -3008,7 +3025,7 @@ static const long _vq_quantlist__44p3_p1_0[] = { 2, }; -static const long _vq_lengthlist__44p3_p1_0[] = { +static const char _vq_lengthlist__44p3_p1_0[] = { 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3029,7 +3046,7 @@ static const long _vq_lengthlist__44p3_p1_0[] = { static const static_codebook _44p3_p1_0 = { 5, 243, - (long *)_vq_lengthlist__44p3_p1_0, + (char *)_vq_lengthlist__44p3_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p3_p1_0, 0 @@ -3043,7 +3060,7 @@ static const long _vq_quantlist__44p3_p2_0[] = { 4, }; -static const long _vq_lengthlist__44p3_p2_0[] = { +static const char _vq_lengthlist__44p3_p2_0[] = { 3, 7, 7, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 11,11, 0, 0, 0, 0, 0, 0, 0, 0,10, 9, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,10,11, 0, 0, 0, 0, 0, @@ -3244,7 +3261,7 @@ static const long _vq_lengthlist__44p3_p2_0[] = { static const static_codebook _44p3_p2_0 = { 5, 3125, - (long *)_vq_lengthlist__44p3_p2_0, + (char *)_vq_lengthlist__44p3_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p3_p2_0, 0 @@ -3256,7 +3273,7 @@ static const long _vq_quantlist__44p3_p3_0[] = { 2, }; -static const long _vq_lengthlist__44p3_p3_0[] = { +static const char _vq_lengthlist__44p3_p3_0[] = { 1, 5, 5, 5, 8, 8, 0, 8, 8, 6, 9, 9, 8,10,10, 0, 8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 4, 7, 7, 6,10, 10, 0,12,12, 7,11,11, 9,12,12, 0,12,12, 0,13,13, @@ -3277,7 +3294,7 @@ static const long _vq_lengthlist__44p3_p3_0[] = { static const static_codebook _44p3_p3_0 = { 5, 243, - (long *)_vq_lengthlist__44p3_p3_0, + (char *)_vq_lengthlist__44p3_p3_0, 1, -533200896, 1614282752, 2, 0, (long *)_vq_quantlist__44p3_p3_0, 0 @@ -3289,7 +3306,7 @@ static const long _vq_quantlist__44p3_p3_1[] = { 2, }; -static const long _vq_lengthlist__44p3_p3_1[] = { +static const char _vq_lengthlist__44p3_p3_1[] = { 3, 4, 4, 0, 8, 8, 0, 8, 8, 0, 9, 9, 0,10,10, 0, 8, 8, 0, 9, 9, 0,10,10, 0, 8, 8, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 8, 8, @@ -3310,7 +3327,7 @@ static const long _vq_lengthlist__44p3_p3_1[] = { static const static_codebook _44p3_p3_1 = { 5, 243, - (long *)_vq_lengthlist__44p3_p3_1, + (char *)_vq_lengthlist__44p3_p3_1, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p3_p3_1, 0 @@ -3322,7 +3339,7 @@ static const long _vq_quantlist__44p3_p4_0[] = { 2, }; -static const long _vq_lengthlist__44p3_p4_0[] = { +static const char _vq_lengthlist__44p3_p4_0[] = { 1, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8,10,11,11, 9, 8, 8, 8, 8, 8,11,11,11,10, 8, 8, 5, 7, 7, 9,11, 11,10,11,11,10,11,11,12,13,14,11,12,12,10,11,11, @@ -3343,7 +3360,7 @@ static const long _vq_lengthlist__44p3_p4_0[] = { static const static_codebook _44p3_p4_0 = { 5, 243, - (long *)_vq_lengthlist__44p3_p4_0, + (char *)_vq_lengthlist__44p3_p4_0, 1, -531365888, 1616117760, 2, 0, (long *)_vq_quantlist__44p3_p4_0, 0 @@ -3357,7 +3374,7 @@ static const long _vq_quantlist__44p3_p4_1[] = { 4, }; -static const long _vq_lengthlist__44p3_p4_1[] = { +static const char _vq_lengthlist__44p3_p4_1[] = { 3, 4, 5, 8, 8,12,10,10,12,12,12,10,10,12,12,13, 11,11,12,12,13,12,12,12,12,13,10,10,13,13,13,13, 13,13,13,13,10,10,13,13,13,11,11,13,13,14,13,13, @@ -3558,7 +3575,7 @@ static const long _vq_lengthlist__44p3_p4_1[] = { static const static_codebook _44p3_p4_1 = { 5, 3125, - (long *)_vq_lengthlist__44p3_p4_1, + (char *)_vq_lengthlist__44p3_p4_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p3_p4_1, 0 @@ -3572,7 +3589,7 @@ static const long _vq_quantlist__44p3_p5_0[] = { 4, }; -static const long _vq_lengthlist__44p3_p5_0[] = { +static const char _vq_lengthlist__44p3_p5_0[] = { 2, 6, 6,14,14, 6, 7, 7,14,14, 7, 7, 7,15,15, 0, 12,12,15,15, 0,13,13,15,15, 7, 8, 8,15,15,10,10, 10,16,16, 9, 8, 8,15,15, 0,13,13,18,17, 0,13,13, @@ -3773,7 +3790,7 @@ static const long _vq_lengthlist__44p3_p5_0[] = { static const static_codebook _44p3_p5_0 = { 5, 3125, - (long *)_vq_lengthlist__44p3_p5_0, + (char *)_vq_lengthlist__44p3_p5_0, 1, -528744448, 1616642048, 3, 0, (long *)_vq_quantlist__44p3_p5_0, 0 @@ -3789,13 +3806,13 @@ static const long _vq_quantlist__44p3_p5_1[] = { 6, }; -static const long _vq_lengthlist__44p3_p5_1[] = { +static const char _vq_lengthlist__44p3_p5_1[] = { 2, 3, 3, 3, 3, 3, 3, }; static const static_codebook _44p3_p5_1 = { 1, 7, - (long *)_vq_lengthlist__44p3_p5_1, + (char *)_vq_lengthlist__44p3_p5_1, 1, -533200896, 1611661312, 3, 0, (long *)_vq_quantlist__44p3_p5_1, 0 @@ -3807,7 +3824,7 @@ static const long _vq_quantlist__44p3_p6_0[] = { 2, }; -static const long _vq_lengthlist__44p3_p6_0[] = { +static const char _vq_lengthlist__44p3_p6_0[] = { 1, 6, 6, 7, 7, 7, 7, 8, 8, 7, 9, 9,11,11,11, 9, 8, 8, 8, 9, 9,12,11,11, 9, 8, 8, 6, 7, 7,10,11, 10,10,10,10,11,11,10,14,13,14,12,11,11,11,11,11, @@ -3828,7 +3845,7 @@ static const long _vq_lengthlist__44p3_p6_0[] = { static const static_codebook _44p3_p6_0 = { 5, 243, - (long *)_vq_lengthlist__44p3_p6_0, + (char *)_vq_lengthlist__44p3_p6_0, 1, -527106048, 1620377600, 2, 0, (long *)_vq_quantlist__44p3_p6_0, 0 @@ -3840,7 +3857,7 @@ static const long _vq_quantlist__44p3_p6_1[] = { 2, }; -static const long _vq_lengthlist__44p3_p6_1[] = { +static const char _vq_lengthlist__44p3_p6_1[] = { 2, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 7, 7, 8, 8, 8, 9, 9, 9, 9, 7, 8, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 8, 8,10, 9, 9,10, 8, 8,10, 8, 8, @@ -3861,7 +3878,7 @@ static const long _vq_lengthlist__44p3_p6_1[] = { static const static_codebook _44p3_p6_1 = { 5, 243, - (long *)_vq_lengthlist__44p3_p6_1, + (char *)_vq_lengthlist__44p3_p6_1, 1, -530841600, 1616642048, 2, 0, (long *)_vq_quantlist__44p3_p6_1, 0 @@ -3873,7 +3890,7 @@ static const long _vq_quantlist__44p3_p7_0[] = { 2, }; -static const long _vq_lengthlist__44p3_p7_0[] = { +static const char _vq_lengthlist__44p3_p7_0[] = { 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -3894,7 +3911,7 @@ static const long _vq_lengthlist__44p3_p7_0[] = { static const static_codebook _44p3_p7_0 = { 5, 243, - (long *)_vq_lengthlist__44p3_p7_0, + (char *)_vq_lengthlist__44p3_p7_0, 1, -513979392, 1633504256, 2, 0, (long *)_vq_quantlist__44p3_p7_0, 0 @@ -3906,7 +3923,7 @@ static const long _vq_quantlist__44p3_p7_1[] = { 2, }; -static const long _vq_lengthlist__44p3_p7_1[] = { +static const char _vq_lengthlist__44p3_p7_1[] = { 1, 9, 9, 6, 9, 9, 5, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -3927,7 +3944,7 @@ static const long _vq_lengthlist__44p3_p7_1[] = { static const static_codebook _44p3_p7_1 = { 5, 243, - (long *)_vq_lengthlist__44p3_p7_1, + (char *)_vq_lengthlist__44p3_p7_1, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44p3_p7_1, 0 @@ -3961,14 +3978,14 @@ static const long _vq_quantlist__44p3_p7_2[] = { 24, }; -static const long _vq_lengthlist__44p3_p7_2[] = { +static const char _vq_lengthlist__44p3_p7_2[] = { 1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9,10,10,11,11,12, 12,13,13,14,14,15,15,15,15, }; static const static_codebook _44p3_p7_2 = { 1, 25, - (long *)_vq_lengthlist__44p3_p7_2, + (char *)_vq_lengthlist__44p3_p7_2, 1, -518864896, 1620639744, 5, 0, (long *)_vq_quantlist__44p3_p7_2, 0 @@ -4002,20 +4019,20 @@ static const long _vq_quantlist__44p3_p7_3[] = { 24, }; -static const long _vq_lengthlist__44p3_p7_3[] = { +static const char _vq_lengthlist__44p3_p7_3[] = { 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44p3_p7_3 = { 1, 25, - (long *)_vq_lengthlist__44p3_p7_3, + (char *)_vq_lengthlist__44p3_p7_3, 1, -529006592, 1611661312, 5, 0, (long *)_vq_quantlist__44p3_p7_3, 0 }; -static const long _huff_lengthlist__44p3_short[] = { +static const char _huff_lengthlist__44p3_short[] = { 4, 5,16, 9, 9,12,17,18, 4, 2,18, 6, 5, 9,13,15, 10, 7, 7, 6, 7, 9,13,13, 8, 5, 6, 5, 5, 7,11,12, 8, 4, 7, 4, 3, 6,10,12,11, 8, 9, 7, 6, 8,11,12, @@ -4024,7 +4041,7 @@ static const long _huff_lengthlist__44p3_short[] = { static const static_codebook _huff_book__44p3_short = { 2, 64, - (long *)_huff_lengthlist__44p3_short, + (char *)_huff_lengthlist__44p3_short, 0, 0, 0, 0, 0, NULL, 0 @@ -4046,7 +4063,7 @@ static const long _vq_quantlist__44p4_l0_0[] = { 12, }; -static const long _vq_lengthlist__44p4_l0_0[] = { +static const char _vq_lengthlist__44p4_l0_0[] = { 1, 4, 4, 8, 8, 9, 8, 9, 9,10,10,10,10, 4, 6, 5, 8, 7, 9, 9, 9, 9,10, 9,10,10, 4, 5, 6, 7, 8, 9, 9, 9, 9, 9,10, 9,10, 8, 9, 8, 9, 8,10, 9,11, 9, @@ -4062,7 +4079,7 @@ static const long _vq_lengthlist__44p4_l0_0[] = { static const static_codebook _44p4_l0_0 = { 2, 169, - (long *)_vq_lengthlist__44p4_l0_0, + (char *)_vq_lengthlist__44p4_l0_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44p4_l0_0, 0 @@ -4076,14 +4093,14 @@ static const long _vq_quantlist__44p4_l0_1[] = { 4, }; -static const long _vq_lengthlist__44p4_l0_1[] = { +static const char _vq_lengthlist__44p4_l0_1[] = { 3, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, }; static const static_codebook _44p4_l0_1 = { 2, 25, - (long *)_vq_lengthlist__44p4_l0_1, + (char *)_vq_lengthlist__44p4_l0_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p4_l0_1, 0 @@ -4095,31 +4112,31 @@ static const long _vq_quantlist__44p4_l1_0[] = { 2, }; -static const long _vq_lengthlist__44p4_l1_0[] = { +static const char _vq_lengthlist__44p4_l1_0[] = { 1, 4, 4, 4, 4, 4, 4, 4, 4, }; static const static_codebook _44p4_l1_0 = { 2, 9, - (long *)_vq_lengthlist__44p4_l1_0, + (char *)_vq_lengthlist__44p4_l1_0, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44p4_l1_0, 0 }; -static const long _huff_lengthlist__44p4_lfe[] = { +static const char _huff_lengthlist__44p4_lfe[] = { 1, 3, 2, 3, }; static const static_codebook _huff_book__44p4_lfe = { 2, 4, - (long *)_huff_lengthlist__44p4_lfe, + (char *)_huff_lengthlist__44p4_lfe, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44p4_long[] = { +static const char _huff_lengthlist__44p4_long[] = { 3, 5,13, 9, 9,12,16,18, 4, 2,20, 6, 7,10,15,20, 10, 7, 5, 5, 6, 8,10,13, 8, 5, 5, 3, 5, 7,10,11, 9, 7, 6, 5, 5, 7, 9, 9,11,10, 8, 7, 6, 6, 8, 8, @@ -4128,7 +4145,7 @@ static const long _huff_lengthlist__44p4_long[] = { static const static_codebook _huff_book__44p4_long = { 2, 64, - (long *)_huff_lengthlist__44p4_long, + (char *)_huff_lengthlist__44p4_long, 0, 0, 0, 0, 0, NULL, 0 @@ -4140,7 +4157,7 @@ static const long _vq_quantlist__44p4_p1_0[] = { 2, }; -static const long _vq_lengthlist__44p4_p1_0[] = { +static const char _vq_lengthlist__44p4_p1_0[] = { 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4161,7 +4178,7 @@ static const long _vq_lengthlist__44p4_p1_0[] = { static const static_codebook _44p4_p1_0 = { 5, 243, - (long *)_vq_lengthlist__44p4_p1_0, + (char *)_vq_lengthlist__44p4_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p4_p1_0, 0 @@ -4175,7 +4192,7 @@ static const long _vq_quantlist__44p4_p2_0[] = { 4, }; -static const long _vq_lengthlist__44p4_p2_0[] = { +static const char _vq_lengthlist__44p4_p2_0[] = { 3, 9, 9, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, 12,12, 0, 0, 0, 0, 0, 0, 0, 0,10,10, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 0,11,11, 0, 0, 0, 0, 0, @@ -4376,7 +4393,7 @@ static const long _vq_lengthlist__44p4_p2_0[] = { static const static_codebook _44p4_p2_0 = { 5, 3125, - (long *)_vq_lengthlist__44p4_p2_0, + (char *)_vq_lengthlist__44p4_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p4_p2_0, 0 @@ -4388,7 +4405,7 @@ static const long _vq_quantlist__44p4_p3_0[] = { 2, }; -static const long _vq_lengthlist__44p4_p3_0[] = { +static const char _vq_lengthlist__44p4_p3_0[] = { 1, 6, 6, 5, 7, 8, 0, 8, 8, 6, 9, 9, 7,10,10, 0, 8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 4, 7, 7, 6,10, 10, 0,12,12, 7,11,11, 8,12,12, 0,12,12, 0,13,12, @@ -4409,7 +4426,7 @@ static const long _vq_lengthlist__44p4_p3_0[] = { static const static_codebook _44p4_p3_0 = { 5, 243, - (long *)_vq_lengthlist__44p4_p3_0, + (char *)_vq_lengthlist__44p4_p3_0, 1, -533200896, 1614282752, 2, 0, (long *)_vq_quantlist__44p4_p3_0, 0 @@ -4421,7 +4438,7 @@ static const long _vq_quantlist__44p4_p3_1[] = { 2, }; -static const long _vq_lengthlist__44p4_p3_1[] = { +static const char _vq_lengthlist__44p4_p3_1[] = { 3, 5, 5, 0, 8, 8, 0, 8, 8, 0, 9, 9, 0,10,10, 0, 8, 8, 0, 8, 8, 0,10,10, 0, 8, 8, 0, 7, 7, 0, 8, 8, 0, 7, 7, 0, 8, 8, 0, 8, 8, 0, 8, 8, 0, 8, 8, @@ -4442,7 +4459,7 @@ static const long _vq_lengthlist__44p4_p3_1[] = { static const static_codebook _44p4_p3_1 = { 5, 243, - (long *)_vq_lengthlist__44p4_p3_1, + (char *)_vq_lengthlist__44p4_p3_1, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p4_p3_1, 0 @@ -4454,7 +4471,7 @@ static const long _vq_quantlist__44p4_p4_0[] = { 2, }; -static const long _vq_lengthlist__44p4_p4_0[] = { +static const char _vq_lengthlist__44p4_p4_0[] = { 1, 6, 6, 6, 7, 7, 7, 8, 8, 7, 8, 8,10,11,11, 9, 8, 8, 8, 8, 8,11,11,12, 9, 8, 8, 5, 7, 7, 9,11, 11,10,11,11,10,11,11,12,14,14,11,12,12,10,12,12, @@ -4475,7 +4492,7 @@ static const long _vq_lengthlist__44p4_p4_0[] = { static const static_codebook _44p4_p4_0 = { 5, 243, - (long *)_vq_lengthlist__44p4_p4_0, + (char *)_vq_lengthlist__44p4_p4_0, 1, -531365888, 1616117760, 2, 0, (long *)_vq_quantlist__44p4_p4_0, 0 @@ -4489,7 +4506,7 @@ static const long _vq_quantlist__44p4_p4_1[] = { 4, }; -static const long _vq_lengthlist__44p4_p4_1[] = { +static const char _vq_lengthlist__44p4_p4_1[] = { 4, 5, 5, 9, 9,12, 9, 9,12,12,12,10,10,13,13,13, 11,11,12,12,13,13,13,12,12,13,10,10,13,13,13,13, 13,13,13,13,10,10,13,12,13,11,11,13,13,13,14,14, @@ -4690,7 +4707,7 @@ static const long _vq_lengthlist__44p4_p4_1[] = { static const static_codebook _44p4_p4_1 = { 5, 3125, - (long *)_vq_lengthlist__44p4_p4_1, + (char *)_vq_lengthlist__44p4_p4_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p4_p4_1, 0 @@ -4704,7 +4721,7 @@ static const long _vq_quantlist__44p4_p5_0[] = { 4, }; -static const long _vq_lengthlist__44p4_p5_0[] = { +static const char _vq_lengthlist__44p4_p5_0[] = { 1, 7, 6,15,15, 7, 8, 8,15,15, 8, 8, 8,15,15, 0, 13,13,16,16, 0,14,14,16,16, 7, 9, 9,16,16,10,11, 11,17,17,10, 8, 8,15,16, 0,14,14,18,18, 0,14,14, @@ -4905,7 +4922,7 @@ static const long _vq_lengthlist__44p4_p5_0[] = { static const static_codebook _44p4_p5_0 = { 5, 3125, - (long *)_vq_lengthlist__44p4_p5_0, + (char *)_vq_lengthlist__44p4_p5_0, 1, -528744448, 1616642048, 3, 0, (long *)_vq_quantlist__44p4_p5_0, 0 @@ -4921,13 +4938,13 @@ static const long _vq_quantlist__44p4_p5_1[] = { 6, }; -static const long _vq_lengthlist__44p4_p5_1[] = { +static const char _vq_lengthlist__44p4_p5_1[] = { 2, 3, 3, 3, 3, 3, 3, }; static const static_codebook _44p4_p5_1 = { 1, 7, - (long *)_vq_lengthlist__44p4_p5_1, + (char *)_vq_lengthlist__44p4_p5_1, 1, -533200896, 1611661312, 3, 0, (long *)_vq_quantlist__44p4_p5_1, 0 @@ -4939,7 +4956,7 @@ static const long _vq_quantlist__44p4_p6_0[] = { 2, }; -static const long _vq_lengthlist__44p4_p6_0[] = { +static const char _vq_lengthlist__44p4_p6_0[] = { 1, 7, 7, 7, 8, 8, 7, 8, 8, 7, 9, 9,11,11,11, 9, 8, 8, 8, 9, 9,12,11,12, 9, 8, 8, 6, 7, 7,10,11, 11,10,10,10,11,11,11,14,14,14,12,11,12,11,11,11, @@ -4960,7 +4977,7 @@ static const long _vq_lengthlist__44p4_p6_0[] = { static const static_codebook _44p4_p6_0 = { 5, 243, - (long *)_vq_lengthlist__44p4_p6_0, + (char *)_vq_lengthlist__44p4_p6_0, 1, -527106048, 1620377600, 2, 0, (long *)_vq_quantlist__44p4_p6_0, 0 @@ -4972,7 +4989,7 @@ static const long _vq_quantlist__44p4_p6_1[] = { 2, }; -static const long _vq_lengthlist__44p4_p6_1[] = { +static const char _vq_lengthlist__44p4_p6_1[] = { 2, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 7, 7, 8, 8, 8, 9, 9, 9, 9, 8, 8, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 9, 9, 8, 8,10, 8, 8, @@ -4993,7 +5010,7 @@ static const long _vq_lengthlist__44p4_p6_1[] = { static const static_codebook _44p4_p6_1 = { 5, 243, - (long *)_vq_lengthlist__44p4_p6_1, + (char *)_vq_lengthlist__44p4_p6_1, 1, -530841600, 1616642048, 2, 0, (long *)_vq_quantlist__44p4_p6_1, 0 @@ -5005,7 +5022,7 @@ static const long _vq_quantlist__44p4_p7_0[] = { 2, }; -static const long _vq_lengthlist__44p4_p7_0[] = { +static const char _vq_lengthlist__44p4_p7_0[] = { 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -5026,7 +5043,7 @@ static const long _vq_lengthlist__44p4_p7_0[] = { static const static_codebook _44p4_p7_0 = { 5, 243, - (long *)_vq_lengthlist__44p4_p7_0, + (char *)_vq_lengthlist__44p4_p7_0, 1, -513979392, 1633504256, 2, 0, (long *)_vq_quantlist__44p4_p7_0, 0 @@ -5038,7 +5055,7 @@ static const long _vq_quantlist__44p4_p7_1[] = { 2, }; -static const long _vq_lengthlist__44p4_p7_1[] = { +static const char _vq_lengthlist__44p4_p7_1[] = { 1, 9, 9, 7, 9, 9, 8, 8, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -5059,7 +5076,7 @@ static const long _vq_lengthlist__44p4_p7_1[] = { static const static_codebook _44p4_p7_1 = { 5, 243, - (long *)_vq_lengthlist__44p4_p7_1, + (char *)_vq_lengthlist__44p4_p7_1, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44p4_p7_1, 0 @@ -5093,14 +5110,14 @@ static const long _vq_quantlist__44p4_p7_2[] = { 24, }; -static const long _vq_lengthlist__44p4_p7_2[] = { +static const char _vq_lengthlist__44p4_p7_2[] = { 1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9,10,10,11,11,12, 12,13,13,14,14,15,15,15,15, }; static const static_codebook _44p4_p7_2 = { 1, 25, - (long *)_vq_lengthlist__44p4_p7_2, + (char *)_vq_lengthlist__44p4_p7_2, 1, -518864896, 1620639744, 5, 0, (long *)_vq_quantlist__44p4_p7_2, 0 @@ -5134,20 +5151,20 @@ static const long _vq_quantlist__44p4_p7_3[] = { 24, }; -static const long _vq_lengthlist__44p4_p7_3[] = { +static const char _vq_lengthlist__44p4_p7_3[] = { 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44p4_p7_3 = { 1, 25, - (long *)_vq_lengthlist__44p4_p7_3, + (char *)_vq_lengthlist__44p4_p7_3, 1, -529006592, 1611661312, 5, 0, (long *)_vq_quantlist__44p4_p7_3, 0 }; -static const long _huff_lengthlist__44p4_short[] = { +static const char _huff_lengthlist__44p4_short[] = { 3, 5,16, 9, 9,13,18,21, 4, 2,21, 6, 6,10,15,21, 16,19, 6, 5, 7,10,13,16, 8, 6, 5, 4, 4, 8,13,16, 8, 5, 6, 4, 4, 7,12,15,13,10, 9, 7, 7, 9,13,16, @@ -5156,7 +5173,7 @@ static const long _huff_lengthlist__44p4_short[] = { static const static_codebook _huff_book__44p4_short = { 2, 64, - (long *)_huff_lengthlist__44p4_short, + (char *)_huff_lengthlist__44p4_short, 0, 0, 0, 0, 0, NULL, 0 @@ -5178,7 +5195,7 @@ static const long _vq_quantlist__44p5_l0_0[] = { 12, }; -static const long _vq_lengthlist__44p5_l0_0[] = { +static const char _vq_lengthlist__44p5_l0_0[] = { 1, 4, 4, 8, 8,10,10,10,10, 9, 8,11,11, 4, 6, 5, 8, 6,10,10,10,10,10, 9,10, 9, 4, 5, 6, 6, 9,10, 10,10,10, 9,10, 9,10, 8, 9, 8, 9, 8, 9, 9,10, 9, @@ -5194,7 +5211,7 @@ static const long _vq_lengthlist__44p5_l0_0[] = { static const static_codebook _44p5_l0_0 = { 2, 169, - (long *)_vq_lengthlist__44p5_l0_0, + (char *)_vq_lengthlist__44p5_l0_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44p5_l0_0, 0 @@ -5208,14 +5225,14 @@ static const long _vq_quantlist__44p5_l0_1[] = { 4, }; -static const long _vq_lengthlist__44p5_l0_1[] = { +static const char _vq_lengthlist__44p5_l0_1[] = { 4, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44p5_l0_1 = { 2, 25, - (long *)_vq_lengthlist__44p5_l0_1, + (char *)_vq_lengthlist__44p5_l0_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p5_l0_1, 0 @@ -5227,31 +5244,31 @@ static const long _vq_quantlist__44p5_l1_0[] = { 2, }; -static const long _vq_lengthlist__44p5_l1_0[] = { +static const char _vq_lengthlist__44p5_l1_0[] = { 1, 4, 4, 4, 4, 4, 4, 4, 4, }; static const static_codebook _44p5_l1_0 = { 2, 9, - (long *)_vq_lengthlist__44p5_l1_0, + (char *)_vq_lengthlist__44p5_l1_0, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44p5_l1_0, 0 }; -static const long _huff_lengthlist__44p5_lfe[] = { +static const char _huff_lengthlist__44p5_lfe[] = { 1, 3, 2, 3, }; static const static_codebook _huff_book__44p5_lfe = { 2, 4, - (long *)_huff_lengthlist__44p5_lfe, + (char *)_huff_lengthlist__44p5_lfe, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44p5_long[] = { +static const char _huff_lengthlist__44p5_long[] = { 3, 7,12,14,14,16,18,19, 6, 2, 4, 6, 8, 9,12,14, 12, 3, 3, 5, 7, 8,11,13,13, 6, 4, 5, 7, 8,10,11, 14, 8, 7, 7, 7, 7, 9,10,15, 9, 8, 7, 7, 6, 8, 9, @@ -5260,7 +5277,7 @@ static const long _huff_lengthlist__44p5_long[] = { static const static_codebook _huff_book__44p5_long = { 2, 64, - (long *)_huff_lengthlist__44p5_long, + (char *)_huff_lengthlist__44p5_long, 0, 0, 0, 0, 0, NULL, 0 @@ -5272,7 +5289,7 @@ static const long _vq_quantlist__44p5_p1_0[] = { 2, }; -static const long _vq_lengthlist__44p5_p1_0[] = { +static const char _vq_lengthlist__44p5_p1_0[] = { 2, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 8, 9, 7, 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 5, 7, 8, 8, 9, 10, 8, 9,10, 8, 9,10, 9,10,12,10,11,11, 8,10,10, @@ -5293,7 +5310,7 @@ static const long _vq_lengthlist__44p5_p1_0[] = { static const static_codebook _44p5_p1_0 = { 5, 243, - (long *)_vq_lengthlist__44p5_p1_0, + (char *)_vq_lengthlist__44p5_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p5_p1_0, 0 @@ -5307,7 +5324,7 @@ static const long _vq_quantlist__44p5_p2_0[] = { 4, }; -static const long _vq_lengthlist__44p5_p2_0[] = { +static const char _vq_lengthlist__44p5_p2_0[] = { 4, 6, 6, 9, 9, 6, 7, 8,10,10, 6, 8, 7,10,10, 8, 10,10,12,13, 8,10,10,13,12, 6, 7, 8,10,10, 7, 8, 9,10,11, 8, 9, 9,11,11,10,10,11,12,14,10,11,11, @@ -5508,7 +5525,7 @@ static const long _vq_lengthlist__44p5_p2_0[] = { static const static_codebook _44p5_p2_0 = { 5, 3125, - (long *)_vq_lengthlist__44p5_p2_0, + (char *)_vq_lengthlist__44p5_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p5_p2_0, 0 @@ -5520,7 +5537,7 @@ static const long _vq_quantlist__44p5_p3_0[] = { 2, }; -static const long _vq_lengthlist__44p5_p3_0[] = { +static const char _vq_lengthlist__44p5_p3_0[] = { 1, 5, 6, 5, 7, 8, 5, 8, 7, 5, 7, 8, 7, 8,10, 8, 10,10, 5, 8, 7, 8,10,10, 7,10, 8, 6, 8, 9, 8,10, 11, 9,10,10, 9,10,11,10,11,12,11,12,12, 9,11,10, @@ -5541,7 +5558,7 @@ static const long _vq_lengthlist__44p5_p3_0[] = { static const static_codebook _44p5_p3_0 = { 5, 243, - (long *)_vq_lengthlist__44p5_p3_0, + (char *)_vq_lengthlist__44p5_p3_0, 1, -533200896, 1614282752, 2, 0, (long *)_vq_quantlist__44p5_p3_0, 0 @@ -5553,7 +5570,7 @@ static const long _vq_quantlist__44p5_p3_1[] = { 2, }; -static const long _vq_lengthlist__44p5_p3_1[] = { +static const char _vq_lengthlist__44p5_p3_1[] = { 5, 6, 6, 6, 7, 7, 6, 7, 7, 6, 7, 7, 7, 7, 8, 7, 8, 8, 6, 7, 7, 7, 8, 8, 7, 8, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8, @@ -5574,7 +5591,7 @@ static const long _vq_lengthlist__44p5_p3_1[] = { static const static_codebook _44p5_p3_1 = { 5, 243, - (long *)_vq_lengthlist__44p5_p3_1, + (char *)_vq_lengthlist__44p5_p3_1, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p5_p3_1, 0 @@ -5586,7 +5603,7 @@ static const long _vq_quantlist__44p5_p4_0[] = { 2, }; -static const long _vq_lengthlist__44p5_p4_0[] = { +static const char _vq_lengthlist__44p5_p4_0[] = { 1, 5, 5, 5, 7, 9, 5, 9, 7, 5, 7, 8, 7, 7,10, 9, 10,10, 5, 8, 7, 9,10,10, 7,10, 7, 6, 8, 9, 9,10, 12, 9,11,11, 9,10,11,11,11,13,12,13,13, 9,11,11, @@ -5607,7 +5624,7 @@ static const long _vq_lengthlist__44p5_p4_0[] = { static const static_codebook _44p5_p4_0 = { 5, 243, - (long *)_vq_lengthlist__44p5_p4_0, + (char *)_vq_lengthlist__44p5_p4_0, 1, -531365888, 1616117760, 2, 0, (long *)_vq_quantlist__44p5_p4_0, 0 @@ -5621,7 +5638,7 @@ static const long _vq_quantlist__44p5_p4_1[] = { 4, }; -static const long _vq_lengthlist__44p5_p4_1[] = { +static const char _vq_lengthlist__44p5_p4_1[] = { 5, 7, 7,10,10, 7, 8, 9,10,11, 7, 9, 8,11,10, 9, 10,10,11,11, 9,10,10,11,11, 7, 9, 9,10,10, 8, 9, 10,10,11, 9,10,10,11,11,10,10,11,11,11,10,11,11, @@ -5822,7 +5839,7 @@ static const long _vq_lengthlist__44p5_p4_1[] = { static const static_codebook _44p5_p4_1 = { 5, 3125, - (long *)_vq_lengthlist__44p5_p4_1, + (char *)_vq_lengthlist__44p5_p4_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p5_p4_1, 0 @@ -5836,7 +5853,7 @@ static const long _vq_quantlist__44p5_p5_0[] = { 4, }; -static const long _vq_lengthlist__44p5_p5_0[] = { +static const char _vq_lengthlist__44p5_p5_0[] = { 1, 6, 6,10,10, 6, 7, 9,11,13, 5, 9, 7,13,11, 8, 11,12,13,15, 8,12,11,15,13, 6, 7, 8,11,11, 7, 8, 10,11,13, 9,10,10,13,13,11,11,13,12,16,12,13,13, @@ -6037,7 +6054,7 @@ static const long _vq_lengthlist__44p5_p5_0[] = { static const static_codebook _44p5_p5_0 = { 5, 3125, - (long *)_vq_lengthlist__44p5_p5_0, + (char *)_vq_lengthlist__44p5_p5_0, 1, -528744448, 1616642048, 3, 0, (long *)_vq_quantlist__44p5_p5_0, 0 @@ -6053,13 +6070,13 @@ static const long _vq_quantlist__44p5_p5_1[] = { 6, }; -static const long _vq_lengthlist__44p5_p5_1[] = { +static const char _vq_lengthlist__44p5_p5_1[] = { 2, 3, 3, 3, 3, 3, 3, }; static const static_codebook _44p5_p5_1 = { 1, 7, - (long *)_vq_lengthlist__44p5_p5_1, + (char *)_vq_lengthlist__44p5_p5_1, 1, -533200896, 1611661312, 3, 0, (long *)_vq_quantlist__44p5_p5_1, 0 @@ -6071,7 +6088,7 @@ static const long _vq_quantlist__44p5_p6_0[] = { 2, }; -static const long _vq_lengthlist__44p5_p6_0[] = { +static const char _vq_lengthlist__44p5_p6_0[] = { 1, 5, 5, 5, 7, 9, 5, 9, 7, 5, 7, 8, 7, 7,10, 9, 9,10, 5, 8, 7, 9,10, 9, 7,10, 7, 6, 9, 9, 9,10, 12,10,12,11, 9,10,11,11,10,13,12,12,13,10,11,11, @@ -6092,7 +6109,7 @@ static const long _vq_lengthlist__44p5_p6_0[] = { static const static_codebook _44p5_p6_0 = { 5, 243, - (long *)_vq_lengthlist__44p5_p6_0, + (char *)_vq_lengthlist__44p5_p6_0, 1, -527106048, 1620377600, 2, 0, (long *)_vq_quantlist__44p5_p6_0, 0 @@ -6104,7 +6121,7 @@ static const long _vq_quantlist__44p5_p6_1[] = { 2, }; -static const long _vq_lengthlist__44p5_p6_1[] = { +static const char _vq_lengthlist__44p5_p6_1[] = { 2, 6, 6, 5, 7, 8, 5, 8, 7, 6, 7, 7, 7, 7, 8, 8, 8, 8, 6, 7, 7, 7, 8, 8, 7, 8, 7, 6, 8, 8, 8, 9, 10, 8, 9, 9, 8, 9, 9, 9, 9,10,10,10,10, 8, 9, 9, @@ -6125,7 +6142,7 @@ static const long _vq_lengthlist__44p5_p6_1[] = { static const static_codebook _44p5_p6_1 = { 5, 243, - (long *)_vq_lengthlist__44p5_p6_1, + (char *)_vq_lengthlist__44p5_p6_1, 1, -530841600, 1616642048, 2, 0, (long *)_vq_quantlist__44p5_p6_1, 0 @@ -6137,7 +6154,7 @@ static const long _vq_quantlist__44p5_p7_0[] = { 2, }; -static const long _vq_lengthlist__44p5_p7_0[] = { +static const char _vq_lengthlist__44p5_p7_0[] = { 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -6158,7 +6175,7 @@ static const long _vq_lengthlist__44p5_p7_0[] = { static const static_codebook _44p5_p7_0 = { 5, 243, - (long *)_vq_lengthlist__44p5_p7_0, + (char *)_vq_lengthlist__44p5_p7_0, 1, -513979392, 1633504256, 2, 0, (long *)_vq_quantlist__44p5_p7_0, 0 @@ -6170,7 +6187,7 @@ static const long _vq_quantlist__44p5_p7_1[] = { 2, }; -static const long _vq_lengthlist__44p5_p7_1[] = { +static const char _vq_lengthlist__44p5_p7_1[] = { 1, 7, 7, 6, 9, 9, 7, 9, 9, 6, 9, 9, 9, 9, 9, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -6191,7 +6208,7 @@ static const long _vq_lengthlist__44p5_p7_1[] = { static const static_codebook _44p5_p7_1 = { 5, 243, - (long *)_vq_lengthlist__44p5_p7_1, + (char *)_vq_lengthlist__44p5_p7_1, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44p5_p7_1, 0 @@ -6225,14 +6242,14 @@ static const long _vq_quantlist__44p5_p7_2[] = { 24, }; -static const long _vq_lengthlist__44p5_p7_2[] = { +static const char _vq_lengthlist__44p5_p7_2[] = { 1, 2, 3, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11, 11,12,12,13,13,14,14,14,14, }; static const static_codebook _44p5_p7_2 = { 1, 25, - (long *)_vq_lengthlist__44p5_p7_2, + (char *)_vq_lengthlist__44p5_p7_2, 1, -518864896, 1620639744, 5, 0, (long *)_vq_quantlist__44p5_p7_2, 0 @@ -6266,20 +6283,20 @@ static const long _vq_quantlist__44p5_p7_3[] = { 24, }; -static const long _vq_lengthlist__44p5_p7_3[] = { +static const char _vq_lengthlist__44p5_p7_3[] = { 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44p5_p7_3 = { 1, 25, - (long *)_vq_lengthlist__44p5_p7_3, + (char *)_vq_lengthlist__44p5_p7_3, 1, -529006592, 1611661312, 5, 0, (long *)_vq_quantlist__44p5_p7_3, 0 }; -static const long _huff_lengthlist__44p5_short[] = { +static const char _huff_lengthlist__44p5_short[] = { 4, 7,12,14,15,18,20,20, 5, 3, 4, 6, 9,11,15,19, 9, 4, 3, 4, 7, 9,13,18,11, 6, 3, 3, 5, 8,13,19, 14, 9, 6, 5, 7,10,16,20,16,11, 9, 8,10,10,14,16, @@ -6288,7 +6305,7 @@ static const long _huff_lengthlist__44p5_short[] = { static const static_codebook _huff_book__44p5_short = { 2, 64, - (long *)_huff_lengthlist__44p5_short, + (char *)_huff_lengthlist__44p5_short, 0, 0, 0, 0, 0, NULL, 0 @@ -6310,7 +6327,7 @@ static const long _vq_quantlist__44p6_l0_0[] = { 12, }; -static const long _vq_lengthlist__44p6_l0_0[] = { +static const char _vq_lengthlist__44p6_l0_0[] = { 1, 4, 4, 7, 7,10,10,12,12,12,12,13,12, 5, 5, 5, 8, 6,11, 9,12,12,13,12,12,12, 4, 5, 5, 6, 8, 9, 11,12,12,13,12,12,12, 7, 7, 8, 9, 9,11, 8,12, 9, @@ -6326,7 +6343,7 @@ static const long _vq_lengthlist__44p6_l0_0[] = { static const static_codebook _44p6_l0_0 = { 2, 169, - (long *)_vq_lengthlist__44p6_l0_0, + (char *)_vq_lengthlist__44p6_l0_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44p6_l0_0, 0 @@ -6340,14 +6357,14 @@ static const long _vq_quantlist__44p6_l0_1[] = { 4, }; -static const long _vq_lengthlist__44p6_l0_1[] = { +static const char _vq_lengthlist__44p6_l0_1[] = { 4, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 4, }; static const static_codebook _44p6_l0_1 = { 2, 25, - (long *)_vq_lengthlist__44p6_l0_1, + (char *)_vq_lengthlist__44p6_l0_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p6_l0_1, 0 @@ -6359,31 +6376,31 @@ static const long _vq_quantlist__44p6_l1_0[] = { 2, }; -static const long _vq_lengthlist__44p6_l1_0[] = { +static const char _vq_lengthlist__44p6_l1_0[] = { 1, 3, 2, 5, 5, 6, 6, 6, 6, }; static const static_codebook _44p6_l1_0 = { 2, 9, - (long *)_vq_lengthlist__44p6_l1_0, + (char *)_vq_lengthlist__44p6_l1_0, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44p6_l1_0, 0 }; -static const long _huff_lengthlist__44p6_lfe[] = { +static const char _huff_lengthlist__44p6_lfe[] = { 2, 3, 1, 3, }; static const static_codebook _huff_book__44p6_lfe = { 2, 4, - (long *)_huff_lengthlist__44p6_lfe, + (char *)_huff_lengthlist__44p6_lfe, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44p6_long[] = { +static const char _huff_lengthlist__44p6_long[] = { 2, 7,13,15,16,17,19,20, 6, 3, 4, 7, 9,10,12,15, 13, 4, 3, 4, 7, 8,11,13,14, 7, 4, 4, 6, 7,10,11, 16, 9, 7, 6, 7, 8, 9,10,16, 9, 8, 7, 7, 6, 8, 8, @@ -6392,7 +6409,7 @@ static const long _huff_lengthlist__44p6_long[] = { static const static_codebook _huff_book__44p6_long = { 2, 64, - (long *)_huff_lengthlist__44p6_long, + (char *)_huff_lengthlist__44p6_long, 0, 0, 0, 0, 0, NULL, 0 @@ -6404,7 +6421,7 @@ static const long _vq_quantlist__44p6_p1_0[] = { 2, }; -static const long _vq_lengthlist__44p6_p1_0[] = { +static const char _vq_lengthlist__44p6_p1_0[] = { 2, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 8, 9, 7, 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 5, 7, 8, 8, 9, 10, 8, 9, 9, 8, 9,10, 9,10,12,10,11,11, 8, 9,10, @@ -6425,7 +6442,7 @@ static const long _vq_lengthlist__44p6_p1_0[] = { static const static_codebook _44p6_p1_0 = { 5, 243, - (long *)_vq_lengthlist__44p6_p1_0, + (char *)_vq_lengthlist__44p6_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p6_p1_0, 0 @@ -6439,7 +6456,7 @@ static const long _vq_quantlist__44p6_p2_0[] = { 4, }; -static const long _vq_lengthlist__44p6_p2_0[] = { +static const char _vq_lengthlist__44p6_p2_0[] = { 4, 6, 6, 9, 9, 6, 7, 8,10,10, 6, 8, 7,10,10, 8, 10,10,12,13, 8,10,10,13,12, 6, 8, 8,10,10, 7, 8, 9,10,11, 8, 9, 9,11,11,10,10,11,12,13,10,11,11, @@ -6640,7 +6657,7 @@ static const long _vq_lengthlist__44p6_p2_0[] = { static const static_codebook _44p6_p2_0 = { 5, 3125, - (long *)_vq_lengthlist__44p6_p2_0, + (char *)_vq_lengthlist__44p6_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p6_p2_0, 0 @@ -6652,7 +6669,7 @@ static const long _vq_quantlist__44p6_p3_0[] = { 2, }; -static const long _vq_lengthlist__44p6_p3_0[] = { +static const char _vq_lengthlist__44p6_p3_0[] = { 1, 5, 5, 5, 7, 8, 5, 8, 7, 5, 7, 8, 8, 8,10, 8, 10,10, 5, 8, 7, 8,10,10, 8,10, 8, 6, 8, 9, 8,10, 12, 9,11,11, 9,10,11,11,11,13,12,13,13, 9,11,11, @@ -6673,7 +6690,7 @@ static const long _vq_lengthlist__44p6_p3_0[] = { static const static_codebook _44p6_p3_0 = { 5, 243, - (long *)_vq_lengthlist__44p6_p3_0, + (char *)_vq_lengthlist__44p6_p3_0, 1, -533200896, 1614282752, 2, 0, (long *)_vq_quantlist__44p6_p3_0, 0 @@ -6685,7 +6702,7 @@ static const long _vq_quantlist__44p6_p3_1[] = { 2, }; -static const long _vq_lengthlist__44p6_p3_1[] = { +static const char _vq_lengthlist__44p6_p3_1[] = { 5, 7, 7, 6, 7, 7, 6, 7, 7, 6, 7, 7, 7, 8, 8, 7, 8, 8, 6, 7, 7, 7, 8, 8, 7, 8, 8, 7, 7, 8, 7, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8, @@ -6706,7 +6723,7 @@ static const long _vq_lengthlist__44p6_p3_1[] = { static const static_codebook _44p6_p3_1 = { 5, 243, - (long *)_vq_lengthlist__44p6_p3_1, + (char *)_vq_lengthlist__44p6_p3_1, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p6_p3_1, 0 @@ -6718,7 +6735,7 @@ static const long _vq_quantlist__44p6_p4_0[] = { 2, }; -static const long _vq_lengthlist__44p6_p4_0[] = { +static const char _vq_lengthlist__44p6_p4_0[] = { 2, 5, 5, 5, 7, 8, 5, 8, 7, 5, 7, 7, 7, 7, 9, 7, 9, 9, 5, 7, 7, 8, 9, 9, 7, 9, 7, 6, 8, 8, 8, 9, 10, 8, 9, 9, 8, 9,10, 9, 9,11,10,11,11, 8, 9, 9, @@ -6739,7 +6756,7 @@ static const long _vq_lengthlist__44p6_p4_0[] = { static const static_codebook _44p6_p4_0 = { 5, 243, - (long *)_vq_lengthlist__44p6_p4_0, + (char *)_vq_lengthlist__44p6_p4_0, 1, -531365888, 1616117760, 2, 0, (long *)_vq_quantlist__44p6_p4_0, 0 @@ -6753,7 +6770,7 @@ static const long _vq_quantlist__44p6_p4_1[] = { 4, }; -static const long _vq_lengthlist__44p6_p4_1[] = { +static const char _vq_lengthlist__44p6_p4_1[] = { 6, 8, 8,10,10, 8, 9, 9,10,11, 8,10, 9,11,10, 9, 10,10,11,11, 9,10,10,11,11, 8, 9, 9,10,10, 9, 9, 10,11,11,10,10,10,11,11,10,11,11,11,11,10,11,11, @@ -6954,7 +6971,7 @@ static const long _vq_lengthlist__44p6_p4_1[] = { static const static_codebook _44p6_p4_1 = { 5, 3125, - (long *)_vq_lengthlist__44p6_p4_1, + (char *)_vq_lengthlist__44p6_p4_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p6_p4_1, 0 @@ -6968,7 +6985,7 @@ static const long _vq_quantlist__44p6_p5_0[] = { 4, }; -static const long _vq_lengthlist__44p6_p5_0[] = { +static const char _vq_lengthlist__44p6_p5_0[] = { 2, 6, 6,10,10, 5, 7, 8,11,12, 5, 8, 7,12,11, 9, 11,11,13,15, 9,11,11,15,13, 6, 7, 8,11,11, 7, 7, 9,11,13, 8, 9, 9,13,12,11,11,12,12,15,11,12,12, @@ -7169,7 +7186,7 @@ static const long _vq_lengthlist__44p6_p5_0[] = { static const static_codebook _44p6_p5_0 = { 5, 3125, - (long *)_vq_lengthlist__44p6_p5_0, + (char *)_vq_lengthlist__44p6_p5_0, 1, -528744448, 1616642048, 3, 0, (long *)_vq_quantlist__44p6_p5_0, 0 @@ -7185,13 +7202,13 @@ static const long _vq_quantlist__44p6_p5_1[] = { 6, }; -static const long _vq_lengthlist__44p6_p5_1[] = { +static const char _vq_lengthlist__44p6_p5_1[] = { 2, 3, 3, 3, 3, 3, 3, }; static const static_codebook _44p6_p5_1 = { 1, 7, - (long *)_vq_lengthlist__44p6_p5_1, + (char *)_vq_lengthlist__44p6_p5_1, 1, -533200896, 1611661312, 3, 0, (long *)_vq_quantlist__44p6_p5_1, 0 @@ -7203,7 +7220,7 @@ static const long _vq_quantlist__44p6_p6_0[] = { 2, }; -static const long _vq_lengthlist__44p6_p6_0[] = { +static const char _vq_lengthlist__44p6_p6_0[] = { 1, 5, 5, 5, 7, 9, 5, 9, 7, 5, 7, 8, 7, 7,10, 9, 10,10, 5, 8, 7, 9,10,10, 7,10, 7, 6, 9, 9, 9,10, 12, 9,11,11, 9,10,11,11,11,13,12,13,13, 9,11,11, @@ -7224,7 +7241,7 @@ static const long _vq_lengthlist__44p6_p6_0[] = { static const static_codebook _44p6_p6_0 = { 5, 243, - (long *)_vq_lengthlist__44p6_p6_0, + (char *)_vq_lengthlist__44p6_p6_0, 1, -527106048, 1620377600, 2, 0, (long *)_vq_quantlist__44p6_p6_0, 0 @@ -7236,7 +7253,7 @@ static const long _vq_quantlist__44p6_p6_1[] = { 2, }; -static const long _vq_lengthlist__44p6_p6_1[] = { +static const char _vq_lengthlist__44p6_p6_1[] = { 2, 6, 6, 6, 7, 8, 6, 8, 7, 6, 7, 7, 7, 7, 8, 7, 8, 8, 6, 7, 7, 7, 8, 8, 7, 8, 7, 6, 8, 8, 8, 9, 9, 8, 9, 9, 8, 9, 9, 9, 9,10, 9,10,10, 8, 9, 9, @@ -7257,7 +7274,7 @@ static const long _vq_lengthlist__44p6_p6_1[] = { static const static_codebook _44p6_p6_1 = { 5, 243, - (long *)_vq_lengthlist__44p6_p6_1, + (char *)_vq_lengthlist__44p6_p6_1, 1, -530841600, 1616642048, 2, 0, (long *)_vq_quantlist__44p6_p6_1, 0 @@ -7269,7 +7286,7 @@ static const long _vq_quantlist__44p6_p7_0[] = { 2, }; -static const long _vq_lengthlist__44p6_p7_0[] = { +static const char _vq_lengthlist__44p6_p7_0[] = { 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -7290,7 +7307,7 @@ static const long _vq_lengthlist__44p6_p7_0[] = { static const static_codebook _44p6_p7_0 = { 5, 243, - (long *)_vq_lengthlist__44p6_p7_0, + (char *)_vq_lengthlist__44p6_p7_0, 1, -513979392, 1633504256, 2, 0, (long *)_vq_quantlist__44p6_p7_0, 0 @@ -7302,7 +7319,7 @@ static const long _vq_quantlist__44p6_p7_1[] = { 2, }; -static const long _vq_lengthlist__44p6_p7_1[] = { +static const char _vq_lengthlist__44p6_p7_1[] = { 1, 4, 5, 5,10,10, 5,10,10, 5,10,10,10,10,10,10, 10,10, 5,10,10,10,10,10,10,10,10, 7,10,10,10,10, 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, @@ -7323,7 +7340,7 @@ static const long _vq_lengthlist__44p6_p7_1[] = { static const static_codebook _44p6_p7_1 = { 5, 243, - (long *)_vq_lengthlist__44p6_p7_1, + (char *)_vq_lengthlist__44p6_p7_1, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44p6_p7_1, 0 @@ -7357,14 +7374,14 @@ static const long _vq_quantlist__44p6_p7_2[] = { 24, }; -static const long _vq_lengthlist__44p6_p7_2[] = { +static const char _vq_lengthlist__44p6_p7_2[] = { 1, 2, 3, 4, 5, 7, 7, 8, 8, 9, 9,10,10,11,11,12, 12,13,13,14,14,15,15,15,15, }; static const static_codebook _44p6_p7_2 = { 1, 25, - (long *)_vq_lengthlist__44p6_p7_2, + (char *)_vq_lengthlist__44p6_p7_2, 1, -518864896, 1620639744, 5, 0, (long *)_vq_quantlist__44p6_p7_2, 0 @@ -7398,20 +7415,20 @@ static const long _vq_quantlist__44p6_p7_3[] = { 24, }; -static const long _vq_lengthlist__44p6_p7_3[] = { +static const char _vq_lengthlist__44p6_p7_3[] = { 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44p6_p7_3 = { 1, 25, - (long *)_vq_lengthlist__44p6_p7_3, + (char *)_vq_lengthlist__44p6_p7_3, 1, -529006592, 1611661312, 5, 0, (long *)_vq_quantlist__44p6_p7_3, 0 }; -static const long _huff_lengthlist__44p6_short[] = { +static const char _huff_lengthlist__44p6_short[] = { 2, 8,13,15,16,18,21,22, 5, 4, 6, 8,10,12,17,21, 9, 5, 5, 6, 8,11,15,19,11, 6, 5, 5, 6, 7,12,14, 14, 8, 7, 5, 4, 4, 9,11,16,11, 9, 7, 4, 3, 7,10, @@ -7420,7 +7437,7 @@ static const long _huff_lengthlist__44p6_short[] = { static const static_codebook _huff_book__44p6_short = { 2, 64, - (long *)_huff_lengthlist__44p6_short, + (char *)_huff_lengthlist__44p6_short, 0, 0, 0, 0, 0, NULL, 0 @@ -7442,7 +7459,7 @@ static const long _vq_quantlist__44p7_l0_0[] = { 12, }; -static const long _vq_lengthlist__44p7_l0_0[] = { +static const char _vq_lengthlist__44p7_l0_0[] = { 2, 4, 4, 7, 7, 8, 8,10,10,11,11,12,12, 4, 5, 5, 7, 7, 9, 9,11, 9,12,11,12,12, 4, 5, 5, 7, 7, 9, 9, 9,10,10,11,12,12, 7, 7, 7, 7, 8, 9, 8,11, 5, @@ -7458,7 +7475,7 @@ static const long _vq_lengthlist__44p7_l0_0[] = { static const static_codebook _44p7_l0_0 = { 2, 169, - (long *)_vq_lengthlist__44p7_l0_0, + (char *)_vq_lengthlist__44p7_l0_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44p7_l0_0, 0 @@ -7472,14 +7489,14 @@ static const long _vq_quantlist__44p7_l0_1[] = { 4, }; -static const long _vq_lengthlist__44p7_l0_1[] = { +static const char _vq_lengthlist__44p7_l0_1[] = { 4, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44p7_l0_1 = { 2, 25, - (long *)_vq_lengthlist__44p7_l0_1, + (char *)_vq_lengthlist__44p7_l0_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p7_l0_1, 0 @@ -7493,32 +7510,32 @@ static const long _vq_quantlist__44p7_l1_0[] = { 108, }; -static const long _vq_lengthlist__44p7_l1_0[] = { +static const char _vq_lengthlist__44p7_l1_0[] = { 1, 2, 3, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, }; static const static_codebook _44p7_l1_0 = { 2, 25, - (long *)_vq_lengthlist__44p7_l1_0, + (char *)_vq_lengthlist__44p7_l1_0, 1, -514516992, 1620639744, 7, 0, (long *)_vq_quantlist__44p7_l1_0, 0 }; -static const long _huff_lengthlist__44p7_lfe[] = { +static const char _huff_lengthlist__44p7_lfe[] = { 2, 3, 1, 3, }; static const static_codebook _huff_book__44p7_lfe = { 2, 4, - (long *)_huff_lengthlist__44p7_lfe, + (char *)_huff_lengthlist__44p7_lfe, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44p7_long[] = { +static const char _huff_lengthlist__44p7_long[] = { 2, 7,14,16,17,17,18,20, 6, 3, 5, 8,10,11,13,15, 13, 5, 3, 5, 8, 9,11,12,15, 7, 4, 3, 5, 7, 9,11, 16,10, 7, 5, 6, 7, 9,10,17,11, 8, 7, 7, 6, 8, 8, @@ -7527,7 +7544,7 @@ static const long _huff_lengthlist__44p7_long[] = { static const static_codebook _huff_book__44p7_long = { 2, 64, - (long *)_huff_lengthlist__44p7_long, + (char *)_huff_lengthlist__44p7_long, 0, 0, 0, 0, 0, NULL, 0 @@ -7539,7 +7556,7 @@ static const long _vq_quantlist__44p7_p1_0[] = { 2, }; -static const long _vq_lengthlist__44p7_p1_0[] = { +static const char _vq_lengthlist__44p7_p1_0[] = { 2, 5, 5, 4, 7, 7, 4, 7, 7, 5, 7, 7, 7, 8, 9, 7, 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 6, 7, 8, 8, 9, 10, 8, 9,10, 8, 9,10,10,10,12,10,11,11, 8,10,10, @@ -7560,7 +7577,7 @@ static const long _vq_lengthlist__44p7_p1_0[] = { static const static_codebook _44p7_p1_0 = { 5, 243, - (long *)_vq_lengthlist__44p7_p1_0, + (char *)_vq_lengthlist__44p7_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p7_p1_0, 0 @@ -7574,7 +7591,7 @@ static const long _vq_quantlist__44p7_p2_0[] = { 4, }; -static const long _vq_lengthlist__44p7_p2_0[] = { +static const char _vq_lengthlist__44p7_p2_0[] = { 4, 6, 6, 9, 9, 6, 8, 8,10,10, 6, 8, 8,10,10, 8, 10,10,12,13, 8,10,10,13,12, 6, 8, 8,10,10, 8, 8, 9,10,11, 8, 9, 9,11,11,10,10,11,12,13,10,11,11, @@ -7775,7 +7792,7 @@ static const long _vq_lengthlist__44p7_p2_0[] = { static const static_codebook _44p7_p2_0 = { 5, 3125, - (long *)_vq_lengthlist__44p7_p2_0, + (char *)_vq_lengthlist__44p7_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p7_p2_0, 0 @@ -7787,7 +7804,7 @@ static const long _vq_quantlist__44p7_p3_0[] = { 2, }; -static const long _vq_lengthlist__44p7_p3_0[] = { +static const char _vq_lengthlist__44p7_p3_0[] = { 2, 5, 5, 4, 7, 7, 4, 7, 7, 5, 7, 8, 7, 8,10, 8, 9, 9, 5, 7, 7, 8, 9, 9, 7,10, 8, 5, 7, 8, 8, 9, 10, 8,10,10, 8, 9,10,10,10,12,10,12,12, 8,10,10, @@ -7808,7 +7825,7 @@ static const long _vq_lengthlist__44p7_p3_0[] = { static const static_codebook _44p7_p3_0 = { 5, 243, - (long *)_vq_lengthlist__44p7_p3_0, + (char *)_vq_lengthlist__44p7_p3_0, 1, -533200896, 1614282752, 2, 0, (long *)_vq_quantlist__44p7_p3_0, 0 @@ -7820,7 +7837,7 @@ static const long _vq_quantlist__44p7_p3_1[] = { 2, }; -static const long _vq_lengthlist__44p7_p3_1[] = { +static const char _vq_lengthlist__44p7_p3_1[] = { 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 8, 7, 8, 8, 7, 8, 7, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 8, 8, @@ -7841,7 +7858,7 @@ static const long _vq_lengthlist__44p7_p3_1[] = { static const static_codebook _44p7_p3_1 = { 5, 243, - (long *)_vq_lengthlist__44p7_p3_1, + (char *)_vq_lengthlist__44p7_p3_1, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p7_p3_1, 0 @@ -7853,7 +7870,7 @@ static const long _vq_quantlist__44p7_p4_0[] = { 2, }; -static const long _vq_lengthlist__44p7_p4_0[] = { +static const char _vq_lengthlist__44p7_p4_0[] = { 1, 5, 5, 5, 7, 8, 5, 8, 7, 5, 7, 8, 7, 8,10, 8, 10,10, 5, 8, 7, 8,10,10, 7,10, 8, 6, 8, 9, 9,10, 12, 9,11,11, 9,10,11,11,11,13,11,13,13, 9,11,11, @@ -7874,7 +7891,7 @@ static const long _vq_lengthlist__44p7_p4_0[] = { static const static_codebook _44p7_p4_0 = { 5, 243, - (long *)_vq_lengthlist__44p7_p4_0, + (char *)_vq_lengthlist__44p7_p4_0, 1, -531365888, 1616117760, 2, 0, (long *)_vq_quantlist__44p7_p4_0, 0 @@ -7888,7 +7905,7 @@ static const long _vq_quantlist__44p7_p4_1[] = { 4, }; -static const long _vq_lengthlist__44p7_p4_1[] = { +static const char _vq_lengthlist__44p7_p4_1[] = { 7, 8, 8,10,10, 8, 9, 9,10,11, 8, 9, 9,10,10, 9, 10,10,11,11, 9,10,10,11,11, 8, 9, 9,10,10, 9, 9, 10,11,11, 9,10,10,11,11,10,10,11,11,11,10,11,11, @@ -8089,7 +8106,7 @@ static const long _vq_lengthlist__44p7_p4_1[] = { static const static_codebook _44p7_p4_1 = { 5, 3125, - (long *)_vq_lengthlist__44p7_p4_1, + (char *)_vq_lengthlist__44p7_p4_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p7_p4_1, 0 @@ -8103,7 +8120,7 @@ static const long _vq_quantlist__44p7_p5_0[] = { 4, }; -static const long _vq_lengthlist__44p7_p5_0[] = { +static const char _vq_lengthlist__44p7_p5_0[] = { 2, 6, 6, 9, 9, 5, 7, 8,10,11, 5, 8, 7,11,10, 8, 10,11,12,13, 8,11,10,13,12, 6, 7, 8,10,11, 7, 8, 10,10,12, 8, 9, 9,12,11,10,10,12,11,14,10,11,12, @@ -8304,7 +8321,7 @@ static const long _vq_lengthlist__44p7_p5_0[] = { static const static_codebook _44p7_p5_0 = { 5, 3125, - (long *)_vq_lengthlist__44p7_p5_0, + (char *)_vq_lengthlist__44p7_p5_0, 1, -528744448, 1616642048, 3, 0, (long *)_vq_quantlist__44p7_p5_0, 0 @@ -8320,13 +8337,13 @@ static const long _vq_quantlist__44p7_p5_1[] = { 6, }; -static const long _vq_lengthlist__44p7_p5_1[] = { +static const char _vq_lengthlist__44p7_p5_1[] = { 2, 3, 3, 3, 3, 3, 3, }; static const static_codebook _44p7_p5_1 = { 1, 7, - (long *)_vq_lengthlist__44p7_p5_1, + (char *)_vq_lengthlist__44p7_p5_1, 1, -533200896, 1611661312, 3, 0, (long *)_vq_quantlist__44p7_p5_1, 0 @@ -8338,7 +8355,7 @@ static const long _vq_quantlist__44p7_p6_0[] = { 2, }; -static const long _vq_lengthlist__44p7_p6_0[] = { +static const char _vq_lengthlist__44p7_p6_0[] = { 2, 5, 6, 5, 7, 8, 5, 8, 7, 5, 7, 7, 7, 7, 9, 8, 9, 9, 5, 7, 7, 8, 9, 9, 7, 9, 7, 6, 8, 8, 8, 9, 10, 8, 9, 9, 8, 9,10, 9, 9,11,10,10,11, 8,10, 9, @@ -8359,7 +8376,7 @@ static const long _vq_lengthlist__44p7_p6_0[] = { static const static_codebook _44p7_p6_0 = { 5, 243, - (long *)_vq_lengthlist__44p7_p6_0, + (char *)_vq_lengthlist__44p7_p6_0, 1, -527106048, 1620377600, 2, 0, (long *)_vq_quantlist__44p7_p6_0, 0 @@ -8371,7 +8388,7 @@ static const long _vq_quantlist__44p7_p6_1[] = { 2, }; -static const long _vq_lengthlist__44p7_p6_1[] = { +static const char _vq_lengthlist__44p7_p6_1[] = { 4, 7, 7, 6, 7, 8, 6, 8, 7, 7, 7, 8, 7, 7, 8, 8, 8, 8, 7, 7, 7, 8, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 9, 9, 8, 8, 8, @@ -8392,7 +8409,7 @@ static const long _vq_lengthlist__44p7_p6_1[] = { static const static_codebook _44p7_p6_1 = { 5, 243, - (long *)_vq_lengthlist__44p7_p6_1, + (char *)_vq_lengthlist__44p7_p6_1, 1, -530841600, 1616642048, 2, 0, (long *)_vq_quantlist__44p7_p6_1, 0 @@ -8404,7 +8421,7 @@ static const long _vq_quantlist__44p7_p7_0[] = { 2, }; -static const long _vq_lengthlist__44p7_p7_0[] = { +static const char _vq_lengthlist__44p7_p7_0[] = { 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -8425,7 +8442,7 @@ static const long _vq_lengthlist__44p7_p7_0[] = { static const static_codebook _44p7_p7_0 = { 5, 243, - (long *)_vq_lengthlist__44p7_p7_0, + (char *)_vq_lengthlist__44p7_p7_0, 1, -513979392, 1633504256, 2, 0, (long *)_vq_quantlist__44p7_p7_0, 0 @@ -8437,7 +8454,7 @@ static const long _vq_quantlist__44p7_p7_1[] = { 2, }; -static const long _vq_lengthlist__44p7_p7_1[] = { +static const char _vq_lengthlist__44p7_p7_1[] = { 1, 5, 5, 4,10,10, 5,10,10, 5,10,10,10,10,10,10, 10,10, 5,10,10,10,10,10, 9,10,10, 6,10,10,10,10, 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, @@ -8458,7 +8475,7 @@ static const long _vq_lengthlist__44p7_p7_1[] = { static const static_codebook _44p7_p7_1 = { 5, 243, - (long *)_vq_lengthlist__44p7_p7_1, + (char *)_vq_lengthlist__44p7_p7_1, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44p7_p7_1, 0 @@ -8492,14 +8509,14 @@ static const long _vq_quantlist__44p7_p7_2[] = { 24, }; -static const long _vq_lengthlist__44p7_p7_2[] = { +static const char _vq_lengthlist__44p7_p7_2[] = { 1, 3, 2, 4, 5, 7, 7, 8, 8, 9, 9,10,10,11,11,12, 12,13,13,14,14,15,15,15,15, }; static const static_codebook _44p7_p7_2 = { 1, 25, - (long *)_vq_lengthlist__44p7_p7_2, + (char *)_vq_lengthlist__44p7_p7_2, 1, -518864896, 1620639744, 5, 0, (long *)_vq_quantlist__44p7_p7_2, 0 @@ -8533,20 +8550,20 @@ static const long _vq_quantlist__44p7_p7_3[] = { 24, }; -static const long _vq_lengthlist__44p7_p7_3[] = { +static const char _vq_lengthlist__44p7_p7_3[] = { 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44p7_p7_3 = { 1, 25, - (long *)_vq_lengthlist__44p7_p7_3, + (char *)_vq_lengthlist__44p7_p7_3, 1, -529006592, 1611661312, 5, 0, (long *)_vq_quantlist__44p7_p7_3, 0 }; -static const long _huff_lengthlist__44p7_short[] = { +static const char _huff_lengthlist__44p7_short[] = { 3, 9,14,16,17,19,22,22, 5, 4, 6, 9,11,13,17,20, 9, 5, 5, 6, 9,11,15,19,11, 7, 5, 5, 7, 9,13,17, 14, 9, 7, 6, 6, 7,11,14,16,11, 9, 7, 6, 4, 4, 8, @@ -8555,7 +8572,7 @@ static const long _huff_lengthlist__44p7_short[] = { static const static_codebook _huff_book__44p7_short = { 2, 64, - (long *)_huff_lengthlist__44p7_short, + (char *)_huff_lengthlist__44p7_short, 0, 0, 0, 0, 0, NULL, 0 @@ -8577,7 +8594,7 @@ static const long _vq_quantlist__44p8_l0_0[] = { 12, }; -static const long _vq_lengthlist__44p8_l0_0[] = { +static const char _vq_lengthlist__44p8_l0_0[] = { 2, 4, 4, 7, 7, 8, 8,10,10,11,11,12,12, 4, 5, 5, 7, 7, 9, 9,10, 9,12,10,12,12, 4, 5, 5, 7, 7, 9, 9, 9,10,10,12,12,12, 7, 7, 7, 7, 8, 9, 8,11, 5, @@ -8593,7 +8610,7 @@ static const long _vq_lengthlist__44p8_l0_0[] = { static const static_codebook _44p8_l0_0 = { 2, 169, - (long *)_vq_lengthlist__44p8_l0_0, + (char *)_vq_lengthlist__44p8_l0_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44p8_l0_0, 0 @@ -8607,14 +8624,14 @@ static const long _vq_quantlist__44p8_l0_1[] = { 4, }; -static const long _vq_lengthlist__44p8_l0_1[] = { +static const char _vq_lengthlist__44p8_l0_1[] = { 4, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44p8_l0_1 = { 2, 25, - (long *)_vq_lengthlist__44p8_l0_1, + (char *)_vq_lengthlist__44p8_l0_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p8_l0_1, 0 @@ -8628,32 +8645,32 @@ static const long _vq_quantlist__44p8_l1_0[] = { 108, }; -static const long _vq_lengthlist__44p8_l1_0[] = { +static const char _vq_lengthlist__44p8_l1_0[] = { 1, 2, 3, 6, 7, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, }; static const static_codebook _44p8_l1_0 = { 2, 25, - (long *)_vq_lengthlist__44p8_l1_0, + (char *)_vq_lengthlist__44p8_l1_0, 1, -514516992, 1620639744, 7, 0, (long *)_vq_quantlist__44p8_l1_0, 0 }; -static const long _huff_lengthlist__44p8_lfe[] = { +static const char _huff_lengthlist__44p8_lfe[] = { 2, 3, 1, 3, }; static const static_codebook _huff_book__44p8_lfe = { 2, 4, - (long *)_huff_lengthlist__44p8_lfe, + (char *)_huff_lengthlist__44p8_lfe, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44p8_long[] = { +static const char _huff_lengthlist__44p8_long[] = { 2, 7,14,16,17,18,20,21, 7, 4, 6, 8,11,12,14,16, 13, 5, 4, 4, 8, 9,11,13,15, 8, 4, 3, 5, 7, 9,10, 17,11, 8, 4, 4, 6, 9, 9,17,11, 9, 7, 6, 5, 7, 8, @@ -8662,7 +8679,7 @@ static const long _huff_lengthlist__44p8_long[] = { static const static_codebook _huff_book__44p8_long = { 2, 64, - (long *)_huff_lengthlist__44p8_long, + (char *)_huff_lengthlist__44p8_long, 0, 0, 0, 0, 0, NULL, 0 @@ -8674,7 +8691,7 @@ static const long _vq_quantlist__44p8_p1_0[] = { 2, }; -static const long _vq_lengthlist__44p8_p1_0[] = { +static const char _vq_lengthlist__44p8_p1_0[] = { 2, 5, 5, 4, 7, 7, 4, 7, 7, 5, 7, 7, 7, 8, 9, 7, 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 6, 7, 8, 8, 9, 10, 8, 9,10, 8, 9,10,10,10,12,10,11,12, 8,10,10, @@ -8695,7 +8712,7 @@ static const long _vq_lengthlist__44p8_p1_0[] = { static const static_codebook _44p8_p1_0 = { 5, 243, - (long *)_vq_lengthlist__44p8_p1_0, + (char *)_vq_lengthlist__44p8_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p8_p1_0, 0 @@ -8709,7 +8726,7 @@ static const long _vq_quantlist__44p8_p2_0[] = { 4, }; -static const long _vq_lengthlist__44p8_p2_0[] = { +static const char _vq_lengthlist__44p8_p2_0[] = { 4, 6, 6, 9, 9, 6, 8, 8,10,10, 6, 8, 8,10,10, 8, 9,10,12,12, 8,10, 9,12,12, 6, 8, 8,10,10, 8, 8, 9,10,11, 8, 9, 9,11,11, 9,10,11,12,13,10,11,11, @@ -8910,7 +8927,7 @@ static const long _vq_lengthlist__44p8_p2_0[] = { static const static_codebook _44p8_p2_0 = { 5, 3125, - (long *)_vq_lengthlist__44p8_p2_0, + (char *)_vq_lengthlist__44p8_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p8_p2_0, 0 @@ -8922,7 +8939,7 @@ static const long _vq_quantlist__44p8_p3_0[] = { 2, }; -static const long _vq_lengthlist__44p8_p3_0[] = { +static const char _vq_lengthlist__44p8_p3_0[] = { 2, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 8, 9, 7, 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 5, 7, 8, 7, 9, 10, 8, 9, 9, 8, 9,10, 9,10,12,10,11,11, 8,10, 9, @@ -8943,7 +8960,7 @@ static const long _vq_lengthlist__44p8_p3_0[] = { static const static_codebook _44p8_p3_0 = { 5, 243, - (long *)_vq_lengthlist__44p8_p3_0, + (char *)_vq_lengthlist__44p8_p3_0, 1, -533200896, 1614282752, 2, 0, (long *)_vq_quantlist__44p8_p3_0, 0 @@ -8955,7 +8972,7 @@ static const long _vq_quantlist__44p8_p3_1[] = { 2, }; -static const long _vq_lengthlist__44p8_p3_1[] = { +static const char _vq_lengthlist__44p8_p3_1[] = { 6, 7, 7, 7, 7, 8, 7, 8, 7, 7, 7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, @@ -8976,7 +8993,7 @@ static const long _vq_lengthlist__44p8_p3_1[] = { static const static_codebook _44p8_p3_1 = { 5, 243, - (long *)_vq_lengthlist__44p8_p3_1, + (char *)_vq_lengthlist__44p8_p3_1, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p8_p3_1, 0 @@ -8988,7 +9005,7 @@ static const long _vq_quantlist__44p8_p4_0[] = { 2, }; -static const long _vq_lengthlist__44p8_p4_0[] = { +static const char _vq_lengthlist__44p8_p4_0[] = { 2, 5, 5, 4, 7, 8, 4, 8, 7, 5, 7, 8, 7, 7,10, 8, 9, 9, 5, 7, 7, 8, 9, 9, 7,10, 7, 5, 7, 8, 8, 9, 11, 8,10,10, 8, 9,10,10,10,12,11,12,12, 8,10,10, @@ -9009,7 +9026,7 @@ static const long _vq_lengthlist__44p8_p4_0[] = { static const static_codebook _44p8_p4_0 = { 5, 243, - (long *)_vq_lengthlist__44p8_p4_0, + (char *)_vq_lengthlist__44p8_p4_0, 1, -531365888, 1616117760, 2, 0, (long *)_vq_quantlist__44p8_p4_0, 0 @@ -9023,7 +9040,7 @@ static const long _vq_quantlist__44p8_p4_1[] = { 4, }; -static const long _vq_lengthlist__44p8_p4_1[] = { +static const char _vq_lengthlist__44p8_p4_1[] = { 7, 9, 9,10,10, 9,10,10,10,11, 9,10,10,11,10, 9, 10,10,11,11, 9,10,10,11,11, 9,10,10,11,11,10,10, 10,11,11,10,10,10,11,11,10,11,11,11,11,10,11,11, @@ -9224,7 +9241,7 @@ static const long _vq_lengthlist__44p8_p4_1[] = { static const static_codebook _44p8_p4_1 = { 5, 3125, - (long *)_vq_lengthlist__44p8_p4_1, + (char *)_vq_lengthlist__44p8_p4_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p8_p4_1, 0 @@ -9238,7 +9255,7 @@ static const long _vq_quantlist__44p8_p5_0[] = { 4, }; -static const long _vq_lengthlist__44p8_p5_0[] = { +static const char _vq_lengthlist__44p8_p5_0[] = { 2, 6, 6, 9, 9, 5, 7, 8,10,11, 5, 8, 7,11,10, 8, 10,11,12,13, 8,11,10,13,12, 6, 7, 8,10,11, 7, 8, 10,10,12, 8, 9, 9,12,12,10,10,12,12,14,10,12,12, @@ -9439,7 +9456,7 @@ static const long _vq_lengthlist__44p8_p5_0[] = { static const static_codebook _44p8_p5_0 = { 5, 3125, - (long *)_vq_lengthlist__44p8_p5_0, + (char *)_vq_lengthlist__44p8_p5_0, 1, -528744448, 1616642048, 3, 0, (long *)_vq_quantlist__44p8_p5_0, 0 @@ -9455,13 +9472,13 @@ static const long _vq_quantlist__44p8_p5_1[] = { 6, }; -static const long _vq_lengthlist__44p8_p5_1[] = { +static const char _vq_lengthlist__44p8_p5_1[] = { 2, 3, 3, 3, 3, 3, 3, }; static const static_codebook _44p8_p5_1 = { 1, 7, - (long *)_vq_lengthlist__44p8_p5_1, + (char *)_vq_lengthlist__44p8_p5_1, 1, -533200896, 1611661312, 3, 0, (long *)_vq_quantlist__44p8_p5_1, 0 @@ -9473,7 +9490,7 @@ static const long _vq_quantlist__44p8_p6_0[] = { 2, }; -static const long _vq_lengthlist__44p8_p6_0[] = { +static const char _vq_lengthlist__44p8_p6_0[] = { 2, 6, 6, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 7, 9, 7, 9, 9, 6, 7, 7, 8, 9, 9, 7, 9, 7, 6, 8, 8, 8, 9, 10, 8, 9, 9, 8, 9,10, 9, 9,10,10,10,10, 8, 9, 9, @@ -9494,7 +9511,7 @@ static const long _vq_lengthlist__44p8_p6_0[] = { static const static_codebook _44p8_p6_0 = { 5, 243, - (long *)_vq_lengthlist__44p8_p6_0, + (char *)_vq_lengthlist__44p8_p6_0, 1, -527106048, 1620377600, 2, 0, (long *)_vq_quantlist__44p8_p6_0, 0 @@ -9506,7 +9523,7 @@ static const long _vq_quantlist__44p8_p6_1[] = { 2, }; -static const long _vq_lengthlist__44p8_p6_1[] = { +static const char _vq_lengthlist__44p8_p6_1[] = { 4, 7, 7, 7, 7, 8, 7, 8, 7, 7, 7, 8, 7, 8, 8, 8, 8, 8, 7, 8, 7, 8, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 8, 8, @@ -9527,7 +9544,7 @@ static const long _vq_lengthlist__44p8_p6_1[] = { static const static_codebook _44p8_p6_1 = { 5, 243, - (long *)_vq_lengthlist__44p8_p6_1, + (char *)_vq_lengthlist__44p8_p6_1, 1, -530841600, 1616642048, 2, 0, (long *)_vq_quantlist__44p8_p6_1, 0 @@ -9539,7 +9556,7 @@ static const long _vq_quantlist__44p8_p7_0[] = { 2, }; -static const long _vq_lengthlist__44p8_p7_0[] = { +static const char _vq_lengthlist__44p8_p7_0[] = { 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -9560,7 +9577,7 @@ static const long _vq_lengthlist__44p8_p7_0[] = { static const static_codebook _44p8_p7_0 = { 5, 243, - (long *)_vq_lengthlist__44p8_p7_0, + (char *)_vq_lengthlist__44p8_p7_0, 1, -512202240, 1635281408, 2, 0, (long *)_vq_quantlist__44p8_p7_0, 0 @@ -9574,7 +9591,7 @@ static const long _vq_quantlist__44p8_p7_1[] = { 4, }; -static const long _vq_lengthlist__44p8_p7_1[] = { +static const char _vq_lengthlist__44p8_p7_1[] = { 1, 7, 7,12,12, 5,11,12,12,12, 5,12,11,12,12,12, 12,12,12,12,12,13,13,13,13, 7,11,11,13,13,13,12, 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, @@ -9775,7 +9792,7 @@ static const long _vq_lengthlist__44p8_p7_1[] = { static const static_codebook _44p8_p7_1 = { 5, 3125, - (long *)_vq_lengthlist__44p8_p7_1, + (char *)_vq_lengthlist__44p8_p7_1, 1, -514619392, 1630767104, 3, 0, (long *)_vq_quantlist__44p8_p7_1, 0 @@ -9809,14 +9826,14 @@ static const long _vq_quantlist__44p8_p7_2[] = { 24, }; -static const long _vq_lengthlist__44p8_p7_2[] = { +static const char _vq_lengthlist__44p8_p7_2[] = { 1, 3, 2, 4, 5, 7, 7, 8, 8, 9, 9,10,10,11,11,12, 12,13,13,14,14,15,15,15,15, }; static const static_codebook _44p8_p7_2 = { 1, 25, - (long *)_vq_lengthlist__44p8_p7_2, + (char *)_vq_lengthlist__44p8_p7_2, 1, -518864896, 1620639744, 5, 0, (long *)_vq_quantlist__44p8_p7_2, 0 @@ -9850,20 +9867,20 @@ static const long _vq_quantlist__44p8_p7_3[] = { 24, }; -static const long _vq_lengthlist__44p8_p7_3[] = { +static const char _vq_lengthlist__44p8_p7_3[] = { 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44p8_p7_3 = { 1, 25, - (long *)_vq_lengthlist__44p8_p7_3, + (char *)_vq_lengthlist__44p8_p7_3, 1, -529006592, 1611661312, 5, 0, (long *)_vq_quantlist__44p8_p7_3, 0 }; -static const long _huff_lengthlist__44p8_short[] = { +static const char _huff_lengthlist__44p8_short[] = { 3, 9,15,17,20,21,22,23, 5, 5, 7, 9,11,13,17,20, 9, 5, 5, 6, 8,10,15,18,11, 7, 5, 4, 6, 9,13,17, 14, 9, 7, 5, 6, 7,10,14,17,10, 8, 6, 6, 4, 5, 8, @@ -9872,7 +9889,7 @@ static const long _huff_lengthlist__44p8_short[] = { static const static_codebook _huff_book__44p8_short = { 2, 64, - (long *)_huff_lengthlist__44p8_short, + (char *)_huff_lengthlist__44p8_short, 0, 0, 0, 0, 0, NULL, 0 @@ -9894,7 +9911,7 @@ static const long _vq_quantlist__44p9_l0_0[] = { 12, }; -static const long _vq_lengthlist__44p9_l0_0[] = { +static const char _vq_lengthlist__44p9_l0_0[] = { 2, 5, 5, 7, 6, 8, 8, 9, 9,10,10,11,11, 4, 5, 5, 6, 7, 8, 8, 9, 9,10,10,11,10, 4, 5, 5, 7, 6, 8, 8, 9, 9,10,10,10,10, 6, 6, 7, 6, 7, 8, 8, 9, 9, @@ -9910,7 +9927,7 @@ static const long _vq_lengthlist__44p9_l0_0[] = { static const static_codebook _44p9_l0_0 = { 2, 169, - (long *)_vq_lengthlist__44p9_l0_0, + (char *)_vq_lengthlist__44p9_l0_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44p9_l0_0, 0 @@ -9924,14 +9941,14 @@ static const long _vq_quantlist__44p9_l0_1[] = { 4, }; -static const long _vq_lengthlist__44p9_l0_1[] = { +static const char _vq_lengthlist__44p9_l0_1[] = { 4, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44p9_l0_1 = { 2, 25, - (long *)_vq_lengthlist__44p9_l0_1, + (char *)_vq_lengthlist__44p9_l0_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p9_l0_1, 0 @@ -9945,38 +9962,38 @@ static const long _vq_quantlist__44p9_l1_0[] = { 4, }; -static const long _vq_lengthlist__44p9_l1_0[] = { +static const char _vq_lengthlist__44p9_l1_0[] = { 1, 2, 3, 5, 9, 9, 4, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,10,10,10,10, }; static const static_codebook _44p9_l1_0 = { 2, 25, - (long *)_vq_lengthlist__44p9_l1_0, + (char *)_vq_lengthlist__44p9_l1_0, 1, -514619392, 1630767104, 3, 0, (long *)_vq_quantlist__44p9_l1_0, 0 }; -static const long _huff_lengthlist__44p9_lfe[] = { +static const char _huff_lengthlist__44p9_lfe[] = { 1, 1, }; static const static_codebook _huff_book__44p9_lfe = { 1, 2, - (long *)_huff_lengthlist__44p9_lfe, + (char *)_huff_lengthlist__44p9_lfe, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44p9_long[] = { +static const char _huff_lengthlist__44p9_long[] = { 3, 3, 3, 3, 3, 3, 3, 3, }; static const static_codebook _huff_book__44p9_long = { 1, 8, - (long *)_huff_lengthlist__44p9_long, + (char *)_huff_lengthlist__44p9_long, 0, 0, 0, 0, 0, NULL, 0 @@ -9988,7 +10005,7 @@ static const long _vq_quantlist__44p9_p1_0[] = { 2, }; -static const long _vq_lengthlist__44p9_p1_0[] = { +static const char _vq_lengthlist__44p9_p1_0[] = { 1, 5, 5, 4, 8, 8, 4, 8, 8, 5, 7, 8, 8, 9,10, 8, 10,10, 5, 8, 7, 8,10,10, 8,10, 9, 7, 9, 9, 9,11, 11, 9,11,11, 9,11,11,11,12,13,11,13,13, 9,11,11, @@ -10009,7 +10026,7 @@ static const long _vq_lengthlist__44p9_p1_0[] = { static const static_codebook _44p9_p1_0 = { 5, 243, - (long *)_vq_lengthlist__44p9_p1_0, + (char *)_vq_lengthlist__44p9_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p9_p1_0, 0 @@ -10023,7 +10040,7 @@ static const long _vq_quantlist__44p9_p2_0[] = { 4, }; -static const long _vq_lengthlist__44p9_p2_0[] = { +static const char _vq_lengthlist__44p9_p2_0[] = { 4, 6, 6, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 6, 8, 8,11,11, 6, 8, 8,11,11, 6, 7, 7, 9, 9, 7, 8, 9,10,11, 7, 9, 9,11,10, 8, 9,10,12,12, 8,10,10, @@ -10224,7 +10241,7 @@ static const long _vq_lengthlist__44p9_p2_0[] = { static const static_codebook _44p9_p2_0 = { 5, 3125, - (long *)_vq_lengthlist__44p9_p2_0, + (char *)_vq_lengthlist__44p9_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p9_p2_0, 0 @@ -10236,7 +10253,7 @@ static const long _vq_quantlist__44p9_p3_0[] = { 2, }; -static const long _vq_lengthlist__44p9_p3_0[] = { +static const char _vq_lengthlist__44p9_p3_0[] = { 2, 5, 4, 4, 7, 7, 4, 7, 6, 5, 6, 7, 7, 8, 9, 7, 9, 9, 5, 7, 6, 7, 9, 9, 7, 9, 8, 6, 8, 8, 8,10, 10, 8,10,10, 8, 9,10,10,11,12,10,12,12, 8,10,10, @@ -10257,7 +10274,7 @@ static const long _vq_lengthlist__44p9_p3_0[] = { static const static_codebook _44p9_p3_0 = { 5, 243, - (long *)_vq_lengthlist__44p9_p3_0, + (char *)_vq_lengthlist__44p9_p3_0, 1, -533200896, 1614282752, 2, 0, (long *)_vq_quantlist__44p9_p3_0, 0 @@ -10269,7 +10286,7 @@ static const long _vq_quantlist__44p9_p3_1[] = { 2, }; -static const long _vq_lengthlist__44p9_p3_1[] = { +static const char _vq_lengthlist__44p9_p3_1[] = { 4, 6, 6, 6, 7, 7, 6, 7, 7, 6, 7, 7, 7, 7, 8, 7, 7, 8, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 8, 9, 9, 8, 8, 8, @@ -10290,7 +10307,7 @@ static const long _vq_lengthlist__44p9_p3_1[] = { static const static_codebook _44p9_p3_1 = { 5, 243, - (long *)_vq_lengthlist__44p9_p3_1, + (char *)_vq_lengthlist__44p9_p3_1, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44p9_p3_1, 0 @@ -10302,7 +10319,7 @@ static const long _vq_quantlist__44p9_p4_0[] = { 2, }; -static const long _vq_lengthlist__44p9_p4_0[] = { +static const char _vq_lengthlist__44p9_p4_0[] = { 2, 5, 5, 4, 7, 7, 4, 7, 6, 5, 7, 7, 7, 8, 9, 7, 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 6, 7, 8, 8, 9, 10, 8,10,10, 8, 9,10,10,11,12,10,11,12, 8,10,10, @@ -10323,7 +10340,7 @@ static const long _vq_lengthlist__44p9_p4_0[] = { static const static_codebook _44p9_p4_0 = { 5, 243, - (long *)_vq_lengthlist__44p9_p4_0, + (char *)_vq_lengthlist__44p9_p4_0, 1, -531365888, 1616117760, 2, 0, (long *)_vq_quantlist__44p9_p4_0, 0 @@ -10337,7 +10354,7 @@ static const long _vq_quantlist__44p9_p4_1[] = { 4, }; -static const long _vq_lengthlist__44p9_p4_1[] = { +static const char _vq_lengthlist__44p9_p4_1[] = { 6, 8, 8,10, 9, 8, 9, 9,10,10, 8, 9, 9,10,10, 8, 10,10,10,10, 8,10,10,10,10, 9, 9, 9,10,10, 9,10, 10,10,11, 9,10,10,11,11,10,10,10,11,11,10,10,10, @@ -10538,7 +10555,7 @@ static const long _vq_lengthlist__44p9_p4_1[] = { static const static_codebook _44p9_p4_1 = { 5, 3125, - (long *)_vq_lengthlist__44p9_p4_1, + (char *)_vq_lengthlist__44p9_p4_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44p9_p4_1, 0 @@ -10552,7 +10569,7 @@ static const long _vq_quantlist__44p9_p5_0[] = { 4, }; -static const long _vq_lengthlist__44p9_p5_0[] = { +static const char _vq_lengthlist__44p9_p5_0[] = { 4, 6, 6, 9, 9, 6, 7, 8,10,11, 6, 8, 7,10,10, 8, 10,10,12,12, 8,10,10,12,12, 6, 7, 8,10,10, 7, 8, 9,10,11, 8, 9, 9,11,11,10,10,11,12,13,10,11,11, @@ -10753,7 +10770,7 @@ static const long _vq_lengthlist__44p9_p5_0[] = { static const static_codebook _44p9_p5_0 = { 5, 3125, - (long *)_vq_lengthlist__44p9_p5_0, + (char *)_vq_lengthlist__44p9_p5_0, 1, -528744448, 1616642048, 3, 0, (long *)_vq_quantlist__44p9_p5_0, 0 @@ -10769,13 +10786,13 @@ static const long _vq_quantlist__44p9_p5_1[] = { 6, }; -static const long _vq_lengthlist__44p9_p5_1[] = { +static const char _vq_lengthlist__44p9_p5_1[] = { 2, 3, 3, 3, 3, 3, 3, }; static const static_codebook _44p9_p5_1 = { 1, 7, - (long *)_vq_lengthlist__44p9_p5_1, + (char *)_vq_lengthlist__44p9_p5_1, 1, -533200896, 1611661312, 3, 0, (long *)_vq_quantlist__44p9_p5_1, 0 @@ -10787,7 +10804,7 @@ static const long _vq_quantlist__44p9_p6_0[] = { 2, }; -static const long _vq_lengthlist__44p9_p6_0[] = { +static const char _vq_lengthlist__44p9_p6_0[] = { 2, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 8, 9, 7, 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 8, 5, 7, 8, 8, 9, 10, 8, 9,10, 8, 9,10,10,10,12,10,11,11, 8,10,10, @@ -10808,7 +10825,7 @@ static const long _vq_lengthlist__44p9_p6_0[] = { static const static_codebook _44p9_p6_0 = { 5, 243, - (long *)_vq_lengthlist__44p9_p6_0, + (char *)_vq_lengthlist__44p9_p6_0, 1, -527106048, 1620377600, 2, 0, (long *)_vq_quantlist__44p9_p6_0, 0 @@ -10820,7 +10837,7 @@ static const long _vq_quantlist__44p9_p6_1[] = { 2, }; -static const long _vq_lengthlist__44p9_p6_1[] = { +static const char _vq_lengthlist__44p9_p6_1[] = { 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 8, 8, 7, 8, 8, 7, 8, 7, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 8, 8, 8, @@ -10841,7 +10858,7 @@ static const long _vq_lengthlist__44p9_p6_1[] = { static const static_codebook _44p9_p6_1 = { 5, 243, - (long *)_vq_lengthlist__44p9_p6_1, + (char *)_vq_lengthlist__44p9_p6_1, 1, -530841600, 1616642048, 2, 0, (long *)_vq_quantlist__44p9_p6_1, 0 @@ -10855,7 +10872,7 @@ static const long _vq_quantlist__44p9_p7_0[] = { 4, }; -static const long _vq_lengthlist__44p9_p7_0[] = { +static const char _vq_lengthlist__44p9_p7_0[] = { 1,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, @@ -11056,7 +11073,7 @@ static const long _vq_lengthlist__44p9_p7_0[] = { static const static_codebook _44p9_p7_0 = { 5, 3125, - (long *)_vq_lengthlist__44p9_p7_0, + (char *)_vq_lengthlist__44p9_p7_0, 1, -510105088, 1635281408, 3, 0, (long *)_vq_quantlist__44p9_p7_0, 0 @@ -11070,7 +11087,7 @@ static const long _vq_quantlist__44p9_p7_1[] = { 4, }; -static const long _vq_lengthlist__44p9_p7_1[] = { +static const char _vq_lengthlist__44p9_p7_1[] = { 1, 4, 4,16,16, 4, 9,11,15,16, 4,12, 8,16,16,12, 16,16,16,16,13,16,16,16,16, 5, 8,10,16,16, 9, 9, 14,15,16,12,14,14,16,16,16,16,16,16,16,16,16,16, @@ -11271,7 +11288,7 @@ static const long _vq_lengthlist__44p9_p7_1[] = { static const static_codebook _44p9_p7_1 = { 5, 3125, - (long *)_vq_lengthlist__44p9_p7_1, + (char *)_vq_lengthlist__44p9_p7_1, 1, -514619392, 1630767104, 3, 0, (long *)_vq_quantlist__44p9_p7_1, 0 @@ -11305,14 +11322,14 @@ static const long _vq_quantlist__44p9_p7_2[] = { 24, }; -static const long _vq_lengthlist__44p9_p7_2[] = { +static const char _vq_lengthlist__44p9_p7_2[] = { 1, 3, 2, 5, 4, 7, 7, 8, 8, 9,10,10,10,11,11,11, 12,12,12,13,13,13,13,13,13, }; static const static_codebook _44p9_p7_2 = { 1, 25, - (long *)_vq_lengthlist__44p9_p7_2, + (char *)_vq_lengthlist__44p9_p7_2, 1, -518864896, 1620639744, 5, 0, (long *)_vq_quantlist__44p9_p7_2, 0 @@ -11346,26 +11363,26 @@ static const long _vq_quantlist__44p9_p7_3[] = { 24, }; -static const long _vq_lengthlist__44p9_p7_3[] = { +static const char _vq_lengthlist__44p9_p7_3[] = { 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44p9_p7_3 = { 1, 25, - (long *)_vq_lengthlist__44p9_p7_3, + (char *)_vq_lengthlist__44p9_p7_3, 1, -529006592, 1611661312, 5, 0, (long *)_vq_quantlist__44p9_p7_3, 0 }; -static const long _huff_lengthlist__44p9_short[] = { +static const char _huff_lengthlist__44p9_short[] = { 3, 3, 3, 3, 3, 3, 3, 3, }; static const static_codebook _huff_book__44p9_short = { 1, 8, - (long *)_huff_lengthlist__44p9_short, + (char *)_huff_lengthlist__44p9_short, 0, 0, 0, 0, 0, NULL, 0 @@ -11387,7 +11404,7 @@ static const long _vq_quantlist__44pn1_l0_0[] = { 12, }; -static const long _vq_lengthlist__44pn1_l0_0[] = { +static const char _vq_lengthlist__44pn1_l0_0[] = { 1, 3, 3, 8, 8,10,10,10,10,10,10,10,10, 5, 7, 5, 9, 8,10,10,10,10,11,10,11,10, 5, 5, 7, 8, 9,10, 10,11,10,10,11,10,11,10,10,10,11,11,11,11,11,11, @@ -11403,7 +11420,7 @@ static const long _vq_lengthlist__44pn1_l0_0[] = { static const static_codebook _44pn1_l0_0 = { 2, 169, - (long *)_vq_lengthlist__44pn1_l0_0, + (char *)_vq_lengthlist__44pn1_l0_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44pn1_l0_0, 0 @@ -11417,14 +11434,14 @@ static const long _vq_quantlist__44pn1_l0_1[] = { 4, }; -static const long _vq_lengthlist__44pn1_l0_1[] = { +static const char _vq_lengthlist__44pn1_l0_1[] = { 1, 4, 4, 7, 7, 4, 5, 6, 7, 7, 4, 6, 5, 7, 7, 7, 6, 7, 6, 7, 7, 7, 6, 7, 6, }; static const static_codebook _44pn1_l0_1 = { 2, 25, - (long *)_vq_lengthlist__44pn1_l0_1, + (char *)_vq_lengthlist__44pn1_l0_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44pn1_l0_1, 0 @@ -11436,31 +11453,31 @@ static const long _vq_quantlist__44pn1_l1_0[] = { 2, }; -static const long _vq_lengthlist__44pn1_l1_0[] = { +static const char _vq_lengthlist__44pn1_l1_0[] = { 1, 4, 4, 4, 4, 4, 4, 4, 4, }; static const static_codebook _44pn1_l1_0 = { 2, 9, - (long *)_vq_lengthlist__44pn1_l1_0, + (char *)_vq_lengthlist__44pn1_l1_0, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44pn1_l1_0, 0 }; -static const long _huff_lengthlist__44pn1_lfe[] = { +static const char _huff_lengthlist__44pn1_lfe[] = { 1, 3, 2, 3, }; static const static_codebook _huff_book__44pn1_lfe = { 2, 4, - (long *)_huff_lengthlist__44pn1_lfe, + (char *)_huff_lengthlist__44pn1_lfe, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44pn1_long[] = { +static const char _huff_lengthlist__44pn1_long[] = { 2, 3, 6, 7, 9,13,17, 3, 2, 5, 7, 9,13,17, 6, 5, 5, 6, 9,12,16, 7, 7, 6, 6, 7,10,13,10,10, 9, 7, 6,10,13,13,13,12,10,10,11,15,17,17,17,14,14,15, @@ -11469,7 +11486,7 @@ static const long _huff_lengthlist__44pn1_long[] = { static const static_codebook _huff_book__44pn1_long = { 2, 49, - (long *)_huff_lengthlist__44pn1_long, + (char *)_huff_lengthlist__44pn1_long, 0, 0, 0, 0, 0, NULL, 0 @@ -11481,7 +11498,7 @@ static const long _vq_quantlist__44pn1_p1_0[] = { 2, }; -static const long _vq_lengthlist__44pn1_p1_0[] = { +static const char _vq_lengthlist__44pn1_p1_0[] = { 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -11502,7 +11519,7 @@ static const long _vq_lengthlist__44pn1_p1_0[] = { static const static_codebook _44pn1_p1_0 = { 5, 243, - (long *)_vq_lengthlist__44pn1_p1_0, + (char *)_vq_lengthlist__44pn1_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44pn1_p1_0, 0 @@ -11514,7 +11531,7 @@ static const long _vq_quantlist__44pn1_p2_0[] = { 2, }; -static const long _vq_lengthlist__44pn1_p2_0[] = { +static const char _vq_lengthlist__44pn1_p2_0[] = { 1, 5, 5, 0, 7, 7, 0, 8, 8, 0, 9, 9, 0,12,12, 0, 8, 8, 0, 9, 9, 0,13,13, 0, 8, 8, 0, 6, 6, 0,11, 11, 0,12,12, 0,12,12, 0,14,14, 0,11,12, 0,12,12, @@ -11535,7 +11552,7 @@ static const long _vq_lengthlist__44pn1_p2_0[] = { static const static_codebook _44pn1_p2_0 = { 5, 243, - (long *)_vq_lengthlist__44pn1_p2_0, + (char *)_vq_lengthlist__44pn1_p2_0, 1, -533200896, 1614282752, 2, 0, (long *)_vq_quantlist__44pn1_p2_0, 0 @@ -11547,7 +11564,7 @@ static const long _vq_quantlist__44pn1_p2_1[] = { 2, }; -static const long _vq_lengthlist__44pn1_p2_1[] = { +static const char _vq_lengthlist__44pn1_p2_1[] = { 1, 3, 3, 0, 9, 9, 0, 9, 9, 0,10,10, 0, 9, 9, 0, 10,10, 0,10,10, 0,10,10, 0,10,10, 0, 7, 7, 0, 7, 7, 0, 6, 6, 0, 8, 8, 0, 7, 7, 0, 8, 8, 0, 8, 8, @@ -11568,7 +11585,7 @@ static const long _vq_lengthlist__44pn1_p2_1[] = { static const static_codebook _44pn1_p2_1 = { 5, 243, - (long *)_vq_lengthlist__44pn1_p2_1, + (char *)_vq_lengthlist__44pn1_p2_1, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44pn1_p2_1, 0 @@ -11580,7 +11597,7 @@ static const long _vq_quantlist__44pn1_p3_0[] = { 2, }; -static const long _vq_lengthlist__44pn1_p3_0[] = { +static const char _vq_lengthlist__44pn1_p3_0[] = { 1, 6, 6, 6, 8, 8, 6, 8, 8, 7, 9, 9,10,11,11, 8, 8, 8, 7, 9, 9,11,12,12, 9, 9, 9, 6, 7, 7,10,11, 11,10,11,11,10,11,11,13,13,13,12,12,12,10,12,11, @@ -11601,7 +11618,7 @@ static const long _vq_lengthlist__44pn1_p3_0[] = { static const static_codebook _44pn1_p3_0 = { 5, 243, - (long *)_vq_lengthlist__44pn1_p3_0, + (char *)_vq_lengthlist__44pn1_p3_0, 1, -531365888, 1616117760, 2, 0, (long *)_vq_quantlist__44pn1_p3_0, 0 @@ -11615,7 +11632,7 @@ static const long _vq_quantlist__44pn1_p3_1[] = { 4, }; -static const long _vq_lengthlist__44pn1_p3_1[] = { +static const char _vq_lengthlist__44pn1_p3_1[] = { 2, 3, 4, 9, 9,10,12,12,12,11,10,12,12,13,12,11, 13,12,11,11,11,12,12,12,11,11,13,13,13,13,11,12, 12,14,14,12,13,13,13,13,11,13,13,13,13,11,13,13, @@ -11816,7 +11833,7 @@ static const long _vq_lengthlist__44pn1_p3_1[] = { static const static_codebook _44pn1_p3_1 = { 5, 3125, - (long *)_vq_lengthlist__44pn1_p3_1, + (char *)_vq_lengthlist__44pn1_p3_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44pn1_p3_1, 0 @@ -11830,7 +11847,7 @@ static const long _vq_quantlist__44pn1_p4_0[] = { 4, }; -static const long _vq_lengthlist__44pn1_p4_0[] = { +static const char _vq_lengthlist__44pn1_p4_0[] = { 1, 7, 7,14,14, 6, 8, 8,15,16, 7, 8, 8,16,15, 0, 14,14,17,17, 0,14,14,16,16, 7, 9, 9,16,16,10,11, 11,17,18, 9, 8, 8,16,16, 0,14,14,19,19, 0,14,14, @@ -12031,7 +12048,7 @@ static const long _vq_lengthlist__44pn1_p4_0[] = { static const static_codebook _44pn1_p4_0 = { 5, 3125, - (long *)_vq_lengthlist__44pn1_p4_0, + (char *)_vq_lengthlist__44pn1_p4_0, 1, -528744448, 1616642048, 3, 0, (long *)_vq_quantlist__44pn1_p4_0, 0 @@ -12047,13 +12064,13 @@ static const long _vq_quantlist__44pn1_p4_1[] = { 6, }; -static const long _vq_lengthlist__44pn1_p4_1[] = { +static const char _vq_lengthlist__44pn1_p4_1[] = { 2, 3, 3, 3, 3, 3, 3, }; static const static_codebook _44pn1_p4_1 = { 1, 7, - (long *)_vq_lengthlist__44pn1_p4_1, + (char *)_vq_lengthlist__44pn1_p4_1, 1, -533200896, 1611661312, 3, 0, (long *)_vq_quantlist__44pn1_p4_1, 0 @@ -12065,7 +12082,7 @@ static const long _vq_quantlist__44pn1_p5_0[] = { 2, }; -static const long _vq_lengthlist__44pn1_p5_0[] = { +static const char _vq_lengthlist__44pn1_p5_0[] = { 1, 7, 7, 6, 8, 8, 7, 8, 8, 7, 9, 9,11,11,11, 9, 8, 8, 7, 9, 9,11,12,11, 9, 9, 9, 6, 7, 7,10,11, 11,10,10,10,10,11,11,15,14,14,12,12,12,11,11,11, @@ -12086,7 +12103,7 @@ static const long _vq_lengthlist__44pn1_p5_0[] = { static const static_codebook _44pn1_p5_0 = { 5, 243, - (long *)_vq_lengthlist__44pn1_p5_0, + (char *)_vq_lengthlist__44pn1_p5_0, 1, -527106048, 1620377600, 2, 0, (long *)_vq_quantlist__44pn1_p5_0, 0 @@ -12098,7 +12115,7 @@ static const long _vq_quantlist__44pn1_p5_1[] = { 2, }; -static const long _vq_lengthlist__44pn1_p5_1[] = { +static const char _vq_lengthlist__44pn1_p5_1[] = { 2, 6, 7, 6, 8, 8, 7, 7, 8, 7, 8, 8, 9, 9, 9, 8, 7, 7, 8, 8, 8, 9, 9, 9, 9, 8, 8, 6, 6, 6, 9, 7, 7, 9, 7, 7, 9, 8, 8,10, 8, 8,10, 8, 8,10, 8, 8, @@ -12119,7 +12136,7 @@ static const long _vq_lengthlist__44pn1_p5_1[] = { static const static_codebook _44pn1_p5_1 = { 5, 243, - (long *)_vq_lengthlist__44pn1_p5_1, + (char *)_vq_lengthlist__44pn1_p5_1, 1, -530841600, 1616642048, 2, 0, (long *)_vq_quantlist__44pn1_p5_1, 0 @@ -12131,7 +12148,7 @@ static const long _vq_quantlist__44pn1_p6_0[] = { 2, }; -static const long _vq_lengthlist__44pn1_p6_0[] = { +static const char _vq_lengthlist__44pn1_p6_0[] = { 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -12152,7 +12169,7 @@ static const long _vq_lengthlist__44pn1_p6_0[] = { static const static_codebook _44pn1_p6_0 = { 5, 243, - (long *)_vq_lengthlist__44pn1_p6_0, + (char *)_vq_lengthlist__44pn1_p6_0, 1, -516716544, 1630767104, 2, 0, (long *)_vq_quantlist__44pn1_p6_0, 0 @@ -12186,14 +12203,14 @@ static const long _vq_quantlist__44pn1_p6_1[] = { 24, }; -static const long _vq_lengthlist__44pn1_p6_1[] = { +static const char _vq_lengthlist__44pn1_p6_1[] = { 1, 3, 2, 5, 4, 7, 7, 8, 8, 9, 9,10,10,11,11,12, 12,13,13,14,14,15,15,15,15, }; static const static_codebook _44pn1_p6_1 = { 1, 25, - (long *)_vq_lengthlist__44pn1_p6_1, + (char *)_vq_lengthlist__44pn1_p6_1, 1, -518864896, 1620639744, 5, 0, (long *)_vq_quantlist__44pn1_p6_1, 0 @@ -12227,20 +12244,20 @@ static const long _vq_quantlist__44pn1_p6_2[] = { 24, }; -static const long _vq_lengthlist__44pn1_p6_2[] = { +static const char _vq_lengthlist__44pn1_p6_2[] = { 3, 5, 4, 5, 4, 5, 4, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44pn1_p6_2 = { 1, 25, - (long *)_vq_lengthlist__44pn1_p6_2, + (char *)_vq_lengthlist__44pn1_p6_2, 1, -529006592, 1611661312, 5, 0, (long *)_vq_quantlist__44pn1_p6_2, 0 }; -static const long _huff_lengthlist__44pn1_short[] = { +static const char _huff_lengthlist__44pn1_short[] = { 4, 3, 7, 9,12,16,16, 3, 2, 5, 7,11,14,15, 7, 4, 5, 6, 9,12,15, 8, 5, 5, 5, 8,10,14, 9, 7, 6, 6, 8,10,12,12,10,10, 7, 6, 8,10,15,12,10, 6, 4, 7, @@ -12249,7 +12266,7 @@ static const long _huff_lengthlist__44pn1_short[] = { static const static_codebook _huff_book__44pn1_short = { 2, 49, - (long *)_huff_lengthlist__44pn1_short, + (char *)_huff_lengthlist__44pn1_short, 0, 0, 0, 0, 0, NULL, 0 diff --git a/drivers/vorbis/books/coupled/res_books_stereo.h b/drivers/vorbis/books/coupled/res_books_stereo.h index 5f26215e9f..9a9049f6ed 100644 --- a/drivers/vorbis/books/coupled/res_books_stereo.h +++ b/drivers/vorbis/books/coupled/res_books_stereo.h @@ -11,7 +11,7 @@ ******************************************************************** function: static codebooks autogenerated by huff/huffbuld - last modified: $Id: res_books_stereo.h 17025 2010-03-25 04:56:56Z xiphmont $ + last modified: $Id: res_books_stereo.h 19057 2014-01-22 12:32:31Z xiphmont $ ********************************************************************/ @@ -23,7 +23,7 @@ static const long _vq_quantlist__16c0_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__16c0_s_p1_0[] = { +static const char _vq_lengthlist__16c0_s_p1_0[] = { 1, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -439,7 +439,7 @@ static const long _vq_lengthlist__16c0_s_p1_0[] = { static const static_codebook _16c0_s_p1_0 = { 8, 6561, - (long *)_vq_lengthlist__16c0_s_p1_0, + (char *)_vq_lengthlist__16c0_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__16c0_s_p1_0, 0 @@ -453,7 +453,7 @@ static const long _vq_quantlist__16c0_s_p3_0[] = { 4, }; -static const long _vq_lengthlist__16c0_s_p3_0[] = { +static const char _vq_lengthlist__16c0_s_p3_0[] = { 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -498,7 +498,7 @@ static const long _vq_lengthlist__16c0_s_p3_0[] = { static const static_codebook _16c0_s_p3_0 = { 4, 625, - (long *)_vq_lengthlist__16c0_s_p3_0, + (char *)_vq_lengthlist__16c0_s_p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__16c0_s_p3_0, 0 @@ -516,7 +516,7 @@ static const long _vq_quantlist__16c0_s_p4_0[] = { 8, }; -static const long _vq_lengthlist__16c0_s_p4_0[] = { +static const char _vq_lengthlist__16c0_s_p4_0[] = { 1, 3, 2, 7, 8, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, @@ -527,7 +527,7 @@ static const long _vq_lengthlist__16c0_s_p4_0[] = { static const static_codebook _16c0_s_p4_0 = { 2, 81, - (long *)_vq_lengthlist__16c0_s_p4_0, + (char *)_vq_lengthlist__16c0_s_p4_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__16c0_s_p4_0, 0 @@ -545,7 +545,7 @@ static const long _vq_quantlist__16c0_s_p5_0[] = { 8, }; -static const long _vq_lengthlist__16c0_s_p5_0[] = { +static const char _vq_lengthlist__16c0_s_p5_0[] = { 1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7, 8, 8, 0, 0, 0, 7, 7, 7, 7, 8, 8, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0, 0, 0, 7, 7, 8, 8, 9, 9, 0, 0, 0, @@ -556,7 +556,7 @@ static const long _vq_lengthlist__16c0_s_p5_0[] = { static const static_codebook _16c0_s_p5_0 = { 2, 81, - (long *)_vq_lengthlist__16c0_s_p5_0, + (char *)_vq_lengthlist__16c0_s_p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__16c0_s_p5_0, 0 @@ -582,7 +582,7 @@ static const long _vq_quantlist__16c0_s_p6_0[] = { 16, }; -static const long _vq_lengthlist__16c0_s_p6_0[] = { +static const char _vq_lengthlist__16c0_s_p6_0[] = { 1, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11, 11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,11, 11,11, 0, 0, 0, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11, @@ -606,7 +606,7 @@ static const long _vq_lengthlist__16c0_s_p6_0[] = { static const static_codebook _16c0_s_p6_0 = { 2, 289, - (long *)_vq_lengthlist__16c0_s_p6_0, + (char *)_vq_lengthlist__16c0_s_p6_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__16c0_s_p6_0, 0 @@ -618,7 +618,7 @@ static const long _vq_quantlist__16c0_s_p7_0[] = { 2, }; -static const long _vq_lengthlist__16c0_s_p7_0[] = { +static const char _vq_lengthlist__16c0_s_p7_0[] = { 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,11,10,10,11, 11,10, 4, 7, 7,10,10,10,11,10,10, 6,10,10,11,11, 11,11,11,10, 6, 9, 9,11,12,12,11, 9, 9, 6, 9,10, @@ -629,7 +629,7 @@ static const long _vq_lengthlist__16c0_s_p7_0[] = { static const static_codebook _16c0_s_p7_0 = { 4, 81, - (long *)_vq_lengthlist__16c0_s_p7_0, + (char *)_vq_lengthlist__16c0_s_p7_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__16c0_s_p7_0, 0 @@ -649,7 +649,7 @@ static const long _vq_quantlist__16c0_s_p7_1[] = { 10, }; -static const long _vq_lengthlist__16c0_s_p7_1[] = { +static const char _vq_lengthlist__16c0_s_p7_1[] = { 1, 3, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 9, 9, 9,10,10,10, 6, 7, 8, 8, 8, 8, 9, 8,10,10,10, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10, 7, @@ -662,7 +662,7 @@ static const long _vq_lengthlist__16c0_s_p7_1[] = { static const static_codebook _16c0_s_p7_1 = { 2, 121, - (long *)_vq_lengthlist__16c0_s_p7_1, + (char *)_vq_lengthlist__16c0_s_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__16c0_s_p7_1, 0 @@ -684,7 +684,7 @@ static const long _vq_quantlist__16c0_s_p8_0[] = { 12, }; -static const long _vq_lengthlist__16c0_s_p8_0[] = { +static const char _vq_lengthlist__16c0_s_p8_0[] = { 1, 4, 4, 7, 7, 7, 7, 7, 6, 8, 8,10,10, 6, 5, 6, 8, 8, 8, 8, 8, 8, 8, 9,10,10, 7, 6, 6, 8, 8, 8, 8, 8, 8, 8, 8,10,10, 0, 8, 8, 8, 8, 9, 8, 9, 9, @@ -700,7 +700,7 @@ static const long _vq_lengthlist__16c0_s_p8_0[] = { static const static_codebook _16c0_s_p8_0 = { 2, 169, - (long *)_vq_lengthlist__16c0_s_p8_0, + (char *)_vq_lengthlist__16c0_s_p8_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__16c0_s_p8_0, 0 @@ -714,14 +714,14 @@ static const long _vq_quantlist__16c0_s_p8_1[] = { 4, }; -static const long _vq_lengthlist__16c0_s_p8_1[] = { +static const char _vq_lengthlist__16c0_s_p8_1[] = { 1, 4, 3, 5, 5, 7, 7, 7, 6, 6, 7, 7, 7, 5, 5, 7, 7, 7, 6, 6, 7, 7, 7, 6, 6, }; static const static_codebook _16c0_s_p8_1 = { 2, 25, - (long *)_vq_lengthlist__16c0_s_p8_1, + (char *)_vq_lengthlist__16c0_s_p8_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__16c0_s_p8_1, 0 @@ -733,7 +733,7 @@ static const long _vq_quantlist__16c0_s_p9_0[] = { 2, }; -static const long _vq_lengthlist__16c0_s_p9_0[] = { +static const char _vq_lengthlist__16c0_s_p9_0[] = { 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, @@ -744,7 +744,7 @@ static const long _vq_lengthlist__16c0_s_p9_0[] = { static const static_codebook _16c0_s_p9_0 = { 4, 81, - (long *)_vq_lengthlist__16c0_s_p9_0, + (char *)_vq_lengthlist__16c0_s_p9_0, 1, -518803456, 1628680192, 2, 0, (long *)_vq_quantlist__16c0_s_p9_0, 0 @@ -768,7 +768,7 @@ static const long _vq_quantlist__16c0_s_p9_1[] = { 14, }; -static const long _vq_lengthlist__16c0_s_p9_1[] = { +static const char _vq_lengthlist__16c0_s_p9_1[] = { 1, 5, 5, 5, 5, 9,11,11,10,10,10,10,10,10,10, 7, 6, 6, 6, 6,10,10,10,10,10,10,10,10,10,10, 7, 6, 6, 6, 6,10, 9,10,10,10,10,10,10,10,10,10, 7, 7, @@ -788,7 +788,7 @@ static const long _vq_lengthlist__16c0_s_p9_1[] = { static const static_codebook _16c0_s_p9_1 = { 2, 225, - (long *)_vq_lengthlist__16c0_s_p9_1, + (char *)_vq_lengthlist__16c0_s_p9_1, 1, -520986624, 1620377600, 4, 0, (long *)_vq_quantlist__16c0_s_p9_1, 0 @@ -818,7 +818,7 @@ static const long _vq_quantlist__16c0_s_p9_2[] = { 20, }; -static const long _vq_lengthlist__16c0_s_p9_2[] = { +static const char _vq_lengthlist__16c0_s_p9_2[] = { 1, 5, 5, 7, 8, 8, 7, 9, 9, 9,12,12,11,12,12,10, 10,11,12,12,12,11,12,12, 8, 9, 8, 7, 9,10,10,11, 11,10,11,12,10,12,10,12,12,12,11,12,11, 9, 8, 8, @@ -851,13 +851,13 @@ static const long _vq_lengthlist__16c0_s_p9_2[] = { static const static_codebook _16c0_s_p9_2 = { 2, 441, - (long *)_vq_lengthlist__16c0_s_p9_2, + (char *)_vq_lengthlist__16c0_s_p9_2, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__16c0_s_p9_2, 0 }; -static const long _huff_lengthlist__16c0_s_single[] = { +static const char _huff_lengthlist__16c0_s_single[] = { 3, 4,19, 7, 9, 7, 8,11, 9,12, 4, 1,19, 6, 7, 7, 8,10,11,13,18,18,18,18,18,18,18,18,18,18, 8, 6, 18, 8, 9, 9,11,12,14,18, 9, 6,18, 9, 7, 8, 9,11, @@ -869,13 +869,13 @@ static const long _huff_lengthlist__16c0_s_single[] = { static const static_codebook _huff_book__16c0_s_single = { 2, 100, - (long *)_huff_lengthlist__16c0_s_single, + (char *)_huff_lengthlist__16c0_s_single, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__16c1_s_long[] = { +static const char _huff_lengthlist__16c1_s_long[] = { 2, 5,20, 7,10, 7, 8,10,11,11, 4, 2,20, 5, 8, 6, 7, 9,10,10,20,20,20,20,19,19,19,19,19,19, 7, 5, 19, 6,10, 7, 9,11,13,17,11, 8,19,10, 7, 7, 8,10, @@ -887,7 +887,7 @@ static const long _huff_lengthlist__16c1_s_long[] = { static const static_codebook _huff_book__16c1_s_long = { 2, 100, - (long *)_huff_lengthlist__16c1_s_long, + (char *)_huff_lengthlist__16c1_s_long, 0, 0, 0, 0, 0, NULL, 0 @@ -899,7 +899,7 @@ static const long _vq_quantlist__16c1_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__16c1_s_p1_0[] = { +static const char _vq_lengthlist__16c1_s_p1_0[] = { 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1315,7 +1315,7 @@ static const long _vq_lengthlist__16c1_s_p1_0[] = { static const static_codebook _16c1_s_p1_0 = { 8, 6561, - (long *)_vq_lengthlist__16c1_s_p1_0, + (char *)_vq_lengthlist__16c1_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__16c1_s_p1_0, 0 @@ -1329,7 +1329,7 @@ static const long _vq_quantlist__16c1_s_p3_0[] = { 4, }; -static const long _vq_lengthlist__16c1_s_p3_0[] = { +static const char _vq_lengthlist__16c1_s_p3_0[] = { 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1374,7 +1374,7 @@ static const long _vq_lengthlist__16c1_s_p3_0[] = { static const static_codebook _16c1_s_p3_0 = { 4, 625, - (long *)_vq_lengthlist__16c1_s_p3_0, + (char *)_vq_lengthlist__16c1_s_p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__16c1_s_p3_0, 0 @@ -1392,7 +1392,7 @@ static const long _vq_quantlist__16c1_s_p4_0[] = { 8, }; -static const long _vq_lengthlist__16c1_s_p4_0[] = { +static const char _vq_lengthlist__16c1_s_p4_0[] = { 1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, @@ -1403,7 +1403,7 @@ static const long _vq_lengthlist__16c1_s_p4_0[] = { static const static_codebook _16c1_s_p4_0 = { 2, 81, - (long *)_vq_lengthlist__16c1_s_p4_0, + (char *)_vq_lengthlist__16c1_s_p4_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__16c1_s_p4_0, 0 @@ -1421,7 +1421,7 @@ static const long _vq_quantlist__16c1_s_p5_0[] = { 8, }; -static const long _vq_lengthlist__16c1_s_p5_0[] = { +static const char _vq_lengthlist__16c1_s_p5_0[] = { 1, 3, 3, 5, 5, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 8, 8, 8, 8, 9, 9, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0, @@ -1432,7 +1432,7 @@ static const long _vq_lengthlist__16c1_s_p5_0[] = { static const static_codebook _16c1_s_p5_0 = { 2, 81, - (long *)_vq_lengthlist__16c1_s_p5_0, + (char *)_vq_lengthlist__16c1_s_p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__16c1_s_p5_0, 0 @@ -1458,7 +1458,7 @@ static const long _vq_quantlist__16c1_s_p6_0[] = { 16, }; -static const long _vq_lengthlist__16c1_s_p6_0[] = { +static const char _vq_lengthlist__16c1_s_p6_0[] = { 1, 3, 3, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11,12, 12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11, 12,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11, @@ -1482,7 +1482,7 @@ static const long _vq_lengthlist__16c1_s_p6_0[] = { static const static_codebook _16c1_s_p6_0 = { 2, 289, - (long *)_vq_lengthlist__16c1_s_p6_0, + (char *)_vq_lengthlist__16c1_s_p6_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__16c1_s_p6_0, 0 @@ -1494,7 +1494,7 @@ static const long _vq_quantlist__16c1_s_p7_0[] = { 2, }; -static const long _vq_lengthlist__16c1_s_p7_0[] = { +static const char _vq_lengthlist__16c1_s_p7_0[] = { 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9,10,10, 10, 9, 4, 7, 7,10,10,10,11,10,10, 6,10,10,11,11, 11,11,10,10, 6,10, 9,11,11,11,11,10,10, 6,10,10, @@ -1505,7 +1505,7 @@ static const long _vq_lengthlist__16c1_s_p7_0[] = { static const static_codebook _16c1_s_p7_0 = { 4, 81, - (long *)_vq_lengthlist__16c1_s_p7_0, + (char *)_vq_lengthlist__16c1_s_p7_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__16c1_s_p7_0, 0 @@ -1525,7 +1525,7 @@ static const long _vq_quantlist__16c1_s_p7_1[] = { 10, }; -static const long _vq_lengthlist__16c1_s_p7_1[] = { +static const char _vq_lengthlist__16c1_s_p7_1[] = { 2, 3, 3, 5, 6, 7, 7, 7, 7, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, @@ -1538,7 +1538,7 @@ static const long _vq_lengthlist__16c1_s_p7_1[] = { static const static_codebook _16c1_s_p7_1 = { 2, 121, - (long *)_vq_lengthlist__16c1_s_p7_1, + (char *)_vq_lengthlist__16c1_s_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__16c1_s_p7_1, 0 @@ -1560,7 +1560,7 @@ static const long _vq_quantlist__16c1_s_p8_0[] = { 12, }; -static const long _vq_lengthlist__16c1_s_p8_0[] = { +static const char _vq_lengthlist__16c1_s_p8_0[] = { 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 6, 5, 5, 7, 8, 8, 9, 8, 8, 9, 9,10,11, 6, 5, 5, 8, 8, 9, 9, 8, 8, 9,10,10,11, 0, 8, 8, 8, 9, 9, 9, 9, 9, @@ -1576,7 +1576,7 @@ static const long _vq_lengthlist__16c1_s_p8_0[] = { static const static_codebook _16c1_s_p8_0 = { 2, 169, - (long *)_vq_lengthlist__16c1_s_p8_0, + (char *)_vq_lengthlist__16c1_s_p8_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__16c1_s_p8_0, 0 @@ -1590,14 +1590,14 @@ static const long _vq_quantlist__16c1_s_p8_1[] = { 4, }; -static const long _vq_lengthlist__16c1_s_p8_1[] = { +static const char _vq_lengthlist__16c1_s_p8_1[] = { 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _16c1_s_p8_1 = { 2, 25, - (long *)_vq_lengthlist__16c1_s_p8_1, + (char *)_vq_lengthlist__16c1_s_p8_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__16c1_s_p8_1, 0 @@ -1619,7 +1619,7 @@ static const long _vq_quantlist__16c1_s_p9_0[] = { 12, }; -static const long _vq_lengthlist__16c1_s_p9_0[] = { +static const char _vq_lengthlist__16c1_s_p9_0[] = { 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -1635,7 +1635,7 @@ static const long _vq_lengthlist__16c1_s_p9_0[] = { static const static_codebook _16c1_s_p9_0 = { 2, 169, - (long *)_vq_lengthlist__16c1_s_p9_0, + (char *)_vq_lengthlist__16c1_s_p9_0, 1, -513964032, 1628680192, 4, 0, (long *)_vq_quantlist__16c1_s_p9_0, 0 @@ -1659,7 +1659,7 @@ static const long _vq_quantlist__16c1_s_p9_1[] = { 14, }; -static const long _vq_lengthlist__16c1_s_p9_1[] = { +static const char _vq_lengthlist__16c1_s_p9_1[] = { 1, 4, 4, 4, 4, 8, 8,12,13,14,14,14,14,14,14, 6, 6, 6, 6, 6,10, 9,14,14,14,14,14,14,14,14, 7, 6, 5, 6, 6,10, 9,12,13,13,13,13,13,13,13,13, 7, 7, @@ -1679,7 +1679,7 @@ static const long _vq_lengthlist__16c1_s_p9_1[] = { static const static_codebook _16c1_s_p9_1 = { 2, 225, - (long *)_vq_lengthlist__16c1_s_p9_1, + (char *)_vq_lengthlist__16c1_s_p9_1, 1, -520986624, 1620377600, 4, 0, (long *)_vq_quantlist__16c1_s_p9_1, 0 @@ -1709,7 +1709,7 @@ static const long _vq_quantlist__16c1_s_p9_2[] = { 20, }; -static const long _vq_lengthlist__16c1_s_p9_2[] = { +static const char _vq_lengthlist__16c1_s_p9_2[] = { 1, 4, 4, 6, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9,10, 10,10, 9,10,10,11,12,12, 8, 8, 8, 8, 9, 9, 9, 9, 10,10,10,10,10,11,11,10,12,11,11,13,11, 7, 7, 8, @@ -1742,13 +1742,13 @@ static const long _vq_lengthlist__16c1_s_p9_2[] = { static const static_codebook _16c1_s_p9_2 = { 2, 441, - (long *)_vq_lengthlist__16c1_s_p9_2, + (char *)_vq_lengthlist__16c1_s_p9_2, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__16c1_s_p9_2, 0 }; -static const long _huff_lengthlist__16c1_s_short[] = { +static const char _huff_lengthlist__16c1_s_short[] = { 5, 6,17, 8,12, 9,10,10,12,13, 5, 2,17, 4, 9, 5, 7, 8,11,13,16,16,16,16,16,16,16,16,16,16, 6, 4, 16, 5,10, 5, 7,10,14,16,13, 9,16,11, 8, 7, 8, 9, @@ -1760,13 +1760,13 @@ static const long _huff_lengthlist__16c1_s_short[] = { static const static_codebook _huff_book__16c1_s_short = { 2, 100, - (long *)_huff_lengthlist__16c1_s_short, + (char *)_huff_lengthlist__16c1_s_short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__16c2_s_long[] = { +static const char _huff_lengthlist__16c2_s_long[] = { 4, 7, 9, 9, 9, 8, 9,10,13,16, 5, 4, 5, 6, 7, 7, 8, 9,12,16, 6, 5, 5, 5, 7, 7, 9,10,12,15, 7, 6, 5, 4, 5, 6, 8, 9,10,13, 8, 7, 7, 5, 5, 5, 7, 9, @@ -1778,7 +1778,7 @@ static const long _huff_lengthlist__16c2_s_long[] = { static const static_codebook _huff_book__16c2_s_long = { 2, 100, - (long *)_huff_lengthlist__16c2_s_long, + (char *)_huff_lengthlist__16c2_s_long, 0, 0, 0, 0, 0, NULL, 0 @@ -1790,7 +1790,7 @@ static const long _vq_quantlist__16c2_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__16c2_s_p1_0[] = { +static const char _vq_lengthlist__16c2_s_p1_0[] = { 1, 3, 3, 0, 0, 0, 0, 0, 0, 4, 5, 5, 0, 0, 0, 0, 0, 0, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1801,7 +1801,7 @@ static const long _vq_lengthlist__16c2_s_p1_0[] = { static const static_codebook _16c2_s_p1_0 = { 4, 81, - (long *)_vq_lengthlist__16c2_s_p1_0, + (char *)_vq_lengthlist__16c2_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__16c2_s_p1_0, 0 @@ -1815,7 +1815,7 @@ static const long _vq_quantlist__16c2_s_p2_0[] = { 4, }; -static const long _vq_lengthlist__16c2_s_p2_0[] = { +static const char _vq_lengthlist__16c2_s_p2_0[] = { 2, 4, 4, 7, 7, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 4, 4, 4, 8, 7, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, @@ -1860,7 +1860,7 @@ static const long _vq_lengthlist__16c2_s_p2_0[] = { static const static_codebook _16c2_s_p2_0 = { 4, 625, - (long *)_vq_lengthlist__16c2_s_p2_0, + (char *)_vq_lengthlist__16c2_s_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__16c2_s_p2_0, 0 @@ -1878,7 +1878,7 @@ static const long _vq_quantlist__16c2_s_p3_0[] = { 8, }; -static const long _vq_lengthlist__16c2_s_p3_0[] = { +static const char _vq_lengthlist__16c2_s_p3_0[] = { 1, 3, 3, 5, 5, 7, 7, 8, 8, 0, 0, 0, 6, 6, 8, 8, 9, 9, 0, 0, 0, 6, 6, 8, 8, 9, 9, 0, 0, 0, 7, 7, 8, 9,10,10, 0, 0, 0, 7, 7, 9, 9,10,10, 0, 0, 0, @@ -1889,7 +1889,7 @@ static const long _vq_lengthlist__16c2_s_p3_0[] = { static const static_codebook _16c2_s_p3_0 = { 2, 81, - (long *)_vq_lengthlist__16c2_s_p3_0, + (char *)_vq_lengthlist__16c2_s_p3_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__16c2_s_p3_0, 0 @@ -1915,7 +1915,7 @@ static const long _vq_quantlist__16c2_s_p4_0[] = { 16, }; -static const long _vq_lengthlist__16c2_s_p4_0[] = { +static const char _vq_lengthlist__16c2_s_p4_0[] = { 2, 3, 3, 5, 5, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 0, 0, 0, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 11,10, 0, 0, 0, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10, @@ -1939,7 +1939,7 @@ static const long _vq_lengthlist__16c2_s_p4_0[] = { static const static_codebook _16c2_s_p4_0 = { 2, 289, - (long *)_vq_lengthlist__16c2_s_p4_0, + (char *)_vq_lengthlist__16c2_s_p4_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__16c2_s_p4_0, 0 @@ -1951,7 +1951,7 @@ static const long _vq_quantlist__16c2_s_p5_0[] = { 2, }; -static const long _vq_lengthlist__16c2_s_p5_0[] = { +static const char _vq_lengthlist__16c2_s_p5_0[] = { 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 6,10,11,10,10, 10,11, 4, 6, 6,10,10,11,10,11,10, 5,10,10, 9,12, 11,10,12,12, 7,10,10,12,12,12,12,13,13, 7,11,10, @@ -1962,7 +1962,7 @@ static const long _vq_lengthlist__16c2_s_p5_0[] = { static const static_codebook _16c2_s_p5_0 = { 4, 81, - (long *)_vq_lengthlist__16c2_s_p5_0, + (char *)_vq_lengthlist__16c2_s_p5_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__16c2_s_p5_0, 0 @@ -1982,7 +1982,7 @@ static const long _vq_quantlist__16c2_s_p5_1[] = { 10, }; -static const long _vq_lengthlist__16c2_s_p5_1[] = { +static const char _vq_lengthlist__16c2_s_p5_1[] = { 2, 3, 3, 6, 6, 6, 6, 7, 7, 7, 7,11,10,10, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8, 8,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9,11,11,11, 6, @@ -1995,7 +1995,7 @@ static const long _vq_lengthlist__16c2_s_p5_1[] = { static const static_codebook _16c2_s_p5_1 = { 2, 121, - (long *)_vq_lengthlist__16c2_s_p5_1, + (char *)_vq_lengthlist__16c2_s_p5_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__16c2_s_p5_1, 0 @@ -2017,7 +2017,7 @@ static const long _vq_quantlist__16c2_s_p6_0[] = { 12, }; -static const long _vq_lengthlist__16c2_s_p6_0[] = { +static const char _vq_lengthlist__16c2_s_p6_0[] = { 1, 4, 4, 6, 6, 8, 7, 8, 8, 9, 9,10,10, 5, 5, 5, 7, 7, 9, 9, 9, 9,11,11,12,12, 6, 5, 5, 7, 7, 9, 9,10, 9,11,11,12,12, 0, 7, 7, 7, 7, 9, 9,10,10, @@ -2033,7 +2033,7 @@ static const long _vq_lengthlist__16c2_s_p6_0[] = { static const static_codebook _16c2_s_p6_0 = { 2, 169, - (long *)_vq_lengthlist__16c2_s_p6_0, + (char *)_vq_lengthlist__16c2_s_p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__16c2_s_p6_0, 0 @@ -2047,14 +2047,14 @@ static const long _vq_quantlist__16c2_s_p6_1[] = { 4, }; -static const long _vq_lengthlist__16c2_s_p6_1[] = { +static const char _vq_lengthlist__16c2_s_p6_1[] = { 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _16c2_s_p6_1 = { 2, 25, - (long *)_vq_lengthlist__16c2_s_p6_1, + (char *)_vq_lengthlist__16c2_s_p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__16c2_s_p6_1, 0 @@ -2076,7 +2076,7 @@ static const long _vq_quantlist__16c2_s_p7_0[] = { 12, }; -static const long _vq_lengthlist__16c2_s_p7_0[] = { +static const char _vq_lengthlist__16c2_s_p7_0[] = { 1, 4, 4, 7, 7, 8, 8, 8, 8,10, 9,10,10, 5, 5, 5, 7, 7, 9, 9,10,10,11,10,12,11, 6, 5, 5, 7, 7, 9, 9,10,10,11,11,12,12,20, 7, 7, 7, 7, 9, 9,10,10, @@ -2092,7 +2092,7 @@ static const long _vq_lengthlist__16c2_s_p7_0[] = { static const static_codebook _16c2_s_p7_0 = { 2, 169, - (long *)_vq_lengthlist__16c2_s_p7_0, + (char *)_vq_lengthlist__16c2_s_p7_0, 1, -523206656, 1618345984, 4, 0, (long *)_vq_quantlist__16c2_s_p7_0, 0 @@ -2112,7 +2112,7 @@ static const long _vq_quantlist__16c2_s_p7_1[] = { 10, }; -static const long _vq_lengthlist__16c2_s_p7_1[] = { +static const char _vq_lengthlist__16c2_s_p7_1[] = { 2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 7, 9, 9, 9, 6, 7, 7, 7, 7, 7, 8, 8, 9, 9, 9, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 7, @@ -2125,7 +2125,7 @@ static const long _vq_lengthlist__16c2_s_p7_1[] = { static const static_codebook _16c2_s_p7_1 = { 2, 121, - (long *)_vq_lengthlist__16c2_s_p7_1, + (char *)_vq_lengthlist__16c2_s_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__16c2_s_p7_1, 0 @@ -2149,7 +2149,7 @@ static const long _vq_quantlist__16c2_s_p8_0[] = { 14, }; -static const long _vq_lengthlist__16c2_s_p8_0[] = { +static const char _vq_lengthlist__16c2_s_p8_0[] = { 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9,10,10, 6, 6, 6, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,11, 6, 5, 5, 8, 7, 9, 9, 8, 8, 9, 9,10,10,11,11,20, 8, 8, @@ -2169,7 +2169,7 @@ static const long _vq_lengthlist__16c2_s_p8_0[] = { static const static_codebook _16c2_s_p8_0 = { 2, 225, - (long *)_vq_lengthlist__16c2_s_p8_0, + (char *)_vq_lengthlist__16c2_s_p8_0, 1, -520986624, 1620377600, 4, 0, (long *)_vq_quantlist__16c2_s_p8_0, 0 @@ -2199,7 +2199,7 @@ static const long _vq_quantlist__16c2_s_p8_1[] = { 20, }; -static const long _vq_lengthlist__16c2_s_p8_1[] = { +static const char _vq_lengthlist__16c2_s_p8_1[] = { 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,11,11,11, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,11,10, 7, 7, 8, @@ -2232,7 +2232,7 @@ static const long _vq_lengthlist__16c2_s_p8_1[] = { static const static_codebook _16c2_s_p8_1 = { 2, 441, - (long *)_vq_lengthlist__16c2_s_p8_1, + (char *)_vq_lengthlist__16c2_s_p8_1, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__16c2_s_p8_1, 0 @@ -2258,7 +2258,7 @@ static const long _vq_quantlist__16c2_s_p9_0[] = { 16, }; -static const long _vq_lengthlist__16c2_s_p9_0[] = { +static const char _vq_lengthlist__16c2_s_p9_0[] = { 1, 4, 3,10, 8,10,10,10,10,10,10,10,10,10,10,10, 10, 6,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 10,10, 6,10, 9,10,10,10,10,10,10,10,10,10,10,10, @@ -2282,7 +2282,7 @@ static const long _vq_lengthlist__16c2_s_p9_0[] = { static const static_codebook _16c2_s_p9_0 = { 2, 289, - (long *)_vq_lengthlist__16c2_s_p9_0, + (char *)_vq_lengthlist__16c2_s_p9_0, 1, -509798400, 1631393792, 5, 0, (long *)_vq_quantlist__16c2_s_p9_0, 0 @@ -2310,7 +2310,7 @@ static const long _vq_quantlist__16c2_s_p9_1[] = { 18, }; -static const long _vq_lengthlist__16c2_s_p9_1[] = { +static const char _vq_lengthlist__16c2_s_p9_1[] = { 1, 4, 4, 7, 7, 7, 7, 7, 7, 8, 8,10, 9,11,10,13, 11,14,13, 6, 6, 6, 8, 8, 8, 8, 8, 7, 9, 8,11, 9, 13,11,14,12,14,13, 5, 6, 6, 8, 8, 8, 8, 8, 8, 9, @@ -2338,7 +2338,7 @@ static const long _vq_lengthlist__16c2_s_p9_1[] = { static const static_codebook _16c2_s_p9_1 = { 2, 361, - (long *)_vq_lengthlist__16c2_s_p9_1, + (char *)_vq_lengthlist__16c2_s_p9_1, 1, -518287360, 1622704128, 5, 0, (long *)_vq_quantlist__16c2_s_p9_1, 0 @@ -2396,7 +2396,7 @@ static const long _vq_quantlist__16c2_s_p9_2[] = { 48, }; -static const long _vq_lengthlist__16c2_s_p9_2[] = { +static const char _vq_lengthlist__16c2_s_p9_2[] = { 2, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, @@ -2405,13 +2405,13 @@ static const long _vq_lengthlist__16c2_s_p9_2[] = { static const static_codebook _16c2_s_p9_2 = { 1, 49, - (long *)_vq_lengthlist__16c2_s_p9_2, + (char *)_vq_lengthlist__16c2_s_p9_2, 1, -526909440, 1611661312, 6, 0, (long *)_vq_quantlist__16c2_s_p9_2, 0 }; -static const long _huff_lengthlist__16c2_s_short[] = { +static const char _huff_lengthlist__16c2_s_short[] = { 7,10,12,11,12,13,15,16,18,15,10, 8, 8, 8, 9,10, 12,13,14,17,10, 7, 7, 7, 7, 8,10,12,15,18,10, 7, 7, 5, 5, 6, 8,10,13,15,10, 7, 6, 5, 4, 4, 6, 9, @@ -2423,7 +2423,7 @@ static const long _huff_lengthlist__16c2_s_short[] = { static const static_codebook _huff_book__16c2_s_short = { 2, 100, - (long *)_huff_lengthlist__16c2_s_short, + (char *)_huff_lengthlist__16c2_s_short, 0, 0, 0, 0, 0, NULL, 0 @@ -2435,7 +2435,7 @@ static const long _vq_quantlist__8c0_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__8c0_s_p1_0[] = { +static const char _vq_lengthlist__8c0_s_p1_0[] = { 1, 5, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2851,7 +2851,7 @@ static const long _vq_lengthlist__8c0_s_p1_0[] = { static const static_codebook _8c0_s_p1_0 = { 8, 6561, - (long *)_vq_lengthlist__8c0_s_p1_0, + (char *)_vq_lengthlist__8c0_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__8c0_s_p1_0, 0 @@ -2865,7 +2865,7 @@ static const long _vq_quantlist__8c0_s_p3_0[] = { 4, }; -static const long _vq_lengthlist__8c0_s_p3_0[] = { +static const char _vq_lengthlist__8c0_s_p3_0[] = { 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2910,7 +2910,7 @@ static const long _vq_lengthlist__8c0_s_p3_0[] = { static const static_codebook _8c0_s_p3_0 = { 4, 625, - (long *)_vq_lengthlist__8c0_s_p3_0, + (char *)_vq_lengthlist__8c0_s_p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__8c0_s_p3_0, 0 @@ -2928,7 +2928,7 @@ static const long _vq_quantlist__8c0_s_p4_0[] = { 8, }; -static const long _vq_lengthlist__8c0_s_p4_0[] = { +static const char _vq_lengthlist__8c0_s_p4_0[] = { 1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, @@ -2939,7 +2939,7 @@ static const long _vq_lengthlist__8c0_s_p4_0[] = { static const static_codebook _8c0_s_p4_0 = { 2, 81, - (long *)_vq_lengthlist__8c0_s_p4_0, + (char *)_vq_lengthlist__8c0_s_p4_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__8c0_s_p4_0, 0 @@ -2957,7 +2957,7 @@ static const long _vq_quantlist__8c0_s_p5_0[] = { 8, }; -static const long _vq_lengthlist__8c0_s_p5_0[] = { +static const char _vq_lengthlist__8c0_s_p5_0[] = { 1, 3, 3, 5, 5, 7, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7, 8, 8, 0, 0, 0, 7, 7, 7, 7, 8, 9, 0, 0, 0, 8, 8, 8, 8, 9, 9, 0, 0, 0, 8, 8, 8, 8, 9, 9, 0, 0, 0, @@ -2968,7 +2968,7 @@ static const long _vq_lengthlist__8c0_s_p5_0[] = { static const static_codebook _8c0_s_p5_0 = { 2, 81, - (long *)_vq_lengthlist__8c0_s_p5_0, + (char *)_vq_lengthlist__8c0_s_p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__8c0_s_p5_0, 0 @@ -2994,7 +2994,7 @@ static const long _vq_quantlist__8c0_s_p6_0[] = { 16, }; -static const long _vq_lengthlist__8c0_s_p6_0[] = { +static const char _vq_lengthlist__8c0_s_p6_0[] = { 1, 3, 3, 6, 6, 8, 8, 9, 9, 8, 8,10, 9,10,10,11, 11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11, 11,12, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11, @@ -3018,7 +3018,7 @@ static const long _vq_lengthlist__8c0_s_p6_0[] = { static const static_codebook _8c0_s_p6_0 = { 2, 289, - (long *)_vq_lengthlist__8c0_s_p6_0, + (char *)_vq_lengthlist__8c0_s_p6_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__8c0_s_p6_0, 0 @@ -3030,7 +3030,7 @@ static const long _vq_quantlist__8c0_s_p7_0[] = { 2, }; -static const long _vq_lengthlist__8c0_s_p7_0[] = { +static const char _vq_lengthlist__8c0_s_p7_0[] = { 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,11, 9,10,12, 9,10, 4, 7, 7,10,10,10,11, 9, 9, 6,11,10,11,11, 12,11,11,11, 6,10,10,11,11,12,11,10,10, 6, 9,10, @@ -3041,7 +3041,7 @@ static const long _vq_lengthlist__8c0_s_p7_0[] = { static const static_codebook _8c0_s_p7_0 = { 4, 81, - (long *)_vq_lengthlist__8c0_s_p7_0, + (char *)_vq_lengthlist__8c0_s_p7_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__8c0_s_p7_0, 0 @@ -3061,7 +3061,7 @@ static const long _vq_quantlist__8c0_s_p7_1[] = { 10, }; -static const long _vq_lengthlist__8c0_s_p7_1[] = { +static const char _vq_lengthlist__8c0_s_p7_1[] = { 1, 3, 3, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10, 7, 7, 8, 8, 9, 9, 9, 9,10,10, 9, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10, 8, 8, 9, 9, 9, 9, 9, 9,10,10,10, 8, @@ -3074,7 +3074,7 @@ static const long _vq_lengthlist__8c0_s_p7_1[] = { static const static_codebook _8c0_s_p7_1 = { 2, 121, - (long *)_vq_lengthlist__8c0_s_p7_1, + (char *)_vq_lengthlist__8c0_s_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__8c0_s_p7_1, 0 @@ -3096,7 +3096,7 @@ static const long _vq_quantlist__8c0_s_p8_0[] = { 12, }; -static const long _vq_lengthlist__8c0_s_p8_0[] = { +static const char _vq_lengthlist__8c0_s_p8_0[] = { 1, 4, 4, 7, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 6, 6, 7, 7, 8, 8, 7, 7, 8, 9,10,10, 7, 6, 6, 7, 7, 8, 7, 7, 7, 9, 9,10,12, 0, 8, 8, 8, 8, 8, 9, 8, 8, @@ -3112,7 +3112,7 @@ static const long _vq_lengthlist__8c0_s_p8_0[] = { static const static_codebook _8c0_s_p8_0 = { 2, 169, - (long *)_vq_lengthlist__8c0_s_p8_0, + (char *)_vq_lengthlist__8c0_s_p8_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__8c0_s_p8_0, 0 @@ -3126,14 +3126,14 @@ static const long _vq_quantlist__8c0_s_p8_1[] = { 4, }; -static const long _vq_lengthlist__8c0_s_p8_1[] = { +static const char _vq_lengthlist__8c0_s_p8_1[] = { 1, 3, 4, 5, 5, 7, 6, 6, 6, 5, 7, 7, 7, 6, 6, 7, 7, 7, 6, 6, 7, 7, 7, 6, 6, }; static const static_codebook _8c0_s_p8_1 = { 2, 25, - (long *)_vq_lengthlist__8c0_s_p8_1, + (char *)_vq_lengthlist__8c0_s_p8_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__8c0_s_p8_1, 0 @@ -3145,7 +3145,7 @@ static const long _vq_quantlist__8c0_s_p9_0[] = { 2, }; -static const long _vq_lengthlist__8c0_s_p9_0[] = { +static const char _vq_lengthlist__8c0_s_p9_0[] = { 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, @@ -3156,7 +3156,7 @@ static const long _vq_lengthlist__8c0_s_p9_0[] = { static const static_codebook _8c0_s_p9_0 = { 4, 81, - (long *)_vq_lengthlist__8c0_s_p9_0, + (char *)_vq_lengthlist__8c0_s_p9_0, 1, -518803456, 1628680192, 2, 0, (long *)_vq_quantlist__8c0_s_p9_0, 0 @@ -3180,7 +3180,7 @@ static const long _vq_quantlist__8c0_s_p9_1[] = { 14, }; -static const long _vq_lengthlist__8c0_s_p9_1[] = { +static const char _vq_lengthlist__8c0_s_p9_1[] = { 1, 4, 4, 5, 5,10, 8,11,11,11,11,11,11,11,11, 6, 6, 6, 7, 6,11,10,11,11,11,11,11,11,11,11, 7, 5, 6, 6, 6, 8, 7,11,11,11,11,11,11,11,11,11, 7, 8, @@ -3200,7 +3200,7 @@ static const long _vq_lengthlist__8c0_s_p9_1[] = { static const static_codebook _8c0_s_p9_1 = { 2, 225, - (long *)_vq_lengthlist__8c0_s_p9_1, + (char *)_vq_lengthlist__8c0_s_p9_1, 1, -520986624, 1620377600, 4, 0, (long *)_vq_quantlist__8c0_s_p9_1, 0 @@ -3230,7 +3230,7 @@ static const long _vq_quantlist__8c0_s_p9_2[] = { 20, }; -static const long _vq_lengthlist__8c0_s_p9_2[] = { +static const char _vq_lengthlist__8c0_s_p9_2[] = { 1, 5, 5, 7, 7, 8, 7, 8, 8,10,10, 9, 9,10,10,10, 11,11,10,12,11,12,12,12, 9, 8, 8, 8, 8, 8, 9,10, 10,10,10,11,11,11,10,11,11,12,12,11,12, 8, 8, 7, @@ -3263,13 +3263,13 @@ static const long _vq_lengthlist__8c0_s_p9_2[] = { static const static_codebook _8c0_s_p9_2 = { 2, 441, - (long *)_vq_lengthlist__8c0_s_p9_2, + (char *)_vq_lengthlist__8c0_s_p9_2, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__8c0_s_p9_2, 0 }; -static const long _huff_lengthlist__8c0_s_single[] = { +static const char _huff_lengthlist__8c0_s_single[] = { 4, 5,18, 7,10, 6, 7, 8, 9,10, 5, 2,18, 5, 7, 5, 6, 7, 8,11,17,17,17,17,17,17,17,17,17,17, 7, 4, 17, 6, 9, 6, 8,10,12,15,11, 7,17, 9, 6, 6, 7, 9, @@ -3281,7 +3281,7 @@ static const long _huff_lengthlist__8c0_s_single[] = { static const static_codebook _huff_book__8c0_s_single = { 2, 100, - (long *)_huff_lengthlist__8c0_s_single, + (char *)_huff_lengthlist__8c0_s_single, 0, 0, 0, 0, 0, NULL, 0 @@ -3293,7 +3293,7 @@ static const long _vq_quantlist__8c1_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__8c1_s_p1_0[] = { +static const char _vq_lengthlist__8c1_s_p1_0[] = { 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3709,7 +3709,7 @@ static const long _vq_lengthlist__8c1_s_p1_0[] = { static const static_codebook _8c1_s_p1_0 = { 8, 6561, - (long *)_vq_lengthlist__8c1_s_p1_0, + (char *)_vq_lengthlist__8c1_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__8c1_s_p1_0, 0 @@ -3723,7 +3723,7 @@ static const long _vq_quantlist__8c1_s_p3_0[] = { 4, }; -static const long _vq_lengthlist__8c1_s_p3_0[] = { +static const char _vq_lengthlist__8c1_s_p3_0[] = { 2, 4, 4, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -3768,7 +3768,7 @@ static const long _vq_lengthlist__8c1_s_p3_0[] = { static const static_codebook _8c1_s_p3_0 = { 4, 625, - (long *)_vq_lengthlist__8c1_s_p3_0, + (char *)_vq_lengthlist__8c1_s_p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__8c1_s_p3_0, 0 @@ -3786,7 +3786,7 @@ static const long _vq_quantlist__8c1_s_p4_0[] = { 8, }; -static const long _vq_lengthlist__8c1_s_p4_0[] = { +static const char _vq_lengthlist__8c1_s_p4_0[] = { 1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, @@ -3797,7 +3797,7 @@ static const long _vq_lengthlist__8c1_s_p4_0[] = { static const static_codebook _8c1_s_p4_0 = { 2, 81, - (long *)_vq_lengthlist__8c1_s_p4_0, + (char *)_vq_lengthlist__8c1_s_p4_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__8c1_s_p4_0, 0 @@ -3815,7 +3815,7 @@ static const long _vq_quantlist__8c1_s_p5_0[] = { 8, }; -static const long _vq_lengthlist__8c1_s_p5_0[] = { +static const char _vq_lengthlist__8c1_s_p5_0[] = { 1, 3, 3, 4, 5, 6, 6, 8, 8, 0, 0, 0, 8, 8, 7, 7, 9, 9, 0, 0, 0, 8, 8, 7, 7, 9, 9, 0, 0, 0, 9,10, 8, 8, 9, 9, 0, 0, 0,10,10, 8, 8, 9, 9, 0, 0, 0, @@ -3826,7 +3826,7 @@ static const long _vq_lengthlist__8c1_s_p5_0[] = { static const static_codebook _8c1_s_p5_0 = { 2, 81, - (long *)_vq_lengthlist__8c1_s_p5_0, + (char *)_vq_lengthlist__8c1_s_p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__8c1_s_p5_0, 0 @@ -3852,7 +3852,7 @@ static const long _vq_quantlist__8c1_s_p6_0[] = { 16, }; -static const long _vq_lengthlist__8c1_s_p6_0[] = { +static const char _vq_lengthlist__8c1_s_p6_0[] = { 1, 3, 3, 5, 5, 8, 8, 8, 8, 9, 9,10,10,11,11,11, 11, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11,11, 12,12, 0, 0, 0, 8, 8, 8, 8, 9, 9, 9, 9,10,10,11, @@ -3876,7 +3876,7 @@ static const long _vq_lengthlist__8c1_s_p6_0[] = { static const static_codebook _8c1_s_p6_0 = { 2, 289, - (long *)_vq_lengthlist__8c1_s_p6_0, + (char *)_vq_lengthlist__8c1_s_p6_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__8c1_s_p6_0, 0 @@ -3888,7 +3888,7 @@ static const long _vq_quantlist__8c1_s_p7_0[] = { 2, }; -static const long _vq_lengthlist__8c1_s_p7_0[] = { +static const char _vq_lengthlist__8c1_s_p7_0[] = { 1, 4, 4, 6, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10, 9, 9, 5, 7, 7,10, 9, 9,10, 9, 9, 6,10,10,10,10, 10,11,10,10, 6, 9, 9,10, 9,10,11,10,10, 6, 9, 9, @@ -3899,7 +3899,7 @@ static const long _vq_lengthlist__8c1_s_p7_0[] = { static const static_codebook _8c1_s_p7_0 = { 4, 81, - (long *)_vq_lengthlist__8c1_s_p7_0, + (char *)_vq_lengthlist__8c1_s_p7_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__8c1_s_p7_0, 0 @@ -3919,7 +3919,7 @@ static const long _vq_quantlist__8c1_s_p7_1[] = { 10, }; -static const long _vq_lengthlist__8c1_s_p7_1[] = { +static const char _vq_lengthlist__8c1_s_p7_1[] = { 2, 3, 3, 5, 5, 7, 7, 7, 7, 7, 7,10,10, 9, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, @@ -3932,7 +3932,7 @@ static const long _vq_lengthlist__8c1_s_p7_1[] = { static const static_codebook _8c1_s_p7_1 = { 2, 121, - (long *)_vq_lengthlist__8c1_s_p7_1, + (char *)_vq_lengthlist__8c1_s_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__8c1_s_p7_1, 0 @@ -3954,7 +3954,7 @@ static const long _vq_quantlist__8c1_s_p8_0[] = { 12, }; -static const long _vq_lengthlist__8c1_s_p8_0[] = { +static const char _vq_lengthlist__8c1_s_p8_0[] = { 1, 4, 4, 6, 6, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 5, 7, 7, 8, 8, 8, 8, 9,10,11,11, 7, 5, 5, 7, 7, 8, 8, 9, 9,10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9, @@ -3970,7 +3970,7 @@ static const long _vq_lengthlist__8c1_s_p8_0[] = { static const static_codebook _8c1_s_p8_0 = { 2, 169, - (long *)_vq_lengthlist__8c1_s_p8_0, + (char *)_vq_lengthlist__8c1_s_p8_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__8c1_s_p8_0, 0 @@ -3984,14 +3984,14 @@ static const long _vq_quantlist__8c1_s_p8_1[] = { 4, }; -static const long _vq_lengthlist__8c1_s_p8_1[] = { +static const char _vq_lengthlist__8c1_s_p8_1[] = { 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _8c1_s_p8_1 = { 2, 25, - (long *)_vq_lengthlist__8c1_s_p8_1, + (char *)_vq_lengthlist__8c1_s_p8_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__8c1_s_p8_1, 0 @@ -4013,7 +4013,7 @@ static const long _vq_quantlist__8c1_s_p9_0[] = { 12, }; -static const long _vq_lengthlist__8c1_s_p9_0[] = { +static const char _vq_lengthlist__8c1_s_p9_0[] = { 1, 3, 3,10,10,10,10,10,10,10,10,10,10, 5, 6, 6, 10,10,10,10,10,10,10,10,10,10, 6, 7, 8,10,10,10, 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, @@ -4029,7 +4029,7 @@ static const long _vq_lengthlist__8c1_s_p9_0[] = { static const static_codebook _8c1_s_p9_0 = { 2, 169, - (long *)_vq_lengthlist__8c1_s_p9_0, + (char *)_vq_lengthlist__8c1_s_p9_0, 1, -513964032, 1628680192, 4, 0, (long *)_vq_quantlist__8c1_s_p9_0, 0 @@ -4053,7 +4053,7 @@ static const long _vq_quantlist__8c1_s_p9_1[] = { 14, }; -static const long _vq_lengthlist__8c1_s_p9_1[] = { +static const char _vq_lengthlist__8c1_s_p9_1[] = { 1, 4, 4, 5, 5, 7, 7, 9, 9,11,11,12,12,13,13, 6, 5, 5, 6, 6, 9, 9,10,10,12,12,12,13,15,14, 6, 5, 5, 7, 7, 9, 9,10,10,12,12,12,13,14,13,17, 7, 7, @@ -4073,7 +4073,7 @@ static const long _vq_lengthlist__8c1_s_p9_1[] = { static const static_codebook _8c1_s_p9_1 = { 2, 225, - (long *)_vq_lengthlist__8c1_s_p9_1, + (char *)_vq_lengthlist__8c1_s_p9_1, 1, -520986624, 1620377600, 4, 0, (long *)_vq_quantlist__8c1_s_p9_1, 0 @@ -4103,7 +4103,7 @@ static const long _vq_quantlist__8c1_s_p9_2[] = { 20, }; -static const long _vq_lengthlist__8c1_s_p9_2[] = { +static const char _vq_lengthlist__8c1_s_p9_2[] = { 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9,11,11,12, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10,10,10,10,10,11,11,11, 7, 7, 7, @@ -4136,13 +4136,13 @@ static const long _vq_lengthlist__8c1_s_p9_2[] = { static const static_codebook _8c1_s_p9_2 = { 2, 441, - (long *)_vq_lengthlist__8c1_s_p9_2, + (char *)_vq_lengthlist__8c1_s_p9_2, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__8c1_s_p9_2, 0 }; -static const long _huff_lengthlist__8c1_s_single[] = { +static const char _huff_lengthlist__8c1_s_single[] = { 4, 6,18, 8,11, 8, 8, 9, 9,10, 4, 4,18, 5, 9, 5, 6, 7, 8,10,18,18,18,18,17,17,17,17,17,17, 7, 5, 17, 6,11, 6, 7, 8, 9,12,12, 9,17,12, 8, 8, 9,10, @@ -4154,13 +4154,13 @@ static const long _huff_lengthlist__8c1_s_single[] = { static const static_codebook _huff_book__8c1_s_single = { 2, 100, - (long *)_huff_lengthlist__8c1_s_single, + (char *)_huff_lengthlist__8c1_s_single, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44c2_s_long[] = { +static const char _huff_lengthlist__44c2_s_long[] = { 6, 6,12,10,10,10, 9,10,12,12, 6, 1,10, 5, 6, 6, 7, 9,11,14,12, 9, 8,11, 7, 8, 9,11,13,15,10, 5, 12, 7, 8, 7, 9,12,14,15,10, 6, 7, 8, 5, 6, 7, 9, @@ -4172,7 +4172,7 @@ static const long _huff_lengthlist__44c2_s_long[] = { static const static_codebook _huff_book__44c2_s_long = { 2, 100, - (long *)_huff_lengthlist__44c2_s_long, + (char *)_huff_lengthlist__44c2_s_long, 0, 0, 0, 0, 0, NULL, 0 @@ -4184,7 +4184,7 @@ static const long _vq_quantlist__44c2_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__44c2_s_p1_0[] = { +static const char _vq_lengthlist__44c2_s_p1_0[] = { 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0, 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4600,7 +4600,7 @@ static const long _vq_lengthlist__44c2_s_p1_0[] = { static const static_codebook _44c2_s_p1_0 = { 8, 6561, - (long *)_vq_lengthlist__44c2_s_p1_0, + (char *)_vq_lengthlist__44c2_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44c2_s_p1_0, 0 @@ -4614,7 +4614,7 @@ static const long _vq_quantlist__44c2_s_p2_0[] = { 4, }; -static const long _vq_lengthlist__44c2_s_p2_0[] = { +static const char _vq_lengthlist__44c2_s_p2_0[] = { 1, 4, 4, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 8, 8, 0, 0, 0, 8, 8, 0, 0, 0, 9, 9, 0, 0, 0, 0, 0, @@ -4659,7 +4659,7 @@ static const long _vq_lengthlist__44c2_s_p2_0[] = { static const static_codebook _44c2_s_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44c2_s_p2_0, + (char *)_vq_lengthlist__44c2_s_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c2_s_p2_0, 0 @@ -4673,7 +4673,7 @@ static const long _vq_quantlist__44c2_s_p3_0[] = { 4, }; -static const long _vq_lengthlist__44c2_s_p3_0[] = { +static const char _vq_lengthlist__44c2_s_p3_0[] = { 2, 4, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -4718,7 +4718,7 @@ static const long _vq_lengthlist__44c2_s_p3_0[] = { static const static_codebook _44c2_s_p3_0 = { 4, 625, - (long *)_vq_lengthlist__44c2_s_p3_0, + (char *)_vq_lengthlist__44c2_s_p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c2_s_p3_0, 0 @@ -4736,7 +4736,7 @@ static const long _vq_quantlist__44c2_s_p4_0[] = { 8, }; -static const long _vq_lengthlist__44c2_s_p4_0[] = { +static const char _vq_lengthlist__44c2_s_p4_0[] = { 1, 3, 3, 6, 6, 0, 0, 0, 0, 0, 6, 6, 6, 6, 0, 0, 0, 0, 0, 6, 6, 6, 6, 0, 0, 0, 0, 0, 7, 7, 6, 6, 0, 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 0, @@ -4747,7 +4747,7 @@ static const long _vq_lengthlist__44c2_s_p4_0[] = { static const static_codebook _44c2_s_p4_0 = { 2, 81, - (long *)_vq_lengthlist__44c2_s_p4_0, + (char *)_vq_lengthlist__44c2_s_p4_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c2_s_p4_0, 0 @@ -4765,7 +4765,7 @@ static const long _vq_quantlist__44c2_s_p5_0[] = { 8, }; -static const long _vq_lengthlist__44c2_s_p5_0[] = { +static const char _vq_lengthlist__44c2_s_p5_0[] = { 1, 3, 3, 6, 6, 7, 7, 9, 9, 0, 7, 7, 7, 7, 7, 7, 9, 9, 0, 7, 7, 7, 7, 7, 7, 9, 9, 0, 8, 8, 7, 7, 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0, @@ -4776,7 +4776,7 @@ static const long _vq_lengthlist__44c2_s_p5_0[] = { static const static_codebook _44c2_s_p5_0 = { 2, 81, - (long *)_vq_lengthlist__44c2_s_p5_0, + (char *)_vq_lengthlist__44c2_s_p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c2_s_p5_0, 0 @@ -4802,7 +4802,7 @@ static const long _vq_quantlist__44c2_s_p6_0[] = { 16, }; -static const long _vq_lengthlist__44c2_s_p6_0[] = { +static const char _vq_lengthlist__44c2_s_p6_0[] = { 1, 4, 3, 6, 6, 8, 8, 9, 9, 9, 9, 9, 9,10,10,11, 11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11, 12,11, 0, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11, @@ -4826,7 +4826,7 @@ static const long _vq_lengthlist__44c2_s_p6_0[] = { static const static_codebook _44c2_s_p6_0 = { 2, 289, - (long *)_vq_lengthlist__44c2_s_p6_0, + (char *)_vq_lengthlist__44c2_s_p6_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c2_s_p6_0, 0 @@ -4838,7 +4838,7 @@ static const long _vq_quantlist__44c2_s_p7_0[] = { 2, }; -static const long _vq_lengthlist__44c2_s_p7_0[] = { +static const char _vq_lengthlist__44c2_s_p7_0[] = { 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11, 9, 9, 4, 7, 7,10, 9, 9,10, 9, 9, 7,10,10,11,10, 11,11,10,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9, @@ -4849,7 +4849,7 @@ static const long _vq_lengthlist__44c2_s_p7_0[] = { static const static_codebook _44c2_s_p7_0 = { 4, 81, - (long *)_vq_lengthlist__44c2_s_p7_0, + (char *)_vq_lengthlist__44c2_s_p7_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44c2_s_p7_0, 0 @@ -4869,7 +4869,7 @@ static const long _vq_quantlist__44c2_s_p7_1[] = { 10, }; -static const long _vq_lengthlist__44c2_s_p7_1[] = { +static const char _vq_lengthlist__44c2_s_p7_1[] = { 2, 3, 4, 6, 6, 7, 7, 7, 7, 7, 7, 9, 7, 7, 6, 6, 7, 7, 8, 8, 8, 8, 9, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, @@ -4882,7 +4882,7 @@ static const long _vq_lengthlist__44c2_s_p7_1[] = { static const static_codebook _44c2_s_p7_1 = { 2, 121, - (long *)_vq_lengthlist__44c2_s_p7_1, + (char *)_vq_lengthlist__44c2_s_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c2_s_p7_1, 0 @@ -4904,7 +4904,7 @@ static const long _vq_quantlist__44c2_s_p8_0[] = { 12, }; -static const long _vq_lengthlist__44c2_s_p8_0[] = { +static const char _vq_lengthlist__44c2_s_p8_0[] = { 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 6, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 6, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9, @@ -4920,7 +4920,7 @@ static const long _vq_lengthlist__44c2_s_p8_0[] = { static const static_codebook _44c2_s_p8_0 = { 2, 169, - (long *)_vq_lengthlist__44c2_s_p8_0, + (char *)_vq_lengthlist__44c2_s_p8_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44c2_s_p8_0, 0 @@ -4934,14 +4934,14 @@ static const long _vq_quantlist__44c2_s_p8_1[] = { 4, }; -static const long _vq_lengthlist__44c2_s_p8_1[] = { +static const char _vq_lengthlist__44c2_s_p8_1[] = { 2, 4, 4, 5, 4, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _44c2_s_p8_1 = { 2, 25, - (long *)_vq_lengthlist__44c2_s_p8_1, + (char *)_vq_lengthlist__44c2_s_p8_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c2_s_p8_1, 0 @@ -4963,7 +4963,7 @@ static const long _vq_quantlist__44c2_s_p9_0[] = { 12, }; -static const long _vq_lengthlist__44c2_s_p9_0[] = { +static const char _vq_lengthlist__44c2_s_p9_0[] = { 1, 5, 4,12,12,12,12,12,12,12,12,12,12, 4, 9, 8, 11,11,11,11,11,11,11,11,11,11, 2, 8, 7,11,11,11, 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, @@ -4979,7 +4979,7 @@ static const long _vq_lengthlist__44c2_s_p9_0[] = { static const static_codebook _44c2_s_p9_0 = { 2, 169, - (long *)_vq_lengthlist__44c2_s_p9_0, + (char *)_vq_lengthlist__44c2_s_p9_0, 1, -514541568, 1627103232, 4, 0, (long *)_vq_quantlist__44c2_s_p9_0, 0 @@ -5001,7 +5001,7 @@ static const long _vq_quantlist__44c2_s_p9_1[] = { 12, }; -static const long _vq_lengthlist__44c2_s_p9_1[] = { +static const char _vq_lengthlist__44c2_s_p9_1[] = { 1, 4, 4, 6, 6, 7, 6, 8, 8,10, 9,10,10, 6, 5, 5, 7, 7, 8, 7,10, 9,11,11,12,13, 6, 5, 5, 7, 7, 8, 8,10,10,11,11,13,13,18, 8, 8, 8, 8, 9, 9,10,10, @@ -5017,7 +5017,7 @@ static const long _vq_lengthlist__44c2_s_p9_1[] = { static const static_codebook _44c2_s_p9_1 = { 2, 169, - (long *)_vq_lengthlist__44c2_s_p9_1, + (char *)_vq_lengthlist__44c2_s_p9_1, 1, -522616832, 1620115456, 4, 0, (long *)_vq_quantlist__44c2_s_p9_1, 0 @@ -5043,7 +5043,7 @@ static const long _vq_quantlist__44c2_s_p9_2[] = { 16, }; -static const long _vq_lengthlist__44c2_s_p9_2[] = { +static const char _vq_lengthlist__44c2_s_p9_2[] = { 2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, @@ -5067,13 +5067,13 @@ static const long _vq_lengthlist__44c2_s_p9_2[] = { static const static_codebook _44c2_s_p9_2 = { 2, 289, - (long *)_vq_lengthlist__44c2_s_p9_2, + (char *)_vq_lengthlist__44c2_s_p9_2, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c2_s_p9_2, 0 }; -static const long _huff_lengthlist__44c2_s_short[] = { +static const char _huff_lengthlist__44c2_s_short[] = { 11, 9,13,12,12,11,12,12,13,15, 8, 2,11, 4, 8, 5, 7,10,12,15,13, 7,10, 9, 8, 8,10,13,17,17,11, 4, 12, 5, 9, 5, 8,11,14,16,12, 6, 8, 7, 6, 6, 8,11, @@ -5085,13 +5085,13 @@ static const long _huff_lengthlist__44c2_s_short[] = { static const static_codebook _huff_book__44c2_s_short = { 2, 100, - (long *)_huff_lengthlist__44c2_s_short, + (char *)_huff_lengthlist__44c2_s_short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44c3_s_long[] = { +static const char _huff_lengthlist__44c3_s_long[] = { 5, 6,11,11,11,11,10,10,12,11, 5, 2,11, 5, 6, 6, 7, 9,11,13,13,10, 7,11, 6, 7, 8, 9,10,12,11, 5, 11, 6, 8, 7, 9,11,14,15,11, 6, 6, 8, 4, 5, 7, 8, @@ -5103,7 +5103,7 @@ static const long _huff_lengthlist__44c3_s_long[] = { static const static_codebook _huff_book__44c3_s_long = { 2, 100, - (long *)_huff_lengthlist__44c3_s_long, + (char *)_huff_lengthlist__44c3_s_long, 0, 0, 0, 0, 0, NULL, 0 @@ -5115,7 +5115,7 @@ static const long _vq_quantlist__44c3_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__44c3_s_p1_0[] = { +static const char _vq_lengthlist__44c3_s_p1_0[] = { 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5531,7 +5531,7 @@ static const long _vq_lengthlist__44c3_s_p1_0[] = { static const static_codebook _44c3_s_p1_0 = { 8, 6561, - (long *)_vq_lengthlist__44c3_s_p1_0, + (char *)_vq_lengthlist__44c3_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44c3_s_p1_0, 0 @@ -5545,7 +5545,7 @@ static const long _vq_quantlist__44c3_s_p2_0[] = { 4, }; -static const long _vq_lengthlist__44c3_s_p2_0[] = { +static const char _vq_lengthlist__44c3_s_p2_0[] = { 2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0, @@ -5590,7 +5590,7 @@ static const long _vq_lengthlist__44c3_s_p2_0[] = { static const static_codebook _44c3_s_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44c3_s_p2_0, + (char *)_vq_lengthlist__44c3_s_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c3_s_p2_0, 0 @@ -5604,7 +5604,7 @@ static const long _vq_quantlist__44c3_s_p3_0[] = { 4, }; -static const long _vq_lengthlist__44c3_s_p3_0[] = { +static const char _vq_lengthlist__44c3_s_p3_0[] = { 2, 4, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -5649,7 +5649,7 @@ static const long _vq_lengthlist__44c3_s_p3_0[] = { static const static_codebook _44c3_s_p3_0 = { 4, 625, - (long *)_vq_lengthlist__44c3_s_p3_0, + (char *)_vq_lengthlist__44c3_s_p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c3_s_p3_0, 0 @@ -5667,7 +5667,7 @@ static const long _vq_quantlist__44c3_s_p4_0[] = { 8, }; -static const long _vq_lengthlist__44c3_s_p4_0[] = { +static const char _vq_lengthlist__44c3_s_p4_0[] = { 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, @@ -5678,7 +5678,7 @@ static const long _vq_lengthlist__44c3_s_p4_0[] = { static const static_codebook _44c3_s_p4_0 = { 2, 81, - (long *)_vq_lengthlist__44c3_s_p4_0, + (char *)_vq_lengthlist__44c3_s_p4_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c3_s_p4_0, 0 @@ -5696,7 +5696,7 @@ static const long _vq_quantlist__44c3_s_p5_0[] = { 8, }; -static const long _vq_lengthlist__44c3_s_p5_0[] = { +static const char _vq_lengthlist__44c3_s_p5_0[] = { 1, 3, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 7, 7, 7, 8, 9, 9, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0, @@ -5707,7 +5707,7 @@ static const long _vq_lengthlist__44c3_s_p5_0[] = { static const static_codebook _44c3_s_p5_0 = { 2, 81, - (long *)_vq_lengthlist__44c3_s_p5_0, + (char *)_vq_lengthlist__44c3_s_p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c3_s_p5_0, 0 @@ -5733,7 +5733,7 @@ static const long _vq_quantlist__44c3_s_p6_0[] = { 16, }; -static const long _vq_lengthlist__44c3_s_p6_0[] = { +static const char _vq_lengthlist__44c3_s_p6_0[] = { 2, 3, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11, 10, 0, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10, 11,11, 0, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10, @@ -5757,7 +5757,7 @@ static const long _vq_lengthlist__44c3_s_p6_0[] = { static const static_codebook _44c3_s_p6_0 = { 2, 289, - (long *)_vq_lengthlist__44c3_s_p6_0, + (char *)_vq_lengthlist__44c3_s_p6_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c3_s_p6_0, 0 @@ -5769,7 +5769,7 @@ static const long _vq_quantlist__44c3_s_p7_0[] = { 2, }; -static const long _vq_lengthlist__44c3_s_p7_0[] = { +static const char _vq_lengthlist__44c3_s_p7_0[] = { 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11, 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11, 10,12,11,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9, @@ -5780,7 +5780,7 @@ static const long _vq_lengthlist__44c3_s_p7_0[] = { static const static_codebook _44c3_s_p7_0 = { 4, 81, - (long *)_vq_lengthlist__44c3_s_p7_0, + (char *)_vq_lengthlist__44c3_s_p7_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44c3_s_p7_0, 0 @@ -5800,7 +5800,7 @@ static const long _vq_quantlist__44c3_s_p7_1[] = { 10, }; -static const long _vq_lengthlist__44c3_s_p7_1[] = { +static const char _vq_lengthlist__44c3_s_p7_1[] = { 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7, @@ -5813,7 +5813,7 @@ static const long _vq_lengthlist__44c3_s_p7_1[] = { static const static_codebook _44c3_s_p7_1 = { 2, 121, - (long *)_vq_lengthlist__44c3_s_p7_1, + (char *)_vq_lengthlist__44c3_s_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c3_s_p7_1, 0 @@ -5835,7 +5835,7 @@ static const long _vq_quantlist__44c3_s_p8_0[] = { 12, }; -static const long _vq_lengthlist__44c3_s_p8_0[] = { +static const char _vq_lengthlist__44c3_s_p8_0[] = { 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,11,10, 0, 8, 8, 8, 8, 9, 9, 9, 9, @@ -5851,7 +5851,7 @@ static const long _vq_lengthlist__44c3_s_p8_0[] = { static const static_codebook _44c3_s_p8_0 = { 2, 169, - (long *)_vq_lengthlist__44c3_s_p8_0, + (char *)_vq_lengthlist__44c3_s_p8_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44c3_s_p8_0, 0 @@ -5865,14 +5865,14 @@ static const long _vq_quantlist__44c3_s_p8_1[] = { 4, }; -static const long _vq_lengthlist__44c3_s_p8_1[] = { +static const char _vq_lengthlist__44c3_s_p8_1[] = { 2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 4, 5, 5, 5, 6, 5, 5, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _44c3_s_p8_1 = { 2, 25, - (long *)_vq_lengthlist__44c3_s_p8_1, + (char *)_vq_lengthlist__44c3_s_p8_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c3_s_p8_1, 0 @@ -5894,7 +5894,7 @@ static const long _vq_quantlist__44c3_s_p9_0[] = { 12, }; -static const long _vq_lengthlist__44c3_s_p9_0[] = { +static const char _vq_lengthlist__44c3_s_p9_0[] = { 1, 4, 4,12,12,12,12,12,12,12,12,12,12, 4, 9, 8, 12,12,12,12,12,12,12,12,12,12, 2, 9, 7,12,12,12, 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, @@ -5910,7 +5910,7 @@ static const long _vq_lengthlist__44c3_s_p9_0[] = { static const static_codebook _44c3_s_p9_0 = { 2, 169, - (long *)_vq_lengthlist__44c3_s_p9_0, + (char *)_vq_lengthlist__44c3_s_p9_0, 1, -514332672, 1627381760, 4, 0, (long *)_vq_quantlist__44c3_s_p9_0, 0 @@ -5934,7 +5934,7 @@ static const long _vq_quantlist__44c3_s_p9_1[] = { 14, }; -static const long _vq_lengthlist__44c3_s_p9_1[] = { +static const char _vq_lengthlist__44c3_s_p9_1[] = { 1, 4, 4, 6, 6, 7, 7, 8, 7, 9, 9,10,10,10,10, 6, 5, 5, 7, 7, 8, 8,10, 8,11,10,12,12,13,13, 6, 5, 5, 7, 7, 8, 8,10, 9,11,11,12,12,13,12,18, 8, 8, @@ -5954,7 +5954,7 @@ static const long _vq_lengthlist__44c3_s_p9_1[] = { static const static_codebook _44c3_s_p9_1 = { 2, 225, - (long *)_vq_lengthlist__44c3_s_p9_1, + (char *)_vq_lengthlist__44c3_s_p9_1, 1, -522338304, 1620115456, 4, 0, (long *)_vq_quantlist__44c3_s_p9_1, 0 @@ -5980,7 +5980,7 @@ static const long _vq_quantlist__44c3_s_p9_2[] = { 16, }; -static const long _vq_lengthlist__44c3_s_p9_2[] = { +static const char _vq_lengthlist__44c3_s_p9_2[] = { 2, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, @@ -6004,13 +6004,13 @@ static const long _vq_lengthlist__44c3_s_p9_2[] = { static const static_codebook _44c3_s_p9_2 = { 2, 289, - (long *)_vq_lengthlist__44c3_s_p9_2, + (char *)_vq_lengthlist__44c3_s_p9_2, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c3_s_p9_2, 0 }; -static const long _huff_lengthlist__44c3_s_short[] = { +static const char _huff_lengthlist__44c3_s_short[] = { 10, 9,13,11,14,10,12,13,13,14, 7, 2,12, 5,10, 5, 7,10,12,14,12, 6, 9, 8, 7, 7, 9,11,13,16,10, 4, 12, 5,10, 6, 8,12,14,16,12, 6, 8, 7, 6, 5, 7,11, @@ -6022,13 +6022,13 @@ static const long _huff_lengthlist__44c3_s_short[] = { static const static_codebook _huff_book__44c3_s_short = { 2, 100, - (long *)_huff_lengthlist__44c3_s_short, + (char *)_huff_lengthlist__44c3_s_short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44c4_s_long[] = { +static const char _huff_lengthlist__44c4_s_long[] = { 4, 7,11,11,11,11,10,11,12,11, 5, 2,11, 5, 6, 6, 7, 9,11,12,11, 9, 6,10, 6, 7, 8, 9,10,11,11, 5, 11, 7, 8, 8, 9,11,13,14,11, 6, 5, 8, 4, 5, 7, 8, @@ -6040,7 +6040,7 @@ static const long _huff_lengthlist__44c4_s_long[] = { static const static_codebook _huff_book__44c4_s_long = { 2, 100, - (long *)_huff_lengthlist__44c4_s_long, + (char *)_huff_lengthlist__44c4_s_long, 0, 0, 0, 0, 0, NULL, 0 @@ -6052,7 +6052,7 @@ static const long _vq_quantlist__44c4_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__44c4_s_p1_0[] = { +static const char _vq_lengthlist__44c4_s_p1_0[] = { 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 0, 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6468,7 +6468,7 @@ static const long _vq_lengthlist__44c4_s_p1_0[] = { static const static_codebook _44c4_s_p1_0 = { 8, 6561, - (long *)_vq_lengthlist__44c4_s_p1_0, + (char *)_vq_lengthlist__44c4_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44c4_s_p1_0, 0 @@ -6482,7 +6482,7 @@ static const long _vq_quantlist__44c4_s_p2_0[] = { 4, }; -static const long _vq_lengthlist__44c4_s_p2_0[] = { +static const char _vq_lengthlist__44c4_s_p2_0[] = { 2, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 5, 6, 6, 0, 0, 0, 7, 7, 0, 0, 0, 7, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0, @@ -6527,7 +6527,7 @@ static const long _vq_lengthlist__44c4_s_p2_0[] = { static const static_codebook _44c4_s_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44c4_s_p2_0, + (char *)_vq_lengthlist__44c4_s_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c4_s_p2_0, 0 @@ -6541,7 +6541,7 @@ static const long _vq_quantlist__44c4_s_p3_0[] = { 4, }; -static const long _vq_lengthlist__44c4_s_p3_0[] = { +static const char _vq_lengthlist__44c4_s_p3_0[] = { 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -6586,7 +6586,7 @@ static const long _vq_lengthlist__44c4_s_p3_0[] = { static const static_codebook _44c4_s_p3_0 = { 4, 625, - (long *)_vq_lengthlist__44c4_s_p3_0, + (char *)_vq_lengthlist__44c4_s_p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c4_s_p3_0, 0 @@ -6604,7 +6604,7 @@ static const long _vq_quantlist__44c4_s_p4_0[] = { 8, }; -static const long _vq_lengthlist__44c4_s_p4_0[] = { +static const char _vq_lengthlist__44c4_s_p4_0[] = { 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, @@ -6615,7 +6615,7 @@ static const long _vq_lengthlist__44c4_s_p4_0[] = { static const static_codebook _44c4_s_p4_0 = { 2, 81, - (long *)_vq_lengthlist__44c4_s_p4_0, + (char *)_vq_lengthlist__44c4_s_p4_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c4_s_p4_0, 0 @@ -6633,7 +6633,7 @@ static const long _vq_quantlist__44c4_s_p5_0[] = { 8, }; -static const long _vq_lengthlist__44c4_s_p5_0[] = { +static const char _vq_lengthlist__44c4_s_p5_0[] = { 2, 3, 3, 6, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 4, 5, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7, 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10, 9, 0, 0, 0, @@ -6644,7 +6644,7 @@ static const long _vq_lengthlist__44c4_s_p5_0[] = { static const static_codebook _44c4_s_p5_0 = { 2, 81, - (long *)_vq_lengthlist__44c4_s_p5_0, + (char *)_vq_lengthlist__44c4_s_p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c4_s_p5_0, 0 @@ -6670,7 +6670,7 @@ static const long _vq_quantlist__44c4_s_p6_0[] = { 16, }; -static const long _vq_lengthlist__44c4_s_p6_0[] = { +static const char _vq_lengthlist__44c4_s_p6_0[] = { 2, 4, 4, 6, 6, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11, 11, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11, 11,11, 0, 4, 4, 7, 6, 8, 8, 9, 9, 9, 9,10,10,11, @@ -6694,7 +6694,7 @@ static const long _vq_lengthlist__44c4_s_p6_0[] = { static const static_codebook _44c4_s_p6_0 = { 2, 289, - (long *)_vq_lengthlist__44c4_s_p6_0, + (char *)_vq_lengthlist__44c4_s_p6_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c4_s_p6_0, 0 @@ -6706,7 +6706,7 @@ static const long _vq_quantlist__44c4_s_p7_0[] = { 2, }; -static const long _vq_lengthlist__44c4_s_p7_0[] = { +static const char _vq_lengthlist__44c4_s_p7_0[] = { 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11, 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11, 10,11,11,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9, @@ -6717,7 +6717,7 @@ static const long _vq_lengthlist__44c4_s_p7_0[] = { static const static_codebook _44c4_s_p7_0 = { 4, 81, - (long *)_vq_lengthlist__44c4_s_p7_0, + (char *)_vq_lengthlist__44c4_s_p7_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44c4_s_p7_0, 0 @@ -6737,7 +6737,7 @@ static const long _vq_quantlist__44c4_s_p7_1[] = { 10, }; -static const long _vq_lengthlist__44c4_s_p7_1[] = { +static const char _vq_lengthlist__44c4_s_p7_1[] = { 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7, @@ -6750,7 +6750,7 @@ static const long _vq_lengthlist__44c4_s_p7_1[] = { static const static_codebook _44c4_s_p7_1 = { 2, 121, - (long *)_vq_lengthlist__44c4_s_p7_1, + (char *)_vq_lengthlist__44c4_s_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c4_s_p7_1, 0 @@ -6772,7 +6772,7 @@ static const long _vq_quantlist__44c4_s_p8_0[] = { 12, }; -static const long _vq_lengthlist__44c4_s_p8_0[] = { +static const char _vq_lengthlist__44c4_s_p8_0[] = { 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5, 7, 7, 8, 8, 8, 8, 9,10,11,11, 7, 5, 5, 7, 7, 8, 8, 9, 9,10,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9, @@ -6788,7 +6788,7 @@ static const long _vq_lengthlist__44c4_s_p8_0[] = { static const static_codebook _44c4_s_p8_0 = { 2, 169, - (long *)_vq_lengthlist__44c4_s_p8_0, + (char *)_vq_lengthlist__44c4_s_p8_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44c4_s_p8_0, 0 @@ -6802,14 +6802,14 @@ static const long _vq_quantlist__44c4_s_p8_1[] = { 4, }; -static const long _vq_lengthlist__44c4_s_p8_1[] = { +static const char _vq_lengthlist__44c4_s_p8_1[] = { 2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 5, 4, 5, 5, 6, 5, 5, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _44c4_s_p8_1 = { 2, 25, - (long *)_vq_lengthlist__44c4_s_p8_1, + (char *)_vq_lengthlist__44c4_s_p8_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c4_s_p8_1, 0 @@ -6831,7 +6831,7 @@ static const long _vq_quantlist__44c4_s_p9_0[] = { 12, }; -static const long _vq_lengthlist__44c4_s_p9_0[] = { +static const char _vq_lengthlist__44c4_s_p9_0[] = { 1, 3, 3,12,12,12,12,12,12,12,12,12,12, 4, 7, 7, 12,12,12,12,12,12,12,12,12,12, 3, 8, 8,12,12,12, 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, @@ -6847,7 +6847,7 @@ static const long _vq_lengthlist__44c4_s_p9_0[] = { static const static_codebook _44c4_s_p9_0 = { 2, 169, - (long *)_vq_lengthlist__44c4_s_p9_0, + (char *)_vq_lengthlist__44c4_s_p9_0, 1, -513964032, 1628680192, 4, 0, (long *)_vq_quantlist__44c4_s_p9_0, 0 @@ -6871,7 +6871,7 @@ static const long _vq_quantlist__44c4_s_p9_1[] = { 14, }; -static const long _vq_lengthlist__44c4_s_p9_1[] = { +static const char _vq_lengthlist__44c4_s_p9_1[] = { 1, 4, 4, 5, 5, 7, 7, 9, 8,10, 9,10,10,10,10, 6, 5, 5, 7, 7, 9, 8,10, 9,11,10,12,12,13,13, 6, 5, 5, 7, 7, 9, 9,10,10,11,11,12,12,12,13,19, 8, 8, @@ -6891,7 +6891,7 @@ static const long _vq_lengthlist__44c4_s_p9_1[] = { static const static_codebook _44c4_s_p9_1 = { 2, 225, - (long *)_vq_lengthlist__44c4_s_p9_1, + (char *)_vq_lengthlist__44c4_s_p9_1, 1, -520986624, 1620377600, 4, 0, (long *)_vq_quantlist__44c4_s_p9_1, 0 @@ -6921,7 +6921,7 @@ static const long _vq_quantlist__44c4_s_p9_2[] = { 20, }; -static const long _vq_lengthlist__44c4_s_p9_2[] = { +static const char _vq_lengthlist__44c4_s_p9_2[] = { 2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9,11, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10,11, 6, 6, 7, 7, 8, @@ -6954,13 +6954,13 @@ static const long _vq_lengthlist__44c4_s_p9_2[] = { static const static_codebook _44c4_s_p9_2 = { 2, 441, - (long *)_vq_lengthlist__44c4_s_p9_2, + (char *)_vq_lengthlist__44c4_s_p9_2, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__44c4_s_p9_2, 0 }; -static const long _huff_lengthlist__44c4_s_short[] = { +static const char _huff_lengthlist__44c4_s_short[] = { 4, 7,14,10,15,10,12,15,16,15, 4, 2,11, 5,10, 6, 8,11,14,14,14,10, 7,11, 6, 8,10,11,13,15, 9, 4, 11, 5, 9, 6, 9,12,14,15,14, 9, 6, 9, 4, 5, 7,10, @@ -6972,13 +6972,13 @@ static const long _huff_lengthlist__44c4_s_short[] = { static const static_codebook _huff_book__44c4_s_short = { 2, 100, - (long *)_huff_lengthlist__44c4_s_short, + (char *)_huff_lengthlist__44c4_s_short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44c5_s_long[] = { +static const char _huff_lengthlist__44c5_s_long[] = { 3, 8, 9,13,10,12,12,12,12,12, 6, 4, 6, 8, 6, 8, 10,10,11,12, 8, 5, 4,10, 4, 7, 8, 9,10,11,13, 8, 10, 8, 9, 9,11,12,13,14,10, 6, 4, 9, 3, 5, 6, 8, @@ -6990,7 +6990,7 @@ static const long _huff_lengthlist__44c5_s_long[] = { static const static_codebook _huff_book__44c5_s_long = { 2, 100, - (long *)_huff_lengthlist__44c5_s_long, + (char *)_huff_lengthlist__44c5_s_long, 0, 0, 0, 0, 0, NULL, 0 @@ -7002,7 +7002,7 @@ static const long _vq_quantlist__44c5_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__44c5_s_p1_0[] = { +static const char _vq_lengthlist__44c5_s_p1_0[] = { 2, 4, 4, 0, 0, 0, 0, 0, 0, 4, 7, 7, 0, 0, 0, 0, 0, 0, 4, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7418,7 +7418,7 @@ static const long _vq_lengthlist__44c5_s_p1_0[] = { static const static_codebook _44c5_s_p1_0 = { 8, 6561, - (long *)_vq_lengthlist__44c5_s_p1_0, + (char *)_vq_lengthlist__44c5_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44c5_s_p1_0, 0 @@ -7432,7 +7432,7 @@ static const long _vq_quantlist__44c5_s_p2_0[] = { 4, }; -static const long _vq_lengthlist__44c5_s_p2_0[] = { +static const char _vq_lengthlist__44c5_s_p2_0[] = { 2, 4, 4, 0, 0, 0, 5, 5, 0, 0, 0, 5, 5, 0, 0, 0, 8, 7, 0, 0, 0, 0, 0, 0, 0, 4, 6, 6, 0, 0, 0, 8, 8, 0, 0, 0, 8, 7, 0, 0, 0,10,10, 0, 0, 0, 0, 0, @@ -7477,7 +7477,7 @@ static const long _vq_lengthlist__44c5_s_p2_0[] = { static const static_codebook _44c5_s_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44c5_s_p2_0, + (char *)_vq_lengthlist__44c5_s_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c5_s_p2_0, 0 @@ -7491,7 +7491,7 @@ static const long _vq_quantlist__44c5_s_p3_0[] = { 4, }; -static const long _vq_lengthlist__44c5_s_p3_0[] = { +static const char _vq_lengthlist__44c5_s_p3_0[] = { 2, 4, 3, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -7536,7 +7536,7 @@ static const long _vq_lengthlist__44c5_s_p3_0[] = { static const static_codebook _44c5_s_p3_0 = { 4, 625, - (long *)_vq_lengthlist__44c5_s_p3_0, + (char *)_vq_lengthlist__44c5_s_p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c5_s_p3_0, 0 @@ -7554,7 +7554,7 @@ static const long _vq_quantlist__44c5_s_p4_0[] = { 8, }; -static const long _vq_lengthlist__44c5_s_p4_0[] = { +static const char _vq_lengthlist__44c5_s_p4_0[] = { 2, 3, 3, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 4, 4, 6, 6, 0, 0, 0, 0, 0, 5, 5, 6, 6, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, @@ -7565,7 +7565,7 @@ static const long _vq_lengthlist__44c5_s_p4_0[] = { static const static_codebook _44c5_s_p4_0 = { 2, 81, - (long *)_vq_lengthlist__44c5_s_p4_0, + (char *)_vq_lengthlist__44c5_s_p4_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c5_s_p4_0, 0 @@ -7583,7 +7583,7 @@ static const long _vq_quantlist__44c5_s_p5_0[] = { 8, }; -static const long _vq_lengthlist__44c5_s_p5_0[] = { +static const char _vq_lengthlist__44c5_s_p5_0[] = { 2, 4, 3, 6, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7, 7, 7, 9, 9, 0, 0, 0, 7, 6, 7, 7, 9, 9, 0, 0, 0, @@ -7594,7 +7594,7 @@ static const long _vq_lengthlist__44c5_s_p5_0[] = { static const static_codebook _44c5_s_p5_0 = { 2, 81, - (long *)_vq_lengthlist__44c5_s_p5_0, + (char *)_vq_lengthlist__44c5_s_p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c5_s_p5_0, 0 @@ -7620,7 +7620,7 @@ static const long _vq_quantlist__44c5_s_p6_0[] = { 16, }; -static const long _vq_lengthlist__44c5_s_p6_0[] = { +static const char _vq_lengthlist__44c5_s_p6_0[] = { 2, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,10,11, 11, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11, 12,12, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11, @@ -7644,7 +7644,7 @@ static const long _vq_lengthlist__44c5_s_p6_0[] = { static const static_codebook _44c5_s_p6_0 = { 2, 289, - (long *)_vq_lengthlist__44c5_s_p6_0, + (char *)_vq_lengthlist__44c5_s_p6_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c5_s_p6_0, 0 @@ -7656,7 +7656,7 @@ static const long _vq_quantlist__44c5_s_p7_0[] = { 2, }; -static const long _vq_lengthlist__44c5_s_p7_0[] = { +static const char _vq_lengthlist__44c5_s_p7_0[] = { 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11, 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11, 10,11,11,11, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9, @@ -7667,7 +7667,7 @@ static const long _vq_lengthlist__44c5_s_p7_0[] = { static const static_codebook _44c5_s_p7_0 = { 4, 81, - (long *)_vq_lengthlist__44c5_s_p7_0, + (char *)_vq_lengthlist__44c5_s_p7_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44c5_s_p7_0, 0 @@ -7687,7 +7687,7 @@ static const long _vq_quantlist__44c5_s_p7_1[] = { 10, }; -static const long _vq_lengthlist__44c5_s_p7_1[] = { +static const char _vq_lengthlist__44c5_s_p7_1[] = { 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7, @@ -7700,7 +7700,7 @@ static const long _vq_lengthlist__44c5_s_p7_1[] = { static const static_codebook _44c5_s_p7_1 = { 2, 121, - (long *)_vq_lengthlist__44c5_s_p7_1, + (char *)_vq_lengthlist__44c5_s_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c5_s_p7_1, 0 @@ -7722,7 +7722,7 @@ static const long _vq_quantlist__44c5_s_p8_0[] = { 12, }; -static const long _vq_lengthlist__44c5_s_p8_0[] = { +static const char _vq_lengthlist__44c5_s_p8_0[] = { 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5, 7, 7, 8, 8, 8, 9,10,10,10,10, 7, 5, 5, 7, 7, 8, 8, 9, 9,10,10,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9, @@ -7738,7 +7738,7 @@ static const long _vq_lengthlist__44c5_s_p8_0[] = { static const static_codebook _44c5_s_p8_0 = { 2, 169, - (long *)_vq_lengthlist__44c5_s_p8_0, + (char *)_vq_lengthlist__44c5_s_p8_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44c5_s_p8_0, 0 @@ -7752,14 +7752,14 @@ static const long _vq_quantlist__44c5_s_p8_1[] = { 4, }; -static const long _vq_lengthlist__44c5_s_p8_1[] = { +static const char _vq_lengthlist__44c5_s_p8_1[] = { 2, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 4, 5, 5, 5, 6, 5, 5, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _44c5_s_p8_1 = { 2, 25, - (long *)_vq_lengthlist__44c5_s_p8_1, + (char *)_vq_lengthlist__44c5_s_p8_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c5_s_p8_1, 0 @@ -7783,7 +7783,7 @@ static const long _vq_quantlist__44c5_s_p9_0[] = { 14, }; -static const long _vq_lengthlist__44c5_s_p9_0[] = { +static const char _vq_lengthlist__44c5_s_p9_0[] = { 1, 3, 3,13,13,13,13,13,13,13,13,13,13,13,13, 4, 7, 7,13,13,13,13,13,13,13,13,13,13,13,13, 3, 8, 6,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, @@ -7803,7 +7803,7 @@ static const long _vq_lengthlist__44c5_s_p9_0[] = { static const static_codebook _44c5_s_p9_0 = { 2, 225, - (long *)_vq_lengthlist__44c5_s_p9_0, + (char *)_vq_lengthlist__44c5_s_p9_0, 1, -512522752, 1628852224, 4, 0, (long *)_vq_quantlist__44c5_s_p9_0, 0 @@ -7829,7 +7829,7 @@ static const long _vq_quantlist__44c5_s_p9_1[] = { 16, }; -static const long _vq_lengthlist__44c5_s_p9_1[] = { +static const char _vq_lengthlist__44c5_s_p9_1[] = { 1, 4, 4, 5, 5, 7, 7, 9, 8,10, 9,10,10,11,10,11, 11, 6, 5, 5, 7, 7, 8, 9,10,10,11,10,12,11,12,11, 13,12, 6, 5, 5, 7, 7, 9, 9,10,10,11,11,12,12,13, @@ -7853,7 +7853,7 @@ static const long _vq_lengthlist__44c5_s_p9_1[] = { static const static_codebook _44c5_s_p9_1 = { 2, 289, - (long *)_vq_lengthlist__44c5_s_p9_1, + (char *)_vq_lengthlist__44c5_s_p9_1, 1, -520814592, 1620377600, 5, 0, (long *)_vq_quantlist__44c5_s_p9_1, 0 @@ -7883,7 +7883,7 @@ static const long _vq_quantlist__44c5_s_p9_2[] = { 20, }; -static const long _vq_lengthlist__44c5_s_p9_2[] = { +static const char _vq_lengthlist__44c5_s_p9_2[] = { 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9,11, 5, 6, 7, 7, 8, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,11, 5, 5, 7, 7, 7, @@ -7916,13 +7916,13 @@ static const long _vq_lengthlist__44c5_s_p9_2[] = { static const static_codebook _44c5_s_p9_2 = { 2, 441, - (long *)_vq_lengthlist__44c5_s_p9_2, + (char *)_vq_lengthlist__44c5_s_p9_2, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__44c5_s_p9_2, 0 }; -static const long _huff_lengthlist__44c5_s_short[] = { +static const char _huff_lengthlist__44c5_s_short[] = { 5, 8,10,14,11,11,12,16,15,17, 5, 5, 7, 9, 7, 8, 10,13,17,17, 7, 5, 5,10, 5, 7, 8,11,13,15,10, 8, 10, 8, 8, 8,11,15,18,18, 8, 5, 5, 8, 3, 4, 6,10, @@ -7934,13 +7934,13 @@ static const long _huff_lengthlist__44c5_s_short[] = { static const static_codebook _huff_book__44c5_s_short = { 2, 100, - (long *)_huff_lengthlist__44c5_s_short, + (char *)_huff_lengthlist__44c5_s_short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44c6_s_long[] = { +static const char _huff_lengthlist__44c6_s_long[] = { 3, 8,11,13,14,14,13,13,16,14, 6, 3, 4, 7, 9, 9, 10,11,14,13,10, 4, 3, 5, 7, 7, 9,10,13,15,12, 7, 4, 4, 6, 6, 8,10,13,15,12, 8, 6, 6, 6, 6, 8,10, @@ -7952,7 +7952,7 @@ static const long _huff_lengthlist__44c6_s_long[] = { static const static_codebook _huff_book__44c6_s_long = { 2, 100, - (long *)_huff_lengthlist__44c6_s_long, + (char *)_huff_lengthlist__44c6_s_long, 0, 0, 0, 0, 0, NULL, 0 @@ -7964,7 +7964,7 @@ static const long _vq_quantlist__44c6_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__44c6_s_p1_0[] = { +static const char _vq_lengthlist__44c6_s_p1_0[] = { 1, 5, 5, 0, 5, 5, 0, 5, 5, 5, 8, 7, 0, 9, 9, 0, 9, 8, 5, 7, 8, 0, 9, 9, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 9, 8, 0, 8, 8, 0, 8, 8, 5, 8, 9, @@ -7974,7 +7974,7 @@ static const long _vq_lengthlist__44c6_s_p1_0[] = { }; static const static_codebook _44c6_s_p1_0 = { 4, 81, - (long *)_vq_lengthlist__44c6_s_p1_0, + (char *)_vq_lengthlist__44c6_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44c6_s_p1_0, 0 @@ -7988,7 +7988,7 @@ static const long _vq_quantlist__44c6_s_p2_0[] = { 4, }; -static const long _vq_lengthlist__44c6_s_p2_0[] = { +static const char _vq_lengthlist__44c6_s_p2_0[] = { 3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 7, 7, 9, 9, 0, 0, 0, 9, 9, 5, 7, 7, 9, 9, 0, 8, 8,10,10, 0, 8, 7,10, 9, 0,10,10,11,11, 0, 0, 0, @@ -8033,7 +8033,7 @@ static const long _vq_lengthlist__44c6_s_p2_0[] = { static const static_codebook _44c6_s_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44c6_s_p2_0, + (char *)_vq_lengthlist__44c6_s_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c6_s_p2_0, 0 @@ -8051,7 +8051,7 @@ static const long _vq_quantlist__44c6_s_p3_0[] = { 8, }; -static const long _vq_lengthlist__44c6_s_p3_0[] = { +static const char _vq_lengthlist__44c6_s_p3_0[] = { 2, 3, 4, 6, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7, 9,10, 0, 4, 4, 6, 6, 7, 7,10, 9, 0, 5, 5, 7, 7, 8, 8,10,10, 0, 0, 0, 7, 6, 8, 8,10,10, 0, 0, 0, @@ -8062,7 +8062,7 @@ static const long _vq_lengthlist__44c6_s_p3_0[] = { static const static_codebook _44c6_s_p3_0 = { 2, 81, - (long *)_vq_lengthlist__44c6_s_p3_0, + (char *)_vq_lengthlist__44c6_s_p3_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c6_s_p3_0, 0 @@ -8088,7 +8088,7 @@ static const long _vq_quantlist__44c6_s_p4_0[] = { 16, }; -static const long _vq_lengthlist__44c6_s_p4_0[] = { +static const char _vq_lengthlist__44c6_s_p4_0[] = { 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9,10,10, 10, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,10, 11,11, 0, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10, @@ -8112,7 +8112,7 @@ static const long _vq_lengthlist__44c6_s_p4_0[] = { static const static_codebook _44c6_s_p4_0 = { 2, 289, - (long *)_vq_lengthlist__44c6_s_p4_0, + (char *)_vq_lengthlist__44c6_s_p4_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c6_s_p4_0, 0 @@ -8124,7 +8124,7 @@ static const long _vq_quantlist__44c6_s_p5_0[] = { 2, }; -static const long _vq_lengthlist__44c6_s_p5_0[] = { +static const char _vq_lengthlist__44c6_s_p5_0[] = { 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 6, 9, 9,10,10, 10, 9, 4, 6, 6, 9,10, 9,10, 9,10, 6, 9, 9,10,12, 11,10,11,11, 7,10, 9,11,12,12,12,12,12, 7,10,10, @@ -8135,7 +8135,7 @@ static const long _vq_lengthlist__44c6_s_p5_0[] = { static const static_codebook _44c6_s_p5_0 = { 4, 81, - (long *)_vq_lengthlist__44c6_s_p5_0, + (char *)_vq_lengthlist__44c6_s_p5_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44c6_s_p5_0, 0 @@ -8155,7 +8155,7 @@ static const long _vq_quantlist__44c6_s_p5_1[] = { 10, }; -static const long _vq_lengthlist__44c6_s_p5_1[] = { +static const char _vq_lengthlist__44c6_s_p5_1[] = { 3, 5, 4, 6, 6, 7, 7, 8, 8, 8, 8,11, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,11, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,11, 6, 6, 6, 6, 8, 8, 8, 8, 9, 9,11,11,11, 6, @@ -8168,7 +8168,7 @@ static const long _vq_lengthlist__44c6_s_p5_1[] = { static const static_codebook _44c6_s_p5_1 = { 2, 121, - (long *)_vq_lengthlist__44c6_s_p5_1, + (char *)_vq_lengthlist__44c6_s_p5_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c6_s_p5_1, 0 @@ -8190,7 +8190,7 @@ static const long _vq_quantlist__44c6_s_p6_0[] = { 12, }; -static const long _vq_lengthlist__44c6_s_p6_0[] = { +static const char _vq_lengthlist__44c6_s_p6_0[] = { 1, 4, 4, 6, 6, 8, 8, 8, 8,10, 9,10,10, 6, 5, 5, 7, 7, 9, 9, 9, 9,10,10,11,11, 6, 5, 5, 7, 7, 9, 9,10, 9,11,10,11,11, 0, 6, 6, 7, 7, 9, 9,10,10, @@ -8206,7 +8206,7 @@ static const long _vq_lengthlist__44c6_s_p6_0[] = { static const static_codebook _44c6_s_p6_0 = { 2, 169, - (long *)_vq_lengthlist__44c6_s_p6_0, + (char *)_vq_lengthlist__44c6_s_p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44c6_s_p6_0, 0 @@ -8220,14 +8220,14 @@ static const long _vq_quantlist__44c6_s_p6_1[] = { 4, }; -static const long _vq_lengthlist__44c6_s_p6_1[] = { +static const char _vq_lengthlist__44c6_s_p6_1[] = { 3, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _44c6_s_p6_1 = { 2, 25, - (long *)_vq_lengthlist__44c6_s_p6_1, + (char *)_vq_lengthlist__44c6_s_p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c6_s_p6_1, 0 @@ -8249,7 +8249,7 @@ static const long _vq_quantlist__44c6_s_p7_0[] = { 12, }; -static const long _vq_lengthlist__44c6_s_p7_0[] = { +static const char _vq_lengthlist__44c6_s_p7_0[] = { 1, 4, 4, 6, 6, 8, 8, 8, 8,10,10,11,10, 6, 5, 5, 7, 7, 8, 8, 9, 9,10,10,12,11, 6, 5, 5, 7, 7, 8, 8, 9, 9,10,10,12,11,21, 7, 7, 7, 7, 9, 9,10,10, @@ -8265,7 +8265,7 @@ static const long _vq_lengthlist__44c6_s_p7_0[] = { static const static_codebook _44c6_s_p7_0 = { 2, 169, - (long *)_vq_lengthlist__44c6_s_p7_0, + (char *)_vq_lengthlist__44c6_s_p7_0, 1, -523206656, 1618345984, 4, 0, (long *)_vq_quantlist__44c6_s_p7_0, 0 @@ -8285,7 +8285,7 @@ static const long _vq_quantlist__44c6_s_p7_1[] = { 10, }; -static const long _vq_lengthlist__44c6_s_p7_1[] = { +static const char _vq_lengthlist__44c6_s_p7_1[] = { 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 9, 5, 5, 6, 6, 7, 7, 7, 7, 8, 7, 8, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 9, 6, 6, 7, 7, 7, 7, 8, 7, 7, 8, 9, 9, 9, 7, @@ -8298,7 +8298,7 @@ static const long _vq_lengthlist__44c6_s_p7_1[] = { static const static_codebook _44c6_s_p7_1 = { 2, 121, - (long *)_vq_lengthlist__44c6_s_p7_1, + (char *)_vq_lengthlist__44c6_s_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c6_s_p7_1, 0 @@ -8322,7 +8322,7 @@ static const long _vq_quantlist__44c6_s_p8_0[] = { 14, }; -static const long _vq_lengthlist__44c6_s_p8_0[] = { +static const char _vq_lengthlist__44c6_s_p8_0[] = { 1, 4, 4, 7, 7, 8, 8, 7, 7, 8, 7, 9, 8,10, 9, 6, 5, 5, 8, 8, 9, 9, 8, 8, 9, 9,11,10,11,10, 6, 5, 5, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11,11,18, 8, 8, @@ -8342,7 +8342,7 @@ static const long _vq_lengthlist__44c6_s_p8_0[] = { static const static_codebook _44c6_s_p8_0 = { 2, 225, - (long *)_vq_lengthlist__44c6_s_p8_0, + (char *)_vq_lengthlist__44c6_s_p8_0, 1, -520986624, 1620377600, 4, 0, (long *)_vq_quantlist__44c6_s_p8_0, 0 @@ -8372,7 +8372,7 @@ static const long _vq_quantlist__44c6_s_p8_1[] = { 20, }; -static const long _vq_lengthlist__44c6_s_p8_1[] = { +static const char _vq_lengthlist__44c6_s_p8_1[] = { 3, 5, 5, 6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8, @@ -8405,7 +8405,7 @@ static const long _vq_lengthlist__44c6_s_p8_1[] = { static const static_codebook _44c6_s_p8_1 = { 2, 441, - (long *)_vq_lengthlist__44c6_s_p8_1, + (char *)_vq_lengthlist__44c6_s_p8_1, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__44c6_s_p8_1, 0 @@ -8427,7 +8427,7 @@ static const long _vq_quantlist__44c6_s_p9_0[] = { 12, }; -static const long _vq_lengthlist__44c6_s_p9_0[] = { +static const char _vq_lengthlist__44c6_s_p9_0[] = { 1, 3, 3,11,11,11,11,11,11,11,11,11,11, 4, 7, 7, 11,11,11,11,11,11,11,11,11,11, 5, 8, 9,11,11,11, 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, @@ -8443,7 +8443,7 @@ static const long _vq_lengthlist__44c6_s_p9_0[] = { static const static_codebook _44c6_s_p9_0 = { 2, 169, - (long *)_vq_lengthlist__44c6_s_p9_0, + (char *)_vq_lengthlist__44c6_s_p9_0, 1, -511845376, 1630791680, 4, 0, (long *)_vq_quantlist__44c6_s_p9_0, 0 @@ -8465,7 +8465,7 @@ static const long _vq_quantlist__44c6_s_p9_1[] = { 12, }; -static const long _vq_lengthlist__44c6_s_p9_1[] = { +static const char _vq_lengthlist__44c6_s_p9_1[] = { 1, 4, 4, 7, 7, 7, 7, 7, 6, 8, 8, 8, 8, 6, 6, 6, 8, 8, 8, 8, 8, 7, 9, 8,10,10, 5, 6, 6, 8, 8, 9, 9, 8, 8,10,10,10,10,16, 9, 9, 9, 9, 9, 9, 9, 8, @@ -8481,7 +8481,7 @@ static const long _vq_lengthlist__44c6_s_p9_1[] = { static const static_codebook _44c6_s_p9_1 = { 2, 169, - (long *)_vq_lengthlist__44c6_s_p9_1, + (char *)_vq_lengthlist__44c6_s_p9_1, 1, -518889472, 1622704128, 4, 0, (long *)_vq_quantlist__44c6_s_p9_1, 0 @@ -8539,7 +8539,7 @@ static const long _vq_quantlist__44c6_s_p9_2[] = { 48, }; -static const long _vq_lengthlist__44c6_s_p9_2[] = { +static const char _vq_lengthlist__44c6_s_p9_2[] = { 2, 4, 3, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, @@ -8548,13 +8548,13 @@ static const long _vq_lengthlist__44c6_s_p9_2[] = { static const static_codebook _44c6_s_p9_2 = { 1, 49, - (long *)_vq_lengthlist__44c6_s_p9_2, + (char *)_vq_lengthlist__44c6_s_p9_2, 1, -526909440, 1611661312, 6, 0, (long *)_vq_quantlist__44c6_s_p9_2, 0 }; -static const long _huff_lengthlist__44c6_s_short[] = { +static const char _huff_lengthlist__44c6_s_short[] = { 3, 9,11,11,13,14,19,17,17,19, 5, 4, 5, 8,10,10, 13,16,18,19, 7, 4, 4, 5, 8, 9,12,14,17,19, 8, 6, 5, 5, 7, 7,10,13,16,18,10, 8, 7, 6, 5, 5, 8,11, @@ -8566,13 +8566,13 @@ static const long _huff_lengthlist__44c6_s_short[] = { static const static_codebook _huff_book__44c6_s_short = { 2, 100, - (long *)_huff_lengthlist__44c6_s_short, + (char *)_huff_lengthlist__44c6_s_short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44c7_s_long[] = { +static const char _huff_lengthlist__44c7_s_long[] = { 3, 8,11,13,15,14,14,13,15,14, 6, 4, 5, 7, 9,10, 11,11,14,13,10, 4, 3, 5, 7, 8, 9,10,13,13,12, 7, 4, 4, 5, 6, 8, 9,12,14,13, 9, 6, 5, 5, 6, 8, 9, @@ -8584,7 +8584,7 @@ static const long _huff_lengthlist__44c7_s_long[] = { static const static_codebook _huff_book__44c7_s_long = { 2, 100, - (long *)_huff_lengthlist__44c7_s_long, + (char *)_huff_lengthlist__44c7_s_long, 0, 0, 0, 0, 0, NULL, 0 @@ -8596,7 +8596,7 @@ static const long _vq_quantlist__44c7_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__44c7_s_p1_0[] = { +static const char _vq_lengthlist__44c7_s_p1_0[] = { 1, 5, 5, 0, 5, 5, 0, 5, 5, 5, 8, 7, 0, 9, 9, 0, 9, 8, 5, 7, 8, 0, 9, 9, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 9, 9, 0, 8, 8, 0, 8, 8, 5, 8, 9, @@ -8607,7 +8607,7 @@ static const long _vq_lengthlist__44c7_s_p1_0[] = { static const static_codebook _44c7_s_p1_0 = { 4, 81, - (long *)_vq_lengthlist__44c7_s_p1_0, + (char *)_vq_lengthlist__44c7_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44c7_s_p1_0, 0 @@ -8621,7 +8621,7 @@ static const long _vq_quantlist__44c7_s_p2_0[] = { 4, }; -static const long _vq_lengthlist__44c7_s_p2_0[] = { +static const char _vq_lengthlist__44c7_s_p2_0[] = { 3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 7, 7, 9, 9, 0, 0, 0, 9, 9, 5, 7, 7, 9, 9, 0, 8, 8,10,10, 0, 8, 7,10, 9, 0,10,10,11,11, 0, 0, 0, @@ -8666,7 +8666,7 @@ static const long _vq_lengthlist__44c7_s_p2_0[] = { static const static_codebook _44c7_s_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44c7_s_p2_0, + (char *)_vq_lengthlist__44c7_s_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c7_s_p2_0, 0 @@ -8684,7 +8684,7 @@ static const long _vq_quantlist__44c7_s_p3_0[] = { 8, }; -static const long _vq_lengthlist__44c7_s_p3_0[] = { +static const char _vq_lengthlist__44c7_s_p3_0[] = { 2, 4, 4, 5, 5, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 6, 6, 8, 8,10,10, 0, 0, 0, 6, 6, 8, 8,10,10, 0, 0, 0, @@ -8695,7 +8695,7 @@ static const long _vq_lengthlist__44c7_s_p3_0[] = { static const static_codebook _44c7_s_p3_0 = { 2, 81, - (long *)_vq_lengthlist__44c7_s_p3_0, + (char *)_vq_lengthlist__44c7_s_p3_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c7_s_p3_0, 0 @@ -8721,7 +8721,7 @@ static const long _vq_quantlist__44c7_s_p4_0[] = { 16, }; -static const long _vq_lengthlist__44c7_s_p4_0[] = { +static const char _vq_lengthlist__44c7_s_p4_0[] = { 3, 4, 4, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11, 11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11, 12,12, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11, @@ -8745,7 +8745,7 @@ static const long _vq_lengthlist__44c7_s_p4_0[] = { static const static_codebook _44c7_s_p4_0 = { 2, 289, - (long *)_vq_lengthlist__44c7_s_p4_0, + (char *)_vq_lengthlist__44c7_s_p4_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c7_s_p4_0, 0 @@ -8757,7 +8757,7 @@ static const long _vq_quantlist__44c7_s_p5_0[] = { 2, }; -static const long _vq_lengthlist__44c7_s_p5_0[] = { +static const char _vq_lengthlist__44c7_s_p5_0[] = { 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 6, 7,10,10,10,10, 10, 9, 4, 6, 6,10,10,10,10, 9,10, 5,10,10, 9,11, 12,10,11,12, 7,10,10,11,12,12,12,12,12, 7,10,10, @@ -8768,7 +8768,7 @@ static const long _vq_lengthlist__44c7_s_p5_0[] = { static const static_codebook _44c7_s_p5_0 = { 4, 81, - (long *)_vq_lengthlist__44c7_s_p5_0, + (char *)_vq_lengthlist__44c7_s_p5_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44c7_s_p5_0, 0 @@ -8788,7 +8788,7 @@ static const long _vq_quantlist__44c7_s_p5_1[] = { 10, }; -static const long _vq_lengthlist__44c7_s_p5_1[] = { +static const char _vq_lengthlist__44c7_s_p5_1[] = { 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,11, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,12, 5, 5, 6, 6, 7, 7, 9, 9, 9, 9,12,12,12, 6, @@ -8801,7 +8801,7 @@ static const long _vq_lengthlist__44c7_s_p5_1[] = { static const static_codebook _44c7_s_p5_1 = { 2, 121, - (long *)_vq_lengthlist__44c7_s_p5_1, + (char *)_vq_lengthlist__44c7_s_p5_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c7_s_p5_1, 0 @@ -8823,7 +8823,7 @@ static const long _vq_quantlist__44c7_s_p6_0[] = { 12, }; -static const long _vq_lengthlist__44c7_s_p6_0[] = { +static const char _vq_lengthlist__44c7_s_p6_0[] = { 1, 4, 4, 6, 6, 7, 7, 8, 7, 9, 8,10,10, 6, 5, 5, 7, 7, 8, 8, 9, 9, 9,10,11,11, 7, 5, 5, 7, 7, 8, 8, 9, 9,10,10,11,11, 0, 7, 7, 7, 7, 9, 8, 9, 9, @@ -8839,7 +8839,7 @@ static const long _vq_lengthlist__44c7_s_p6_0[] = { static const static_codebook _44c7_s_p6_0 = { 2, 169, - (long *)_vq_lengthlist__44c7_s_p6_0, + (char *)_vq_lengthlist__44c7_s_p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44c7_s_p6_0, 0 @@ -8853,14 +8853,14 @@ static const long _vq_quantlist__44c7_s_p6_1[] = { 4, }; -static const long _vq_lengthlist__44c7_s_p6_1[] = { +static const char _vq_lengthlist__44c7_s_p6_1[] = { 3, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _44c7_s_p6_1 = { 2, 25, - (long *)_vq_lengthlist__44c7_s_p6_1, + (char *)_vq_lengthlist__44c7_s_p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c7_s_p6_1, 0 @@ -8882,7 +8882,7 @@ static const long _vq_quantlist__44c7_s_p7_0[] = { 12, }; -static const long _vq_lengthlist__44c7_s_p7_0[] = { +static const char _vq_lengthlist__44c7_s_p7_0[] = { 1, 4, 4, 6, 6, 7, 8, 9, 9,10,10,12,11, 6, 5, 5, 7, 7, 8, 8, 9,10,11,11,12,12, 7, 5, 5, 7, 7, 8, 8,10,10,11,11,12,12,20, 7, 7, 7, 7, 8, 9,10,10, @@ -8898,7 +8898,7 @@ static const long _vq_lengthlist__44c7_s_p7_0[] = { static const static_codebook _44c7_s_p7_0 = { 2, 169, - (long *)_vq_lengthlist__44c7_s_p7_0, + (char *)_vq_lengthlist__44c7_s_p7_0, 1, -523206656, 1618345984, 4, 0, (long *)_vq_quantlist__44c7_s_p7_0, 0 @@ -8918,7 +8918,7 @@ static const long _vq_quantlist__44c7_s_p7_1[] = { 10, }; -static const long _vq_lengthlist__44c7_s_p7_1[] = { +static const char _vq_lengthlist__44c7_s_p7_1[] = { 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, @@ -8931,7 +8931,7 @@ static const long _vq_lengthlist__44c7_s_p7_1[] = { static const static_codebook _44c7_s_p7_1 = { 2, 121, - (long *)_vq_lengthlist__44c7_s_p7_1, + (char *)_vq_lengthlist__44c7_s_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c7_s_p7_1, 0 @@ -8955,7 +8955,7 @@ static const long _vq_quantlist__44c7_s_p8_0[] = { 14, }; -static const long _vq_lengthlist__44c7_s_p8_0[] = { +static const char _vq_lengthlist__44c7_s_p8_0[] = { 1, 4, 4, 7, 7, 8, 8, 8, 7, 9, 8, 9, 9,10,10, 6, 5, 5, 7, 7, 9, 9, 8, 8,10, 9,11,10,12,11, 6, 5, 5, 8, 7, 9, 9, 8, 8,10,10,11,11,12,11,19, 8, 8, @@ -8975,7 +8975,7 @@ static const long _vq_lengthlist__44c7_s_p8_0[] = { static const static_codebook _44c7_s_p8_0 = { 2, 225, - (long *)_vq_lengthlist__44c7_s_p8_0, + (char *)_vq_lengthlist__44c7_s_p8_0, 1, -520986624, 1620377600, 4, 0, (long *)_vq_quantlist__44c7_s_p8_0, 0 @@ -9005,7 +9005,7 @@ static const long _vq_quantlist__44c7_s_p8_1[] = { 20, }; -static const long _vq_lengthlist__44c7_s_p8_1[] = { +static const char _vq_lengthlist__44c7_s_p8_1[] = { 3, 5, 5, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8, @@ -9038,7 +9038,7 @@ static const long _vq_lengthlist__44c7_s_p8_1[] = { static const static_codebook _44c7_s_p8_1 = { 2, 441, - (long *)_vq_lengthlist__44c7_s_p8_1, + (char *)_vq_lengthlist__44c7_s_p8_1, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__44c7_s_p8_1, 0 @@ -9060,7 +9060,7 @@ static const long _vq_quantlist__44c7_s_p9_0[] = { 12, }; -static const long _vq_lengthlist__44c7_s_p9_0[] = { +static const char _vq_lengthlist__44c7_s_p9_0[] = { 1, 3, 3,11,11,11,11,11,11,11,11,11,11, 4, 6, 6, 11,11,11,11,11,11,11,11,11,11, 4, 7, 7,11,11,11, 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, @@ -9076,7 +9076,7 @@ static const long _vq_lengthlist__44c7_s_p9_0[] = { static const static_codebook _44c7_s_p9_0 = { 2, 169, - (long *)_vq_lengthlist__44c7_s_p9_0, + (char *)_vq_lengthlist__44c7_s_p9_0, 1, -511845376, 1630791680, 4, 0, (long *)_vq_quantlist__44c7_s_p9_0, 0 @@ -9098,7 +9098,7 @@ static const long _vq_quantlist__44c7_s_p9_1[] = { 12, }; -static const long _vq_lengthlist__44c7_s_p9_1[] = { +static const char _vq_lengthlist__44c7_s_p9_1[] = { 1, 4, 4, 7, 7, 7, 7, 7, 6, 8, 8, 8, 8, 6, 6, 6, 8, 8, 9, 8, 8, 7, 9, 8,11,10, 5, 6, 6, 8, 8, 9, 8, 8, 8,10, 9,11,11,16, 8, 8, 9, 8, 9, 9, 9, 8, @@ -9114,7 +9114,7 @@ static const long _vq_lengthlist__44c7_s_p9_1[] = { static const static_codebook _44c7_s_p9_1 = { 2, 169, - (long *)_vq_lengthlist__44c7_s_p9_1, + (char *)_vq_lengthlist__44c7_s_p9_1, 1, -518889472, 1622704128, 4, 0, (long *)_vq_quantlist__44c7_s_p9_1, 0 @@ -9172,7 +9172,7 @@ static const long _vq_quantlist__44c7_s_p9_2[] = { 48, }; -static const long _vq_lengthlist__44c7_s_p9_2[] = { +static const char _vq_lengthlist__44c7_s_p9_2[] = { 2, 4, 3, 4, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, @@ -9181,13 +9181,13 @@ static const long _vq_lengthlist__44c7_s_p9_2[] = { static const static_codebook _44c7_s_p9_2 = { 1, 49, - (long *)_vq_lengthlist__44c7_s_p9_2, + (char *)_vq_lengthlist__44c7_s_p9_2, 1, -526909440, 1611661312, 6, 0, (long *)_vq_quantlist__44c7_s_p9_2, 0 }; -static const long _huff_lengthlist__44c7_s_short[] = { +static const char _huff_lengthlist__44c7_s_short[] = { 4,11,12,14,15,15,17,17,18,18, 5, 6, 6, 8, 9,10, 13,17,18,19, 7, 5, 4, 6, 8, 9,11,15,19,19, 8, 6, 5, 5, 6, 7,11,14,16,17, 9, 7, 7, 6, 7, 7,10,13, @@ -9199,13 +9199,13 @@ static const long _huff_lengthlist__44c7_s_short[] = { static const static_codebook _huff_book__44c7_s_short = { 2, 100, - (long *)_huff_lengthlist__44c7_s_short, + (char *)_huff_lengthlist__44c7_s_short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44c8_s_long[] = { +static const char _huff_lengthlist__44c8_s_long[] = { 3, 8,12,13,14,14,14,13,14,14, 6, 4, 5, 8,10,10, 11,11,14,13, 9, 5, 4, 5, 7, 8, 9,10,13,13,12, 7, 5, 4, 5, 6, 8, 9,12,13,13, 9, 6, 5, 5, 5, 7, 9, @@ -9217,7 +9217,7 @@ static const long _huff_lengthlist__44c8_s_long[] = { static const static_codebook _huff_book__44c8_s_long = { 2, 100, - (long *)_huff_lengthlist__44c8_s_long, + (char *)_huff_lengthlist__44c8_s_long, 0, 0, 0, 0, 0, NULL, 0 @@ -9229,7 +9229,7 @@ static const long _vq_quantlist__44c8_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__44c8_s_p1_0[] = { +static const char _vq_lengthlist__44c8_s_p1_0[] = { 1, 5, 5, 0, 5, 5, 0, 5, 5, 5, 7, 7, 0, 9, 8, 0, 9, 8, 6, 7, 7, 0, 8, 9, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 9, 8, 0, 8, 8, 0, 8, 8, 5, 8, 9, @@ -9240,7 +9240,7 @@ static const long _vq_lengthlist__44c8_s_p1_0[] = { static const static_codebook _44c8_s_p1_0 = { 4, 81, - (long *)_vq_lengthlist__44c8_s_p1_0, + (char *)_vq_lengthlist__44c8_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44c8_s_p1_0, 0 @@ -9254,7 +9254,7 @@ static const long _vq_quantlist__44c8_s_p2_0[] = { 4, }; -static const long _vq_lengthlist__44c8_s_p2_0[] = { +static const char _vq_lengthlist__44c8_s_p2_0[] = { 3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 7, 7, 9, 9, 0, 0, 0, 9, 9, 5, 7, 7, 9, 9, 0, 8, 7,10, 9, 0, 8, 7,10, 9, 0,10,10,11,11, 0, 0, 0, @@ -9299,7 +9299,7 @@ static const long _vq_lengthlist__44c8_s_p2_0[] = { static const static_codebook _44c8_s_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44c8_s_p2_0, + (char *)_vq_lengthlist__44c8_s_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c8_s_p2_0, 0 @@ -9317,7 +9317,7 @@ static const long _vq_quantlist__44c8_s_p3_0[] = { 8, }; -static const long _vq_lengthlist__44c8_s_p3_0[] = { +static const char _vq_lengthlist__44c8_s_p3_0[] = { 2, 4, 4, 5, 5, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 4, 4, 6, 6, 7, 7, 9, 9, 0, 5, 5, 6, 6, 8, 8,10,10, 0, 0, 0, 6, 6, 8, 8,10,10, 0, 0, 0, @@ -9328,7 +9328,7 @@ static const long _vq_lengthlist__44c8_s_p3_0[] = { static const static_codebook _44c8_s_p3_0 = { 2, 81, - (long *)_vq_lengthlist__44c8_s_p3_0, + (char *)_vq_lengthlist__44c8_s_p3_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c8_s_p3_0, 0 @@ -9354,7 +9354,7 @@ static const long _vq_quantlist__44c8_s_p4_0[] = { 16, }; -static const long _vq_lengthlist__44c8_s_p4_0[] = { +static const char _vq_lengthlist__44c8_s_p4_0[] = { 3, 4, 4, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11, 11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 8,10,10,11,11, 11,11, 0, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11, @@ -9378,7 +9378,7 @@ static const long _vq_lengthlist__44c8_s_p4_0[] = { static const static_codebook _44c8_s_p4_0 = { 2, 289, - (long *)_vq_lengthlist__44c8_s_p4_0, + (char *)_vq_lengthlist__44c8_s_p4_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c8_s_p4_0, 0 @@ -9390,7 +9390,7 @@ static const long _vq_quantlist__44c8_s_p5_0[] = { 2, }; -static const long _vq_lengthlist__44c8_s_p5_0[] = { +static const char _vq_lengthlist__44c8_s_p5_0[] = { 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 7, 6,10,10,10,10, 10,10, 4, 6, 6,10,10,10,10, 9,10, 5,10,10, 9,11, 11,10,11,11, 7,10,10,11,12,12,12,12,12, 7,10,10, @@ -9401,7 +9401,7 @@ static const long _vq_lengthlist__44c8_s_p5_0[] = { static const static_codebook _44c8_s_p5_0 = { 4, 81, - (long *)_vq_lengthlist__44c8_s_p5_0, + (char *)_vq_lengthlist__44c8_s_p5_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44c8_s_p5_0, 0 @@ -9421,7 +9421,7 @@ static const long _vq_quantlist__44c8_s_p5_1[] = { 10, }; -static const long _vq_lengthlist__44c8_s_p5_1[] = { +static const char _vq_lengthlist__44c8_s_p5_1[] = { 3, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11, 4, 5, 6, 6, 7, 7, 8, 8, 8, 8,11, 5, 5, 6, 6, 7, 7, 8, 8, 8, 9,12, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,12,12,12, 6, @@ -9434,7 +9434,7 @@ static const long _vq_lengthlist__44c8_s_p5_1[] = { static const static_codebook _44c8_s_p5_1 = { 2, 121, - (long *)_vq_lengthlist__44c8_s_p5_1, + (char *)_vq_lengthlist__44c8_s_p5_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c8_s_p5_1, 0 @@ -9456,7 +9456,7 @@ static const long _vq_quantlist__44c8_s_p6_0[] = { 12, }; -static const long _vq_lengthlist__44c8_s_p6_0[] = { +static const char _vq_lengthlist__44c8_s_p6_0[] = { 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5, 7, 7, 8, 8, 9, 9,10,10,11,11, 6, 5, 5, 7, 7, 8, 8, 9, 9,10,10,11,11, 0, 7, 7, 7, 7, 9, 9,10,10, @@ -9472,7 +9472,7 @@ static const long _vq_lengthlist__44c8_s_p6_0[] = { static const static_codebook _44c8_s_p6_0 = { 2, 169, - (long *)_vq_lengthlist__44c8_s_p6_0, + (char *)_vq_lengthlist__44c8_s_p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44c8_s_p6_0, 0 @@ -9486,14 +9486,14 @@ static const long _vq_quantlist__44c8_s_p6_1[] = { 4, }; -static const long _vq_lengthlist__44c8_s_p6_1[] = { +static const char _vq_lengthlist__44c8_s_p6_1[] = { 3, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 6, 5, 5, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _44c8_s_p6_1 = { 2, 25, - (long *)_vq_lengthlist__44c8_s_p6_1, + (char *)_vq_lengthlist__44c8_s_p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c8_s_p6_1, 0 @@ -9515,7 +9515,7 @@ static const long _vq_quantlist__44c8_s_p7_0[] = { 12, }; -static const long _vq_lengthlist__44c8_s_p7_0[] = { +static const char _vq_lengthlist__44c8_s_p7_0[] = { 1, 4, 4, 6, 6, 8, 7, 9, 9,10,10,12,12, 6, 5, 5, 7, 7, 8, 8,10,10,11,11,12,12, 7, 5, 5, 7, 7, 8, 8,10,10,11,11,12,12,21, 7, 7, 7, 7, 8, 9,10,10, @@ -9531,7 +9531,7 @@ static const long _vq_lengthlist__44c8_s_p7_0[] = { static const static_codebook _44c8_s_p7_0 = { 2, 169, - (long *)_vq_lengthlist__44c8_s_p7_0, + (char *)_vq_lengthlist__44c8_s_p7_0, 1, -523206656, 1618345984, 4, 0, (long *)_vq_quantlist__44c8_s_p7_0, 0 @@ -9551,7 +9551,7 @@ static const long _vq_quantlist__44c8_s_p7_1[] = { 10, }; -static const long _vq_lengthlist__44c8_s_p7_1[] = { +static const char _vq_lengthlist__44c8_s_p7_1[] = { 4, 5, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 7, @@ -9564,7 +9564,7 @@ static const long _vq_lengthlist__44c8_s_p7_1[] = { static const static_codebook _44c8_s_p7_1 = { 2, 121, - (long *)_vq_lengthlist__44c8_s_p7_1, + (char *)_vq_lengthlist__44c8_s_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c8_s_p7_1, 0 @@ -9588,7 +9588,7 @@ static const long _vq_quantlist__44c8_s_p8_0[] = { 14, }; -static const long _vq_lengthlist__44c8_s_p8_0[] = { +static const char _vq_lengthlist__44c8_s_p8_0[] = { 1, 4, 4, 7, 6, 8, 8, 8, 7, 9, 8,10,10,11,10, 6, 5, 5, 7, 7, 9, 9, 8, 8,10,10,11,11,12,11, 6, 5, 5, 7, 7, 9, 9, 9, 9,10,10,11,11,12,12,20, 8, 8, @@ -9608,7 +9608,7 @@ static const long _vq_lengthlist__44c8_s_p8_0[] = { static const static_codebook _44c8_s_p8_0 = { 2, 225, - (long *)_vq_lengthlist__44c8_s_p8_0, + (char *)_vq_lengthlist__44c8_s_p8_0, 1, -520986624, 1620377600, 4, 0, (long *)_vq_quantlist__44c8_s_p8_0, 0 @@ -9638,7 +9638,7 @@ static const long _vq_quantlist__44c8_s_p8_1[] = { 20, }; -static const long _vq_lengthlist__44c8_s_p8_1[] = { +static const char _vq_lengthlist__44c8_s_p8_1[] = { 4, 5, 5, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8, @@ -9671,7 +9671,7 @@ static const long _vq_lengthlist__44c8_s_p8_1[] = { static const static_codebook _44c8_s_p8_1 = { 2, 441, - (long *)_vq_lengthlist__44c8_s_p8_1, + (char *)_vq_lengthlist__44c8_s_p8_1, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__44c8_s_p8_1, 0 @@ -9697,7 +9697,7 @@ static const long _vq_quantlist__44c8_s_p9_0[] = { 16, }; -static const long _vq_lengthlist__44c8_s_p9_0[] = { +static const char _vq_lengthlist__44c8_s_p9_0[] = { 1, 4, 3,11,11,11,11,11,11,11,11,11,11,11,11,11, 11, 4, 7, 7,11,11,11,11,11,11,11,11,11,11,11,11, 11,11, 4, 8,11,11,11,11,11,11,11,11,11,11,11,11, @@ -9721,7 +9721,7 @@ static const long _vq_lengthlist__44c8_s_p9_0[] = { static const static_codebook _44c8_s_p9_0 = { 2, 289, - (long *)_vq_lengthlist__44c8_s_p9_0, + (char *)_vq_lengthlist__44c8_s_p9_0, 1, -509798400, 1631393792, 5, 0, (long *)_vq_quantlist__44c8_s_p9_0, 0 @@ -9749,7 +9749,7 @@ static const long _vq_quantlist__44c8_s_p9_1[] = { 18, }; -static const long _vq_lengthlist__44c8_s_p9_1[] = { +static const char _vq_lengthlist__44c8_s_p9_1[] = { 1, 4, 4, 7, 6, 7, 7, 7, 7, 8, 8, 9, 9,10,10,10, 10,11,11, 6, 6, 6, 8, 8, 9, 8, 8, 7,10, 8,11,10, 12,11,12,12,13,13, 5, 5, 6, 8, 8, 9, 9, 8, 8,10, @@ -9777,7 +9777,7 @@ static const long _vq_lengthlist__44c8_s_p9_1[] = { static const static_codebook _44c8_s_p9_1 = { 2, 361, - (long *)_vq_lengthlist__44c8_s_p9_1, + (char *)_vq_lengthlist__44c8_s_p9_1, 1, -518287360, 1622704128, 5, 0, (long *)_vq_quantlist__44c8_s_p9_1, 0 @@ -9835,7 +9835,7 @@ static const long _vq_quantlist__44c8_s_p9_2[] = { 48, }; -static const long _vq_lengthlist__44c8_s_p9_2[] = { +static const char _vq_lengthlist__44c8_s_p9_2[] = { 2, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, @@ -9844,13 +9844,13 @@ static const long _vq_lengthlist__44c8_s_p9_2[] = { static const static_codebook _44c8_s_p9_2 = { 1, 49, - (long *)_vq_lengthlist__44c8_s_p9_2, + (char *)_vq_lengthlist__44c8_s_p9_2, 1, -526909440, 1611661312, 6, 0, (long *)_vq_quantlist__44c8_s_p9_2, 0 }; -static const long _huff_lengthlist__44c8_s_short[] = { +static const char _huff_lengthlist__44c8_s_short[] = { 4,11,13,14,15,15,18,17,19,17, 5, 6, 8, 9,10,10, 12,15,19,19, 6, 6, 6, 6, 8, 8,11,14,18,19, 8, 6, 5, 4, 6, 7,10,13,16,17, 9, 7, 6, 5, 6, 7, 9,12, @@ -9862,13 +9862,13 @@ static const long _huff_lengthlist__44c8_s_short[] = { static const static_codebook _huff_book__44c8_s_short = { 2, 100, - (long *)_huff_lengthlist__44c8_s_short, + (char *)_huff_lengthlist__44c8_s_short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44c9_s_long[] = { +static const char _huff_lengthlist__44c9_s_long[] = { 3, 8,12,14,15,15,15,13,15,15, 6, 5, 8,10,12,12, 13,12,14,13,10, 6, 5, 6, 8, 9,11,11,13,13,13, 8, 5, 4, 5, 6, 8,10,11,13,14,10, 7, 5, 4, 5, 7, 9, @@ -9880,7 +9880,7 @@ static const long _huff_lengthlist__44c9_s_long[] = { static const static_codebook _huff_book__44c9_s_long = { 2, 100, - (long *)_huff_lengthlist__44c9_s_long, + (char *)_huff_lengthlist__44c9_s_long, 0, 0, 0, 0, 0, NULL, 0 @@ -9892,7 +9892,7 @@ static const long _vq_quantlist__44c9_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__44c9_s_p1_0[] = { +static const char _vq_lengthlist__44c9_s_p1_0[] = { 1, 5, 5, 0, 5, 5, 0, 5, 5, 6, 8, 8, 0, 9, 8, 0, 9, 8, 6, 8, 8, 0, 8, 9, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 8, 8, 0, 7, 7, 0, 8, 8, 5, 8, 8, @@ -9903,7 +9903,7 @@ static const long _vq_lengthlist__44c9_s_p1_0[] = { static const static_codebook _44c9_s_p1_0 = { 4, 81, - (long *)_vq_lengthlist__44c9_s_p1_0, + (char *)_vq_lengthlist__44c9_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44c9_s_p1_0, 0 @@ -9917,7 +9917,7 @@ static const long _vq_quantlist__44c9_s_p2_0[] = { 4, }; -static const long _vq_lengthlist__44c9_s_p2_0[] = { +static const char _vq_lengthlist__44c9_s_p2_0[] = { 3, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 5, 5, 8, 8, 0, 7, 7, 9, 9, 0, 0, 0, 9, 9, 6, 7, 7, 9, 8, 0, 8, 8, 9, 9, 0, 8, 7, 9, 9, 0, 9,10,10,10, 0, 0, 0, @@ -9962,7 +9962,7 @@ static const long _vq_lengthlist__44c9_s_p2_0[] = { static const static_codebook _44c9_s_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44c9_s_p2_0, + (char *)_vq_lengthlist__44c9_s_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c9_s_p2_0, 0 @@ -9980,7 +9980,7 @@ static const long _vq_quantlist__44c9_s_p3_0[] = { 8, }; -static const long _vq_lengthlist__44c9_s_p3_0[] = { +static const char _vq_lengthlist__44c9_s_p3_0[] = { 3, 4, 4, 5, 5, 6, 6, 8, 8, 0, 4, 4, 5, 5, 6, 7, 8, 8, 0, 4, 4, 5, 5, 7, 7, 8, 8, 0, 5, 5, 6, 6, 7, 7, 9, 9, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0, @@ -9991,7 +9991,7 @@ static const long _vq_lengthlist__44c9_s_p3_0[] = { static const static_codebook _44c9_s_p3_0 = { 2, 81, - (long *)_vq_lengthlist__44c9_s_p3_0, + (char *)_vq_lengthlist__44c9_s_p3_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c9_s_p3_0, 0 @@ -10017,7 +10017,7 @@ static const long _vq_quantlist__44c9_s_p4_0[] = { 16, }; -static const long _vq_lengthlist__44c9_s_p4_0[] = { +static const char _vq_lengthlist__44c9_s_p4_0[] = { 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,10, 10, 0, 5, 4, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 11,11, 0, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10, @@ -10041,7 +10041,7 @@ static const long _vq_lengthlist__44c9_s_p4_0[] = { static const static_codebook _44c9_s_p4_0 = { 2, 289, - (long *)_vq_lengthlist__44c9_s_p4_0, + (char *)_vq_lengthlist__44c9_s_p4_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c9_s_p4_0, 0 @@ -10053,7 +10053,7 @@ static const long _vq_quantlist__44c9_s_p5_0[] = { 2, }; -static const long _vq_lengthlist__44c9_s_p5_0[] = { +static const char _vq_lengthlist__44c9_s_p5_0[] = { 1, 4, 4, 5, 7, 7, 6, 7, 7, 4, 7, 6, 9,10,10,10, 10, 9, 4, 6, 7, 9,10,10,10, 9,10, 5, 9, 9, 9,11, 11,10,11,11, 7,10, 9,11,12,11,12,12,12, 7, 9,10, @@ -10064,7 +10064,7 @@ static const long _vq_lengthlist__44c9_s_p5_0[] = { static const static_codebook _44c9_s_p5_0 = { 4, 81, - (long *)_vq_lengthlist__44c9_s_p5_0, + (char *)_vq_lengthlist__44c9_s_p5_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44c9_s_p5_0, 0 @@ -10084,7 +10084,7 @@ static const long _vq_quantlist__44c9_s_p5_1[] = { 10, }; -static const long _vq_lengthlist__44c9_s_p5_1[] = { +static const char _vq_lengthlist__44c9_s_p5_1[] = { 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7,11, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8,11, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8,11, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,11,11,11, 6, @@ -10097,7 +10097,7 @@ static const long _vq_lengthlist__44c9_s_p5_1[] = { static const static_codebook _44c9_s_p5_1 = { 2, 121, - (long *)_vq_lengthlist__44c9_s_p5_1, + (char *)_vq_lengthlist__44c9_s_p5_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c9_s_p5_1, 0 @@ -10119,7 +10119,7 @@ static const long _vq_quantlist__44c9_s_p6_0[] = { 12, }; -static const long _vq_lengthlist__44c9_s_p6_0[] = { +static const char _vq_lengthlist__44c9_s_p6_0[] = { 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 5, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10, 6, 4, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10, 0, 6, 6, 7, 7, 8, 8, 9, 9, @@ -10135,7 +10135,7 @@ static const long _vq_lengthlist__44c9_s_p6_0[] = { static const static_codebook _44c9_s_p6_0 = { 2, 169, - (long *)_vq_lengthlist__44c9_s_p6_0, + (char *)_vq_lengthlist__44c9_s_p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44c9_s_p6_0, 0 @@ -10149,14 +10149,14 @@ static const long _vq_quantlist__44c9_s_p6_1[] = { 4, }; -static const long _vq_lengthlist__44c9_s_p6_1[] = { +static const char _vq_lengthlist__44c9_s_p6_1[] = { 4, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44c9_s_p6_1 = { 2, 25, - (long *)_vq_lengthlist__44c9_s_p6_1, + (char *)_vq_lengthlist__44c9_s_p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c9_s_p6_1, 0 @@ -10178,7 +10178,7 @@ static const long _vq_quantlist__44c9_s_p7_0[] = { 12, }; -static const long _vq_lengthlist__44c9_s_p7_0[] = { +static const char _vq_lengthlist__44c9_s_p7_0[] = { 2, 4, 4, 6, 6, 7, 7, 8, 8,10,10,11,11, 6, 4, 4, 6, 6, 8, 8, 9, 9,10,10,12,12, 6, 4, 5, 6, 6, 8, 8, 9, 9,10,10,12,12,20, 6, 6, 6, 6, 8, 8, 9,10, @@ -10194,7 +10194,7 @@ static const long _vq_lengthlist__44c9_s_p7_0[] = { static const static_codebook _44c9_s_p7_0 = { 2, 169, - (long *)_vq_lengthlist__44c9_s_p7_0, + (char *)_vq_lengthlist__44c9_s_p7_0, 1, -523206656, 1618345984, 4, 0, (long *)_vq_quantlist__44c9_s_p7_0, 0 @@ -10214,7 +10214,7 @@ static const long _vq_quantlist__44c9_s_p7_1[] = { 10, }; -static const long _vq_lengthlist__44c9_s_p7_1[] = { +static const char _vq_lengthlist__44c9_s_p7_1[] = { 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 6, @@ -10227,7 +10227,7 @@ static const long _vq_lengthlist__44c9_s_p7_1[] = { static const static_codebook _44c9_s_p7_1 = { 2, 121, - (long *)_vq_lengthlist__44c9_s_p7_1, + (char *)_vq_lengthlist__44c9_s_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c9_s_p7_1, 0 @@ -10251,7 +10251,7 @@ static const long _vq_quantlist__44c9_s_p8_0[] = { 14, }; -static const long _vq_lengthlist__44c9_s_p8_0[] = { +static const char _vq_lengthlist__44c9_s_p8_0[] = { 1, 4, 4, 7, 6, 8, 8, 8, 8, 9, 9,10,10,11,10, 6, 5, 5, 7, 7, 9, 9, 8, 9,10,10,11,11,12,12, 6, 5, 5, 7, 7, 9, 9, 9, 9,10,10,11,11,12,12,21, 7, 8, @@ -10271,7 +10271,7 @@ static const long _vq_lengthlist__44c9_s_p8_0[] = { static const static_codebook _44c9_s_p8_0 = { 2, 225, - (long *)_vq_lengthlist__44c9_s_p8_0, + (char *)_vq_lengthlist__44c9_s_p8_0, 1, -520986624, 1620377600, 4, 0, (long *)_vq_quantlist__44c9_s_p8_0, 0 @@ -10301,7 +10301,7 @@ static const long _vq_quantlist__44c9_s_p8_1[] = { 20, }; -static const long _vq_lengthlist__44c9_s_p8_1[] = { +static const char _vq_lengthlist__44c9_s_p8_1[] = { 4, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8, @@ -10334,7 +10334,7 @@ static const long _vq_lengthlist__44c9_s_p8_1[] = { static const static_codebook _44c9_s_p8_1 = { 2, 441, - (long *)_vq_lengthlist__44c9_s_p8_1, + (char *)_vq_lengthlist__44c9_s_p8_1, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__44c9_s_p8_1, 0 @@ -10362,7 +10362,7 @@ static const long _vq_quantlist__44c9_s_p9_0[] = { 18, }; -static const long _vq_lengthlist__44c9_s_p9_0[] = { +static const char _vq_lengthlist__44c9_s_p9_0[] = { 1, 4, 3,12,12,12,12,12,12,12,12,12,12,12,12,12, 12,12,12, 4, 5, 6,12,12,12,12,12,12,12,12,12,12, 12,12,12,12,12,12, 4, 6, 6,12,12,12,12,12,12,12, @@ -10390,7 +10390,7 @@ static const long _vq_lengthlist__44c9_s_p9_0[] = { static const static_codebook _44c9_s_p9_0 = { 2, 361, - (long *)_vq_lengthlist__44c9_s_p9_0, + (char *)_vq_lengthlist__44c9_s_p9_0, 1, -508535424, 1631393792, 5, 0, (long *)_vq_quantlist__44c9_s_p9_0, 0 @@ -10418,7 +10418,7 @@ static const long _vq_quantlist__44c9_s_p9_1[] = { 18, }; -static const long _vq_lengthlist__44c9_s_p9_1[] = { +static const char _vq_lengthlist__44c9_s_p9_1[] = { 1, 4, 4, 7, 7, 7, 7, 8, 7, 9, 8, 9, 9,10,10,11, 11,11,11, 6, 5, 5, 8, 8, 9, 9, 9, 8,10, 9,11,10, 12,12,13,12,13,13, 5, 5, 5, 8, 8, 9, 9, 9, 9,10, @@ -10446,7 +10446,7 @@ static const long _vq_lengthlist__44c9_s_p9_1[] = { static const static_codebook _44c9_s_p9_1 = { 2, 361, - (long *)_vq_lengthlist__44c9_s_p9_1, + (char *)_vq_lengthlist__44c9_s_p9_1, 1, -518287360, 1622704128, 5, 0, (long *)_vq_quantlist__44c9_s_p9_1, 0 @@ -10504,7 +10504,7 @@ static const long _vq_quantlist__44c9_s_p9_2[] = { 48, }; -static const long _vq_lengthlist__44c9_s_p9_2[] = { +static const char _vq_lengthlist__44c9_s_p9_2[] = { 2, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, @@ -10513,13 +10513,13 @@ static const long _vq_lengthlist__44c9_s_p9_2[] = { static const static_codebook _44c9_s_p9_2 = { 1, 49, - (long *)_vq_lengthlist__44c9_s_p9_2, + (char *)_vq_lengthlist__44c9_s_p9_2, 1, -526909440, 1611661312, 6, 0, (long *)_vq_quantlist__44c9_s_p9_2, 0 }; -static const long _huff_lengthlist__44c9_s_short[] = { +static const char _huff_lengthlist__44c9_s_short[] = { 5,13,18,16,17,17,19,18,19,19, 5, 7,10,11,12,12, 13,16,17,18, 6, 6, 7, 7, 9, 9,10,14,17,19, 8, 7, 6, 5, 6, 7, 9,12,19,17, 8, 7, 7, 6, 5, 6, 8,11, @@ -10531,13 +10531,13 @@ static const long _huff_lengthlist__44c9_s_short[] = { static const static_codebook _huff_book__44c9_s_short = { 2, 100, - (long *)_huff_lengthlist__44c9_s_short, + (char *)_huff_lengthlist__44c9_s_short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44c0_s_long[] = { +static const char _huff_lengthlist__44c0_s_long[] = { 5, 4, 8, 9, 8, 9,10,12,15, 4, 1, 5, 5, 6, 8,11, 12,12, 8, 5, 8, 9, 9,11,13,12,12, 9, 5, 8, 5, 7, 9,12,13,13, 8, 6, 8, 7, 7, 9,11,11,11, 9, 7, 9, @@ -10548,7 +10548,7 @@ static const long _huff_lengthlist__44c0_s_long[] = { static const static_codebook _huff_book__44c0_s_long = { 2, 81, - (long *)_huff_lengthlist__44c0_s_long, + (char *)_huff_lengthlist__44c0_s_long, 0, 0, 0, 0, 0, NULL, 0 @@ -10560,7 +10560,7 @@ static const long _vq_quantlist__44c0_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__44c0_s_p1_0[] = { +static const char _vq_lengthlist__44c0_s_p1_0[] = { 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -10976,7 +10976,7 @@ static const long _vq_lengthlist__44c0_s_p1_0[] = { static const static_codebook _44c0_s_p1_0 = { 8, 6561, - (long *)_vq_lengthlist__44c0_s_p1_0, + (char *)_vq_lengthlist__44c0_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44c0_s_p1_0, 0 @@ -10990,7 +10990,7 @@ static const long _vq_quantlist__44c0_s_p2_0[] = { 4, }; -static const long _vq_lengthlist__44c0_s_p2_0[] = { +static const char _vq_lengthlist__44c0_s_p2_0[] = { 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -11035,7 +11035,7 @@ static const long _vq_lengthlist__44c0_s_p2_0[] = { static const static_codebook _44c0_s_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44c0_s_p2_0, + (char *)_vq_lengthlist__44c0_s_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c0_s_p2_0, 0 @@ -11053,7 +11053,7 @@ static const long _vq_quantlist__44c0_s_p3_0[] = { 8, }; -static const long _vq_lengthlist__44c0_s_p3_0[] = { +static const char _vq_lengthlist__44c0_s_p3_0[] = { 1, 3, 2, 8, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, @@ -11064,7 +11064,7 @@ static const long _vq_lengthlist__44c0_s_p3_0[] = { static const static_codebook _44c0_s_p3_0 = { 2, 81, - (long *)_vq_lengthlist__44c0_s_p3_0, + (char *)_vq_lengthlist__44c0_s_p3_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c0_s_p3_0, 0 @@ -11082,7 +11082,7 @@ static const long _vq_quantlist__44c0_s_p4_0[] = { 8, }; -static const long _vq_lengthlist__44c0_s_p4_0[] = { +static const char _vq_lengthlist__44c0_s_p4_0[] = { 1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 7, 7, 7, 8, 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, @@ -11093,7 +11093,7 @@ static const long _vq_lengthlist__44c0_s_p4_0[] = { static const static_codebook _44c0_s_p4_0 = { 2, 81, - (long *)_vq_lengthlist__44c0_s_p4_0, + (char *)_vq_lengthlist__44c0_s_p4_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c0_s_p4_0, 0 @@ -11119,7 +11119,7 @@ static const long _vq_quantlist__44c0_s_p5_0[] = { 16, }; -static const long _vq_lengthlist__44c0_s_p5_0[] = { +static const char _vq_lengthlist__44c0_s_p5_0[] = { 1, 4, 3, 6, 6, 8, 7, 8, 8, 8, 8, 9, 9,10,10,11, 11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9, 9,10,10,10, 11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10, @@ -11143,7 +11143,7 @@ static const long _vq_lengthlist__44c0_s_p5_0[] = { static const static_codebook _44c0_s_p5_0 = { 2, 289, - (long *)_vq_lengthlist__44c0_s_p5_0, + (char *)_vq_lengthlist__44c0_s_p5_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c0_s_p5_0, 0 @@ -11155,7 +11155,7 @@ static const long _vq_quantlist__44c0_s_p6_0[] = { 2, }; -static const long _vq_lengthlist__44c0_s_p6_0[] = { +static const char _vq_lengthlist__44c0_s_p6_0[] = { 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,10, 9, 9, 4, 6, 7,10, 9, 9,11, 9, 9, 7,10,10,11,11, 11,12,10,11, 6, 9, 9,11,10,11,11,10,10, 6, 9, 9, @@ -11166,7 +11166,7 @@ static const long _vq_lengthlist__44c0_s_p6_0[] = { static const static_codebook _44c0_s_p6_0 = { 4, 81, - (long *)_vq_lengthlist__44c0_s_p6_0, + (char *)_vq_lengthlist__44c0_s_p6_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44c0_s_p6_0, 0 @@ -11186,7 +11186,7 @@ static const long _vq_quantlist__44c0_s_p6_1[] = { 10, }; -static const long _vq_lengthlist__44c0_s_p6_1[] = { +static const char _vq_lengthlist__44c0_s_p6_1[] = { 2, 3, 3, 6, 6, 7, 7, 7, 7, 7, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, @@ -11199,7 +11199,7 @@ static const long _vq_lengthlist__44c0_s_p6_1[] = { static const static_codebook _44c0_s_p6_1 = { 2, 121, - (long *)_vq_lengthlist__44c0_s_p6_1, + (char *)_vq_lengthlist__44c0_s_p6_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c0_s_p6_1, 0 @@ -11221,7 +11221,7 @@ static const long _vq_quantlist__44c0_s_p7_0[] = { 12, }; -static const long _vq_lengthlist__44c0_s_p7_0[] = { +static const char _vq_lengthlist__44c0_s_p7_0[] = { 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9, @@ -11237,7 +11237,7 @@ static const long _vq_lengthlist__44c0_s_p7_0[] = { static const static_codebook _44c0_s_p7_0 = { 2, 169, - (long *)_vq_lengthlist__44c0_s_p7_0, + (char *)_vq_lengthlist__44c0_s_p7_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44c0_s_p7_0, 0 @@ -11251,14 +11251,14 @@ static const long _vq_quantlist__44c0_s_p7_1[] = { 4, }; -static const long _vq_lengthlist__44c0_s_p7_1[] = { +static const char _vq_lengthlist__44c0_s_p7_1[] = { 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _44c0_s_p7_1 = { 2, 25, - (long *)_vq_lengthlist__44c0_s_p7_1, + (char *)_vq_lengthlist__44c0_s_p7_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c0_s_p7_1, 0 @@ -11272,7 +11272,7 @@ static const long _vq_quantlist__44c0_s_p8_0[] = { 4, }; -static const long _vq_lengthlist__44c0_s_p8_0[] = { +static const char _vq_lengthlist__44c0_s_p8_0[] = { 1, 5, 5,10,10, 6, 9, 8,10,10, 6,10, 9,10,10,10, 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, @@ -11317,7 +11317,7 @@ static const long _vq_lengthlist__44c0_s_p8_0[] = { static const static_codebook _44c0_s_p8_0 = { 4, 625, - (long *)_vq_lengthlist__44c0_s_p8_0, + (char *)_vq_lengthlist__44c0_s_p8_0, 1, -518283264, 1627103232, 3, 0, (long *)_vq_quantlist__44c0_s_p8_0, 0 @@ -11339,7 +11339,7 @@ static const long _vq_quantlist__44c0_s_p8_1[] = { 12, }; -static const long _vq_lengthlist__44c0_s_p8_1[] = { +static const char _vq_lengthlist__44c0_s_p8_1[] = { 1, 4, 4, 6, 6, 7, 7, 9, 9,11,12,13,12, 6, 5, 5, 7, 7, 8, 8,10, 9,12,12,12,12, 6, 5, 5, 7, 7, 8, 8,10, 9,12,11,11,13,16, 7, 7, 8, 8, 9, 9,10,10, @@ -11355,7 +11355,7 @@ static const long _vq_lengthlist__44c0_s_p8_1[] = { static const static_codebook _44c0_s_p8_1 = { 2, 169, - (long *)_vq_lengthlist__44c0_s_p8_1, + (char *)_vq_lengthlist__44c0_s_p8_1, 1, -522616832, 1620115456, 4, 0, (long *)_vq_quantlist__44c0_s_p8_1, 0 @@ -11381,7 +11381,7 @@ static const long _vq_quantlist__44c0_s_p8_2[] = { 16, }; -static const long _vq_lengthlist__44c0_s_p8_2[] = { +static const char _vq_lengthlist__44c0_s_p8_2[] = { 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, @@ -11405,13 +11405,13 @@ static const long _vq_lengthlist__44c0_s_p8_2[] = { static const static_codebook _44c0_s_p8_2 = { 2, 289, - (long *)_vq_lengthlist__44c0_s_p8_2, + (char *)_vq_lengthlist__44c0_s_p8_2, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c0_s_p8_2, 0 }; -static const long _huff_lengthlist__44c0_s_short[] = { +static const char _huff_lengthlist__44c0_s_short[] = { 9, 8,12,11,12,13,14,14,16, 6, 1, 5, 6, 6, 9,12, 14,17, 9, 4, 5, 9, 7, 9,13,15,16, 8, 5, 8, 6, 8, 10,13,17,17, 9, 6, 7, 7, 8, 9,13,15,17,11, 8, 9, @@ -11422,13 +11422,13 @@ static const long _huff_lengthlist__44c0_s_short[] = { static const static_codebook _huff_book__44c0_s_short = { 2, 81, - (long *)_huff_lengthlist__44c0_s_short, + (char *)_huff_lengthlist__44c0_s_short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44c0_sm_long[] = { +static const char _huff_lengthlist__44c0_sm_long[] = { 5, 4, 9,10, 9,10,11,12,13, 4, 1, 5, 7, 7, 9,11, 12,14, 8, 5, 7, 9, 8,10,13,13,13,10, 7, 9, 4, 6, 7,10,12,14, 9, 6, 7, 6, 6, 7,10,12,12, 9, 8, 9, @@ -11439,7 +11439,7 @@ static const long _huff_lengthlist__44c0_sm_long[] = { static const static_codebook _huff_book__44c0_sm_long = { 2, 81, - (long *)_huff_lengthlist__44c0_sm_long, + (char *)_huff_lengthlist__44c0_sm_long, 0, 0, 0, 0, 0, NULL, 0 @@ -11451,7 +11451,7 @@ static const long _vq_quantlist__44c0_sm_p1_0[] = { 2, }; -static const long _vq_lengthlist__44c0_sm_p1_0[] = { +static const char _vq_lengthlist__44c0_sm_p1_0[] = { 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -11867,7 +11867,7 @@ static const long _vq_lengthlist__44c0_sm_p1_0[] = { static const static_codebook _44c0_sm_p1_0 = { 8, 6561, - (long *)_vq_lengthlist__44c0_sm_p1_0, + (char *)_vq_lengthlist__44c0_sm_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44c0_sm_p1_0, 0 @@ -11881,7 +11881,7 @@ static const long _vq_quantlist__44c0_sm_p2_0[] = { 4, }; -static const long _vq_lengthlist__44c0_sm_p2_0[] = { +static const char _vq_lengthlist__44c0_sm_p2_0[] = { 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -11926,7 +11926,7 @@ static const long _vq_lengthlist__44c0_sm_p2_0[] = { static const static_codebook _44c0_sm_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44c0_sm_p2_0, + (char *)_vq_lengthlist__44c0_sm_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c0_sm_p2_0, 0 @@ -11944,7 +11944,7 @@ static const long _vq_quantlist__44c0_sm_p3_0[] = { 8, }; -static const long _vq_lengthlist__44c0_sm_p3_0[] = { +static const char _vq_lengthlist__44c0_sm_p3_0[] = { 1, 3, 3, 7, 7, 0, 0, 0, 0, 0, 5, 4, 7, 7, 0, 0, 0, 0, 0, 5, 5, 7, 7, 0, 0, 0, 0, 0, 6, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, @@ -11955,7 +11955,7 @@ static const long _vq_lengthlist__44c0_sm_p3_0[] = { static const static_codebook _44c0_sm_p3_0 = { 2, 81, - (long *)_vq_lengthlist__44c0_sm_p3_0, + (char *)_vq_lengthlist__44c0_sm_p3_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c0_sm_p3_0, 0 @@ -11973,7 +11973,7 @@ static const long _vq_quantlist__44c0_sm_p4_0[] = { 8, }; -static const long _vq_lengthlist__44c0_sm_p4_0[] = { +static const char _vq_lengthlist__44c0_sm_p4_0[] = { 1, 4, 3, 6, 6, 7, 7, 9, 9, 0, 5, 5, 7, 7, 8, 7, 9, 9, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0, @@ -11984,7 +11984,7 @@ static const long _vq_lengthlist__44c0_sm_p4_0[] = { static const static_codebook _44c0_sm_p4_0 = { 2, 81, - (long *)_vq_lengthlist__44c0_sm_p4_0, + (char *)_vq_lengthlist__44c0_sm_p4_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c0_sm_p4_0, 0 @@ -12010,7 +12010,7 @@ static const long _vq_quantlist__44c0_sm_p5_0[] = { 16, }; -static const long _vq_lengthlist__44c0_sm_p5_0[] = { +static const char _vq_lengthlist__44c0_sm_p5_0[] = { 1, 4, 4, 6, 6, 8, 8, 8, 8, 8, 8, 9, 9,10,10,11, 11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,11, 11,11, 0, 5, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10, @@ -12034,7 +12034,7 @@ static const long _vq_lengthlist__44c0_sm_p5_0[] = { static const static_codebook _44c0_sm_p5_0 = { 2, 289, - (long *)_vq_lengthlist__44c0_sm_p5_0, + (char *)_vq_lengthlist__44c0_sm_p5_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c0_sm_p5_0, 0 @@ -12046,7 +12046,7 @@ static const long _vq_quantlist__44c0_sm_p6_0[] = { 2, }; -static const long _vq_lengthlist__44c0_sm_p6_0[] = { +static const char _vq_lengthlist__44c0_sm_p6_0[] = { 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11, 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,10,11, 11,11,10,10, 6, 9, 9,11,11,10,11,10,10, 6, 9, 9, @@ -12057,7 +12057,7 @@ static const long _vq_lengthlist__44c0_sm_p6_0[] = { static const static_codebook _44c0_sm_p6_0 = { 4, 81, - (long *)_vq_lengthlist__44c0_sm_p6_0, + (char *)_vq_lengthlist__44c0_sm_p6_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44c0_sm_p6_0, 0 @@ -12077,7 +12077,7 @@ static const long _vq_quantlist__44c0_sm_p6_1[] = { 10, }; -static const long _vq_lengthlist__44c0_sm_p6_1[] = { +static const char _vq_lengthlist__44c0_sm_p6_1[] = { 2, 4, 4, 6, 6, 7, 7, 7, 7, 7, 8, 9, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,10, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, @@ -12090,7 +12090,7 @@ static const long _vq_lengthlist__44c0_sm_p6_1[] = { static const static_codebook _44c0_sm_p6_1 = { 2, 121, - (long *)_vq_lengthlist__44c0_sm_p6_1, + (char *)_vq_lengthlist__44c0_sm_p6_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c0_sm_p6_1, 0 @@ -12112,7 +12112,7 @@ static const long _vq_quantlist__44c0_sm_p7_0[] = { 12, }; -static const long _vq_lengthlist__44c0_sm_p7_0[] = { +static const char _vq_lengthlist__44c0_sm_p7_0[] = { 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 6, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9, @@ -12128,7 +12128,7 @@ static const long _vq_lengthlist__44c0_sm_p7_0[] = { static const static_codebook _44c0_sm_p7_0 = { 2, 169, - (long *)_vq_lengthlist__44c0_sm_p7_0, + (char *)_vq_lengthlist__44c0_sm_p7_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44c0_sm_p7_0, 0 @@ -12142,14 +12142,14 @@ static const long _vq_quantlist__44c0_sm_p7_1[] = { 4, }; -static const long _vq_lengthlist__44c0_sm_p7_1[] = { +static const char _vq_lengthlist__44c0_sm_p7_1[] = { 2, 4, 4, 4, 4, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _44c0_sm_p7_1 = { 2, 25, - (long *)_vq_lengthlist__44c0_sm_p7_1, + (char *)_vq_lengthlist__44c0_sm_p7_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c0_sm_p7_1, 0 @@ -12167,7 +12167,7 @@ static const long _vq_quantlist__44c0_sm_p8_0[] = { 8, }; -static const long _vq_lengthlist__44c0_sm_p8_0[] = { +static const char _vq_lengthlist__44c0_sm_p8_0[] = { 1, 3, 3,11,11,11,11,11,11, 3, 7, 6,11,11,11,11, 11,11, 4, 8, 7,11,11,11,11,11,11,11,11,11,11,11, 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, @@ -12178,7 +12178,7 @@ static const long _vq_lengthlist__44c0_sm_p8_0[] = { static const static_codebook _44c0_sm_p8_0 = { 2, 81, - (long *)_vq_lengthlist__44c0_sm_p8_0, + (char *)_vq_lengthlist__44c0_sm_p8_0, 1, -516186112, 1627103232, 4, 0, (long *)_vq_quantlist__44c0_sm_p8_0, 0 @@ -12200,7 +12200,7 @@ static const long _vq_quantlist__44c0_sm_p8_1[] = { 12, }; -static const long _vq_lengthlist__44c0_sm_p8_1[] = { +static const char _vq_lengthlist__44c0_sm_p8_1[] = { 1, 4, 4, 6, 6, 7, 7, 9, 9,10,11,12,12, 6, 5, 5, 7, 7, 8, 8,10,10,12,11,12,12, 6, 5, 5, 7, 7, 8, 8,10,10,12,11,12,12,17, 7, 7, 8, 8, 9, 9,10,10, @@ -12216,7 +12216,7 @@ static const long _vq_lengthlist__44c0_sm_p8_1[] = { static const static_codebook _44c0_sm_p8_1 = { 2, 169, - (long *)_vq_lengthlist__44c0_sm_p8_1, + (char *)_vq_lengthlist__44c0_sm_p8_1, 1, -522616832, 1620115456, 4, 0, (long *)_vq_quantlist__44c0_sm_p8_1, 0 @@ -12242,7 +12242,7 @@ static const long _vq_quantlist__44c0_sm_p8_2[] = { 16, }; -static const long _vq_lengthlist__44c0_sm_p8_2[] = { +static const char _vq_lengthlist__44c0_sm_p8_2[] = { 2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,10, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9, @@ -12266,13 +12266,13 @@ static const long _vq_lengthlist__44c0_sm_p8_2[] = { static const static_codebook _44c0_sm_p8_2 = { 2, 289, - (long *)_vq_lengthlist__44c0_sm_p8_2, + (char *)_vq_lengthlist__44c0_sm_p8_2, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c0_sm_p8_2, 0 }; -static const long _huff_lengthlist__44c0_sm_short[] = { +static const char _huff_lengthlist__44c0_sm_short[] = { 6, 6,12,13,13,14,16,17,17, 4, 2, 5, 8, 7, 9,12, 15,15, 9, 4, 5, 9, 7, 9,12,16,18,11, 6, 7, 4, 6, 8,11,14,18,10, 5, 6, 5, 5, 7,10,14,17,10, 5, 7, @@ -12283,13 +12283,13 @@ static const long _huff_lengthlist__44c0_sm_short[] = { static const static_codebook _huff_book__44c0_sm_short = { 2, 81, - (long *)_huff_lengthlist__44c0_sm_short, + (char *)_huff_lengthlist__44c0_sm_short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44c1_s_long[] = { +static const char _huff_lengthlist__44c1_s_long[] = { 5, 5, 9,10, 9, 9,10,11,12, 5, 1, 5, 6, 6, 7,10, 12,14, 9, 5, 6, 8, 8,10,12,14,14,10, 5, 8, 5, 6, 8,11,13,14, 9, 5, 7, 6, 6, 8,10,12,11, 9, 7, 9, @@ -12300,7 +12300,7 @@ static const long _huff_lengthlist__44c1_s_long[] = { static const static_codebook _huff_book__44c1_s_long = { 2, 81, - (long *)_huff_lengthlist__44c1_s_long, + (char *)_huff_lengthlist__44c1_s_long, 0, 0, 0, 0, 0, NULL, 0 @@ -12312,7 +12312,7 @@ static const long _vq_quantlist__44c1_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__44c1_s_p1_0[] = { +static const char _vq_lengthlist__44c1_s_p1_0[] = { 2, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 6, 0, 0, 0, 0, 0, 0, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -12728,7 +12728,7 @@ static const long _vq_lengthlist__44c1_s_p1_0[] = { static const static_codebook _44c1_s_p1_0 = { 8, 6561, - (long *)_vq_lengthlist__44c1_s_p1_0, + (char *)_vq_lengthlist__44c1_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44c1_s_p1_0, 0 @@ -12742,7 +12742,7 @@ static const long _vq_quantlist__44c1_s_p2_0[] = { 4, }; -static const long _vq_lengthlist__44c1_s_p2_0[] = { +static const char _vq_lengthlist__44c1_s_p2_0[] = { 2, 3, 4, 6, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -12787,7 +12787,7 @@ static const long _vq_lengthlist__44c1_s_p2_0[] = { static const static_codebook _44c1_s_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44c1_s_p2_0, + (char *)_vq_lengthlist__44c1_s_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c1_s_p2_0, 0 @@ -12805,7 +12805,7 @@ static const long _vq_quantlist__44c1_s_p3_0[] = { 8, }; -static const long _vq_lengthlist__44c1_s_p3_0[] = { +static const char _vq_lengthlist__44c1_s_p3_0[] = { 1, 3, 2, 7, 7, 0, 0, 0, 0, 0,13,13, 6, 6, 0, 0, 0, 0, 0,12, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, @@ -12816,7 +12816,7 @@ static const long _vq_lengthlist__44c1_s_p3_0[] = { static const static_codebook _44c1_s_p3_0 = { 2, 81, - (long *)_vq_lengthlist__44c1_s_p3_0, + (char *)_vq_lengthlist__44c1_s_p3_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c1_s_p3_0, 0 @@ -12834,7 +12834,7 @@ static const long _vq_quantlist__44c1_s_p4_0[] = { 8, }; -static const long _vq_lengthlist__44c1_s_p4_0[] = { +static const char _vq_lengthlist__44c1_s_p4_0[] = { 1, 3, 3, 6, 5, 6, 6, 8, 8, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 7, 7, 7, 7, 9, 9, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0, @@ -12845,7 +12845,7 @@ static const long _vq_lengthlist__44c1_s_p4_0[] = { static const static_codebook _44c1_s_p4_0 = { 2, 81, - (long *)_vq_lengthlist__44c1_s_p4_0, + (char *)_vq_lengthlist__44c1_s_p4_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c1_s_p4_0, 0 @@ -12871,7 +12871,7 @@ static const long _vq_quantlist__44c1_s_p5_0[] = { 16, }; -static const long _vq_lengthlist__44c1_s_p5_0[] = { +static const char _vq_lengthlist__44c1_s_p5_0[] = { 1, 4, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11, 11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10, 11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10, @@ -12895,7 +12895,7 @@ static const long _vq_lengthlist__44c1_s_p5_0[] = { static const static_codebook _44c1_s_p5_0 = { 2, 289, - (long *)_vq_lengthlist__44c1_s_p5_0, + (char *)_vq_lengthlist__44c1_s_p5_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c1_s_p5_0, 0 @@ -12907,7 +12907,7 @@ static const long _vq_quantlist__44c1_s_p6_0[] = { 2, }; -static const long _vq_lengthlist__44c1_s_p6_0[] = { +static const char _vq_lengthlist__44c1_s_p6_0[] = { 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11, 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 6,10,10,11,11, 11,11,10,10, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9, @@ -12918,7 +12918,7 @@ static const long _vq_lengthlist__44c1_s_p6_0[] = { static const static_codebook _44c1_s_p6_0 = { 4, 81, - (long *)_vq_lengthlist__44c1_s_p6_0, + (char *)_vq_lengthlist__44c1_s_p6_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44c1_s_p6_0, 0 @@ -12938,7 +12938,7 @@ static const long _vq_quantlist__44c1_s_p6_1[] = { 10, }; -static const long _vq_lengthlist__44c1_s_p6_1[] = { +static const char _vq_lengthlist__44c1_s_p6_1[] = { 2, 3, 3, 6, 6, 7, 7, 7, 7, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 7, 7, 8, 8, 8, 8,10,10,10, 7, @@ -12951,7 +12951,7 @@ static const long _vq_lengthlist__44c1_s_p6_1[] = { static const static_codebook _44c1_s_p6_1 = { 2, 121, - (long *)_vq_lengthlist__44c1_s_p6_1, + (char *)_vq_lengthlist__44c1_s_p6_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c1_s_p6_1, 0 @@ -12973,7 +12973,7 @@ static const long _vq_quantlist__44c1_s_p7_0[] = { 12, }; -static const long _vq_lengthlist__44c1_s_p7_0[] = { +static const char _vq_lengthlist__44c1_s_p7_0[] = { 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 9, 7, 5, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 0, 8, 8, 8, 8, 9, 9, 9, 9, @@ -12989,7 +12989,7 @@ static const long _vq_lengthlist__44c1_s_p7_0[] = { static const static_codebook _44c1_s_p7_0 = { 2, 169, - (long *)_vq_lengthlist__44c1_s_p7_0, + (char *)_vq_lengthlist__44c1_s_p7_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44c1_s_p7_0, 0 @@ -13003,14 +13003,14 @@ static const long _vq_quantlist__44c1_s_p7_1[] = { 4, }; -static const long _vq_lengthlist__44c1_s_p7_1[] = { +static const char _vq_lengthlist__44c1_s_p7_1[] = { 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _44c1_s_p7_1 = { 2, 25, - (long *)_vq_lengthlist__44c1_s_p7_1, + (char *)_vq_lengthlist__44c1_s_p7_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c1_s_p7_1, 0 @@ -13032,7 +13032,7 @@ static const long _vq_quantlist__44c1_s_p8_0[] = { 12, }; -static const long _vq_lengthlist__44c1_s_p8_0[] = { +static const char _vq_lengthlist__44c1_s_p8_0[] = { 1, 4, 3,10,10,10,10,10,10,10,10,10,10, 4, 8, 6, 10,10,10,10,10,10,10,10,10,10, 4, 8, 7,10,10,10, 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, @@ -13048,7 +13048,7 @@ static const long _vq_lengthlist__44c1_s_p8_0[] = { static const static_codebook _44c1_s_p8_0 = { 2, 169, - (long *)_vq_lengthlist__44c1_s_p8_0, + (char *)_vq_lengthlist__44c1_s_p8_0, 1, -514541568, 1627103232, 4, 0, (long *)_vq_quantlist__44c1_s_p8_0, 0 @@ -13070,7 +13070,7 @@ static const long _vq_quantlist__44c1_s_p8_1[] = { 12, }; -static const long _vq_lengthlist__44c1_s_p8_1[] = { +static const char _vq_lengthlist__44c1_s_p8_1[] = { 1, 4, 4, 6, 5, 7, 7, 9, 9,10,10,12,12, 6, 5, 5, 7, 7, 8, 8,10,10,12,11,12,12, 6, 5, 5, 7, 7, 8, 8,10,10,11,11,12,12,15, 7, 7, 8, 8, 9, 9,11,11, @@ -13086,7 +13086,7 @@ static const long _vq_lengthlist__44c1_s_p8_1[] = { static const static_codebook _44c1_s_p8_1 = { 2, 169, - (long *)_vq_lengthlist__44c1_s_p8_1, + (char *)_vq_lengthlist__44c1_s_p8_1, 1, -522616832, 1620115456, 4, 0, (long *)_vq_quantlist__44c1_s_p8_1, 0 @@ -13112,7 +13112,7 @@ static const long _vq_quantlist__44c1_s_p8_2[] = { 16, }; -static const long _vq_lengthlist__44c1_s_p8_2[] = { +static const char _vq_lengthlist__44c1_s_p8_2[] = { 2, 4, 4, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,10,10,10, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9, @@ -13136,13 +13136,13 @@ static const long _vq_lengthlist__44c1_s_p8_2[] = { static const static_codebook _44c1_s_p8_2 = { 2, 289, - (long *)_vq_lengthlist__44c1_s_p8_2, + (char *)_vq_lengthlist__44c1_s_p8_2, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c1_s_p8_2, 0 }; -static const long _huff_lengthlist__44c1_s_short[] = { +static const char _huff_lengthlist__44c1_s_short[] = { 6, 8,13,12,13,14,15,16,16, 4, 2, 4, 7, 6, 8,11, 13,15,10, 4, 4, 8, 6, 8,11,14,17,11, 5, 6, 5, 6, 8,12,14,17,11, 5, 5, 6, 5, 7,10,13,16,12, 6, 7, @@ -13153,13 +13153,13 @@ static const long _huff_lengthlist__44c1_s_short[] = { static const static_codebook _huff_book__44c1_s_short = { 2, 81, - (long *)_huff_lengthlist__44c1_s_short, + (char *)_huff_lengthlist__44c1_s_short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44c1_sm_long[] = { +static const char _huff_lengthlist__44c1_sm_long[] = { 5, 4, 8,10, 9, 9,10,11,12, 4, 2, 5, 6, 6, 8,10, 11,13, 8, 4, 6, 8, 7, 9,12,12,14,10, 6, 8, 4, 5, 6, 9,11,12, 9, 5, 6, 5, 5, 6, 9,11,11, 9, 7, 9, @@ -13170,7 +13170,7 @@ static const long _huff_lengthlist__44c1_sm_long[] = { static const static_codebook _huff_book__44c1_sm_long = { 2, 81, - (long *)_huff_lengthlist__44c1_sm_long, + (char *)_huff_lengthlist__44c1_sm_long, 0, 0, 0, 0, 0, NULL, 0 @@ -13182,7 +13182,7 @@ static const long _vq_quantlist__44c1_sm_p1_0[] = { 2, }; -static const long _vq_lengthlist__44c1_sm_p1_0[] = { +static const char _vq_lengthlist__44c1_sm_p1_0[] = { 1, 5, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -13598,7 +13598,7 @@ static const long _vq_lengthlist__44c1_sm_p1_0[] = { static const static_codebook _44c1_sm_p1_0 = { 8, 6561, - (long *)_vq_lengthlist__44c1_sm_p1_0, + (char *)_vq_lengthlist__44c1_sm_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44c1_sm_p1_0, 0 @@ -13612,7 +13612,7 @@ static const long _vq_quantlist__44c1_sm_p2_0[] = { 4, }; -static const long _vq_lengthlist__44c1_sm_p2_0[] = { +static const char _vq_lengthlist__44c1_sm_p2_0[] = { 2, 3, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -13657,7 +13657,7 @@ static const long _vq_lengthlist__44c1_sm_p2_0[] = { static const static_codebook _44c1_sm_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44c1_sm_p2_0, + (char *)_vq_lengthlist__44c1_sm_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c1_sm_p2_0, 0 @@ -13675,7 +13675,7 @@ static const long _vq_quantlist__44c1_sm_p3_0[] = { 8, }; -static const long _vq_lengthlist__44c1_sm_p3_0[] = { +static const char _vq_lengthlist__44c1_sm_p3_0[] = { 1, 3, 3, 7, 7, 0, 0, 0, 0, 0, 5, 5, 6, 6, 0, 0, 0, 0, 0, 5, 5, 7, 7, 0, 0, 0, 0, 0, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, @@ -13686,7 +13686,7 @@ static const long _vq_lengthlist__44c1_sm_p3_0[] = { static const static_codebook _44c1_sm_p3_0 = { 2, 81, - (long *)_vq_lengthlist__44c1_sm_p3_0, + (char *)_vq_lengthlist__44c1_sm_p3_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c1_sm_p3_0, 0 @@ -13704,7 +13704,7 @@ static const long _vq_quantlist__44c1_sm_p4_0[] = { 8, }; -static const long _vq_lengthlist__44c1_sm_p4_0[] = { +static const char _vq_lengthlist__44c1_sm_p4_0[] = { 1, 3, 3, 6, 6, 7, 7, 9, 9, 0, 6, 6, 7, 7, 8, 8, 9, 9, 0, 6, 6, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0, @@ -13715,7 +13715,7 @@ static const long _vq_lengthlist__44c1_sm_p4_0[] = { static const static_codebook _44c1_sm_p4_0 = { 2, 81, - (long *)_vq_lengthlist__44c1_sm_p4_0, + (char *)_vq_lengthlist__44c1_sm_p4_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44c1_sm_p4_0, 0 @@ -13741,7 +13741,7 @@ static const long _vq_quantlist__44c1_sm_p5_0[] = { 16, }; -static const long _vq_lengthlist__44c1_sm_p5_0[] = { +static const char _vq_lengthlist__44c1_sm_p5_0[] = { 2, 3, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11, 11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10,10, 11,11, 0, 5, 5, 6, 6, 8, 8, 9, 9, 9, 9,10,10,10, @@ -13765,7 +13765,7 @@ static const long _vq_lengthlist__44c1_sm_p5_0[] = { static const static_codebook _44c1_sm_p5_0 = { 2, 289, - (long *)_vq_lengthlist__44c1_sm_p5_0, + (char *)_vq_lengthlist__44c1_sm_p5_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c1_sm_p5_0, 0 @@ -13777,7 +13777,7 @@ static const long _vq_quantlist__44c1_sm_p6_0[] = { 2, }; -static const long _vq_lengthlist__44c1_sm_p6_0[] = { +static const char _vq_lengthlist__44c1_sm_p6_0[] = { 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 7,10, 9, 9,11, 9, 9, 4, 7, 7,10, 9, 9,11, 9, 9, 7,10,10,10,11, 11,11,10,10, 6, 9, 9,11,11,10,11,10,10, 6, 9, 9, @@ -13788,7 +13788,7 @@ static const long _vq_lengthlist__44c1_sm_p6_0[] = { static const static_codebook _44c1_sm_p6_0 = { 4, 81, - (long *)_vq_lengthlist__44c1_sm_p6_0, + (char *)_vq_lengthlist__44c1_sm_p6_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44c1_sm_p6_0, 0 @@ -13808,7 +13808,7 @@ static const long _vq_quantlist__44c1_sm_p6_1[] = { 10, }; -static const long _vq_lengthlist__44c1_sm_p6_1[] = { +static const char _vq_lengthlist__44c1_sm_p6_1[] = { 2, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,10, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7, @@ -13821,7 +13821,7 @@ static const long _vq_lengthlist__44c1_sm_p6_1[] = { static const static_codebook _44c1_sm_p6_1 = { 2, 121, - (long *)_vq_lengthlist__44c1_sm_p6_1, + (char *)_vq_lengthlist__44c1_sm_p6_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44c1_sm_p6_1, 0 @@ -13843,7 +13843,7 @@ static const long _vq_quantlist__44c1_sm_p7_0[] = { 12, }; -static const long _vq_lengthlist__44c1_sm_p7_0[] = { +static const char _vq_lengthlist__44c1_sm_p7_0[] = { 1, 4, 4, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 7, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 7, 5, 6, 7, 7, 8, 8, 8, 8, 9, 9,11,10, 0, 8, 8, 8, 8, 9, 9, 9, 9, @@ -13859,7 +13859,7 @@ static const long _vq_lengthlist__44c1_sm_p7_0[] = { static const static_codebook _44c1_sm_p7_0 = { 2, 169, - (long *)_vq_lengthlist__44c1_sm_p7_0, + (char *)_vq_lengthlist__44c1_sm_p7_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44c1_sm_p7_0, 0 @@ -13873,14 +13873,14 @@ static const long _vq_quantlist__44c1_sm_p7_1[] = { 4, }; -static const long _vq_lengthlist__44c1_sm_p7_1[] = { +static const char _vq_lengthlist__44c1_sm_p7_1[] = { 2, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _44c1_sm_p7_1 = { 2, 25, - (long *)_vq_lengthlist__44c1_sm_p7_1, + (char *)_vq_lengthlist__44c1_sm_p7_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44c1_sm_p7_1, 0 @@ -13902,7 +13902,7 @@ static const long _vq_quantlist__44c1_sm_p8_0[] = { 12, }; -static const long _vq_lengthlist__44c1_sm_p8_0[] = { +static const char _vq_lengthlist__44c1_sm_p8_0[] = { 1, 3, 3,13,13,13,13,13,13,13,13,13,13, 3, 6, 6, 13,13,13,13,13,13,13,13,13,13, 4, 8, 7,13,13,13, 13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13, @@ -13918,7 +13918,7 @@ static const long _vq_lengthlist__44c1_sm_p8_0[] = { static const static_codebook _44c1_sm_p8_0 = { 2, 169, - (long *)_vq_lengthlist__44c1_sm_p8_0, + (char *)_vq_lengthlist__44c1_sm_p8_0, 1, -514541568, 1627103232, 4, 0, (long *)_vq_quantlist__44c1_sm_p8_0, 0 @@ -13940,7 +13940,7 @@ static const long _vq_quantlist__44c1_sm_p8_1[] = { 12, }; -static const long _vq_lengthlist__44c1_sm_p8_1[] = { +static const char _vq_lengthlist__44c1_sm_p8_1[] = { 1, 4, 4, 6, 6, 7, 7, 9, 9,10,11,12,12, 6, 5, 5, 7, 7, 8, 7,10,10,11,11,12,12, 6, 5, 5, 7, 7, 8, 8,10,10,11,11,12,12,16, 7, 7, 8, 8, 9, 9,11,11, @@ -13956,7 +13956,7 @@ static const long _vq_lengthlist__44c1_sm_p8_1[] = { static const static_codebook _44c1_sm_p8_1 = { 2, 169, - (long *)_vq_lengthlist__44c1_sm_p8_1, + (char *)_vq_lengthlist__44c1_sm_p8_1, 1, -522616832, 1620115456, 4, 0, (long *)_vq_quantlist__44c1_sm_p8_1, 0 @@ -13982,7 +13982,7 @@ static const long _vq_quantlist__44c1_sm_p8_2[] = { 16, }; -static const long _vq_lengthlist__44c1_sm_p8_2[] = { +static const char _vq_lengthlist__44c1_sm_p8_2[] = { 2, 5, 5, 6, 6, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8,10, 6, 6, 7, 7, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, @@ -14006,13 +14006,13 @@ static const long _vq_lengthlist__44c1_sm_p8_2[] = { static const static_codebook _44c1_sm_p8_2 = { 2, 289, - (long *)_vq_lengthlist__44c1_sm_p8_2, + (char *)_vq_lengthlist__44c1_sm_p8_2, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44c1_sm_p8_2, 0 }; -static const long _huff_lengthlist__44c1_sm_short[] = { +static const char _huff_lengthlist__44c1_sm_short[] = { 4, 7,13,14,14,15,16,18,18, 4, 2, 5, 8, 7, 9,12, 15,15,10, 4, 5,10, 6, 8,11,15,17,12, 5, 7, 5, 6, 8,11,14,17,11, 5, 6, 6, 5, 6, 9,13,17,12, 6, 7, @@ -14023,13 +14023,13 @@ static const long _huff_lengthlist__44c1_sm_short[] = { static const static_codebook _huff_book__44c1_sm_short = { 2, 81, - (long *)_huff_lengthlist__44c1_sm_short, + (char *)_huff_lengthlist__44c1_sm_short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44cn1_s_long[] = { +static const char _huff_lengthlist__44cn1_s_long[] = { 4, 4, 7, 8, 7, 8,10,12,17, 3, 1, 6, 6, 7, 8,10, 12,15, 7, 6, 9, 9, 9,11,12,14,17, 8, 6, 9, 6, 7, 9,11,13,17, 7, 6, 9, 7, 7, 8, 9,12,15, 8, 8,10, @@ -14040,7 +14040,7 @@ static const long _huff_lengthlist__44cn1_s_long[] = { static const static_codebook _huff_book__44cn1_s_long = { 2, 81, - (long *)_huff_lengthlist__44cn1_s_long, + (char *)_huff_lengthlist__44cn1_s_long, 0, 0, 0, 0, 0, NULL, 0 @@ -14052,7 +14052,7 @@ static const long _vq_quantlist__44cn1_s_p1_0[] = { 2, }; -static const long _vq_lengthlist__44cn1_s_p1_0[] = { +static const char _vq_lengthlist__44cn1_s_p1_0[] = { 1, 4, 4, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -14468,7 +14468,7 @@ static const long _vq_lengthlist__44cn1_s_p1_0[] = { static const static_codebook _44cn1_s_p1_0 = { 8, 6561, - (long *)_vq_lengthlist__44cn1_s_p1_0, + (char *)_vq_lengthlist__44cn1_s_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44cn1_s_p1_0, 0 @@ -14482,7 +14482,7 @@ static const long _vq_quantlist__44cn1_s_p2_0[] = { 4, }; -static const long _vq_lengthlist__44cn1_s_p2_0[] = { +static const char _vq_lengthlist__44cn1_s_p2_0[] = { 1, 4, 4, 7, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -14527,7 +14527,7 @@ static const long _vq_lengthlist__44cn1_s_p2_0[] = { static const static_codebook _44cn1_s_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44cn1_s_p2_0, + (char *)_vq_lengthlist__44cn1_s_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44cn1_s_p2_0, 0 @@ -14545,7 +14545,7 @@ static const long _vq_quantlist__44cn1_s_p3_0[] = { 8, }; -static const long _vq_lengthlist__44cn1_s_p3_0[] = { +static const char _vq_lengthlist__44cn1_s_p3_0[] = { 1, 2, 3, 7, 7, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, @@ -14556,7 +14556,7 @@ static const long _vq_lengthlist__44cn1_s_p3_0[] = { static const static_codebook _44cn1_s_p3_0 = { 2, 81, - (long *)_vq_lengthlist__44cn1_s_p3_0, + (char *)_vq_lengthlist__44cn1_s_p3_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44cn1_s_p3_0, 0 @@ -14574,7 +14574,7 @@ static const long _vq_quantlist__44cn1_s_p4_0[] = { 8, }; -static const long _vq_lengthlist__44cn1_s_p4_0[] = { +static const char _vq_lengthlist__44cn1_s_p4_0[] = { 1, 3, 3, 6, 6, 6, 6, 8, 8, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0, 6, 6, 7, 7, 9, 9, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0, 7, 7, 8, 8,10,10, 0, 0, 0, @@ -14585,7 +14585,7 @@ static const long _vq_lengthlist__44cn1_s_p4_0[] = { static const static_codebook _44cn1_s_p4_0 = { 2, 81, - (long *)_vq_lengthlist__44cn1_s_p4_0, + (char *)_vq_lengthlist__44cn1_s_p4_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44cn1_s_p4_0, 0 @@ -14611,7 +14611,7 @@ static const long _vq_quantlist__44cn1_s_p5_0[] = { 16, }; -static const long _vq_lengthlist__44cn1_s_p5_0[] = { +static const char _vq_lengthlist__44cn1_s_p5_0[] = { 1, 4, 3, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,10, 10, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10,10, 11,11, 0, 0, 0, 7, 7, 8, 8, 9, 9, 9, 9,10,10,10, @@ -14635,7 +14635,7 @@ static const long _vq_lengthlist__44cn1_s_p5_0[] = { static const static_codebook _44cn1_s_p5_0 = { 2, 289, - (long *)_vq_lengthlist__44cn1_s_p5_0, + (char *)_vq_lengthlist__44cn1_s_p5_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44cn1_s_p5_0, 0 @@ -14647,7 +14647,7 @@ static const long _vq_quantlist__44cn1_s_p6_0[] = { 2, }; -static const long _vq_lengthlist__44cn1_s_p6_0[] = { +static const char _vq_lengthlist__44cn1_s_p6_0[] = { 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 6, 6,10, 9, 9,11, 9, 9, 4, 6, 6,10, 9, 9,10, 9, 9, 7,10,10,11,11, 11,12,11,11, 7, 9, 9,11,11,10,11,10,10, 7, 9, 9, @@ -14658,7 +14658,7 @@ static const long _vq_lengthlist__44cn1_s_p6_0[] = { static const static_codebook _44cn1_s_p6_0 = { 4, 81, - (long *)_vq_lengthlist__44cn1_s_p6_0, + (char *)_vq_lengthlist__44cn1_s_p6_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44cn1_s_p6_0, 0 @@ -14678,7 +14678,7 @@ static const long _vq_quantlist__44cn1_s_p6_1[] = { 10, }; -static const long _vq_lengthlist__44cn1_s_p6_1[] = { +static const char _vq_lengthlist__44cn1_s_p6_1[] = { 1, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 6, 8, 8, 8, 8, 8, 8,10,10,10, 7, 6, 7, 7, 8, 8, 8, 8,10,10,10, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7, @@ -14691,7 +14691,7 @@ static const long _vq_lengthlist__44cn1_s_p6_1[] = { static const static_codebook _44cn1_s_p6_1 = { 2, 121, - (long *)_vq_lengthlist__44cn1_s_p6_1, + (char *)_vq_lengthlist__44cn1_s_p6_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44cn1_s_p6_1, 0 @@ -14713,7 +14713,7 @@ static const long _vq_quantlist__44cn1_s_p7_0[] = { 12, }; -static const long _vq_lengthlist__44cn1_s_p7_0[] = { +static const char _vq_lengthlist__44cn1_s_p7_0[] = { 1, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 6, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9,11,11, 7, 5, 5, 7, 7, 8, 8, 8, 8, 9,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9, @@ -14729,7 +14729,7 @@ static const long _vq_lengthlist__44cn1_s_p7_0[] = { static const static_codebook _44cn1_s_p7_0 = { 2, 169, - (long *)_vq_lengthlist__44cn1_s_p7_0, + (char *)_vq_lengthlist__44cn1_s_p7_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44cn1_s_p7_0, 0 @@ -14743,14 +14743,14 @@ static const long _vq_quantlist__44cn1_s_p7_1[] = { 4, }; -static const long _vq_lengthlist__44cn1_s_p7_1[] = { +static const char _vq_lengthlist__44cn1_s_p7_1[] = { 2, 3, 3, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _44cn1_s_p7_1 = { 2, 25, - (long *)_vq_lengthlist__44cn1_s_p7_1, + (char *)_vq_lengthlist__44cn1_s_p7_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44cn1_s_p7_1, 0 @@ -14764,7 +14764,7 @@ static const long _vq_quantlist__44cn1_s_p8_0[] = { 4, }; -static const long _vq_lengthlist__44cn1_s_p8_0[] = { +static const char _vq_lengthlist__44cn1_s_p8_0[] = { 1, 7, 7,11,11, 8,11,11,11,11, 4,11, 3,11,11,11, 11,11,11,11,11,11,11,11,11,11,11,10,11,11,11,11, 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, @@ -14809,7 +14809,7 @@ static const long _vq_lengthlist__44cn1_s_p8_0[] = { static const static_codebook _44cn1_s_p8_0 = { 4, 625, - (long *)_vq_lengthlist__44cn1_s_p8_0, + (char *)_vq_lengthlist__44cn1_s_p8_0, 1, -518283264, 1627103232, 3, 0, (long *)_vq_quantlist__44cn1_s_p8_0, 0 @@ -14831,7 +14831,7 @@ static const long _vq_quantlist__44cn1_s_p8_1[] = { 12, }; -static const long _vq_lengthlist__44cn1_s_p8_1[] = { +static const char _vq_lengthlist__44cn1_s_p8_1[] = { 1, 4, 4, 6, 6, 8, 8, 9,10,10,11,11,11, 6, 5, 5, 7, 7, 8, 8, 9,10, 9,11,11,12, 5, 5, 5, 7, 7, 8, 9,10,10,12,12,14,13,15, 7, 7, 8, 8, 9,10,11,11, @@ -14847,7 +14847,7 @@ static const long _vq_lengthlist__44cn1_s_p8_1[] = { static const static_codebook _44cn1_s_p8_1 = { 2, 169, - (long *)_vq_lengthlist__44cn1_s_p8_1, + (char *)_vq_lengthlist__44cn1_s_p8_1, 1, -522616832, 1620115456, 4, 0, (long *)_vq_quantlist__44cn1_s_p8_1, 0 @@ -14873,7 +14873,7 @@ static const long _vq_quantlist__44cn1_s_p8_2[] = { 16, }; -static const long _vq_lengthlist__44cn1_s_p8_2[] = { +static const char _vq_lengthlist__44cn1_s_p8_2[] = { 3, 4, 3, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,10,11,11, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9, @@ -14897,13 +14897,13 @@ static const long _vq_lengthlist__44cn1_s_p8_2[] = { static const static_codebook _44cn1_s_p8_2 = { 2, 289, - (long *)_vq_lengthlist__44cn1_s_p8_2, + (char *)_vq_lengthlist__44cn1_s_p8_2, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44cn1_s_p8_2, 0 }; -static const long _huff_lengthlist__44cn1_s_short[] = { +static const char _huff_lengthlist__44cn1_s_short[] = { 10, 9,12,15,12,13,16,14,16, 7, 1, 5,14, 7,10,13, 16,16, 9, 4, 6,16, 8,11,16,16,16,14, 4, 7,16, 9, 12,14,16,16,10, 5, 7,14, 9,12,14,15,15,13, 8, 9, @@ -14914,13 +14914,13 @@ static const long _huff_lengthlist__44cn1_s_short[] = { static const static_codebook _huff_book__44cn1_s_short = { 2, 81, - (long *)_huff_lengthlist__44cn1_s_short, + (char *)_huff_lengthlist__44cn1_s_short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44cn1_sm_long[] = { +static const char _huff_lengthlist__44cn1_sm_long[] = { 3, 3, 8, 8, 8, 8,10,12,14, 3, 2, 6, 7, 7, 8,10, 12,16, 7, 6, 7, 9, 8,10,12,14,16, 8, 6, 8, 4, 5, 7, 9,11,13, 7, 6, 8, 5, 6, 7, 9,11,14, 8, 8,10, @@ -14931,7 +14931,7 @@ static const long _huff_lengthlist__44cn1_sm_long[] = { static const static_codebook _huff_book__44cn1_sm_long = { 2, 81, - (long *)_huff_lengthlist__44cn1_sm_long, + (char *)_huff_lengthlist__44cn1_sm_long, 0, 0, 0, 0, 0, NULL, 0 @@ -14943,7 +14943,7 @@ static const long _vq_quantlist__44cn1_sm_p1_0[] = { 2, }; -static const long _vq_lengthlist__44cn1_sm_p1_0[] = { +static const char _vq_lengthlist__44cn1_sm_p1_0[] = { 1, 4, 5, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -15359,7 +15359,7 @@ static const long _vq_lengthlist__44cn1_sm_p1_0[] = { static const static_codebook _44cn1_sm_p1_0 = { 8, 6561, - (long *)_vq_lengthlist__44cn1_sm_p1_0, + (char *)_vq_lengthlist__44cn1_sm_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44cn1_sm_p1_0, 0 @@ -15373,7 +15373,7 @@ static const long _vq_quantlist__44cn1_sm_p2_0[] = { 4, }; -static const long _vq_lengthlist__44cn1_sm_p2_0[] = { +static const char _vq_lengthlist__44cn1_sm_p2_0[] = { 1, 4, 4, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 5, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -15418,7 +15418,7 @@ static const long _vq_lengthlist__44cn1_sm_p2_0[] = { static const static_codebook _44cn1_sm_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44cn1_sm_p2_0, + (char *)_vq_lengthlist__44cn1_sm_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44cn1_sm_p2_0, 0 @@ -15436,7 +15436,7 @@ static const long _vq_quantlist__44cn1_sm_p3_0[] = { 8, }; -static const long _vq_lengthlist__44cn1_sm_p3_0[] = { +static const char _vq_lengthlist__44cn1_sm_p3_0[] = { 1, 3, 4, 7, 7, 0, 0, 0, 0, 0, 4, 4, 7, 7, 0, 0, 0, 0, 0, 4, 5, 7, 7, 0, 0, 0, 0, 0, 6, 7, 8, 8, 0, 0, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, @@ -15447,7 +15447,7 @@ static const long _vq_lengthlist__44cn1_sm_p3_0[] = { static const static_codebook _44cn1_sm_p3_0 = { 2, 81, - (long *)_vq_lengthlist__44cn1_sm_p3_0, + (char *)_vq_lengthlist__44cn1_sm_p3_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44cn1_sm_p3_0, 0 @@ -15465,7 +15465,7 @@ static const long _vq_quantlist__44cn1_sm_p4_0[] = { 8, }; -static const long _vq_lengthlist__44cn1_sm_p4_0[] = { +static const char _vq_lengthlist__44cn1_sm_p4_0[] = { 1, 4, 3, 6, 6, 7, 7, 9, 9, 0, 5, 5, 7, 7, 8, 7, 9, 9, 0, 5, 5, 7, 7, 8, 8, 9, 9, 0, 7, 7, 8, 8, 8, 8,10,10, 0, 0, 0, 8, 8, 8, 8,10,10, 0, 0, 0, @@ -15476,7 +15476,7 @@ static const long _vq_lengthlist__44cn1_sm_p4_0[] = { static const static_codebook _44cn1_sm_p4_0 = { 2, 81, - (long *)_vq_lengthlist__44cn1_sm_p4_0, + (char *)_vq_lengthlist__44cn1_sm_p4_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44cn1_sm_p4_0, 0 @@ -15502,7 +15502,7 @@ static const long _vq_quantlist__44cn1_sm_p5_0[] = { 16, }; -static const long _vq_lengthlist__44cn1_sm_p5_0[] = { +static const char _vq_lengthlist__44cn1_sm_p5_0[] = { 1, 4, 4, 6, 6, 8, 8, 9, 9, 8, 8, 9, 9,10,10,11, 11, 0, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11,11, 12,12, 0, 6, 5, 7, 7, 8, 8, 9, 9, 9, 9,10,10,11, @@ -15526,7 +15526,7 @@ static const long _vq_lengthlist__44cn1_sm_p5_0[] = { static const static_codebook _44cn1_sm_p5_0 = { 2, 289, - (long *)_vq_lengthlist__44cn1_sm_p5_0, + (char *)_vq_lengthlist__44cn1_sm_p5_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44cn1_sm_p5_0, 0 @@ -15538,7 +15538,7 @@ static const long _vq_quantlist__44cn1_sm_p6_0[] = { 2, }; -static const long _vq_lengthlist__44cn1_sm_p6_0[] = { +static const char _vq_lengthlist__44cn1_sm_p6_0[] = { 1, 4, 4, 7, 6, 6, 7, 6, 6, 4, 7, 6,10, 9, 9,11, 9, 9, 4, 6, 7,10, 9, 9,11, 9, 9, 7,10,10,10,11, 11,11,11,10, 6, 9, 9,11,10,10,11,10,10, 6, 9, 9, @@ -15549,7 +15549,7 @@ static const long _vq_lengthlist__44cn1_sm_p6_0[] = { static const static_codebook _44cn1_sm_p6_0 = { 4, 81, - (long *)_vq_lengthlist__44cn1_sm_p6_0, + (char *)_vq_lengthlist__44cn1_sm_p6_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44cn1_sm_p6_0, 0 @@ -15569,7 +15569,7 @@ static const long _vq_quantlist__44cn1_sm_p6_1[] = { 10, }; -static const long _vq_lengthlist__44cn1_sm_p6_1[] = { +static const char _vq_lengthlist__44cn1_sm_p6_1[] = { 2, 4, 4, 5, 5, 7, 7, 7, 7, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,10, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8,10, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8,10,10,10, 7, @@ -15582,7 +15582,7 @@ static const long _vq_lengthlist__44cn1_sm_p6_1[] = { static const static_codebook _44cn1_sm_p6_1 = { 2, 121, - (long *)_vq_lengthlist__44cn1_sm_p6_1, + (char *)_vq_lengthlist__44cn1_sm_p6_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44cn1_sm_p6_1, 0 @@ -15604,7 +15604,7 @@ static const long _vq_quantlist__44cn1_sm_p7_0[] = { 12, }; -static const long _vq_lengthlist__44cn1_sm_p7_0[] = { +static const char _vq_lengthlist__44cn1_sm_p7_0[] = { 1, 4, 4, 6, 6, 7, 7, 7, 7, 9, 9,10,10, 7, 5, 5, 7, 7, 8, 8, 8, 8,10, 9,11,10, 7, 5, 5, 7, 7, 8, 8, 8, 8, 9,10,11,11, 0, 8, 8, 8, 8, 9, 9, 9, 9, @@ -15620,7 +15620,7 @@ static const long _vq_lengthlist__44cn1_sm_p7_0[] = { static const static_codebook _44cn1_sm_p7_0 = { 2, 169, - (long *)_vq_lengthlist__44cn1_sm_p7_0, + (char *)_vq_lengthlist__44cn1_sm_p7_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44cn1_sm_p7_0, 0 @@ -15634,14 +15634,14 @@ static const long _vq_quantlist__44cn1_sm_p7_1[] = { 4, }; -static const long _vq_lengthlist__44cn1_sm_p7_1[] = { +static const char _vq_lengthlist__44cn1_sm_p7_1[] = { 2, 4, 4, 4, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6, 6, 6, 5, 5, }; static const static_codebook _44cn1_sm_p7_1 = { 2, 25, - (long *)_vq_lengthlist__44cn1_sm_p7_1, + (char *)_vq_lengthlist__44cn1_sm_p7_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44cn1_sm_p7_1, 0 @@ -15659,7 +15659,7 @@ static const long _vq_quantlist__44cn1_sm_p8_0[] = { 8, }; -static const long _vq_lengthlist__44cn1_sm_p8_0[] = { +static const char _vq_lengthlist__44cn1_sm_p8_0[] = { 1, 4, 4,12,11,13,13,14,14, 4, 7, 7,11,13,14,14, 14,14, 3, 8, 3,14,14,14,14,14,14,14,10,12,14,14, 14,14,14,14,14,14, 5,14, 8,14,14,14,14,14,12,14, @@ -15670,7 +15670,7 @@ static const long _vq_lengthlist__44cn1_sm_p8_0[] = { static const static_codebook _44cn1_sm_p8_0 = { 2, 81, - (long *)_vq_lengthlist__44cn1_sm_p8_0, + (char *)_vq_lengthlist__44cn1_sm_p8_0, 1, -516186112, 1627103232, 4, 0, (long *)_vq_quantlist__44cn1_sm_p8_0, 0 @@ -15692,7 +15692,7 @@ static const long _vq_quantlist__44cn1_sm_p8_1[] = { 12, }; -static const long _vq_lengthlist__44cn1_sm_p8_1[] = { +static const char _vq_lengthlist__44cn1_sm_p8_1[] = { 1, 4, 4, 6, 6, 8, 8, 9, 9,10,11,11,11, 6, 5, 5, 7, 7, 8, 8,10,10,10,11,11,11, 6, 5, 5, 7, 7, 8, 8,10,10,11,12,12,12,14, 7, 7, 7, 8, 9, 9,11,11, @@ -15708,7 +15708,7 @@ static const long _vq_lengthlist__44cn1_sm_p8_1[] = { static const static_codebook _44cn1_sm_p8_1 = { 2, 169, - (long *)_vq_lengthlist__44cn1_sm_p8_1, + (char *)_vq_lengthlist__44cn1_sm_p8_1, 1, -522616832, 1620115456, 4, 0, (long *)_vq_quantlist__44cn1_sm_p8_1, 0 @@ -15734,7 +15734,7 @@ static const long _vq_quantlist__44cn1_sm_p8_2[] = { 16, }; -static const long _vq_lengthlist__44cn1_sm_p8_2[] = { +static const char _vq_lengthlist__44cn1_sm_p8_2[] = { 3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,10, 6, 6, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9,10, 6, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, @@ -15758,13 +15758,13 @@ static const long _vq_lengthlist__44cn1_sm_p8_2[] = { static const static_codebook _44cn1_sm_p8_2 = { 2, 289, - (long *)_vq_lengthlist__44cn1_sm_p8_2, + (char *)_vq_lengthlist__44cn1_sm_p8_2, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44cn1_sm_p8_2, 0 }; -static const long _huff_lengthlist__44cn1_sm_short[] = { +static const char _huff_lengthlist__44cn1_sm_short[] = { 5, 6,12,14,12,14,16,17,18, 4, 2, 5,11, 7,10,12, 14,15, 9, 4, 5,11, 7,10,13,15,18,15, 6, 7, 5, 6, 8,11,13,16,11, 5, 6, 5, 5, 6, 9,13,15,12, 5, 7, @@ -15775,7 +15775,7 @@ static const long _huff_lengthlist__44cn1_sm_short[] = { static const static_codebook _huff_book__44cn1_sm_short = { 2, 81, - (long *)_huff_lengthlist__44cn1_sm_short, + (char *)_huff_lengthlist__44cn1_sm_short, 0, 0, 0, 0, 0, NULL, 0 diff --git a/drivers/vorbis/books/floor/Makefile.am b/drivers/vorbis/books/floor/Makefile.am deleted file mode 100644 index 272ab1a28c..0000000000 --- a/drivers/vorbis/books/floor/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -## Process this file with automake to produce Makefile.in - -EXTRA_DIST = floor_books.h diff --git a/drivers/vorbis/books/floor/Makefile.in b/drivers/vorbis/books/floor/Makefile.in deleted file mode 100644 index 6148dc21f1..0000000000 --- a/drivers/vorbis/books/floor/Makefile.in +++ /dev/null @@ -1,356 +0,0 @@ -# Makefile.in generated by automake 1.10.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -subdir = lib/books/floor -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/add_cflags.m4 \ - $(top_srcdir)/m4/ogg.m4 $(top_srcdir)/m4/pkg.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEBUG = @DEBUG@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -HAVE_DOXYGEN = @HAVE_DOXYGEN@ -HTLATEX = @HTLATEX@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OGG_CFLAGS = @OGG_CFLAGS@ -OGG_LIBS = @OGG_LIBS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PDFLATEX = @PDFLATEX@ -PKG_CONFIG = @PKG_CONFIG@ -PROFILE = @PROFILE@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VE_LIB_AGE = @VE_LIB_AGE@ -VE_LIB_CURRENT = @VE_LIB_CURRENT@ -VE_LIB_REVISION = @VE_LIB_REVISION@ -VF_LIB_AGE = @VF_LIB_AGE@ -VF_LIB_CURRENT = @VF_LIB_CURRENT@ -VF_LIB_REVISION = @VF_LIB_REVISION@ -VORBIS_LIBS = @VORBIS_LIBS@ -V_LIB_AGE = @V_LIB_AGE@ -V_LIB_CURRENT = @V_LIB_CURRENT@ -V_LIB_REVISION = @V_LIB_REVISION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -pthread_lib = @pthread_lib@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -EXTRA_DIST = floor_books.h -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/books/floor/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu lib/books/floor/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-exec-am: - -install-html: install-html-am - -install-info: install-info-am - -install-man: - -install-pdf: install-pdf-am - -install-ps: install-ps-am - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/drivers/vorbis/books/floor/floor_books.h b/drivers/vorbis/books/floor/floor_books.h index 14320cf692..e925313f7b 100644 --- a/drivers/vorbis/books/floor/floor_books.h +++ b/drivers/vorbis/books/floor/floor_books.h @@ -11,38 +11,38 @@ ******************************************************************** function: static codebooks autogenerated by huff/huffbuld - last modified: $Id: floor_books.h 16939 2010-03-01 08:38:14Z xiphmont $ + last modified: $Id: floor_books.h 19057 2014-01-22 12:32:31Z xiphmont $ ********************************************************************/ #include "codebook.h" -static const long _huff_lengthlist_line_256x7_0sub1[] = { +static const char _huff_lengthlist_line_256x7_0sub1[] = { 0, 2, 3, 3, 3, 3, 4, 3, 4, }; static const static_codebook _huff_book_line_256x7_0sub1 = { 1, 9, - (long *)_huff_lengthlist_line_256x7_0sub1, + (char *)_huff_lengthlist_line_256x7_0sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x7_0sub2[] = { +static const char _huff_lengthlist_line_256x7_0sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 3, 4, 3, 5, 3, 6, 3, 6, 4, 6, 4, 7, 5, 7, }; static const static_codebook _huff_book_line_256x7_0sub2 = { 1, 25, - (long *)_huff_lengthlist_line_256x7_0sub2, + (char *)_huff_lengthlist_line_256x7_0sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x7_0sub3[] = { +static const char _huff_lengthlist_line_256x7_0sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 2, 5, 3, 5, 3, 6, 3, 6, 4, 7, 6, 7, 8, 7, 9, 8, 9, 9, 9,10, 9, @@ -51,38 +51,38 @@ static const long _huff_lengthlist_line_256x7_0sub3[] = { static const static_codebook _huff_book_line_256x7_0sub3 = { 1, 64, - (long *)_huff_lengthlist_line_256x7_0sub3, + (char *)_huff_lengthlist_line_256x7_0sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x7_1sub1[] = { +static const char _huff_lengthlist_line_256x7_1sub1[] = { 0, 3, 3, 3, 3, 2, 4, 3, 4, }; static const static_codebook _huff_book_line_256x7_1sub1 = { 1, 9, - (long *)_huff_lengthlist_line_256x7_1sub1, + (char *)_huff_lengthlist_line_256x7_1sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x7_1sub2[] = { +static const char _huff_lengthlist_line_256x7_1sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 4, 3, 4, 4, 5, 4, 6, 5, 6, 7, 6, 8, 8, }; static const static_codebook _huff_book_line_256x7_1sub2 = { 1, 25, - (long *)_huff_lengthlist_line_256x7_1sub2, + (char *)_huff_lengthlist_line_256x7_1sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x7_1sub3[] = { +static const char _huff_lengthlist_line_256x7_1sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 4, 3, 6, 3, 7, 3, 8, 5, 8, 6, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, @@ -91,13 +91,13 @@ static const long _huff_lengthlist_line_256x7_1sub3[] = { static const static_codebook _huff_book_line_256x7_1sub3 = { 1, 64, - (long *)_huff_lengthlist_line_256x7_1sub3, + (char *)_huff_lengthlist_line_256x7_1sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x7_class0[] = { +static const char _huff_lengthlist_line_256x7_class0[] = { 7, 5, 5, 9, 9, 6, 6, 9,12, 8, 7, 8,11, 8, 9,15, 6, 3, 3, 7, 7, 4, 3, 6, 9, 6, 5, 6, 8, 6, 8,15, 8, 5, 5, 9, 8, 5, 4, 6,10, 7, 5, 5,11, 8, 7,15, @@ -106,13 +106,13 @@ static const long _huff_lengthlist_line_256x7_class0[] = { static const static_codebook _huff_book_line_256x7_class0 = { 1, 64, - (long *)_huff_lengthlist_line_256x7_class0, + (char *)_huff_lengthlist_line_256x7_class0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x7_class1[] = { +static const char _huff_lengthlist_line_256x7_class1[] = { 5, 6, 8,15, 6, 9,10,15,10,11,12,15,15,15,15,15, 4, 6, 7,15, 6, 7, 8,15, 9, 8, 9,15,15,15,15,15, 6, 8, 9,15, 7, 7, 8,15,10, 9,10,15,15,15,15,15, @@ -133,13 +133,13 @@ static const long _huff_lengthlist_line_256x7_class1[] = { static const static_codebook _huff_book_line_256x7_class1 = { 1, 256, - (long *)_huff_lengthlist_line_256x7_class1, + (char *)_huff_lengthlist_line_256x7_class1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_512x17_0sub0[] = { +static const char _huff_lengthlist_line_512x17_0sub0[] = { 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 6, 6, 6, 6, 5, 6, 6, 7, 6, 7, 6, 7, 6, 7, 6, 8, 7, 8, 7, 8, 7, 8, 7, 8, 7, 9, 7, 9, 7, @@ -152,26 +152,26 @@ static const long _huff_lengthlist_line_512x17_0sub0[] = { static const static_codebook _huff_book_line_512x17_0sub0 = { 1, 128, - (long *)_huff_lengthlist_line_512x17_0sub0, + (char *)_huff_lengthlist_line_512x17_0sub0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_512x17_1sub0[] = { +static const char _huff_lengthlist_line_512x17_1sub0[] = { 2, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 6, 7, 6, 7, 6, 8, 7, 8, 7, 8, 7, 8, 7, }; static const static_codebook _huff_book_line_512x17_1sub0 = { 1, 32, - (long *)_huff_lengthlist_line_512x17_1sub0, + (char *)_huff_lengthlist_line_512x17_1sub0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_512x17_1sub1[] = { +static const char _huff_lengthlist_line_512x17_1sub1[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 5, 3, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 6, 5, @@ -184,26 +184,26 @@ static const long _huff_lengthlist_line_512x17_1sub1[] = { static const static_codebook _huff_book_line_512x17_1sub1 = { 1, 128, - (long *)_huff_lengthlist_line_512x17_1sub1, + (char *)_huff_lengthlist_line_512x17_1sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_512x17_2sub1[] = { +static const char _huff_lengthlist_line_512x17_2sub1[] = { 0, 4, 5, 4, 4, 4, 5, 4, 4, 4, 5, 4, 5, 4, 5, 3, 5, 3, }; static const static_codebook _huff_book_line_512x17_2sub1 = { 1, 18, - (long *)_huff_lengthlist_line_512x17_2sub1, + (char *)_huff_lengthlist_line_512x17_2sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_512x17_2sub2[] = { +static const char _huff_lengthlist_line_512x17_2sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 3, 4, 4, 5, 4, 5, 4, 6, 4, 6, 5, 6, 5, 7, 5, 7, 6, 8, 6, 8, 6, 8, 7, 8, 7, 9, 7, @@ -212,13 +212,13 @@ static const long _huff_lengthlist_line_512x17_2sub2[] = { static const static_codebook _huff_book_line_512x17_2sub2 = { 1, 50, - (long *)_huff_lengthlist_line_512x17_2sub2, + (char *)_huff_lengthlist_line_512x17_2sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_512x17_2sub3[] = { +static const char _huff_lengthlist_line_512x17_2sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -231,26 +231,26 @@ static const long _huff_lengthlist_line_512x17_2sub3[] = { static const static_codebook _huff_book_line_512x17_2sub3 = { 1, 128, - (long *)_huff_lengthlist_line_512x17_2sub3, + (char *)_huff_lengthlist_line_512x17_2sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_512x17_3sub1[] = { +static const char _huff_lengthlist_line_512x17_3sub1[] = { 0, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 5, 4, 5, 5, 5, }; static const static_codebook _huff_book_line_512x17_3sub1 = { 1, 18, - (long *)_huff_lengthlist_line_512x17_3sub1, + (char *)_huff_lengthlist_line_512x17_3sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_512x17_3sub2[] = { +static const char _huff_lengthlist_line_512x17_3sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 4, 3, 5, 4, 6, 4, 6, 5, 7, 6, 7, 6, 8, 6, 8, 7, 9, 8,10, 8,12, 9,13,10,15,10,15, @@ -259,13 +259,13 @@ static const long _huff_lengthlist_line_512x17_3sub2[] = { static const static_codebook _huff_book_line_512x17_3sub2 = { 1, 50, - (long *)_huff_lengthlist_line_512x17_3sub2, + (char *)_huff_lengthlist_line_512x17_3sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_512x17_3sub3[] = { +static const char _huff_lengthlist_line_512x17_3sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -278,25 +278,25 @@ static const long _huff_lengthlist_line_512x17_3sub3[] = { static const static_codebook _huff_book_line_512x17_3sub3 = { 1, 128, - (long *)_huff_lengthlist_line_512x17_3sub3, + (char *)_huff_lengthlist_line_512x17_3sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_512x17_class1[] = { +static const char _huff_lengthlist_line_512x17_class1[] = { 1, 2, 3, 6, 5, 4, 7, 7, }; static const static_codebook _huff_book_line_512x17_class1 = { 1, 8, - (long *)_huff_lengthlist_line_512x17_class1, + (char *)_huff_lengthlist_line_512x17_class1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_512x17_class2[] = { +static const char _huff_lengthlist_line_512x17_class2[] = { 3, 3, 3,14, 5, 4, 4,11, 8, 6, 6,10,17,12,11,17, 6, 5, 5,15, 5, 3, 4,11, 8, 5, 5, 8,16, 9,10,14, 10, 8, 9,17, 8, 6, 6,13,10, 7, 7,10,16,11,13,14, @@ -305,13 +305,13 @@ static const long _huff_lengthlist_line_512x17_class2[] = { static const static_codebook _huff_book_line_512x17_class2 = { 1, 64, - (long *)_huff_lengthlist_line_512x17_class2, + (char *)_huff_lengthlist_line_512x17_class2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_512x17_class3[] = { +static const char _huff_lengthlist_line_512x17_class3[] = { 2, 4, 6,17, 4, 5, 7,17, 8, 7,10,17,17,17,17,17, 3, 4, 6,15, 3, 3, 6,15, 7, 6, 9,17,17,17,17,17, 6, 8,10,17, 6, 6, 8,16, 9, 8,10,17,17,15,16,17, @@ -320,13 +320,13 @@ static const long _huff_lengthlist_line_512x17_class3[] = { static const static_codebook _huff_book_line_512x17_class3 = { 1, 64, - (long *)_huff_lengthlist_line_512x17_class3, + (char *)_huff_lengthlist_line_512x17_class3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x4_class0[] = { +static const char _huff_lengthlist_line_128x4_class0[] = { 7, 7, 7,11, 6, 6, 7,11, 7, 6, 6,10,12,10,10,13, 7, 7, 8,11, 7, 7, 7,11, 7, 6, 7,10,11,10,10,13, 10,10, 9,12, 9, 9, 9,11, 8, 8, 8,11,13,11,10,14, @@ -347,50 +347,50 @@ static const long _huff_lengthlist_line_128x4_class0[] = { static const static_codebook _huff_book_line_128x4_class0 = { 1, 256, - (long *)_huff_lengthlist_line_128x4_class0, + (char *)_huff_lengthlist_line_128x4_class0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x4_0sub0[] = { +static const char _huff_lengthlist_line_128x4_0sub0[] = { 2, 2, 2, 2, }; static const static_codebook _huff_book_line_128x4_0sub0 = { 1, 4, - (long *)_huff_lengthlist_line_128x4_0sub0, + (char *)_huff_lengthlist_line_128x4_0sub0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x4_0sub1[] = { +static const char _huff_lengthlist_line_128x4_0sub1[] = { 0, 0, 0, 0, 3, 2, 3, 2, 3, 3, }; static const static_codebook _huff_book_line_128x4_0sub1 = { 1, 10, - (long *)_huff_lengthlist_line_128x4_0sub1, + (char *)_huff_lengthlist_line_128x4_0sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x4_0sub2[] = { +static const char _huff_lengthlist_line_128x4_0sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 3, 4, 3, 4, 4, 5, 4, 5, 4, 6, 5, 6, }; static const static_codebook _huff_book_line_128x4_0sub2 = { 1, 25, - (long *)_huff_lengthlist_line_128x4_0sub2, + (char *)_huff_lengthlist_line_128x4_0sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x4_0sub3[] = { +static const char _huff_lengthlist_line_128x4_0sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 3, 5, 3, 5, 3, 5, 4, 6, 5, 6, 5, 7, 6, 6, 7, 7, 9, 9,11,11,16, @@ -399,13 +399,13 @@ static const long _huff_lengthlist_line_128x4_0sub3[] = { static const static_codebook _huff_book_line_128x4_0sub3 = { 1, 64, - (long *)_huff_lengthlist_line_128x4_0sub3, + (char *)_huff_lengthlist_line_128x4_0sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x4_class0[] = { +static const char _huff_lengthlist_line_256x4_class0[] = { 6, 7, 7,12, 6, 6, 7,12, 7, 6, 6,10,15,12,11,13, 7, 7, 8,13, 7, 7, 8,12, 7, 7, 7,11,12,12,11,13, 10, 9, 9,11, 9, 9, 9,10,10, 8, 8,12,14,12,12,14, @@ -426,50 +426,50 @@ static const long _huff_lengthlist_line_256x4_class0[] = { static const static_codebook _huff_book_line_256x4_class0 = { 1, 256, - (long *)_huff_lengthlist_line_256x4_class0, + (char *)_huff_lengthlist_line_256x4_class0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x4_0sub0[] = { +static const char _huff_lengthlist_line_256x4_0sub0[] = { 2, 2, 2, 2, }; static const static_codebook _huff_book_line_256x4_0sub0 = { 1, 4, - (long *)_huff_lengthlist_line_256x4_0sub0, + (char *)_huff_lengthlist_line_256x4_0sub0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x4_0sub1[] = { +static const char _huff_lengthlist_line_256x4_0sub1[] = { 0, 0, 0, 0, 2, 2, 3, 3, 3, 3, }; static const static_codebook _huff_book_line_256x4_0sub1 = { 1, 10, - (long *)_huff_lengthlist_line_256x4_0sub1, + (char *)_huff_lengthlist_line_256x4_0sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x4_0sub2[] = { +static const char _huff_lengthlist_line_256x4_0sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 3, 4, 3, 5, 3, 5, 4, 5, 4, 6, 4, 6, }; static const static_codebook _huff_book_line_256x4_0sub2 = { 1, 25, - (long *)_huff_lengthlist_line_256x4_0sub2, + (char *)_huff_lengthlist_line_256x4_0sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x4_0sub3[] = { +static const char _huff_lengthlist_line_256x4_0sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 3, 5, 3, 5, 3, 6, 4, 7, 4, 7, 5, 7, 6, 7, 6, 7, 8,10,13,13,13, @@ -478,13 +478,13 @@ static const long _huff_lengthlist_line_256x4_0sub3[] = { static const static_codebook _huff_book_line_256x4_0sub3 = { 1, 64, - (long *)_huff_lengthlist_line_256x4_0sub3, + (char *)_huff_lengthlist_line_256x4_0sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x7_class0[] = { +static const char _huff_lengthlist_line_128x7_class0[] = { 10, 7, 8,13, 9, 6, 7,11,10, 8, 8,12,17,17,17,17, 7, 5, 5, 9, 6, 4, 4, 8, 8, 5, 5, 8,16,14,13,16, 7, 5, 5, 7, 6, 3, 3, 5, 8, 5, 4, 7,14,12,12,15, @@ -493,13 +493,13 @@ static const long _huff_lengthlist_line_128x7_class0[] = { static const static_codebook _huff_book_line_128x7_class0 = { 1, 64, - (long *)_huff_lengthlist_line_128x7_class0, + (char *)_huff_lengthlist_line_128x7_class0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x7_class1[] = { +static const char _huff_lengthlist_line_128x7_class1[] = { 8,13,17,17, 8,11,17,17,11,13,17,17,17,17,17,17, 6,10,16,17, 6,10,15,17, 8,10,16,17,17,17,17,17, 9,13,15,17, 8,11,17,17,10,12,17,17,17,17,17,17, @@ -520,38 +520,38 @@ static const long _huff_lengthlist_line_128x7_class1[] = { static const static_codebook _huff_book_line_128x7_class1 = { 1, 256, - (long *)_huff_lengthlist_line_128x7_class1, + (char *)_huff_lengthlist_line_128x7_class1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x7_0sub1[] = { +static const char _huff_lengthlist_line_128x7_0sub1[] = { 0, 3, 3, 3, 3, 3, 3, 3, 3, }; static const static_codebook _huff_book_line_128x7_0sub1 = { 1, 9, - (long *)_huff_lengthlist_line_128x7_0sub1, + (char *)_huff_lengthlist_line_128x7_0sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x7_0sub2[] = { +static const char _huff_lengthlist_line_128x7_0sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 4, 4, 4, 5, 4, 5, 4, 5, 4, 6, 4, 6, }; static const static_codebook _huff_book_line_128x7_0sub2 = { 1, 25, - (long *)_huff_lengthlist_line_128x7_0sub2, + (char *)_huff_lengthlist_line_128x7_0sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x7_0sub3[] = { +static const char _huff_lengthlist_line_128x7_0sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 5, 3, 5, 3, 5, 4, 5, 4, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, @@ -560,38 +560,38 @@ static const long _huff_lengthlist_line_128x7_0sub3[] = { static const static_codebook _huff_book_line_128x7_0sub3 = { 1, 64, - (long *)_huff_lengthlist_line_128x7_0sub3, + (char *)_huff_lengthlist_line_128x7_0sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x7_1sub1[] = { +static const char _huff_lengthlist_line_128x7_1sub1[] = { 0, 3, 3, 2, 3, 3, 4, 3, 4, }; static const static_codebook _huff_book_line_128x7_1sub1 = { 1, 9, - (long *)_huff_lengthlist_line_128x7_1sub1, + (char *)_huff_lengthlist_line_128x7_1sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x7_1sub2[] = { +static const char _huff_lengthlist_line_128x7_1sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 3, 6, 3, 6, 3, 6, 3, 7, 3, 8, 4, 9, 4, 9, }; static const static_codebook _huff_book_line_128x7_1sub2 = { 1, 25, - (long *)_huff_lengthlist_line_128x7_1sub2, + (char *)_huff_lengthlist_line_128x7_1sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x7_1sub3[] = { +static const char _huff_lengthlist_line_128x7_1sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 7, 2, 7, 3, 8, 4, 9, 5, 9, 8,10,11,11,12,14,14,14,14,14,14,14,14, @@ -600,25 +600,25 @@ static const long _huff_lengthlist_line_128x7_1sub3[] = { static const static_codebook _huff_book_line_128x7_1sub3 = { 1, 64, - (long *)_huff_lengthlist_line_128x7_1sub3, + (char *)_huff_lengthlist_line_128x7_1sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x11_class1[] = { +static const char _huff_lengthlist_line_128x11_class1[] = { 1, 6, 3, 7, 2, 4, 5, 7, }; static const static_codebook _huff_book_line_128x11_class1 = { 1, 8, - (long *)_huff_lengthlist_line_128x11_class1, + (char *)_huff_lengthlist_line_128x11_class1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x11_class2[] = { +static const char _huff_lengthlist_line_128x11_class2[] = { 1, 6,12,16, 4,12,15,16, 9,15,16,16,16,16,16,16, 2, 5,11,16, 5,11,13,16, 9,13,16,16,16,16,16,16, 4, 8,12,16, 5, 9,12,16, 9,13,15,16,16,16,16,16, @@ -627,13 +627,13 @@ static const long _huff_lengthlist_line_128x11_class2[] = { static const static_codebook _huff_book_line_128x11_class2 = { 1, 64, - (long *)_huff_lengthlist_line_128x11_class2, + (char *)_huff_lengthlist_line_128x11_class2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x11_class3[] = { +static const char _huff_lengthlist_line_128x11_class3[] = { 7, 6, 9,17, 7, 6, 8,17,12, 9,11,16,16,16,16,16, 5, 4, 7,16, 5, 3, 6,14, 9, 6, 8,15,16,16,16,16, 5, 4, 6,13, 3, 2, 4,11, 7, 4, 6,13,16,11,10,14, @@ -642,13 +642,13 @@ static const long _huff_lengthlist_line_128x11_class3[] = { static const static_codebook _huff_book_line_128x11_class3 = { 1, 64, - (long *)_huff_lengthlist_line_128x11_class3, + (char *)_huff_lengthlist_line_128x11_class3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x11_0sub0[] = { +static const char _huff_lengthlist_line_128x11_0sub0[] = { 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 6, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 8, 6, 8, 6, 8, 7, @@ -661,26 +661,26 @@ static const long _huff_lengthlist_line_128x11_0sub0[] = { static const static_codebook _huff_book_line_128x11_0sub0 = { 1, 128, - (long *)_huff_lengthlist_line_128x11_0sub0, + (char *)_huff_lengthlist_line_128x11_0sub0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x11_1sub0[] = { +static const char _huff_lengthlist_line_128x11_1sub0[] = { 2, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 7, 6, 7, 6, 7, 6, 8, 6, 8, 6, }; static const static_codebook _huff_book_line_128x11_1sub0 = { 1, 32, - (long *)_huff_lengthlist_line_128x11_1sub0, + (char *)_huff_lengthlist_line_128x11_1sub0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x11_1sub1[] = { +static const char _huff_lengthlist_line_128x11_1sub1[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 5, 3, 6, 4, 6, 4, 7, 4, 7, 4, 7, 4, 8, 4, @@ -693,26 +693,26 @@ static const long _huff_lengthlist_line_128x11_1sub1[] = { static const static_codebook _huff_book_line_128x11_1sub1 = { 1, 128, - (long *)_huff_lengthlist_line_128x11_1sub1, + (char *)_huff_lengthlist_line_128x11_1sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x11_2sub1[] = { +static const char _huff_lengthlist_line_128x11_2sub1[] = { 0, 4, 5, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4, 4, 4, 5, 5, }; static const static_codebook _huff_book_line_128x11_2sub1 = { 1, 18, - (long *)_huff_lengthlist_line_128x11_2sub1, + (char *)_huff_lengthlist_line_128x11_2sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x11_2sub2[] = { +static const char _huff_lengthlist_line_128x11_2sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 4, 4, 4, 5, 4, 5, 4, 6, 5, 7, 5, 7, 6, 8, 6, 8, 6, 9, 7, 9, 7,10, 7, 9, 8,11, @@ -721,13 +721,13 @@ static const long _huff_lengthlist_line_128x11_2sub2[] = { static const static_codebook _huff_book_line_128x11_2sub2 = { 1, 50, - (long *)_huff_lengthlist_line_128x11_2sub2, + (char *)_huff_lengthlist_line_128x11_2sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x11_2sub3[] = { +static const char _huff_lengthlist_line_128x11_2sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -740,26 +740,26 @@ static const long _huff_lengthlist_line_128x11_2sub3[] = { static const static_codebook _huff_book_line_128x11_2sub3 = { 1, 128, - (long *)_huff_lengthlist_line_128x11_2sub3, + (char *)_huff_lengthlist_line_128x11_2sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x11_3sub1[] = { +static const char _huff_lengthlist_line_128x11_3sub1[] = { 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 5, 4, }; static const static_codebook _huff_book_line_128x11_3sub1 = { 1, 18, - (long *)_huff_lengthlist_line_128x11_3sub1, + (char *)_huff_lengthlist_line_128x11_3sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x11_3sub2[] = { +static const char _huff_lengthlist_line_128x11_3sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 5, 4, 6, 4, 6, 4, 7, 4, 7, 4, 8, 4, 8, 4, 9, 4, 9, 4,10, 4,10, 5,10, 5,11, 5,12, 6, @@ -768,13 +768,13 @@ static const long _huff_lengthlist_line_128x11_3sub2[] = { static const static_codebook _huff_book_line_128x11_3sub2 = { 1, 50, - (long *)_huff_lengthlist_line_128x11_3sub2, + (char *)_huff_lengthlist_line_128x11_3sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x11_3sub3[] = { +static const char _huff_lengthlist_line_128x11_3sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -787,25 +787,25 @@ static const long _huff_lengthlist_line_128x11_3sub3[] = { static const static_codebook _huff_book_line_128x11_3sub3 = { 1, 128, - (long *)_huff_lengthlist_line_128x11_3sub3, + (char *)_huff_lengthlist_line_128x11_3sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x17_class1[] = { +static const char _huff_lengthlist_line_128x17_class1[] = { 1, 3, 4, 7, 2, 5, 6, 7, }; static const static_codebook _huff_book_line_128x17_class1 = { 1, 8, - (long *)_huff_lengthlist_line_128x17_class1, + (char *)_huff_lengthlist_line_128x17_class1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x17_class2[] = { +static const char _huff_lengthlist_line_128x17_class2[] = { 1, 4,10,19, 3, 8,13,19, 7,12,19,19,19,19,19,19, 2, 6,11,19, 8,13,19,19, 9,11,19,19,19,19,19,19, 6, 7,13,19, 9,13,19,19,10,13,18,18,18,18,18,18, @@ -814,13 +814,13 @@ static const long _huff_lengthlist_line_128x17_class2[] = { static const static_codebook _huff_book_line_128x17_class2 = { 1, 64, - (long *)_huff_lengthlist_line_128x17_class2, + (char *)_huff_lengthlist_line_128x17_class2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x17_class3[] = { +static const char _huff_lengthlist_line_128x17_class3[] = { 3, 6,10,17, 4, 8,11,20, 8,10,11,20,20,20,20,20, 2, 4, 8,18, 4, 6, 8,17, 7, 8,10,20,20,17,20,20, 3, 5, 8,17, 3, 4, 6,17, 8, 8,10,17,17,12,16,20, @@ -829,13 +829,13 @@ static const long _huff_lengthlist_line_128x17_class3[] = { static const static_codebook _huff_book_line_128x17_class3 = { 1, 64, - (long *)_huff_lengthlist_line_128x17_class3, + (char *)_huff_lengthlist_line_128x17_class3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x17_0sub0[] = { +static const char _huff_lengthlist_line_128x17_0sub0[] = { 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 7, 5, 8, 5, 8, 5, 8, 5, 8, 5, 8, 6, 8, 6, 8, 6, 9, 6, 9, 6, 9, 6, @@ -848,26 +848,26 @@ static const long _huff_lengthlist_line_128x17_0sub0[] = { static const static_codebook _huff_book_line_128x17_0sub0 = { 1, 128, - (long *)_huff_lengthlist_line_128x17_0sub0, + (char *)_huff_lengthlist_line_128x17_0sub0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x17_1sub0[] = { +static const char _huff_lengthlist_line_128x17_1sub0[] = { 2, 5, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 7, 6, 7, 6, 7, 6, 8, 6, 9, 7, 9, 7, }; static const static_codebook _huff_book_line_128x17_1sub0 = { 1, 32, - (long *)_huff_lengthlist_line_128x17_1sub0, + (char *)_huff_lengthlist_line_128x17_1sub0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x17_1sub1[] = { +static const char _huff_lengthlist_line_128x17_1sub1[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 5, 3, 5, 3, 6, 3, 6, 4, 6, 4, 7, 4, 7, 5, @@ -880,26 +880,26 @@ static const long _huff_lengthlist_line_128x17_1sub1[] = { static const static_codebook _huff_book_line_128x17_1sub1 = { 1, 128, - (long *)_huff_lengthlist_line_128x17_1sub1, + (char *)_huff_lengthlist_line_128x17_1sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x17_2sub1[] = { +static const char _huff_lengthlist_line_128x17_2sub1[] = { 0, 4, 5, 4, 6, 4, 8, 3, 9, 3, 9, 2, 9, 3, 8, 4, 9, 4, }; static const static_codebook _huff_book_line_128x17_2sub1 = { 1, 18, - (long *)_huff_lengthlist_line_128x17_2sub1, + (char *)_huff_lengthlist_line_128x17_2sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x17_2sub2[] = { +static const char _huff_lengthlist_line_128x17_2sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 1, 5, 3, 5, 3, 5, 4, 7, 5,10, 7,10, 7, 12,10,14,10,14, 9,14,11,14,14,14,13,13,13,13,13, @@ -908,13 +908,13 @@ static const long _huff_lengthlist_line_128x17_2sub2[] = { static const static_codebook _huff_book_line_128x17_2sub2 = { 1, 50, - (long *)_huff_lengthlist_line_128x17_2sub2, + (char *)_huff_lengthlist_line_128x17_2sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x17_2sub3[] = { +static const char _huff_lengthlist_line_128x17_2sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -927,26 +927,26 @@ static const long _huff_lengthlist_line_128x17_2sub3[] = { static const static_codebook _huff_book_line_128x17_2sub3 = { 1, 128, - (long *)_huff_lengthlist_line_128x17_2sub3, + (char *)_huff_lengthlist_line_128x17_2sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x17_3sub1[] = { +static const char _huff_lengthlist_line_128x17_3sub1[] = { 0, 4, 4, 4, 4, 4, 4, 4, 5, 3, 5, 3, 5, 4, 6, 4, 6, 4, }; static const static_codebook _huff_book_line_128x17_3sub1 = { 1, 18, - (long *)_huff_lengthlist_line_128x17_3sub1, + (char *)_huff_lengthlist_line_128x17_3sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x17_3sub2[] = { +static const char _huff_lengthlist_line_128x17_3sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 3, 6, 3, 6, 4, 7, 4, 7, 4, 7, 4, 8, 4, 8, 4, 8, 4, 8, 4, 9, 4, 9, 5,10, 5,10, 7,10, 8, @@ -955,13 +955,13 @@ static const long _huff_lengthlist_line_128x17_3sub2[] = { static const static_codebook _huff_book_line_128x17_3sub2 = { 1, 50, - (long *)_huff_lengthlist_line_128x17_3sub2, + (char *)_huff_lengthlist_line_128x17_3sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_128x17_3sub3[] = { +static const char _huff_lengthlist_line_128x17_3sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -974,37 +974,37 @@ static const long _huff_lengthlist_line_128x17_3sub3[] = { static const static_codebook _huff_book_line_128x17_3sub3 = { 1, 128, - (long *)_huff_lengthlist_line_128x17_3sub3, + (char *)_huff_lengthlist_line_128x17_3sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_1024x27_class1[] = { +static const char _huff_lengthlist_line_1024x27_class1[] = { 2,10, 8,14, 7,12,11,14, 1, 5, 3, 7, 4, 9, 7,13, }; static const static_codebook _huff_book_line_1024x27_class1 = { 1, 16, - (long *)_huff_lengthlist_line_1024x27_class1, + (char *)_huff_lengthlist_line_1024x27_class1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_1024x27_class2[] = { +static const char _huff_lengthlist_line_1024x27_class2[] = { 1, 4, 2, 6, 3, 7, 5, 7, }; static const static_codebook _huff_book_line_1024x27_class2 = { 1, 8, - (long *)_huff_lengthlist_line_1024x27_class2, + (char *)_huff_lengthlist_line_1024x27_class2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_1024x27_class3[] = { +static const char _huff_lengthlist_line_1024x27_class3[] = { 1, 5, 7,21, 5, 8, 9,21,10, 9,12,20,20,16,20,20, 4, 8, 9,20, 6, 8, 9,20,11,11,13,20,20,15,17,20, 9,11,14,20, 8,10,15,20,11,13,15,20,20,20,20,20, @@ -1025,13 +1025,13 @@ static const long _huff_lengthlist_line_1024x27_class3[] = { static const static_codebook _huff_book_line_1024x27_class3 = { 1, 256, - (long *)_huff_lengthlist_line_1024x27_class3, + (char *)_huff_lengthlist_line_1024x27_class3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_1024x27_class4[] = { +static const char _huff_lengthlist_line_1024x27_class4[] = { 2, 3, 7,13, 4, 4, 7,15, 8, 6, 9,17,21,16,15,21, 2, 5, 7,11, 5, 5, 7,14, 9, 7,10,16,17,15,16,21, 4, 7,10,17, 7, 7, 9,15,11, 9,11,16,21,18,15,21, @@ -1040,13 +1040,13 @@ static const long _huff_lengthlist_line_1024x27_class4[] = { static const static_codebook _huff_book_line_1024x27_class4 = { 1, 64, - (long *)_huff_lengthlist_line_1024x27_class4, + (char *)_huff_lengthlist_line_1024x27_class4, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_1024x27_0sub0[] = { +static const char _huff_lengthlist_line_1024x27_0sub0[] = { 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 7, 5, 7, 5, 7, 5, 8, 6, 8, 6, 8, 6, 9, 6, 9, 6,10, 6,10, 6,11, 6, @@ -1059,26 +1059,26 @@ static const long _huff_lengthlist_line_1024x27_0sub0[] = { static const static_codebook _huff_book_line_1024x27_0sub0 = { 1, 128, - (long *)_huff_lengthlist_line_1024x27_0sub0, + (char *)_huff_lengthlist_line_1024x27_0sub0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_1024x27_1sub0[] = { +static const char _huff_lengthlist_line_1024x27_1sub0[] = { 2, 5, 5, 4, 5, 4, 5, 4, 5, 4, 6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 7, 6, 8, 6, 8, 6, 8, 6, 9, 6, 9, 6, }; static const static_codebook _huff_book_line_1024x27_1sub0 = { 1, 32, - (long *)_huff_lengthlist_line_1024x27_1sub0, + (char *)_huff_lengthlist_line_1024x27_1sub0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_1024x27_1sub1[] = { +static const char _huff_lengthlist_line_1024x27_1sub1[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 5, 8, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 4, 9, 4, @@ -1091,26 +1091,26 @@ static const long _huff_lengthlist_line_1024x27_1sub1[] = { static const static_codebook _huff_book_line_1024x27_1sub1 = { 1, 128, - (long *)_huff_lengthlist_line_1024x27_1sub1, + (char *)_huff_lengthlist_line_1024x27_1sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_1024x27_2sub0[] = { +static const char _huff_lengthlist_line_1024x27_2sub0[] = { 1, 5, 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 6, 7, 7, 7, 7, 8, 7, 8, 8, 9, 8,10, 9,10, 9, }; static const static_codebook _huff_book_line_1024x27_2sub0 = { 1, 32, - (long *)_huff_lengthlist_line_1024x27_2sub0, + (char *)_huff_lengthlist_line_1024x27_2sub0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_1024x27_2sub1[] = { +static const char _huff_lengthlist_line_1024x27_2sub1[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 4, 3, 4, 4, 5, 4, 5, 4, 5, 5, 6, 5, 6, 5, @@ -1123,26 +1123,26 @@ static const long _huff_lengthlist_line_1024x27_2sub1[] = { static const static_codebook _huff_book_line_1024x27_2sub1 = { 1, 128, - (long *)_huff_lengthlist_line_1024x27_2sub1, + (char *)_huff_lengthlist_line_1024x27_2sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_1024x27_3sub1[] = { +static const char _huff_lengthlist_line_1024x27_3sub1[] = { 0, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4, 4, 4, 4, 5, 5, 5, }; static const static_codebook _huff_book_line_1024x27_3sub1 = { 1, 18, - (long *)_huff_lengthlist_line_1024x27_3sub1, + (char *)_huff_lengthlist_line_1024x27_3sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_1024x27_3sub2[] = { +static const char _huff_lengthlist_line_1024x27_3sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 4, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 5, 7, 5, 8, 6, 8, 6, 9, 7,10, 7,10, 8,10, 8,11, @@ -1151,13 +1151,13 @@ static const long _huff_lengthlist_line_1024x27_3sub2[] = { static const static_codebook _huff_book_line_1024x27_3sub2 = { 1, 50, - (long *)_huff_lengthlist_line_1024x27_3sub2, + (char *)_huff_lengthlist_line_1024x27_3sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_1024x27_3sub3[] = { +static const char _huff_lengthlist_line_1024x27_3sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1170,26 +1170,26 @@ static const long _huff_lengthlist_line_1024x27_3sub3[] = { static const static_codebook _huff_book_line_1024x27_3sub3 = { 1, 128, - (long *)_huff_lengthlist_line_1024x27_3sub3, + (char *)_huff_lengthlist_line_1024x27_3sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_1024x27_4sub1[] = { +static const char _huff_lengthlist_line_1024x27_4sub1[] = { 0, 4, 5, 4, 5, 4, 5, 4, 5, 3, 5, 3, 5, 3, 5, 4, 5, 4, }; static const static_codebook _huff_book_line_1024x27_4sub1 = { 1, 18, - (long *)_huff_lengthlist_line_1024x27_4sub1, + (char *)_huff_lengthlist_line_1024x27_4sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_1024x27_4sub2[] = { +static const char _huff_lengthlist_line_1024x27_4sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 2, 4, 2, 5, 3, 5, 4, 6, 6, 6, 7, 7, 8, 7, 8, 7, 8, 7, 9, 8, 9, 8, 9, 8,10, 8,11, 9,12, @@ -1198,13 +1198,13 @@ static const long _huff_lengthlist_line_1024x27_4sub2[] = { static const static_codebook _huff_book_line_1024x27_4sub2 = { 1, 50, - (long *)_huff_lengthlist_line_1024x27_4sub2, + (char *)_huff_lengthlist_line_1024x27_4sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_1024x27_4sub3[] = { +static const char _huff_lengthlist_line_1024x27_4sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1217,37 +1217,37 @@ static const long _huff_lengthlist_line_1024x27_4sub3[] = { static const static_codebook _huff_book_line_1024x27_4sub3 = { 1, 128, - (long *)_huff_lengthlist_line_1024x27_4sub3, + (char *)_huff_lengthlist_line_1024x27_4sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_2048x27_class1[] = { +static const char _huff_lengthlist_line_2048x27_class1[] = { 2, 6, 8, 9, 7,11,13,13, 1, 3, 5, 5, 6, 6,12,10, }; static const static_codebook _huff_book_line_2048x27_class1 = { 1, 16, - (long *)_huff_lengthlist_line_2048x27_class1, + (char *)_huff_lengthlist_line_2048x27_class1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_2048x27_class2[] = { +static const char _huff_lengthlist_line_2048x27_class2[] = { 1, 2, 3, 6, 4, 7, 5, 7, }; static const static_codebook _huff_book_line_2048x27_class2 = { 1, 8, - (long *)_huff_lengthlist_line_2048x27_class2, + (char *)_huff_lengthlist_line_2048x27_class2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_2048x27_class3[] = { +static const char _huff_lengthlist_line_2048x27_class3[] = { 3, 3, 6,16, 5, 5, 7,16, 9, 8,11,16,16,16,16,16, 5, 5, 8,16, 5, 5, 7,16, 8, 7, 9,16,16,16,16,16, 9, 9,12,16, 6, 8,11,16, 9,10,11,16,16,16,16,16, @@ -1268,13 +1268,13 @@ static const long _huff_lengthlist_line_2048x27_class3[] = { static const static_codebook _huff_book_line_2048x27_class3 = { 1, 256, - (long *)_huff_lengthlist_line_2048x27_class3, + (char *)_huff_lengthlist_line_2048x27_class3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_2048x27_class4[] = { +static const char _huff_lengthlist_line_2048x27_class4[] = { 2, 4, 7,13, 4, 5, 7,15, 8, 7,10,16,16,14,16,16, 2, 4, 7,16, 3, 4, 7,14, 8, 8,10,16,16,16,15,16, 6, 8,11,16, 7, 7, 9,16,11, 9,13,16,16,16,15,16, @@ -1283,13 +1283,13 @@ static const long _huff_lengthlist_line_2048x27_class4[] = { static const static_codebook _huff_book_line_2048x27_class4 = { 1, 64, - (long *)_huff_lengthlist_line_2048x27_class4, + (char *)_huff_lengthlist_line_2048x27_class4, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_2048x27_0sub0[] = { +static const char _huff_lengthlist_line_2048x27_0sub0[] = { 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 6, 5, 7, 5, 7, 5, 7, 5, 8, 5, 8, 5, 8, 5, 9, 5, 9, 6,10, 6,10, 6,11, 6,11, 6,11, 6,11, 6,11, 6, @@ -1302,26 +1302,26 @@ static const long _huff_lengthlist_line_2048x27_0sub0[] = { static const static_codebook _huff_book_line_2048x27_0sub0 = { 1, 128, - (long *)_huff_lengthlist_line_2048x27_0sub0, + (char *)_huff_lengthlist_line_2048x27_0sub0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_2048x27_1sub0[] = { +static const char _huff_lengthlist_line_2048x27_1sub0[] = { 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 6, 7, 6, 7, 6, 7, 6, }; static const static_codebook _huff_book_line_2048x27_1sub0 = { 1, 32, - (long *)_huff_lengthlist_line_2048x27_1sub0, + (char *)_huff_lengthlist_line_2048x27_1sub0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_2048x27_1sub1[] = { +static const char _huff_lengthlist_line_2048x27_1sub1[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 5, 7, 5, 7, 4, 7, 4, 8, 4, 8, 4, 8, 4, 8, 3, @@ -1334,26 +1334,26 @@ static const long _huff_lengthlist_line_2048x27_1sub1[] = { static const static_codebook _huff_book_line_2048x27_1sub1 = { 1, 128, - (long *)_huff_lengthlist_line_2048x27_1sub1, + (char *)_huff_lengthlist_line_2048x27_1sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_2048x27_2sub0[] = { +static const char _huff_lengthlist_line_2048x27_2sub0[] = { 2, 4, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 5, 5, 6, 5, 6, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, }; static const static_codebook _huff_book_line_2048x27_2sub0 = { 1, 32, - (long *)_huff_lengthlist_line_2048x27_2sub0, + (char *)_huff_lengthlist_line_2048x27_2sub0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_2048x27_2sub1[] = { +static const char _huff_lengthlist_line_2048x27_2sub1[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 3, 4, 3, 4, 4, 5, 4, 5, 5, 5, 6, 6, 6, 7, @@ -1366,26 +1366,26 @@ static const long _huff_lengthlist_line_2048x27_2sub1[] = { static const static_codebook _huff_book_line_2048x27_2sub1 = { 1, 128, - (long *)_huff_lengthlist_line_2048x27_2sub1, + (char *)_huff_lengthlist_line_2048x27_2sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_2048x27_3sub1[] = { +static const char _huff_lengthlist_line_2048x27_3sub1[] = { 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, }; static const static_codebook _huff_book_line_2048x27_3sub1 = { 1, 18, - (long *)_huff_lengthlist_line_2048x27_3sub1, + (char *)_huff_lengthlist_line_2048x27_3sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_2048x27_3sub2[] = { +static const char _huff_lengthlist_line_2048x27_3sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 6, 7, 6, 8, 6, 9, 7, 9, 7, 9, 9,11, 9,12, @@ -1394,13 +1394,13 @@ static const long _huff_lengthlist_line_2048x27_3sub2[] = { static const static_codebook _huff_book_line_2048x27_3sub2 = { 1, 50, - (long *)_huff_lengthlist_line_2048x27_3sub2, + (char *)_huff_lengthlist_line_2048x27_3sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_2048x27_3sub3[] = { +static const char _huff_lengthlist_line_2048x27_3sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1413,26 +1413,26 @@ static const long _huff_lengthlist_line_2048x27_3sub3[] = { static const static_codebook _huff_book_line_2048x27_3sub3 = { 1, 128, - (long *)_huff_lengthlist_line_2048x27_3sub3, + (char *)_huff_lengthlist_line_2048x27_3sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_2048x27_4sub1[] = { +static const char _huff_lengthlist_line_2048x27_4sub1[] = { 0, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 5, 4, 5, 4, 4, 5, }; static const static_codebook _huff_book_line_2048x27_4sub1 = { 1, 18, - (long *)_huff_lengthlist_line_2048x27_4sub1, + (char *)_huff_lengthlist_line_2048x27_4sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_2048x27_4sub2[] = { +static const char _huff_lengthlist_line_2048x27_4sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 4, 3, 4, 4, 4, 5, 5, 6, 5, 6, 5, 7, 6, 6, 6, 7, 7, 7, 8, 9, 9, 9,12,10,11,10,10,12, @@ -1441,13 +1441,13 @@ static const long _huff_lengthlist_line_2048x27_4sub2[] = { static const static_codebook _huff_book_line_2048x27_4sub2 = { 1, 50, - (long *)_huff_lengthlist_line_2048x27_4sub2, + (char *)_huff_lengthlist_line_2048x27_4sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_2048x27_4sub3[] = { +static const char _huff_lengthlist_line_2048x27_4sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1460,13 +1460,13 @@ static const long _huff_lengthlist_line_2048x27_4sub3[] = { static const static_codebook _huff_book_line_2048x27_4sub3 = { 1, 128, - (long *)_huff_lengthlist_line_2048x27_4sub3, + (char *)_huff_lengthlist_line_2048x27_4sub3, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x4low_class0[] = { +static const char _huff_lengthlist_line_256x4low_class0[] = { 4, 5, 6,11, 5, 5, 6,10, 7, 7, 6, 6,14,13, 9, 9, 6, 6, 6,10, 6, 6, 6, 9, 8, 7, 7, 9,14,12, 8,11, 8, 7, 7,11, 8, 8, 7,11, 9, 9, 7, 9,13,11, 9,13, @@ -1487,50 +1487,50 @@ static const long _huff_lengthlist_line_256x4low_class0[] = { static const static_codebook _huff_book_line_256x4low_class0 = { 1, 256, - (long *)_huff_lengthlist_line_256x4low_class0, + (char *)_huff_lengthlist_line_256x4low_class0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x4low_0sub0[] = { +static const char _huff_lengthlist_line_256x4low_0sub0[] = { 1, 3, 2, 3, }; static const static_codebook _huff_book_line_256x4low_0sub0 = { 1, 4, - (long *)_huff_lengthlist_line_256x4low_0sub0, + (char *)_huff_lengthlist_line_256x4low_0sub0, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x4low_0sub1[] = { +static const char _huff_lengthlist_line_256x4low_0sub1[] = { 0, 0, 0, 0, 2, 3, 2, 3, 3, 3, }; static const static_codebook _huff_book_line_256x4low_0sub1 = { 1, 10, - (long *)_huff_lengthlist_line_256x4low_0sub1, + (char *)_huff_lengthlist_line_256x4low_0sub1, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x4low_0sub2[] = { +static const char _huff_lengthlist_line_256x4low_0sub2[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 4, 3, 4, 4, 4, 4, 4, 5, 5, 5, 6, 6, }; static const static_codebook _huff_book_line_256x4low_0sub2 = { 1, 25, - (long *)_huff_lengthlist_line_256x4low_0sub2, + (char *)_huff_lengthlist_line_256x4low_0sub2, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist_line_256x4low_0sub3[] = { +static const char _huff_lengthlist_line_256x4low_0sub3[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 2, 4, 3, 5, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 7, 7, 8, 6, 9, @@ -1539,7 +1539,7 @@ static const long _huff_lengthlist_line_256x4low_0sub3[] = { static const static_codebook _huff_book_line_256x4low_0sub3 = { 1, 64, - (long *)_huff_lengthlist_line_256x4low_0sub3, + (char *)_huff_lengthlist_line_256x4low_0sub3, 0, 0, 0, 0, 0, NULL, 0 diff --git a/drivers/vorbis/books/uncoupled/Makefile.am b/drivers/vorbis/books/uncoupled/Makefile.am deleted file mode 100644 index 93ff417c8f..0000000000 --- a/drivers/vorbis/books/uncoupled/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -## Process this file with automake to produce Makefile.in - -EXTRA_DIST = res_books_uncoupled.h diff --git a/drivers/vorbis/books/uncoupled/Makefile.in b/drivers/vorbis/books/uncoupled/Makefile.in deleted file mode 100644 index 34362f1454..0000000000 --- a/drivers/vorbis/books/uncoupled/Makefile.in +++ /dev/null @@ -1,356 +0,0 @@ -# Makefile.in generated by automake 1.10.2 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -target_triplet = @target@ -subdir = lib/books/uncoupled -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/add_cflags.m4 \ - $(top_srcdir)/m4/ogg.m4 $(top_srcdir)/m4/pkg.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -SOURCES = -DIST_SOURCES = -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@ -ALLOCA = @ALLOCA@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEBUG = @DEBUG@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GREP = @GREP@ -HAVE_DOXYGEN = @HAVE_DOXYGEN@ -HTLATEX = @HTLATEX@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIBTOOL_DEPS = @LIBTOOL_DEPS@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OGG_CFLAGS = @OGG_CFLAGS@ -OGG_LIBS = @OGG_LIBS@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -PDFLATEX = @PDFLATEX@ -PKG_CONFIG = @PKG_CONFIG@ -PROFILE = @PROFILE@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -VE_LIB_AGE = @VE_LIB_AGE@ -VE_LIB_CURRENT = @VE_LIB_CURRENT@ -VE_LIB_REVISION = @VE_LIB_REVISION@ -VF_LIB_AGE = @VF_LIB_AGE@ -VF_LIB_CURRENT = @VF_LIB_CURRENT@ -VF_LIB_REVISION = @VF_LIB_REVISION@ -VORBIS_LIBS = @VORBIS_LIBS@ -V_LIB_AGE = @V_LIB_AGE@ -V_LIB_CURRENT = @V_LIB_CURRENT@ -V_LIB_REVISION = @V_LIB_REVISION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -lt_ECHO = @lt_ECHO@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -pthread_lib = @pthread_lib@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target = @target@ -target_alias = @target_alias@ -target_cpu = @target_cpu@ -target_os = @target_os@ -target_vendor = @target_vendor@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -EXTRA_DIST = res_books_uncoupled.h -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/books/uncoupled/Makefile'; \ - cd $(top_srcdir) && \ - $(AUTOMAKE) --gnu lib/books/uncoupled/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ - fi; \ - cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ - || cp -p $$d/$$file $(distdir)/$$file \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-exec-am: - -install-html: install-html-am - -install-info: install-info-am - -install-man: - -install-pdf: install-pdf-am - -install-ps: install-ps-am - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/drivers/vorbis/books/uncoupled/res_books_uncoupled.h b/drivers/vorbis/books/uncoupled/res_books_uncoupled.h index d2473635b5..736353b675 100644 --- a/drivers/vorbis/books/uncoupled/res_books_uncoupled.h +++ b/drivers/vorbis/books/uncoupled/res_books_uncoupled.h @@ -11,7 +11,7 @@ ******************************************************************** function: static codebooks autogenerated by huff/huffbuld - last modified: $Id: res_books_uncoupled.h 17022 2010-03-25 03:45:42Z xiphmont $ + last modified: $Id: res_books_uncoupled.h 19057 2014-01-22 12:32:31Z xiphmont $ ********************************************************************/ @@ -23,7 +23,7 @@ static const long _vq_quantlist__16u0__p1_0[] = { 2, }; -static const long _vq_lengthlist__16u0__p1_0[] = { +static const char _vq_lengthlist__16u0__p1_0[] = { 1, 4, 4, 5, 7, 7, 5, 7, 8, 5, 8, 8, 8,10,10, 8, 10,11, 5, 8, 8, 8,10,10, 8,10,10, 4, 9, 9, 9,12, 11, 8,11,11, 8,12,11,10,12,14,10,13,13, 7,11,11, @@ -34,7 +34,7 @@ static const long _vq_lengthlist__16u0__p1_0[] = { static const static_codebook _16u0__p1_0 = { 4, 81, - (long *)_vq_lengthlist__16u0__p1_0, + (char *)_vq_lengthlist__16u0__p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__16u0__p1_0, 0 @@ -46,7 +46,7 @@ static const long _vq_quantlist__16u0__p2_0[] = { 2, }; -static const long _vq_lengthlist__16u0__p2_0[] = { +static const char _vq_lengthlist__16u0__p2_0[] = { 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 9, 7, 8, 9, 5, 7, 7, 7, 9, 8, 7, 9, 7, 4, 7, 7, 7, 9, 9, 7, 8, 8, 6, 9, 8, 7, 8,11, 9,11,10, 6, 8, 9, @@ -57,7 +57,7 @@ static const long _vq_lengthlist__16u0__p2_0[] = { static const static_codebook _16u0__p2_0 = { 4, 81, - (long *)_vq_lengthlist__16u0__p2_0, + (char *)_vq_lengthlist__16u0__p2_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__16u0__p2_0, 0 @@ -71,7 +71,7 @@ static const long _vq_quantlist__16u0__p3_0[] = { 4, }; -static const long _vq_lengthlist__16u0__p3_0[] = { +static const char _vq_lengthlist__16u0__p3_0[] = { 1, 5, 5, 7, 7, 6, 7, 7, 8, 8, 6, 7, 8, 8, 8, 8, 9, 9,11,11, 8, 9, 9,11,11, 6, 9, 8,10,10, 8,10, 10,11,11, 8,10,10,11,11,10,11,10,13,12, 9,11,10, @@ -116,7 +116,7 @@ static const long _vq_lengthlist__16u0__p3_0[] = { static const static_codebook _16u0__p3_0 = { 4, 625, - (long *)_vq_lengthlist__16u0__p3_0, + (char *)_vq_lengthlist__16u0__p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__16u0__p3_0, 0 @@ -130,7 +130,7 @@ static const long _vq_quantlist__16u0__p4_0[] = { 4, }; -static const long _vq_lengthlist__16u0__p4_0[] = { +static const char _vq_lengthlist__16u0__p4_0[] = { 3, 5, 5, 8, 8, 6, 6, 6, 9, 9, 6, 6, 6, 9, 9, 9, 10, 9,11,11, 9, 9, 9,11,11, 6, 7, 7,10,10, 7, 7, 8,10,10, 7, 7, 8,10,10,10,10,10,11,12, 9,10,10, @@ -175,7 +175,7 @@ static const long _vq_lengthlist__16u0__p4_0[] = { static const static_codebook _16u0__p4_0 = { 4, 625, - (long *)_vq_lengthlist__16u0__p4_0, + (char *)_vq_lengthlist__16u0__p4_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__16u0__p4_0, 0 @@ -193,7 +193,7 @@ static const long _vq_quantlist__16u0__p5_0[] = { 8, }; -static const long _vq_lengthlist__16u0__p5_0[] = { +static const char _vq_lengthlist__16u0__p5_0[] = { 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 7, 8, 8, 9, 9, 9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,11, 7, 8, 8, @@ -204,7 +204,7 @@ static const long _vq_lengthlist__16u0__p5_0[] = { static const static_codebook _16u0__p5_0 = { 2, 81, - (long *)_vq_lengthlist__16u0__p5_0, + (char *)_vq_lengthlist__16u0__p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__16u0__p5_0, 0 @@ -226,7 +226,7 @@ static const long _vq_quantlist__16u0__p6_0[] = { 12, }; -static const long _vq_lengthlist__16u0__p6_0[] = { +static const char _vq_lengthlist__16u0__p6_0[] = { 1, 4, 4, 7, 7,10,10,12,12,13,13,18,17, 3, 6, 6, 9, 9,11,11,13,13,14,14,18,17, 3, 6, 6, 9, 9,11, 11,13,13,14,14,17,18, 7, 9, 9,11,11,13,13,14,14, @@ -242,7 +242,7 @@ static const long _vq_lengthlist__16u0__p6_0[] = { static const static_codebook _16u0__p6_0 = { 2, 169, - (long *)_vq_lengthlist__16u0__p6_0, + (char *)_vq_lengthlist__16u0__p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__16u0__p6_0, 0 @@ -256,14 +256,14 @@ static const long _vq_quantlist__16u0__p6_1[] = { 4, }; -static const long _vq_lengthlist__16u0__p6_1[] = { +static const char _vq_lengthlist__16u0__p6_1[] = { 1, 4, 5, 6, 6, 4, 6, 6, 6, 6, 4, 6, 6, 6, 6, 6, 6, 6, 7, 7, 6, 6, 6, 7, 7, }; static const static_codebook _16u0__p6_1 = { 2, 25, - (long *)_vq_lengthlist__16u0__p6_1, + (char *)_vq_lengthlist__16u0__p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__16u0__p6_1, 0 @@ -275,7 +275,7 @@ static const long _vq_quantlist__16u0__p7_0[] = { 2, }; -static const long _vq_lengthlist__16u0__p7_0[] = { +static const char _vq_lengthlist__16u0__p7_0[] = { 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, @@ -286,7 +286,7 @@ static const long _vq_lengthlist__16u0__p7_0[] = { static const static_codebook _16u0__p7_0 = { 4, 81, - (long *)_vq_lengthlist__16u0__p7_0, + (char *)_vq_lengthlist__16u0__p7_0, 1, -518803456, 1628680192, 2, 0, (long *)_vq_quantlist__16u0__p7_0, 0 @@ -310,7 +310,7 @@ static const long _vq_quantlist__16u0__p7_1[] = { 14, }; -static const long _vq_lengthlist__16u0__p7_1[] = { +static const char _vq_lengthlist__16u0__p7_1[] = { 1, 5, 5, 6, 5, 9,10,11,11,10,10,10,10,10,10, 5, 8, 8, 8,10,10,10,10,10,10,10,10,10,10,10, 5, 8, 9, 9, 9,10,10,10,10,10,10,10,10,10,10, 5,10, 8, @@ -330,7 +330,7 @@ static const long _vq_lengthlist__16u0__p7_1[] = { static const static_codebook _16u0__p7_1 = { 2, 225, - (long *)_vq_lengthlist__16u0__p7_1, + (char *)_vq_lengthlist__16u0__p7_1, 1, -520986624, 1620377600, 4, 0, (long *)_vq_quantlist__16u0__p7_1, 0 @@ -360,7 +360,7 @@ static const long _vq_quantlist__16u0__p7_2[] = { 20, }; -static const long _vq_lengthlist__16u0__p7_2[] = { +static const char _vq_lengthlist__16u0__p7_2[] = { 1, 6, 6, 7, 8, 7, 7,10, 9,10, 9,11,10, 9,11,10, 9, 9, 9, 9,10, 6, 8, 7, 9, 9, 8, 8,10,10, 9,11, 11,12,12,10, 9,11, 9,12,10, 9, 6, 9, 8, 9,12, 8, @@ -393,13 +393,13 @@ static const long _vq_lengthlist__16u0__p7_2[] = { static const static_codebook _16u0__p7_2 = { 2, 441, - (long *)_vq_lengthlist__16u0__p7_2, + (char *)_vq_lengthlist__16u0__p7_2, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__16u0__p7_2, 0 }; -static const long _huff_lengthlist__16u0__single[] = { +static const char _huff_lengthlist__16u0__single[] = { 3, 5, 8, 7,14, 8, 9,19, 5, 2, 5, 5, 9, 6, 9,19, 8, 4, 5, 7, 8, 9,13,19, 7, 4, 6, 5, 9, 6, 9,19, 12, 8, 7, 9,10,11,13,19, 8, 5, 8, 6, 9, 6, 7,19, @@ -408,13 +408,13 @@ static const long _huff_lengthlist__16u0__single[] = { static const static_codebook _huff_book__16u0__single = { 2, 64, - (long *)_huff_lengthlist__16u0__single, + (char *)_huff_lengthlist__16u0__single, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__16u1__long[] = { +static const char _huff_lengthlist__16u1__long[] = { 3, 6,10, 8,12, 8,14, 8,14,19, 5, 3, 5, 5, 7, 6, 11, 7,16,19, 7, 5, 6, 7, 7, 9,11,12,19,19, 6, 4, 7, 5, 7, 6,10, 7,18,18, 8, 6, 7, 7, 7, 7, 8, 9, @@ -426,7 +426,7 @@ static const long _huff_lengthlist__16u1__long[] = { static const static_codebook _huff_book__16u1__long = { 2, 100, - (long *)_huff_lengthlist__16u1__long, + (char *)_huff_lengthlist__16u1__long, 0, 0, 0, 0, 0, NULL, 0 @@ -438,7 +438,7 @@ static const long _vq_quantlist__16u1__p1_0[] = { 2, }; -static const long _vq_lengthlist__16u1__p1_0[] = { +static const char _vq_lengthlist__16u1__p1_0[] = { 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 7, 7,10,10, 7, 9,10, 5, 7, 8, 7,10, 9, 7,10,10, 5, 8, 8, 8,10, 10, 8,10,10, 7,10,10,10,11,12,10,12,13, 7,10,10, @@ -449,7 +449,7 @@ static const long _vq_lengthlist__16u1__p1_0[] = { static const static_codebook _16u1__p1_0 = { 4, 81, - (long *)_vq_lengthlist__16u1__p1_0, + (char *)_vq_lengthlist__16u1__p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__16u1__p1_0, 0 @@ -461,7 +461,7 @@ static const long _vq_quantlist__16u1__p2_0[] = { 2, }; -static const long _vq_lengthlist__16u1__p2_0[] = { +static const char _vq_lengthlist__16u1__p2_0[] = { 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 7, 8, 6, 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 7, 5, 6, 6, 6, 8, 8, 6, 8, 8, 6, 8, 8, 7, 7,10, 8, 9, 9, 6, 8, 8, @@ -472,7 +472,7 @@ static const long _vq_lengthlist__16u1__p2_0[] = { static const static_codebook _16u1__p2_0 = { 4, 81, - (long *)_vq_lengthlist__16u1__p2_0, + (char *)_vq_lengthlist__16u1__p2_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__16u1__p2_0, 0 @@ -486,7 +486,7 @@ static const long _vq_quantlist__16u1__p3_0[] = { 4, }; -static const long _vq_lengthlist__16u1__p3_0[] = { +static const char _vq_lengthlist__16u1__p3_0[] = { 1, 5, 5, 8, 8, 6, 7, 7, 9, 9, 5, 7, 7, 9, 9, 9, 10, 9,11,11, 9, 9,10,11,11, 6, 8, 8,10,10, 8, 9, 10,11,11, 8, 9,10,11,11,10,11,11,12,13,10,11,11, @@ -531,7 +531,7 @@ static const long _vq_lengthlist__16u1__p3_0[] = { static const static_codebook _16u1__p3_0 = { 4, 625, - (long *)_vq_lengthlist__16u1__p3_0, + (char *)_vq_lengthlist__16u1__p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__16u1__p3_0, 0 @@ -545,7 +545,7 @@ static const long _vq_quantlist__16u1__p4_0[] = { 4, }; -static const long _vq_lengthlist__16u1__p4_0[] = { +static const char _vq_lengthlist__16u1__p4_0[] = { 4, 5, 5, 8, 8, 6, 6, 7, 9, 9, 6, 6, 6, 9, 9, 9, 10, 9,11,11, 9, 9,10,11,11, 6, 7, 7,10, 9, 7, 7, 8, 9,10, 7, 7, 8,10,10,10,10,10,10,12, 9, 9,10, @@ -590,7 +590,7 @@ static const long _vq_lengthlist__16u1__p4_0[] = { static const static_codebook _16u1__p4_0 = { 4, 625, - (long *)_vq_lengthlist__16u1__p4_0, + (char *)_vq_lengthlist__16u1__p4_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__16u1__p4_0, 0 @@ -608,7 +608,7 @@ static const long _vq_quantlist__16u1__p5_0[] = { 8, }; -static const long _vq_lengthlist__16u1__p5_0[] = { +static const char _vq_lengthlist__16u1__p5_0[] = { 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8, 10,10, 4, 5, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8, @@ -619,7 +619,7 @@ static const long _vq_lengthlist__16u1__p5_0[] = { static const static_codebook _16u1__p5_0 = { 2, 81, - (long *)_vq_lengthlist__16u1__p5_0, + (char *)_vq_lengthlist__16u1__p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__16u1__p5_0, 0 @@ -637,7 +637,7 @@ static const long _vq_quantlist__16u1__p6_0[] = { 8, }; -static const long _vq_lengthlist__16u1__p6_0[] = { +static const char _vq_lengthlist__16u1__p6_0[] = { 3, 4, 4, 6, 6, 7, 7, 9, 9, 4, 4, 4, 6, 6, 8, 8, 9, 9, 4, 4, 4, 6, 6, 7, 7, 9, 9, 6, 6, 6, 7, 7, 8, 8,10, 9, 6, 6, 6, 7, 7, 8, 8, 9,10, 7, 8, 7, @@ -648,7 +648,7 @@ static const long _vq_lengthlist__16u1__p6_0[] = { static const static_codebook _16u1__p6_0 = { 2, 81, - (long *)_vq_lengthlist__16u1__p6_0, + (char *)_vq_lengthlist__16u1__p6_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__16u1__p6_0, 0 @@ -660,7 +660,7 @@ static const long _vq_quantlist__16u1__p7_0[] = { 2, }; -static const long _vq_lengthlist__16u1__p7_0[] = { +static const char _vq_lengthlist__16u1__p7_0[] = { 1, 4, 4, 4, 8, 8, 4, 8, 8, 5,11, 9, 8,12,11, 8, 12,11, 5,10,11, 8,11,12, 8,11,12, 4,11,11,11,14, 13,10,13,13, 8,14,13,12,14,16,12,16,15, 8,14,14, @@ -671,7 +671,7 @@ static const long _vq_lengthlist__16u1__p7_0[] = { static const static_codebook _16u1__p7_0 = { 4, 81, - (long *)_vq_lengthlist__16u1__p7_0, + (char *)_vq_lengthlist__16u1__p7_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__16u1__p7_0, 0 @@ -691,7 +691,7 @@ static const long _vq_quantlist__16u1__p7_1[] = { 10, }; -static const long _vq_lengthlist__16u1__p7_1[] = { +static const char _vq_lengthlist__16u1__p7_1[] = { 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 6, 5, 7, 7, 8, 8, 8, 8, 8, 8, 4, 5, 6, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8, @@ -704,7 +704,7 @@ static const long _vq_lengthlist__16u1__p7_1[] = { static const static_codebook _16u1__p7_1 = { 2, 121, - (long *)_vq_lengthlist__16u1__p7_1, + (char *)_vq_lengthlist__16u1__p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__16u1__p7_1, 0 @@ -724,7 +724,7 @@ static const long _vq_quantlist__16u1__p8_0[] = { 10, }; -static const long _vq_lengthlist__16u1__p8_0[] = { +static const char _vq_lengthlist__16u1__p8_0[] = { 1, 4, 4, 5, 5, 8, 8,10,10,12,12, 4, 7, 7, 8, 8, 9, 9,12,11,14,13, 4, 7, 7, 7, 8, 9,10,11,11,13, 12, 5, 8, 8, 9, 9,11,11,12,13,15,14, 5, 7, 8, 9, @@ -737,7 +737,7 @@ static const long _vq_lengthlist__16u1__p8_0[] = { static const static_codebook _16u1__p8_0 = { 2, 121, - (long *)_vq_lengthlist__16u1__p8_0, + (char *)_vq_lengthlist__16u1__p8_0, 1, -524582912, 1618345984, 4, 0, (long *)_vq_quantlist__16u1__p8_0, 0 @@ -757,7 +757,7 @@ static const long _vq_quantlist__16u1__p8_1[] = { 10, }; -static const long _vq_lengthlist__16u1__p8_1[] = { +static const char _vq_lengthlist__16u1__p8_1[] = { 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 4, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 4, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 6, 7, 7, 7, @@ -770,7 +770,7 @@ static const long _vq_lengthlist__16u1__p8_1[] = { static const static_codebook _16u1__p8_1 = { 2, 121, - (long *)_vq_lengthlist__16u1__p8_1, + (char *)_vq_lengthlist__16u1__p8_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__16u1__p8_1, 0 @@ -794,7 +794,7 @@ static const long _vq_quantlist__16u1__p9_0[] = { 14, }; -static const long _vq_lengthlist__16u1__p9_0[] = { +static const char _vq_lengthlist__16u1__p9_0[] = { 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -814,7 +814,7 @@ static const long _vq_lengthlist__16u1__p9_0[] = { static const static_codebook _16u1__p9_0 = { 2, 225, - (long *)_vq_lengthlist__16u1__p9_0, + (char *)_vq_lengthlist__16u1__p9_0, 1, -514071552, 1627381760, 4, 0, (long *)_vq_quantlist__16u1__p9_0, 0 @@ -838,7 +838,7 @@ static const long _vq_quantlist__16u1__p9_1[] = { 14, }; -static const long _vq_lengthlist__16u1__p9_1[] = { +static const char _vq_lengthlist__16u1__p9_1[] = { 1, 6, 5, 9, 9,10,10, 6, 7, 9, 9,10,10,10,10, 5, 10, 8,10, 8,10,10, 8, 8,10, 9,10,10,10,10, 5, 8, 9,10,10,10,10, 8,10,10,10,10,10,10,10, 9,10,10, @@ -858,7 +858,7 @@ static const long _vq_lengthlist__16u1__p9_1[] = { static const static_codebook _16u1__p9_1 = { 2, 225, - (long *)_vq_lengthlist__16u1__p9_1, + (char *)_vq_lengthlist__16u1__p9_1, 1, -522338304, 1620115456, 4, 0, (long *)_vq_quantlist__16u1__p9_1, 0 @@ -884,7 +884,7 @@ static const long _vq_quantlist__16u1__p9_2[] = { 16, }; -static const long _vq_lengthlist__16u1__p9_2[] = { +static const char _vq_lengthlist__16u1__p9_2[] = { 1, 6, 6, 7, 8, 8,11,10, 9, 9,11, 9,10, 9,11,11, 9, 6, 7, 6,11, 8,11, 9,10,10,11, 9,11,10,10,10, 11, 9, 5, 7, 7, 8, 8,10,11, 8, 8,11, 9, 9,10,11, @@ -908,13 +908,13 @@ static const long _vq_lengthlist__16u1__p9_2[] = { static const static_codebook _16u1__p9_2 = { 2, 289, - (long *)_vq_lengthlist__16u1__p9_2, + (char *)_vq_lengthlist__16u1__p9_2, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__16u1__p9_2, 0 }; -static const long _huff_lengthlist__16u1__short[] = { +static const char _huff_lengthlist__16u1__short[] = { 5, 7,10, 9,11,10,15,11,13,16, 6, 4, 6, 6, 7, 7, 10, 9,12,16,10, 6, 5, 6, 6, 7,10,11,16,16, 9, 6, 7, 6, 7, 7,10, 8,14,16,11, 6, 5, 4, 5, 6, 8, 9, @@ -926,13 +926,13 @@ static const long _huff_lengthlist__16u1__short[] = { static const static_codebook _huff_book__16u1__short = { 2, 100, - (long *)_huff_lengthlist__16u1__short, + (char *)_huff_lengthlist__16u1__short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__16u2__long[] = { +static const char _huff_lengthlist__16u2__long[] = { 5, 8,10,10,10,11,11,12,14,18, 7, 5, 5, 6, 8, 9, 10,12,14,17, 9, 5, 4, 5, 6, 8,10,11,13,19, 9, 5, 4, 4, 5, 6, 9,10,12,17, 8, 6, 5, 4, 4, 5, 7,10, @@ -944,7 +944,7 @@ static const long _huff_lengthlist__16u2__long[] = { static const static_codebook _huff_book__16u2__long = { 2, 100, - (long *)_huff_lengthlist__16u2__long, + (char *)_huff_lengthlist__16u2__long, 0, 0, 0, 0, 0, NULL, 0 @@ -956,7 +956,7 @@ static const long _vq_quantlist__16u2_p1_0[] = { 2, }; -static const long _vq_lengthlist__16u2_p1_0[] = { +static const char _vq_lengthlist__16u2_p1_0[] = { 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 9, 9, 7, 9, 9, 5, 7, 7, 7, 9, 9, 8, 9, 9, 5, 7, 7, 8, 9, 9, 7, 9, 9, 7, 9, 9, 9,10,11, 9,10,10, 7, 9, 9, @@ -967,7 +967,7 @@ static const long _vq_lengthlist__16u2_p1_0[] = { static const static_codebook _16u2_p1_0 = { 4, 81, - (long *)_vq_lengthlist__16u2_p1_0, + (char *)_vq_lengthlist__16u2_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__16u2_p1_0, 0 @@ -981,7 +981,7 @@ static const long _vq_quantlist__16u2_p2_0[] = { 4, }; -static const long _vq_lengthlist__16u2_p2_0[] = { +static const char _vq_lengthlist__16u2_p2_0[] = { 3, 5, 5, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 9, 10, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10,10,10,10,12,12, 9,10,10, @@ -1026,7 +1026,7 @@ static const long _vq_lengthlist__16u2_p2_0[] = { static const static_codebook _16u2_p2_0 = { 4, 625, - (long *)_vq_lengthlist__16u2_p2_0, + (char *)_vq_lengthlist__16u2_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__16u2_p2_0, 0 @@ -1044,7 +1044,7 @@ static const long _vq_quantlist__16u2_p3_0[] = { 8, }; -static const long _vq_lengthlist__16u2_p3_0[] = { +static const char _vq_lengthlist__16u2_p3_0[] = { 2, 4, 4, 6, 6, 7, 7, 9, 9, 4, 5, 5, 6, 6, 8, 7, 9, 9, 4, 5, 5, 6, 6, 7, 8, 9, 9, 6, 6, 6, 7, 7, 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 8, 7, @@ -1055,7 +1055,7 @@ static const long _vq_lengthlist__16u2_p3_0[] = { static const static_codebook _16u2_p3_0 = { 2, 81, - (long *)_vq_lengthlist__16u2_p3_0, + (char *)_vq_lengthlist__16u2_p3_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__16u2_p3_0, 0 @@ -1081,7 +1081,7 @@ static const long _vq_quantlist__16u2_p4_0[] = { 16, }; -static const long _vq_lengthlist__16u2_p4_0[] = { +static const char _vq_lengthlist__16u2_p4_0[] = { 2, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11,11, 11, 5, 5, 5, 7, 6, 8, 7, 9, 9, 9, 9,10,10,11,11, 12,12, 5, 5, 5, 6, 6, 7, 8, 8, 9, 9, 9,10,10,11, @@ -1105,7 +1105,7 @@ static const long _vq_lengthlist__16u2_p4_0[] = { static const static_codebook _16u2_p4_0 = { 2, 289, - (long *)_vq_lengthlist__16u2_p4_0, + (char *)_vq_lengthlist__16u2_p4_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__16u2_p4_0, 0 @@ -1117,7 +1117,7 @@ static const long _vq_quantlist__16u2_p5_0[] = { 2, }; -static const long _vq_lengthlist__16u2_p5_0[] = { +static const char _vq_lengthlist__16u2_p5_0[] = { 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 7, 9, 9, 7, 9,10, 5, 8, 8, 7,10, 9, 7,10, 9, 5, 8, 8, 8,11, 10, 8,10,10, 7,10,10, 9, 9,12,10,12,12, 7,10,10, @@ -1128,7 +1128,7 @@ static const long _vq_lengthlist__16u2_p5_0[] = { static const static_codebook _16u2_p5_0 = { 4, 81, - (long *)_vq_lengthlist__16u2_p5_0, + (char *)_vq_lengthlist__16u2_p5_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__16u2_p5_0, 0 @@ -1148,7 +1148,7 @@ static const long _vq_quantlist__16u2_p5_1[] = { 10, }; -static const long _vq_lengthlist__16u2_p5_1[] = { +static const char _vq_lengthlist__16u2_p5_1[] = { 2, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7, @@ -1161,7 +1161,7 @@ static const long _vq_lengthlist__16u2_p5_1[] = { static const static_codebook _16u2_p5_1 = { 2, 121, - (long *)_vq_lengthlist__16u2_p5_1, + (char *)_vq_lengthlist__16u2_p5_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__16u2_p5_1, 0 @@ -1183,7 +1183,7 @@ static const long _vq_quantlist__16u2_p6_0[] = { 12, }; -static const long _vq_lengthlist__16u2_p6_0[] = { +static const char _vq_lengthlist__16u2_p6_0[] = { 1, 5, 4, 7, 7, 8, 8, 8, 8,10,10,11,11, 4, 6, 6, 7, 7, 9, 9, 9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9, 9, 9, 9,10,10,11,11, 7, 8, 8, 9, 9, 9, 9,10,10, @@ -1199,7 +1199,7 @@ static const long _vq_lengthlist__16u2_p6_0[] = { static const static_codebook _16u2_p6_0 = { 2, 169, - (long *)_vq_lengthlist__16u2_p6_0, + (char *)_vq_lengthlist__16u2_p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__16u2_p6_0, 0 @@ -1213,14 +1213,14 @@ static const long _vq_quantlist__16u2_p6_1[] = { 4, }; -static const long _vq_lengthlist__16u2_p6_1[] = { +static const char _vq_lengthlist__16u2_p6_1[] = { 2, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _16u2_p6_1 = { 2, 25, - (long *)_vq_lengthlist__16u2_p6_1, + (char *)_vq_lengthlist__16u2_p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__16u2_p6_1, 0 @@ -1242,7 +1242,7 @@ static const long _vq_quantlist__16u2_p7_0[] = { 12, }; -static const long _vq_lengthlist__16u2_p7_0[] = { +static const char _vq_lengthlist__16u2_p7_0[] = { 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,10, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,11, 7, 8, 8,10, 9,10,10,10,10, @@ -1258,7 +1258,7 @@ static const long _vq_lengthlist__16u2_p7_0[] = { static const static_codebook _16u2_p7_0 = { 2, 169, - (long *)_vq_lengthlist__16u2_p7_0, + (char *)_vq_lengthlist__16u2_p7_0, 1, -523206656, 1618345984, 4, 0, (long *)_vq_quantlist__16u2_p7_0, 0 @@ -1278,7 +1278,7 @@ static const long _vq_quantlist__16u2_p7_1[] = { 10, }; -static const long _vq_lengthlist__16u2_p7_1[] = { +static const char _vq_lengthlist__16u2_p7_1[] = { 2, 5, 5, 7, 7, 7, 7, 7, 7, 8, 8, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, @@ -1291,7 +1291,7 @@ static const long _vq_lengthlist__16u2_p7_1[] = { static const static_codebook _16u2_p7_1 = { 2, 121, - (long *)_vq_lengthlist__16u2_p7_1, + (char *)_vq_lengthlist__16u2_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__16u2_p7_1, 0 @@ -1315,7 +1315,7 @@ static const long _vq_quantlist__16u2_p8_0[] = { 14, }; -static const long _vq_lengthlist__16u2_p8_0[] = { +static const char _vq_lengthlist__16u2_p8_0[] = { 1, 4, 4, 7, 7, 8, 8, 7, 7, 9, 8,10, 9,11,11, 4, 7, 6, 9, 8, 9, 9, 9, 9,10, 9,11, 9,12, 9, 4, 6, 7, 8, 8, 9, 9, 9, 9,10,10,10,11,11,12, 7, 9, 8, @@ -1335,7 +1335,7 @@ static const long _vq_lengthlist__16u2_p8_0[] = { static const static_codebook _16u2_p8_0 = { 2, 225, - (long *)_vq_lengthlist__16u2_p8_0, + (char *)_vq_lengthlist__16u2_p8_0, 1, -520986624, 1620377600, 4, 0, (long *)_vq_quantlist__16u2_p8_0, 0 @@ -1365,7 +1365,7 @@ static const long _vq_quantlist__16u2_p8_1[] = { 20, }; -static const long _vq_lengthlist__16u2_p8_1[] = { +static const char _vq_lengthlist__16u2_p8_1[] = { 3, 5, 5, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 6, 6, 7, 7, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,10,10,10,10, 5, 6, 6, 7, 7, 8, @@ -1398,7 +1398,7 @@ static const long _vq_lengthlist__16u2_p8_1[] = { static const static_codebook _16u2_p8_1 = { 2, 441, - (long *)_vq_lengthlist__16u2_p8_1, + (char *)_vq_lengthlist__16u2_p8_1, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__16u2_p8_1, 0 @@ -1422,7 +1422,7 @@ static const long _vq_quantlist__16u2_p9_0[] = { 14, }; -static const long _vq_lengthlist__16u2_p9_0[] = { +static const char _vq_lengthlist__16u2_p9_0[] = { 1, 5, 3, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 7, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 7, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -1442,7 +1442,7 @@ static const long _vq_lengthlist__16u2_p9_0[] = { static const static_codebook _16u2_p9_0 = { 2, 225, - (long *)_vq_lengthlist__16u2_p9_0, + (char *)_vq_lengthlist__16u2_p9_0, 1, -510036736, 1631393792, 4, 0, (long *)_vq_quantlist__16u2_p9_0, 0 @@ -1470,7 +1470,7 @@ static const long _vq_quantlist__16u2_p9_1[] = { 18, }; -static const long _vq_lengthlist__16u2_p9_1[] = { +static const char _vq_lengthlist__16u2_p9_1[] = { 1, 4, 4, 7, 7, 7, 7, 7, 6, 9, 7,10, 8,12,12,13, 13,14,14, 4, 7, 7, 9, 9, 9, 8, 9, 8,10, 9,11, 9, 14, 9,14,10,13,11, 4, 7, 7, 9, 9, 9, 9, 8, 9,10, @@ -1498,7 +1498,7 @@ static const long _vq_lengthlist__16u2_p9_1[] = { static const static_codebook _16u2_p9_1 = { 2, 361, - (long *)_vq_lengthlist__16u2_p9_1, + (char *)_vq_lengthlist__16u2_p9_1, 1, -518287360, 1622704128, 5, 0, (long *)_vq_quantlist__16u2_p9_1, 0 @@ -1556,7 +1556,7 @@ static const long _vq_quantlist__16u2_p9_2[] = { 48, }; -static const long _vq_lengthlist__16u2_p9_2[] = { +static const char _vq_lengthlist__16u2_p9_2[] = { 2, 3, 4, 4, 4, 5, 5, 6, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 7, 8, 8, 8, 8, 8, @@ -1565,13 +1565,13 @@ static const long _vq_lengthlist__16u2_p9_2[] = { static const static_codebook _16u2_p9_2 = { 1, 49, - (long *)_vq_lengthlist__16u2_p9_2, + (char *)_vq_lengthlist__16u2_p9_2, 1, -526909440, 1611661312, 6, 0, (long *)_vq_quantlist__16u2_p9_2, 0 }; -static const long _huff_lengthlist__16u2__short[] = { +static const char _huff_lengthlist__16u2__short[] = { 8,11,13,13,15,16,19,19,19,19,11, 8, 8, 9, 9,11, 13,15,19,20,14, 8, 7, 7, 8, 9,12,13,15,20,15, 9, 6, 5, 5, 7,10,12,14,18,14, 9, 7, 5, 3, 4, 7,10, @@ -1583,7 +1583,7 @@ static const long _huff_lengthlist__16u2__short[] = { static const static_codebook _huff_book__16u2__short = { 2, 100, - (long *)_huff_lengthlist__16u2__short, + (char *)_huff_lengthlist__16u2__short, 0, 0, 0, 0, 0, NULL, 0 @@ -1595,7 +1595,7 @@ static const long _vq_quantlist__8u0__p1_0[] = { 2, }; -static const long _vq_lengthlist__8u0__p1_0[] = { +static const char _vq_lengthlist__8u0__p1_0[] = { 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7, 10,10, 5, 8, 8, 7,10,10, 8,10,10, 4, 9, 8, 8,11, 11, 8,11,11, 7,11,11,10,11,13,10,13,13, 7,11,11, @@ -1606,7 +1606,7 @@ static const long _vq_lengthlist__8u0__p1_0[] = { static const static_codebook _8u0__p1_0 = { 4, 81, - (long *)_vq_lengthlist__8u0__p1_0, + (char *)_vq_lengthlist__8u0__p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__8u0__p1_0, 0 @@ -1618,7 +1618,7 @@ static const long _vq_quantlist__8u0__p2_0[] = { 2, }; -static const long _vq_lengthlist__8u0__p2_0[] = { +static const char _vq_lengthlist__8u0__p2_0[] = { 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 6, 7, 8, 6, 7, 8, 5, 7, 7, 6, 8, 8, 7, 9, 7, 5, 7, 7, 7, 9, 9, 7, 8, 8, 6, 9, 8, 7, 7,10, 8,10,10, 6, 8, 8, @@ -1629,7 +1629,7 @@ static const long _vq_lengthlist__8u0__p2_0[] = { static const static_codebook _8u0__p2_0 = { 4, 81, - (long *)_vq_lengthlist__8u0__p2_0, + (char *)_vq_lengthlist__8u0__p2_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__8u0__p2_0, 0 @@ -1643,7 +1643,7 @@ static const long _vq_quantlist__8u0__p3_0[] = { 4, }; -static const long _vq_lengthlist__8u0__p3_0[] = { +static const char _vq_lengthlist__8u0__p3_0[] = { 1, 5, 5, 7, 7, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8, 10, 9,11,11, 8, 9, 9,11,11, 6, 8, 8,10,10, 8,10, 10,11,11, 8,10,10,11,11,10,11,11,12,12,10,11,11, @@ -1688,7 +1688,7 @@ static const long _vq_lengthlist__8u0__p3_0[] = { static const static_codebook _8u0__p3_0 = { 4, 625, - (long *)_vq_lengthlist__8u0__p3_0, + (char *)_vq_lengthlist__8u0__p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__8u0__p3_0, 0 @@ -1702,7 +1702,7 @@ static const long _vq_quantlist__8u0__p4_0[] = { 4, }; -static const long _vq_lengthlist__8u0__p4_0[] = { +static const char _vq_lengthlist__8u0__p4_0[] = { 3, 5, 5, 8, 8, 5, 6, 7, 9, 9, 6, 7, 6, 9, 9, 9, 9, 9,10,11, 9, 9, 9,11,10, 6, 7, 7,10,10, 7, 7, 8,10,10, 7, 8, 8,10,10,10,10,10,10,11, 9,10,10, @@ -1747,7 +1747,7 @@ static const long _vq_lengthlist__8u0__p4_0[] = { static const static_codebook _8u0__p4_0 = { 4, 625, - (long *)_vq_lengthlist__8u0__p4_0, + (char *)_vq_lengthlist__8u0__p4_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__8u0__p4_0, 0 @@ -1765,7 +1765,7 @@ static const long _vq_quantlist__8u0__p5_0[] = { 8, }; -static const long _vq_lengthlist__8u0__p5_0[] = { +static const char _vq_lengthlist__8u0__p5_0[] = { 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 7, 8, 8, 10,10, 4, 6, 6, 8, 8, 8, 8,10,10, 6, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8, @@ -1776,7 +1776,7 @@ static const long _vq_lengthlist__8u0__p5_0[] = { static const static_codebook _8u0__p5_0 = { 2, 81, - (long *)_vq_lengthlist__8u0__p5_0, + (char *)_vq_lengthlist__8u0__p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__8u0__p5_0, 0 @@ -1798,7 +1798,7 @@ static const long _vq_quantlist__8u0__p6_0[] = { 12, }; -static const long _vq_lengthlist__8u0__p6_0[] = { +static const char _vq_lengthlist__8u0__p6_0[] = { 1, 4, 4, 7, 7, 9, 9,11,11,12,12,16,16, 3, 6, 6, 9, 9,11,11,12,12,13,14,18,16, 3, 6, 7, 9, 9,11, 11,13,12,14,14,17,16, 7, 9, 9,11,11,12,12,14,14, @@ -1814,7 +1814,7 @@ static const long _vq_lengthlist__8u0__p6_0[] = { static const static_codebook _8u0__p6_0 = { 2, 169, - (long *)_vq_lengthlist__8u0__p6_0, + (char *)_vq_lengthlist__8u0__p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__8u0__p6_0, 0 @@ -1828,14 +1828,14 @@ static const long _vq_quantlist__8u0__p6_1[] = { 4, }; -static const long _vq_lengthlist__8u0__p6_1[] = { +static const char _vq_lengthlist__8u0__p6_1[] = { 1, 4, 4, 6, 6, 4, 6, 5, 7, 7, 4, 5, 6, 7, 7, 6, 7, 7, 7, 7, 6, 7, 7, 7, 7, }; static const static_codebook _8u0__p6_1 = { 2, 25, - (long *)_vq_lengthlist__8u0__p6_1, + (char *)_vq_lengthlist__8u0__p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__8u0__p6_1, 0 @@ -1847,7 +1847,7 @@ static const long _vq_quantlist__8u0__p7_0[] = { 2, }; -static const long _vq_lengthlist__8u0__p7_0[] = { +static const char _vq_lengthlist__8u0__p7_0[] = { 1, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, @@ -1858,7 +1858,7 @@ static const long _vq_lengthlist__8u0__p7_0[] = { static const static_codebook _8u0__p7_0 = { 4, 81, - (long *)_vq_lengthlist__8u0__p7_0, + (char *)_vq_lengthlist__8u0__p7_0, 1, -518803456, 1628680192, 2, 0, (long *)_vq_quantlist__8u0__p7_0, 0 @@ -1882,7 +1882,7 @@ static const long _vq_quantlist__8u0__p7_1[] = { 14, }; -static const long _vq_lengthlist__8u0__p7_1[] = { +static const char _vq_lengthlist__8u0__p7_1[] = { 1, 5, 5, 5, 5,10,10,11,11,11,11,11,11,11,11, 5, 7, 6, 8, 8, 9,10,11,11,11,11,11,11,11,11, 6, 6, 7, 9, 7,11,10,11,11,11,11,11,11,11,11, 5, 6, 6, @@ -1902,7 +1902,7 @@ static const long _vq_lengthlist__8u0__p7_1[] = { static const static_codebook _8u0__p7_1 = { 2, 225, - (long *)_vq_lengthlist__8u0__p7_1, + (char *)_vq_lengthlist__8u0__p7_1, 1, -520986624, 1620377600, 4, 0, (long *)_vq_quantlist__8u0__p7_1, 0 @@ -1932,7 +1932,7 @@ static const long _vq_quantlist__8u0__p7_2[] = { 20, }; -static const long _vq_lengthlist__8u0__p7_2[] = { +static const char _vq_lengthlist__8u0__p7_2[] = { 1, 6, 5, 7, 7, 9, 9, 9, 9,10,12,12,10,11,11,10, 11,11,11,10,11, 6, 8, 8, 9, 9,10,10, 9,10,11,11, 10,11,11,11,11,10,11,11,11,11, 6, 7, 8, 9, 9, 9, @@ -1965,13 +1965,13 @@ static const long _vq_lengthlist__8u0__p7_2[] = { static const static_codebook _8u0__p7_2 = { 2, 441, - (long *)_vq_lengthlist__8u0__p7_2, + (char *)_vq_lengthlist__8u0__p7_2, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__8u0__p7_2, 0 }; -static const long _huff_lengthlist__8u0__single[] = { +static const char _huff_lengthlist__8u0__single[] = { 4, 7,11, 9,12, 8, 7,10, 6, 4, 5, 5, 7, 5, 6,16, 9, 5, 5, 6, 7, 7, 9,16, 7, 4, 6, 5, 7, 5, 7,17, 10, 7, 7, 8, 7, 7, 8,18, 7, 5, 6, 4, 5, 4, 5,15, @@ -1980,7 +1980,7 @@ static const long _huff_lengthlist__8u0__single[] = { static const static_codebook _huff_book__8u0__single = { 2, 64, - (long *)_huff_lengthlist__8u0__single, + (char *)_huff_lengthlist__8u0__single, 0, 0, 0, 0, 0, NULL, 0 @@ -1992,7 +1992,7 @@ static const long _vq_quantlist__8u1__p1_0[] = { 2, }; -static const long _vq_lengthlist__8u1__p1_0[] = { +static const char _vq_lengthlist__8u1__p1_0[] = { 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 7, 9,10, 7, 9, 9, 5, 8, 8, 7,10, 9, 7, 9, 9, 5, 8, 8, 8,10, 10, 8,10,10, 7,10,10, 9,10,12,10,12,12, 7,10,10, @@ -2003,7 +2003,7 @@ static const long _vq_lengthlist__8u1__p1_0[] = { static const static_codebook _8u1__p1_0 = { 4, 81, - (long *)_vq_lengthlist__8u1__p1_0, + (char *)_vq_lengthlist__8u1__p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__8u1__p1_0, 0 @@ -2015,7 +2015,7 @@ static const long _vq_quantlist__8u1__p2_0[] = { 2, }; -static const long _vq_lengthlist__8u1__p2_0[] = { +static const char _vq_lengthlist__8u1__p2_0[] = { 3, 4, 5, 5, 6, 6, 5, 6, 6, 5, 7, 6, 6, 7, 8, 6, 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 7, 5, 6, 6, 7, 8, 8, 6, 7, 7, 6, 8, 7, 7, 7, 9, 8, 9, 9, 6, 7, 8, @@ -2026,7 +2026,7 @@ static const long _vq_lengthlist__8u1__p2_0[] = { static const static_codebook _8u1__p2_0 = { 4, 81, - (long *)_vq_lengthlist__8u1__p2_0, + (char *)_vq_lengthlist__8u1__p2_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__8u1__p2_0, 0 @@ -2040,7 +2040,7 @@ static const long _vq_quantlist__8u1__p3_0[] = { 4, }; -static const long _vq_lengthlist__8u1__p3_0[] = { +static const char _vq_lengthlist__8u1__p3_0[] = { 1, 5, 5, 7, 7, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8, 10, 9,11,11, 9, 9, 9,11,11, 6, 8, 8,10,10, 8,10, 10,11,11, 8, 9,10,11,11,10,11,11,12,12,10,11,11, @@ -2085,7 +2085,7 @@ static const long _vq_lengthlist__8u1__p3_0[] = { static const static_codebook _8u1__p3_0 = { 4, 625, - (long *)_vq_lengthlist__8u1__p3_0, + (char *)_vq_lengthlist__8u1__p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__8u1__p3_0, 0 @@ -2099,7 +2099,7 @@ static const long _vq_quantlist__8u1__p4_0[] = { 4, }; -static const long _vq_lengthlist__8u1__p4_0[] = { +static const char _vq_lengthlist__8u1__p4_0[] = { 4, 5, 5, 9, 9, 6, 7, 7, 9, 9, 6, 7, 7, 9, 9, 9, 9, 9,11,11, 9, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 7, 8, 9,10, 7, 7, 8, 9,10, 9, 9,10,10,11, 9, 9,10, @@ -2144,7 +2144,7 @@ static const long _vq_lengthlist__8u1__p4_0[] = { static const static_codebook _8u1__p4_0 = { 4, 625, - (long *)_vq_lengthlist__8u1__p4_0, + (char *)_vq_lengthlist__8u1__p4_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__8u1__p4_0, 0 @@ -2162,7 +2162,7 @@ static const long _vq_quantlist__8u1__p5_0[] = { 8, }; -static const long _vq_lengthlist__8u1__p5_0[] = { +static const char _vq_lengthlist__8u1__p5_0[] = { 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 5, 8, 7, 8, 8, 10,10, 4, 6, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 8, 8, 8, @@ -2173,7 +2173,7 @@ static const long _vq_lengthlist__8u1__p5_0[] = { static const static_codebook _8u1__p5_0 = { 2, 81, - (long *)_vq_lengthlist__8u1__p5_0, + (char *)_vq_lengthlist__8u1__p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__8u1__p5_0, 0 @@ -2191,7 +2191,7 @@ static const long _vq_quantlist__8u1__p6_0[] = { 8, }; -static const long _vq_lengthlist__8u1__p6_0[] = { +static const char _vq_lengthlist__8u1__p6_0[] = { 3, 4, 4, 6, 6, 7, 7, 9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 4, 4, 4, 6, 6, 7, 7, 9, 9, 6, 6, 6, 7, 7, 8, 8, 9, 9, 6, 6, 6, 7, 7, 8, 8, 9, 9, 7, 7, 7, @@ -2202,7 +2202,7 @@ static const long _vq_lengthlist__8u1__p6_0[] = { static const static_codebook _8u1__p6_0 = { 2, 81, - (long *)_vq_lengthlist__8u1__p6_0, + (char *)_vq_lengthlist__8u1__p6_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__8u1__p6_0, 0 @@ -2214,7 +2214,7 @@ static const long _vq_quantlist__8u1__p7_0[] = { 2, }; -static const long _vq_lengthlist__8u1__p7_0[] = { +static const char _vq_lengthlist__8u1__p7_0[] = { 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 9, 8,10,10, 8, 10,10, 5, 9, 9, 7,10,10, 8,10,10, 4,10,10, 9,12, 12, 9,11,11, 7,12,11,10,11,13,10,13,13, 7,12,12, @@ -2225,7 +2225,7 @@ static const long _vq_lengthlist__8u1__p7_0[] = { static const static_codebook _8u1__p7_0 = { 4, 81, - (long *)_vq_lengthlist__8u1__p7_0, + (char *)_vq_lengthlist__8u1__p7_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__8u1__p7_0, 0 @@ -2245,7 +2245,7 @@ static const long _vq_quantlist__8u1__p7_1[] = { 10, }; -static const long _vq_lengthlist__8u1__p7_1[] = { +static const char _vq_lengthlist__8u1__p7_1[] = { 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9, 4, 5, 5, 7, 7, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8, @@ -2258,7 +2258,7 @@ static const long _vq_lengthlist__8u1__p7_1[] = { static const static_codebook _8u1__p7_1 = { 2, 121, - (long *)_vq_lengthlist__8u1__p7_1, + (char *)_vq_lengthlist__8u1__p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__8u1__p7_1, 0 @@ -2278,7 +2278,7 @@ static const long _vq_quantlist__8u1__p8_0[] = { 10, }; -static const long _vq_lengthlist__8u1__p8_0[] = { +static const char _vq_lengthlist__8u1__p8_0[] = { 1, 4, 4, 6, 6, 8, 8,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,11,11,13,12, 4, 6, 6, 7, 7, 9, 9,11,11,12, 12, 6, 7, 7, 9, 9,11,11,12,12,13,13, 6, 7, 7, 9, @@ -2291,7 +2291,7 @@ static const long _vq_lengthlist__8u1__p8_0[] = { static const static_codebook _8u1__p8_0 = { 2, 121, - (long *)_vq_lengthlist__8u1__p8_0, + (char *)_vq_lengthlist__8u1__p8_0, 1, -524582912, 1618345984, 4, 0, (long *)_vq_quantlist__8u1__p8_0, 0 @@ -2311,7 +2311,7 @@ static const long _vq_quantlist__8u1__p8_1[] = { 10, }; -static const long _vq_lengthlist__8u1__p8_1[] = { +static const char _vq_lengthlist__8u1__p8_1[] = { 2, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 5, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7, @@ -2324,7 +2324,7 @@ static const long _vq_lengthlist__8u1__p8_1[] = { static const static_codebook _8u1__p8_1 = { 2, 121, - (long *)_vq_lengthlist__8u1__p8_1, + (char *)_vq_lengthlist__8u1__p8_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__8u1__p8_1, 0 @@ -2348,7 +2348,7 @@ static const long _vq_quantlist__8u1__p9_0[] = { 14, }; -static const long _vq_lengthlist__8u1__p9_0[] = { +static const char _vq_lengthlist__8u1__p9_0[] = { 1, 4, 4,11,11,11,11,11,11,11,11,11,11,11,11, 3, 11, 8,11,11,11,11,11,11,11,11,11,11,11,11, 3, 9, 9,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, @@ -2368,7 +2368,7 @@ static const long _vq_lengthlist__8u1__p9_0[] = { static const static_codebook _8u1__p9_0 = { 2, 225, - (long *)_vq_lengthlist__8u1__p9_0, + (char *)_vq_lengthlist__8u1__p9_0, 1, -514071552, 1627381760, 4, 0, (long *)_vq_quantlist__8u1__p9_0, 0 @@ -2392,7 +2392,7 @@ static const long _vq_quantlist__8u1__p9_1[] = { 14, }; -static const long _vq_lengthlist__8u1__p9_1[] = { +static const char _vq_lengthlist__8u1__p9_1[] = { 1, 4, 4, 7, 7, 9, 9, 7, 7, 8, 8,10,10,11,11, 4, 7, 7, 9, 9,10,10, 8, 8,10,10,10,11,10,11, 4, 7, 7, 9, 9,10,10, 8, 8,10, 9,11,11,11,11, 7, 9, 9, @@ -2412,7 +2412,7 @@ static const long _vq_lengthlist__8u1__p9_1[] = { static const static_codebook _8u1__p9_1 = { 2, 225, - (long *)_vq_lengthlist__8u1__p9_1, + (char *)_vq_lengthlist__8u1__p9_1, 1, -522338304, 1620115456, 4, 0, (long *)_vq_quantlist__8u1__p9_1, 0 @@ -2438,7 +2438,7 @@ static const long _vq_quantlist__8u1__p9_2[] = { 16, }; -static const long _vq_lengthlist__8u1__p9_2[] = { +static const char _vq_lengthlist__8u1__p9_2[] = { 2, 5, 4, 6, 6, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 5, 6, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 9, 9, 9, 9, 9, 9, @@ -2462,13 +2462,13 @@ static const long _vq_lengthlist__8u1__p9_2[] = { static const static_codebook _8u1__p9_2 = { 2, 289, - (long *)_vq_lengthlist__8u1__p9_2, + (char *)_vq_lengthlist__8u1__p9_2, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__8u1__p9_2, 0 }; -static const long _huff_lengthlist__8u1__single[] = { +static const char _huff_lengthlist__8u1__single[] = { 4, 7,13, 9,15, 9,16, 8,10,13, 7, 5, 8, 6, 9, 7, 10, 7,10,11,11, 6, 7, 8, 8, 9, 9, 9,12,16, 8, 5, 8, 6, 8, 6, 9, 7,10,12,11, 7, 7, 7, 6, 7, 7, 7, @@ -2480,13 +2480,13 @@ static const long _huff_lengthlist__8u1__single[] = { static const static_codebook _huff_book__8u1__single = { 2, 100, - (long *)_huff_lengthlist__8u1__single, + (char *)_huff_lengthlist__8u1__single, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44u0__long[] = { +static const char _huff_lengthlist__44u0__long[] = { 5, 8,13,10,17,11,11,15, 7, 2, 4, 5, 8, 7, 9,16, 13, 4, 3, 5, 6, 8,11,20,10, 4, 5, 5, 7, 6, 8,18, 15, 7, 6, 7, 8,10,14,20,10, 6, 7, 6, 9, 7, 8,17, @@ -2495,7 +2495,7 @@ static const long _huff_lengthlist__44u0__long[] = { static const static_codebook _huff_book__44u0__long = { 2, 64, - (long *)_huff_lengthlist__44u0__long, + (char *)_huff_lengthlist__44u0__long, 0, 0, 0, 0, 0, NULL, 0 @@ -2507,7 +2507,7 @@ static const long _vq_quantlist__44u0__p1_0[] = { 2, }; -static const long _vq_lengthlist__44u0__p1_0[] = { +static const char _vq_lengthlist__44u0__p1_0[] = { 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8, 10,10, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11, 11, 8,11,11, 8,12,11,11,13,13,11,13,14, 7,11,11, @@ -2518,7 +2518,7 @@ static const long _vq_lengthlist__44u0__p1_0[] = { static const static_codebook _44u0__p1_0 = { 4, 81, - (long *)_vq_lengthlist__44u0__p1_0, + (char *)_vq_lengthlist__44u0__p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u0__p1_0, 0 @@ -2530,7 +2530,7 @@ static const long _vq_quantlist__44u0__p2_0[] = { 2, }; -static const long _vq_lengthlist__44u0__p2_0[] = { +static const char _vq_lengthlist__44u0__p2_0[] = { 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 8, 6, 8, 8, 5, 7, 7, 6, 8, 8, 7, 8, 8, 4, 7, 7, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8, @@ -2541,7 +2541,7 @@ static const long _vq_lengthlist__44u0__p2_0[] = { static const static_codebook _44u0__p2_0 = { 4, 81, - (long *)_vq_lengthlist__44u0__p2_0, + (char *)_vq_lengthlist__44u0__p2_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u0__p2_0, 0 @@ -2555,7 +2555,7 @@ static const long _vq_quantlist__44u0__p3_0[] = { 4, }; -static const long _vq_lengthlist__44u0__p3_0[] = { +static const char _vq_lengthlist__44u0__p3_0[] = { 1, 5, 5, 8, 8, 5, 8, 7, 9, 9, 5, 7, 8, 9, 9, 9, 10, 9,12,12, 9, 9,10,12,12, 6, 8, 8,11,10, 8,10, 10,11,11, 8, 9,10,11,11,10,11,11,14,13,10,11,11, @@ -2600,7 +2600,7 @@ static const long _vq_lengthlist__44u0__p3_0[] = { static const static_codebook _44u0__p3_0 = { 4, 625, - (long *)_vq_lengthlist__44u0__p3_0, + (char *)_vq_lengthlist__44u0__p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u0__p3_0, 0 @@ -2614,7 +2614,7 @@ static const long _vq_quantlist__44u0__p4_0[] = { 4, }; -static const long _vq_lengthlist__44u0__p4_0[] = { +static const char _vq_lengthlist__44u0__p4_0[] = { 4, 5, 5, 9, 9, 5, 6, 6, 9, 9, 5, 6, 6, 9, 9, 9, 10, 9,12,12, 9, 9,10,12,12, 5, 7, 7,10,10, 7, 7, 8,10,10, 6, 7, 8,10,10,10,10,10,11,13,10, 9,10, @@ -2659,7 +2659,7 @@ static const long _vq_lengthlist__44u0__p4_0[] = { static const static_codebook _44u0__p4_0 = { 4, 625, - (long *)_vq_lengthlist__44u0__p4_0, + (char *)_vq_lengthlist__44u0__p4_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u0__p4_0, 0 @@ -2677,7 +2677,7 @@ static const long _vq_quantlist__44u0__p5_0[] = { 8, }; -static const long _vq_lengthlist__44u0__p5_0[] = { +static const char _vq_lengthlist__44u0__p5_0[] = { 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 7, 8, 8, 9, 9, 9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,10, 7, 8, 8, @@ -2688,7 +2688,7 @@ static const long _vq_lengthlist__44u0__p5_0[] = { static const static_codebook _44u0__p5_0 = { 2, 81, - (long *)_vq_lengthlist__44u0__p5_0, + (char *)_vq_lengthlist__44u0__p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44u0__p5_0, 0 @@ -2710,7 +2710,7 @@ static const long _vq_quantlist__44u0__p6_0[] = { 12, }; -static const long _vq_lengthlist__44u0__p6_0[] = { +static const char _vq_lengthlist__44u0__p6_0[] = { 1, 4, 4, 6, 6, 8, 8,10, 9,11,10,14,13, 4, 6, 5, 8, 8, 9, 9,11,10,11,11,14,14, 4, 5, 6, 8, 8, 9, 9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11, @@ -2726,7 +2726,7 @@ static const long _vq_lengthlist__44u0__p6_0[] = { static const static_codebook _44u0__p6_0 = { 2, 169, - (long *)_vq_lengthlist__44u0__p6_0, + (char *)_vq_lengthlist__44u0__p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44u0__p6_0, 0 @@ -2740,14 +2740,14 @@ static const long _vq_quantlist__44u0__p6_1[] = { 4, }; -static const long _vq_lengthlist__44u0__p6_1[] = { +static const char _vq_lengthlist__44u0__p6_1[] = { 2, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 5, 6, 6, 6, 6, }; static const static_codebook _44u0__p6_1 = { 2, 25, - (long *)_vq_lengthlist__44u0__p6_1, + (char *)_vq_lengthlist__44u0__p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u0__p6_1, 0 @@ -2761,7 +2761,7 @@ static const long _vq_quantlist__44u0__p7_0[] = { 4, }; -static const long _vq_lengthlist__44u0__p7_0[] = { +static const char _vq_lengthlist__44u0__p7_0[] = { 1, 4, 4,11,11, 9,11,11,11,11,11,11,11,11,11,11, 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, @@ -2806,7 +2806,7 @@ static const long _vq_lengthlist__44u0__p7_0[] = { static const static_codebook _44u0__p7_0 = { 4, 625, - (long *)_vq_lengthlist__44u0__p7_0, + (char *)_vq_lengthlist__44u0__p7_0, 1, -518709248, 1626677248, 3, 0, (long *)_vq_quantlist__44u0__p7_0, 0 @@ -2828,7 +2828,7 @@ static const long _vq_quantlist__44u0__p7_1[] = { 12, }; -static const long _vq_lengthlist__44u0__p7_1[] = { +static const char _vq_lengthlist__44u0__p7_1[] = { 1, 4, 4, 6, 6, 6, 6, 7, 7, 8, 8, 9, 9, 5, 7, 7, 8, 7, 7, 7, 9, 8,10, 9,10,11, 5, 7, 7, 8, 8, 7, 7, 8, 9,10,10,11,11, 6, 8, 8, 9, 9, 9, 9,11,10, @@ -2844,7 +2844,7 @@ static const long _vq_lengthlist__44u0__p7_1[] = { static const static_codebook _44u0__p7_1 = { 2, 169, - (long *)_vq_lengthlist__44u0__p7_1, + (char *)_vq_lengthlist__44u0__p7_1, 1, -523010048, 1618608128, 4, 0, (long *)_vq_quantlist__44u0__p7_1, 0 @@ -2866,7 +2866,7 @@ static const long _vq_quantlist__44u0__p7_2[] = { 12, }; -static const long _vq_lengthlist__44u0__p7_2[] = { +static const char _vq_lengthlist__44u0__p7_2[] = { 2, 5, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 5, 5, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 5, 6, 5, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8, 8, 8, 8, 9, 8, @@ -2882,13 +2882,13 @@ static const long _vq_lengthlist__44u0__p7_2[] = { static const static_codebook _44u0__p7_2 = { 2, 169, - (long *)_vq_lengthlist__44u0__p7_2, + (char *)_vq_lengthlist__44u0__p7_2, 1, -531103744, 1611661312, 4, 0, (long *)_vq_quantlist__44u0__p7_2, 0 }; -static const long _huff_lengthlist__44u0__short[] = { +static const char _huff_lengthlist__44u0__short[] = { 12,13,14,13,17,12,15,17, 5, 5, 6,10,10,11,15,16, 4, 3, 3, 7, 5, 7,10,16, 7, 7, 7,10, 9,11,12,16, 6, 5, 5, 9, 5, 6,10,16, 8, 7, 7, 9, 6, 7, 9,16, @@ -2897,13 +2897,13 @@ static const long _huff_lengthlist__44u0__short[] = { static const static_codebook _huff_book__44u0__short = { 2, 64, - (long *)_huff_lengthlist__44u0__short, + (char *)_huff_lengthlist__44u0__short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44u1__long[] = { +static const char _huff_lengthlist__44u1__long[] = { 5, 8,13,10,17,11,11,15, 7, 2, 4, 5, 8, 7, 9,16, 13, 4, 3, 5, 6, 8,11,20,10, 4, 5, 5, 7, 6, 8,18, 15, 7, 6, 7, 8,10,14,20,10, 6, 7, 6, 9, 7, 8,17, @@ -2912,7 +2912,7 @@ static const long _huff_lengthlist__44u1__long[] = { static const static_codebook _huff_book__44u1__long = { 2, 64, - (long *)_huff_lengthlist__44u1__long, + (char *)_huff_lengthlist__44u1__long, 0, 0, 0, 0, 0, NULL, 0 @@ -2924,7 +2924,7 @@ static const long _vq_quantlist__44u1__p1_0[] = { 2, }; -static const long _vq_lengthlist__44u1__p1_0[] = { +static const char _vq_lengthlist__44u1__p1_0[] = { 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8, 10,10, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11, 11, 8,11,11, 8,12,11,11,13,13,11,13,14, 7,11,11, @@ -2935,7 +2935,7 @@ static const long _vq_lengthlist__44u1__p1_0[] = { static const static_codebook _44u1__p1_0 = { 4, 81, - (long *)_vq_lengthlist__44u1__p1_0, + (char *)_vq_lengthlist__44u1__p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u1__p1_0, 0 @@ -2947,7 +2947,7 @@ static const long _vq_quantlist__44u1__p2_0[] = { 2, }; -static const long _vq_lengthlist__44u1__p2_0[] = { +static const char _vq_lengthlist__44u1__p2_0[] = { 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 8, 6, 8, 8, 5, 7, 7, 6, 8, 8, 7, 8, 8, 4, 7, 7, 7, 8, 8, 7, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8, @@ -2958,7 +2958,7 @@ static const long _vq_lengthlist__44u1__p2_0[] = { static const static_codebook _44u1__p2_0 = { 4, 81, - (long *)_vq_lengthlist__44u1__p2_0, + (char *)_vq_lengthlist__44u1__p2_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u1__p2_0, 0 @@ -2972,7 +2972,7 @@ static const long _vq_quantlist__44u1__p3_0[] = { 4, }; -static const long _vq_lengthlist__44u1__p3_0[] = { +static const char _vq_lengthlist__44u1__p3_0[] = { 1, 5, 5, 8, 8, 5, 8, 7, 9, 9, 5, 7, 8, 9, 9, 9, 10, 9,12,12, 9, 9,10,12,12, 6, 8, 8,11,10, 8,10, 10,11,11, 8, 9,10,11,11,10,11,11,14,13,10,11,11, @@ -3017,7 +3017,7 @@ static const long _vq_lengthlist__44u1__p3_0[] = { static const static_codebook _44u1__p3_0 = { 4, 625, - (long *)_vq_lengthlist__44u1__p3_0, + (char *)_vq_lengthlist__44u1__p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u1__p3_0, 0 @@ -3031,7 +3031,7 @@ static const long _vq_quantlist__44u1__p4_0[] = { 4, }; -static const long _vq_lengthlist__44u1__p4_0[] = { +static const char _vq_lengthlist__44u1__p4_0[] = { 4, 5, 5, 9, 9, 5, 6, 6, 9, 9, 5, 6, 6, 9, 9, 9, 10, 9,12,12, 9, 9,10,12,12, 5, 7, 7,10,10, 7, 7, 8,10,10, 6, 7, 8,10,10,10,10,10,11,13,10, 9,10, @@ -3076,7 +3076,7 @@ static const long _vq_lengthlist__44u1__p4_0[] = { static const static_codebook _44u1__p4_0 = { 4, 625, - (long *)_vq_lengthlist__44u1__p4_0, + (char *)_vq_lengthlist__44u1__p4_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u1__p4_0, 0 @@ -3094,7 +3094,7 @@ static const long _vq_quantlist__44u1__p5_0[] = { 8, }; -static const long _vq_lengthlist__44u1__p5_0[] = { +static const char _vq_lengthlist__44u1__p5_0[] = { 1, 4, 4, 7, 7, 7, 7, 9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 4, 6, 6, 8, 8, 8, 8, 9, 9, 7, 8, 8, 9, 9, 9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,10, 7, 8, 8, @@ -3105,7 +3105,7 @@ static const long _vq_lengthlist__44u1__p5_0[] = { static const static_codebook _44u1__p5_0 = { 2, 81, - (long *)_vq_lengthlist__44u1__p5_0, + (char *)_vq_lengthlist__44u1__p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44u1__p5_0, 0 @@ -3127,7 +3127,7 @@ static const long _vq_quantlist__44u1__p6_0[] = { 12, }; -static const long _vq_lengthlist__44u1__p6_0[] = { +static const char _vq_lengthlist__44u1__p6_0[] = { 1, 4, 4, 6, 6, 8, 8,10, 9,11,10,14,13, 4, 6, 5, 8, 8, 9, 9,11,10,11,11,14,14, 4, 5, 6, 8, 8, 9, 9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11, @@ -3143,7 +3143,7 @@ static const long _vq_lengthlist__44u1__p6_0[] = { static const static_codebook _44u1__p6_0 = { 2, 169, - (long *)_vq_lengthlist__44u1__p6_0, + (char *)_vq_lengthlist__44u1__p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44u1__p6_0, 0 @@ -3157,14 +3157,14 @@ static const long _vq_quantlist__44u1__p6_1[] = { 4, }; -static const long _vq_lengthlist__44u1__p6_1[] = { +static const char _vq_lengthlist__44u1__p6_1[] = { 2, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 5, 6, 6, 6, 6, }; static const static_codebook _44u1__p6_1 = { 2, 25, - (long *)_vq_lengthlist__44u1__p6_1, + (char *)_vq_lengthlist__44u1__p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u1__p6_1, 0 @@ -3180,7 +3180,7 @@ static const long _vq_quantlist__44u1__p7_0[] = { 6, }; -static const long _vq_lengthlist__44u1__p7_0[] = { +static const char _vq_lengthlist__44u1__p7_0[] = { 1, 3, 2, 9, 9, 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, @@ -3189,7 +3189,7 @@ static const long _vq_lengthlist__44u1__p7_0[] = { static const static_codebook _44u1__p7_0 = { 2, 49, - (long *)_vq_lengthlist__44u1__p7_0, + (char *)_vq_lengthlist__44u1__p7_0, 1, -518017024, 1626677248, 3, 0, (long *)_vq_quantlist__44u1__p7_0, 0 @@ -3211,7 +3211,7 @@ static const long _vq_quantlist__44u1__p7_1[] = { 12, }; -static const long _vq_lengthlist__44u1__p7_1[] = { +static const char _vq_lengthlist__44u1__p7_1[] = { 1, 4, 4, 6, 6, 6, 6, 7, 7, 8, 8, 9, 9, 5, 7, 7, 8, 7, 7, 7, 9, 8,10, 9,10,11, 5, 7, 7, 8, 8, 7, 7, 8, 9,10,10,11,11, 6, 8, 8, 9, 9, 9, 9,11,10, @@ -3227,7 +3227,7 @@ static const long _vq_lengthlist__44u1__p7_1[] = { static const static_codebook _44u1__p7_1 = { 2, 169, - (long *)_vq_lengthlist__44u1__p7_1, + (char *)_vq_lengthlist__44u1__p7_1, 1, -523010048, 1618608128, 4, 0, (long *)_vq_quantlist__44u1__p7_1, 0 @@ -3249,7 +3249,7 @@ static const long _vq_quantlist__44u1__p7_2[] = { 12, }; -static const long _vq_lengthlist__44u1__p7_2[] = { +static const char _vq_lengthlist__44u1__p7_2[] = { 2, 5, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 5, 5, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 5, 6, 5, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 6, 7, 7, 8, 8, 8, 8, 9, 8, @@ -3265,13 +3265,13 @@ static const long _vq_lengthlist__44u1__p7_2[] = { static const static_codebook _44u1__p7_2 = { 2, 169, - (long *)_vq_lengthlist__44u1__p7_2, + (char *)_vq_lengthlist__44u1__p7_2, 1, -531103744, 1611661312, 4, 0, (long *)_vq_quantlist__44u1__p7_2, 0 }; -static const long _huff_lengthlist__44u1__short[] = { +static const char _huff_lengthlist__44u1__short[] = { 12,13,14,13,17,12,15,17, 5, 5, 6,10,10,11,15,16, 4, 3, 3, 7, 5, 7,10,16, 7, 7, 7,10, 9,11,12,16, 6, 5, 5, 9, 5, 6,10,16, 8, 7, 7, 9, 6, 7, 9,16, @@ -3280,13 +3280,13 @@ static const long _huff_lengthlist__44u1__short[] = { static const static_codebook _huff_book__44u1__short = { 2, 64, - (long *)_huff_lengthlist__44u1__short, + (char *)_huff_lengthlist__44u1__short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44u2__long[] = { +static const char _huff_lengthlist__44u2__long[] = { 5, 9,14,12,15,13,10,13, 7, 4, 5, 6, 8, 7, 8,12, 13, 4, 3, 5, 5, 6, 9,15,12, 6, 5, 6, 6, 6, 7,14, 14, 7, 4, 6, 4, 6, 8,15,12, 6, 6, 5, 5, 5, 6,14, @@ -3295,7 +3295,7 @@ static const long _huff_lengthlist__44u2__long[] = { static const static_codebook _huff_book__44u2__long = { 2, 64, - (long *)_huff_lengthlist__44u2__long, + (char *)_huff_lengthlist__44u2__long, 0, 0, 0, 0, 0, NULL, 0 @@ -3307,7 +3307,7 @@ static const long _vq_quantlist__44u2__p1_0[] = { 2, }; -static const long _vq_lengthlist__44u2__p1_0[] = { +static const char _vq_lengthlist__44u2__p1_0[] = { 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,11,11, 8, 10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11, 11, 8,11,11, 8,11,11,11,13,14,11,13,13, 7,11,11, @@ -3318,7 +3318,7 @@ static const long _vq_lengthlist__44u2__p1_0[] = { static const static_codebook _44u2__p1_0 = { 4, 81, - (long *)_vq_lengthlist__44u2__p1_0, + (char *)_vq_lengthlist__44u2__p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u2__p1_0, 0 @@ -3330,7 +3330,7 @@ static const long _vq_quantlist__44u2__p2_0[] = { 2, }; -static const long _vq_lengthlist__44u2__p2_0[] = { +static const char _vq_lengthlist__44u2__p2_0[] = { 2, 5, 5, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6, 8, 8, 5, 6, 6, 6, 8, 7, 7, 8, 8, 5, 6, 6, 7, 8, 8, 6, 8, 8, 6, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8, @@ -3341,7 +3341,7 @@ static const long _vq_lengthlist__44u2__p2_0[] = { static const static_codebook _44u2__p2_0 = { 4, 81, - (long *)_vq_lengthlist__44u2__p2_0, + (char *)_vq_lengthlist__44u2__p2_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u2__p2_0, 0 @@ -3355,7 +3355,7 @@ static const long _vq_quantlist__44u2__p3_0[] = { 4, }; -static const long _vq_lengthlist__44u2__p3_0[] = { +static const char _vq_lengthlist__44u2__p3_0[] = { 2, 4, 4, 7, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8, 9, 9,12,11, 8, 9, 9,11,12, 5, 7, 7,10,10, 7, 9, 9,11,11, 7, 9, 9,10,11,10,11,11,13,13, 9,10,11, @@ -3400,7 +3400,7 @@ static const long _vq_lengthlist__44u2__p3_0[] = { static const static_codebook _44u2__p3_0 = { 4, 625, - (long *)_vq_lengthlist__44u2__p3_0, + (char *)_vq_lengthlist__44u2__p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u2__p3_0, 0 @@ -3414,7 +3414,7 @@ static const long _vq_quantlist__44u2__p4_0[] = { 4, }; -static const long _vq_lengthlist__44u2__p4_0[] = { +static const char _vq_lengthlist__44u2__p4_0[] = { 4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 9, 9, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8, 8,10,10, 7, 7, 8,10,10,10,10,10,11,12, 9,10,10, @@ -3459,7 +3459,7 @@ static const long _vq_lengthlist__44u2__p4_0[] = { static const static_codebook _44u2__p4_0 = { 4, 625, - (long *)_vq_lengthlist__44u2__p4_0, + (char *)_vq_lengthlist__44u2__p4_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u2__p4_0, 0 @@ -3477,7 +3477,7 @@ static const long _vq_quantlist__44u2__p5_0[] = { 8, }; -static const long _vq_lengthlist__44u2__p5_0[] = { +static const char _vq_lengthlist__44u2__p5_0[] = { 1, 4, 4, 7, 7, 8, 8, 9, 9, 4, 6, 5, 8, 8, 8, 8, 10,10, 4, 5, 6, 8, 8, 8, 8,10,10, 7, 8, 8, 9, 9, 9, 9,11,11, 7, 8, 8, 9, 9, 9, 9,11,11, 8, 8, 8, @@ -3488,7 +3488,7 @@ static const long _vq_lengthlist__44u2__p5_0[] = { static const static_codebook _44u2__p5_0 = { 2, 81, - (long *)_vq_lengthlist__44u2__p5_0, + (char *)_vq_lengthlist__44u2__p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44u2__p5_0, 0 @@ -3510,7 +3510,7 @@ static const long _vq_quantlist__44u2__p6_0[] = { 12, }; -static const long _vq_lengthlist__44u2__p6_0[] = { +static const char _vq_lengthlist__44u2__p6_0[] = { 1, 4, 4, 6, 6, 8, 8,10,10,11,11,14,13, 4, 6, 5, 8, 8, 9, 9,11,10,12,11,15,14, 4, 5, 6, 8, 8, 9, 9,11,11,11,11,14,14, 6, 8, 8,10, 9,11,11,11,11, @@ -3526,7 +3526,7 @@ static const long _vq_lengthlist__44u2__p6_0[] = { static const static_codebook _44u2__p6_0 = { 2, 169, - (long *)_vq_lengthlist__44u2__p6_0, + (char *)_vq_lengthlist__44u2__p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44u2__p6_0, 0 @@ -3540,14 +3540,14 @@ static const long _vq_quantlist__44u2__p6_1[] = { 4, }; -static const long _vq_lengthlist__44u2__p6_1[] = { +static const char _vq_lengthlist__44u2__p6_1[] = { 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5, 6, 5, 6, 6, 5, 5, 6, 6, 6, }; static const static_codebook _44u2__p6_1 = { 2, 25, - (long *)_vq_lengthlist__44u2__p6_1, + (char *)_vq_lengthlist__44u2__p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u2__p6_1, 0 @@ -3565,7 +3565,7 @@ static const long _vq_quantlist__44u2__p7_0[] = { 8, }; -static const long _vq_lengthlist__44u2__p7_0[] = { +static const char _vq_lengthlist__44u2__p7_0[] = { 1, 3, 2,12,12,12,12,12,12, 4,12,12,12,12,12,12, 12,12, 5,12,12,12,12,12,12,12,12,12,12,11,11,11, 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, @@ -3576,7 +3576,7 @@ static const long _vq_lengthlist__44u2__p7_0[] = { static const static_codebook _44u2__p7_0 = { 2, 81, - (long *)_vq_lengthlist__44u2__p7_0, + (char *)_vq_lengthlist__44u2__p7_0, 1, -516612096, 1626677248, 4, 0, (long *)_vq_quantlist__44u2__p7_0, 0 @@ -3598,7 +3598,7 @@ static const long _vq_quantlist__44u2__p7_1[] = { 12, }; -static const long _vq_lengthlist__44u2__p7_1[] = { +static const char _vq_lengthlist__44u2__p7_1[] = { 1, 4, 4, 7, 6, 7, 6, 8, 7, 9, 7, 9, 8, 4, 7, 6, 8, 8, 9, 8,10, 9,10,10,11,11, 4, 7, 7, 8, 8, 8, 8, 9,10,11,11,11,11, 6, 8, 8,10,10,10,10,11,11, @@ -3614,7 +3614,7 @@ static const long _vq_lengthlist__44u2__p7_1[] = { static const static_codebook _44u2__p7_1 = { 2, 169, - (long *)_vq_lengthlist__44u2__p7_1, + (char *)_vq_lengthlist__44u2__p7_1, 1, -523010048, 1618608128, 4, 0, (long *)_vq_quantlist__44u2__p7_1, 0 @@ -3636,7 +3636,7 @@ static const long _vq_quantlist__44u2__p7_2[] = { 12, }; -static const long _vq_lengthlist__44u2__p7_2[] = { +static const char _vq_lengthlist__44u2__p7_2[] = { 2, 5, 5, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 5, 6, 6, 7, 7, 8, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7, 8, 8, 8, 8, 8, @@ -3652,13 +3652,13 @@ static const long _vq_lengthlist__44u2__p7_2[] = { static const static_codebook _44u2__p7_2 = { 2, 169, - (long *)_vq_lengthlist__44u2__p7_2, + (char *)_vq_lengthlist__44u2__p7_2, 1, -531103744, 1611661312, 4, 0, (long *)_vq_quantlist__44u2__p7_2, 0 }; -static const long _huff_lengthlist__44u2__short[] = { +static const char _huff_lengthlist__44u2__short[] = { 13,15,17,17,15,15,12,17,11, 9, 7,10,10, 9,12,17, 10, 6, 3, 6, 5, 7,10,17,15,10, 6, 9, 8, 9,11,17, 15, 8, 4, 7, 3, 5, 9,16,16,10, 5, 8, 4, 5, 8,16, @@ -3667,13 +3667,13 @@ static const long _huff_lengthlist__44u2__short[] = { static const static_codebook _huff_book__44u2__short = { 2, 64, - (long *)_huff_lengthlist__44u2__short, + (char *)_huff_lengthlist__44u2__short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44u3__long[] = { +static const char _huff_lengthlist__44u3__long[] = { 6, 9,13,12,14,11,10,13, 8, 4, 5, 7, 8, 7, 8,12, 11, 4, 3, 5, 5, 7, 9,14,11, 6, 5, 6, 6, 6, 7,13, 13, 7, 5, 6, 4, 5, 7,14,11, 7, 6, 6, 5, 5, 6,13, @@ -3682,7 +3682,7 @@ static const long _huff_lengthlist__44u3__long[] = { static const static_codebook _huff_book__44u3__long = { 2, 64, - (long *)_huff_lengthlist__44u3__long, + (char *)_huff_lengthlist__44u3__long, 0, 0, 0, 0, 0, NULL, 0 @@ -3694,7 +3694,7 @@ static const long _vq_quantlist__44u3__p1_0[] = { 2, }; -static const long _vq_lengthlist__44u3__p1_0[] = { +static const char _vq_lengthlist__44u3__p1_0[] = { 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,10,11, 8, 10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11, 11, 8,11,11, 8,11,11,11,13,14,11,14,14, 8,11,11, @@ -3705,7 +3705,7 @@ static const long _vq_lengthlist__44u3__p1_0[] = { static const static_codebook _44u3__p1_0 = { 4, 81, - (long *)_vq_lengthlist__44u3__p1_0, + (char *)_vq_lengthlist__44u3__p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u3__p1_0, 0 @@ -3717,7 +3717,7 @@ static const long _vq_quantlist__44u3__p2_0[] = { 2, }; -static const long _vq_lengthlist__44u3__p2_0[] = { +static const char _vq_lengthlist__44u3__p2_0[] = { 2, 5, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6, 8, 8, 5, 6, 6, 6, 8, 8, 7, 8, 8, 5, 7, 6, 7, 8, 8, 6, 8, 8, 7, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8, @@ -3728,7 +3728,7 @@ static const long _vq_lengthlist__44u3__p2_0[] = { static const static_codebook _44u3__p2_0 = { 4, 81, - (long *)_vq_lengthlist__44u3__p2_0, + (char *)_vq_lengthlist__44u3__p2_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u3__p2_0, 0 @@ -3742,7 +3742,7 @@ static const long _vq_quantlist__44u3__p3_0[] = { 4, }; -static const long _vq_lengthlist__44u3__p3_0[] = { +static const char _vq_lengthlist__44u3__p3_0[] = { 2, 4, 4, 7, 7, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8, 9, 9,12,12, 8, 9, 9,11,12, 5, 7, 7,10,10, 7, 9, 9,11,11, 7, 9, 9,10,11,10,11,11,13,13, 9,10,11, @@ -3787,7 +3787,7 @@ static const long _vq_lengthlist__44u3__p3_0[] = { static const static_codebook _44u3__p3_0 = { 4, 625, - (long *)_vq_lengthlist__44u3__p3_0, + (char *)_vq_lengthlist__44u3__p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u3__p3_0, 0 @@ -3801,7 +3801,7 @@ static const long _vq_quantlist__44u3__p4_0[] = { 4, }; -static const long _vq_lengthlist__44u3__p4_0[] = { +static const char _vq_lengthlist__44u3__p4_0[] = { 4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 9, 9, 9,11,11, 9, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8, 8,10,10, 7, 7, 8,10,10, 9,10,10,11,12, 9,10,10, @@ -3846,7 +3846,7 @@ static const long _vq_lengthlist__44u3__p4_0[] = { static const static_codebook _44u3__p4_0 = { 4, 625, - (long *)_vq_lengthlist__44u3__p4_0, + (char *)_vq_lengthlist__44u3__p4_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u3__p4_0, 0 @@ -3864,7 +3864,7 @@ static const long _vq_quantlist__44u3__p5_0[] = { 8, }; -static const long _vq_lengthlist__44u3__p5_0[] = { +static const char _vq_lengthlist__44u3__p5_0[] = { 2, 3, 3, 6, 6, 7, 7, 9, 9, 4, 5, 5, 7, 7, 8, 8, 10,10, 4, 5, 5, 7, 7, 8, 8,10,10, 6, 7, 7, 8, 8, 9, 9,11,10, 6, 7, 7, 8, 8, 9, 9,10,10, 7, 8, 8, @@ -3875,7 +3875,7 @@ static const long _vq_lengthlist__44u3__p5_0[] = { static const static_codebook _44u3__p5_0 = { 2, 81, - (long *)_vq_lengthlist__44u3__p5_0, + (char *)_vq_lengthlist__44u3__p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44u3__p5_0, 0 @@ -3897,7 +3897,7 @@ static const long _vq_quantlist__44u3__p6_0[] = { 12, }; -static const long _vq_lengthlist__44u3__p6_0[] = { +static const char _vq_lengthlist__44u3__p6_0[] = { 1, 4, 4, 6, 6, 8, 8, 9, 9,10,11,13,14, 4, 6, 5, 8, 8, 9, 9,10,10,11,11,14,14, 4, 6, 6, 8, 8, 9, 9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11, @@ -3913,7 +3913,7 @@ static const long _vq_lengthlist__44u3__p6_0[] = { static const static_codebook _44u3__p6_0 = { 2, 169, - (long *)_vq_lengthlist__44u3__p6_0, + (char *)_vq_lengthlist__44u3__p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44u3__p6_0, 0 @@ -3927,14 +3927,14 @@ static const long _vq_quantlist__44u3__p6_1[] = { 4, }; -static const long _vq_lengthlist__44u3__p6_1[] = { +static const char _vq_lengthlist__44u3__p6_1[] = { 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5, 6, 5, 6, 6, 5, 5, 6, 6, 6, }; static const static_codebook _44u3__p6_1 = { 2, 25, - (long *)_vq_lengthlist__44u3__p6_1, + (char *)_vq_lengthlist__44u3__p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u3__p6_1, 0 @@ -3952,7 +3952,7 @@ static const long _vq_quantlist__44u3__p7_0[] = { 8, }; -static const long _vq_lengthlist__44u3__p7_0[] = { +static const char _vq_lengthlist__44u3__p7_0[] = { 1, 3, 3,10,10,10,10,10,10, 4,10,10,10,10,10,10, 10,10, 4,10,10,10,10,10,10,10,10,10,10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -3963,7 +3963,7 @@ static const long _vq_lengthlist__44u3__p7_0[] = { static const static_codebook _44u3__p7_0 = { 2, 81, - (long *)_vq_lengthlist__44u3__p7_0, + (char *)_vq_lengthlist__44u3__p7_0, 1, -515907584, 1627381760, 4, 0, (long *)_vq_quantlist__44u3__p7_0, 0 @@ -3987,7 +3987,7 @@ static const long _vq_quantlist__44u3__p7_1[] = { 14, }; -static const long _vq_lengthlist__44u3__p7_1[] = { +static const char _vq_lengthlist__44u3__p7_1[] = { 1, 4, 4, 6, 6, 7, 6, 8, 7, 9, 8,10, 9,11,11, 4, 7, 7, 8, 7, 9, 9,10,10,11,11,11,11,12,12, 4, 7, 7, 7, 7, 9, 9,10,10,11,11,12,12,12,11, 6, 8, 8, @@ -4007,7 +4007,7 @@ static const long _vq_lengthlist__44u3__p7_1[] = { static const static_codebook _44u3__p7_1 = { 2, 225, - (long *)_vq_lengthlist__44u3__p7_1, + (char *)_vq_lengthlist__44u3__p7_1, 1, -522338304, 1620115456, 4, 0, (long *)_vq_quantlist__44u3__p7_1, 0 @@ -4033,7 +4033,7 @@ static const long _vq_quantlist__44u3__p7_2[] = { 16, }; -static const long _vq_lengthlist__44u3__p7_2[] = { +static const char _vq_lengthlist__44u3__p7_2[] = { 2, 5, 5, 7, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10,10, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 8, 9, 9, 9, @@ -4057,13 +4057,13 @@ static const long _vq_lengthlist__44u3__p7_2[] = { static const static_codebook _44u3__p7_2 = { 2, 289, - (long *)_vq_lengthlist__44u3__p7_2, + (char *)_vq_lengthlist__44u3__p7_2, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44u3__p7_2, 0 }; -static const long _huff_lengthlist__44u3__short[] = { +static const char _huff_lengthlist__44u3__short[] = { 14,14,14,15,13,15,12,16,10, 8, 7, 9, 9, 8,12,16, 10, 5, 4, 6, 5, 6, 9,16,14, 8, 6, 8, 7, 8,10,16, 14, 7, 4, 6, 3, 5, 8,16,15, 9, 5, 7, 4, 4, 7,16, @@ -4072,13 +4072,13 @@ static const long _huff_lengthlist__44u3__short[] = { static const static_codebook _huff_book__44u3__short = { 2, 64, - (long *)_huff_lengthlist__44u3__short, + (char *)_huff_lengthlist__44u3__short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44u4__long[] = { +static const char _huff_lengthlist__44u4__long[] = { 3, 8,12,12,13,12,11,13, 5, 4, 6, 7, 8, 8, 9,13, 9, 5, 4, 5, 5, 7, 9,13, 9, 6, 5, 6, 6, 7, 8,12, 12, 7, 5, 6, 4, 5, 8,13,11, 7, 6, 6, 5, 5, 6,12, @@ -4087,7 +4087,7 @@ static const long _huff_lengthlist__44u4__long[] = { static const static_codebook _huff_book__44u4__long = { 2, 64, - (long *)_huff_lengthlist__44u4__long, + (char *)_huff_lengthlist__44u4__long, 0, 0, 0, 0, 0, NULL, 0 @@ -4099,7 +4099,7 @@ static const long _vq_quantlist__44u4__p1_0[] = { 2, }; -static const long _vq_lengthlist__44u4__p1_0[] = { +static const char _vq_lengthlist__44u4__p1_0[] = { 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,10,11, 8, 10,11, 5, 8, 8, 8,11,10, 8,11,11, 4, 8, 8, 8,11, 11, 8,11,11, 8,11,11,11,13,14,11,15,14, 8,11,11, @@ -4110,7 +4110,7 @@ static const long _vq_lengthlist__44u4__p1_0[] = { static const static_codebook _44u4__p1_0 = { 4, 81, - (long *)_vq_lengthlist__44u4__p1_0, + (char *)_vq_lengthlist__44u4__p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u4__p1_0, 0 @@ -4122,7 +4122,7 @@ static const long _vq_quantlist__44u4__p2_0[] = { 2, }; -static const long _vq_lengthlist__44u4__p2_0[] = { +static const char _vq_lengthlist__44u4__p2_0[] = { 2, 5, 5, 5, 6, 6, 5, 6, 6, 5, 6, 6, 7, 8, 8, 6, 8, 8, 5, 6, 6, 6, 8, 8, 7, 8, 8, 5, 7, 6, 6, 8, 8, 6, 8, 8, 6, 8, 8, 8, 9,10, 8,10,10, 6, 8, 8, @@ -4133,7 +4133,7 @@ static const long _vq_lengthlist__44u4__p2_0[] = { static const static_codebook _44u4__p2_0 = { 4, 81, - (long *)_vq_lengthlist__44u4__p2_0, + (char *)_vq_lengthlist__44u4__p2_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u4__p2_0, 0 @@ -4147,7 +4147,7 @@ static const long _vq_quantlist__44u4__p3_0[] = { 4, }; -static const long _vq_lengthlist__44u4__p3_0[] = { +static const char _vq_lengthlist__44u4__p3_0[] = { 2, 4, 4, 8, 8, 5, 7, 7, 9, 9, 5, 7, 7, 9, 9, 8, 10, 9,12,12, 8, 9,10,12,12, 5, 7, 7,10,10, 7, 9, 9,11,11, 7, 9, 9,11,11,10,12,11,14,14, 9,10,11, @@ -4192,7 +4192,7 @@ static const long _vq_lengthlist__44u4__p3_0[] = { static const static_codebook _44u4__p3_0 = { 4, 625, - (long *)_vq_lengthlist__44u4__p3_0, + (char *)_vq_lengthlist__44u4__p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u4__p3_0, 0 @@ -4206,7 +4206,7 @@ static const long _vq_quantlist__44u4__p4_0[] = { 4, }; -static const long _vq_lengthlist__44u4__p4_0[] = { +static const char _vq_lengthlist__44u4__p4_0[] = { 4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 9, 9, 9,11,11, 8, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8, 8,10,10, 7, 7, 8,10,10, 9,10,10,11,12, 9,10,10, @@ -4251,7 +4251,7 @@ static const long _vq_lengthlist__44u4__p4_0[] = { static const static_codebook _44u4__p4_0 = { 4, 625, - (long *)_vq_lengthlist__44u4__p4_0, + (char *)_vq_lengthlist__44u4__p4_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u4__p4_0, 0 @@ -4269,7 +4269,7 @@ static const long _vq_quantlist__44u4__p5_0[] = { 8, }; -static const long _vq_lengthlist__44u4__p5_0[] = { +static const char _vq_lengthlist__44u4__p5_0[] = { 2, 3, 3, 6, 6, 7, 7, 9, 9, 4, 5, 5, 7, 7, 8, 8, 10, 9, 4, 5, 5, 7, 7, 8, 8,10,10, 6, 7, 7, 8, 8, 9, 9,11,10, 6, 7, 7, 8, 8, 9, 9,10,11, 7, 8, 8, @@ -4280,7 +4280,7 @@ static const long _vq_lengthlist__44u4__p5_0[] = { static const static_codebook _44u4__p5_0 = { 2, 81, - (long *)_vq_lengthlist__44u4__p5_0, + (char *)_vq_lengthlist__44u4__p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44u4__p5_0, 0 @@ -4302,7 +4302,7 @@ static const long _vq_quantlist__44u4__p6_0[] = { 12, }; -static const long _vq_lengthlist__44u4__p6_0[] = { +static const char _vq_lengthlist__44u4__p6_0[] = { 1, 4, 4, 6, 6, 8, 8, 9, 9,11,10,13,13, 4, 6, 5, 8, 8, 9, 9,10,10,11,11,14,14, 4, 6, 6, 8, 8, 9, 9,10,10,11,11,14,14, 6, 8, 8, 9, 9,10,10,11,11, @@ -4318,7 +4318,7 @@ static const long _vq_lengthlist__44u4__p6_0[] = { static const static_codebook _44u4__p6_0 = { 2, 169, - (long *)_vq_lengthlist__44u4__p6_0, + (char *)_vq_lengthlist__44u4__p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44u4__p6_0, 0 @@ -4332,14 +4332,14 @@ static const long _vq_quantlist__44u4__p6_1[] = { 4, }; -static const long _vq_lengthlist__44u4__p6_1[] = { +static const char _vq_lengthlist__44u4__p6_1[] = { 2, 4, 4, 5, 5, 4, 5, 5, 6, 5, 4, 5, 5, 5, 6, 5, 6, 5, 6, 6, 5, 5, 6, 6, 6, }; static const static_codebook _44u4__p6_1 = { 2, 25, - (long *)_vq_lengthlist__44u4__p6_1, + (char *)_vq_lengthlist__44u4__p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u4__p6_1, 0 @@ -4361,7 +4361,7 @@ static const long _vq_quantlist__44u4__p7_0[] = { 12, }; -static const long _vq_lengthlist__44u4__p7_0[] = { +static const char _vq_lengthlist__44u4__p7_0[] = { 1, 3, 3,12,12,12,12,12,12,12,12,12,12, 3,12,11, 12,12,12,12,12,12,12,12,12,12, 4,11,10,12,12,12, 12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12, @@ -4377,7 +4377,7 @@ static const long _vq_lengthlist__44u4__p7_0[] = { static const static_codebook _44u4__p7_0 = { 2, 169, - (long *)_vq_lengthlist__44u4__p7_0, + (char *)_vq_lengthlist__44u4__p7_0, 1, -514332672, 1627381760, 4, 0, (long *)_vq_quantlist__44u4__p7_0, 0 @@ -4401,7 +4401,7 @@ static const long _vq_quantlist__44u4__p7_1[] = { 14, }; -static const long _vq_lengthlist__44u4__p7_1[] = { +static const char _vq_lengthlist__44u4__p7_1[] = { 1, 4, 4, 6, 6, 7, 7, 9, 8,10, 8,10, 9,11,11, 4, 7, 6, 8, 7, 9, 9,10,10,11,10,11,10,12,10, 4, 6, 7, 8, 8, 9, 9,10,10,11,11,11,11,12,12, 6, 8, 8, @@ -4421,7 +4421,7 @@ static const long _vq_lengthlist__44u4__p7_1[] = { static const static_codebook _44u4__p7_1 = { 2, 225, - (long *)_vq_lengthlist__44u4__p7_1, + (char *)_vq_lengthlist__44u4__p7_1, 1, -522338304, 1620115456, 4, 0, (long *)_vq_quantlist__44u4__p7_1, 0 @@ -4447,7 +4447,7 @@ static const long _vq_quantlist__44u4__p7_2[] = { 16, }; -static const long _vq_lengthlist__44u4__p7_2[] = { +static const char _vq_lengthlist__44u4__p7_2[] = { 2, 5, 5, 7, 7, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, @@ -4471,13 +4471,13 @@ static const long _vq_lengthlist__44u4__p7_2[] = { static const static_codebook _44u4__p7_2 = { 2, 289, - (long *)_vq_lengthlist__44u4__p7_2, + (char *)_vq_lengthlist__44u4__p7_2, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44u4__p7_2, 0 }; -static const long _huff_lengthlist__44u4__short[] = { +static const char _huff_lengthlist__44u4__short[] = { 14,17,15,17,16,14,13,16,10, 7, 7,10,13,10,15,16, 9, 4, 4, 6, 5, 7, 9,16,12, 8, 7, 8, 8, 8,11,16, 14, 7, 4, 6, 3, 5, 8,15,13, 8, 5, 7, 4, 5, 7,16, @@ -4486,13 +4486,13 @@ static const long _huff_lengthlist__44u4__short[] = { static const static_codebook _huff_book__44u4__short = { 2, 64, - (long *)_huff_lengthlist__44u4__short, + (char *)_huff_lengthlist__44u4__short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44u5__long[] = { +static const char _huff_lengthlist__44u5__long[] = { 3, 8,13,12,14,12,16,11,13,14, 5, 4, 5, 6, 7, 8, 10, 9,12,15,10, 5, 5, 5, 6, 8, 9, 9,13,15,10, 5, 5, 6, 6, 7, 8, 8,11,13,12, 7, 5, 6, 4, 6, 7, 7, @@ -4504,7 +4504,7 @@ static const long _huff_lengthlist__44u5__long[] = { static const static_codebook _huff_book__44u5__long = { 2, 100, - (long *)_huff_lengthlist__44u5__long, + (char *)_huff_lengthlist__44u5__long, 0, 0, 0, 0, 0, NULL, 0 @@ -4516,7 +4516,7 @@ static const long _vq_quantlist__44u5__p1_0[] = { 2, }; -static const long _vq_lengthlist__44u5__p1_0[] = { +static const char _vq_lengthlist__44u5__p1_0[] = { 1, 4, 4, 5, 8, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7, 9,10, 5, 8, 8, 7,10, 9, 8,10,10, 5, 8, 8, 8,10, 10, 8,10,10, 8,10,10,10,12,13,10,13,13, 7,10,10, @@ -4527,7 +4527,7 @@ static const long _vq_lengthlist__44u5__p1_0[] = { static const static_codebook _44u5__p1_0 = { 4, 81, - (long *)_vq_lengthlist__44u5__p1_0, + (char *)_vq_lengthlist__44u5__p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u5__p1_0, 0 @@ -4539,7 +4539,7 @@ static const long _vq_quantlist__44u5__p2_0[] = { 2, }; -static const long _vq_lengthlist__44u5__p2_0[] = { +static const char _vq_lengthlist__44u5__p2_0[] = { 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6, 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8, 8, 6, 8, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 8, 7, @@ -4550,7 +4550,7 @@ static const long _vq_lengthlist__44u5__p2_0[] = { static const static_codebook _44u5__p2_0 = { 4, 81, - (long *)_vq_lengthlist__44u5__p2_0, + (char *)_vq_lengthlist__44u5__p2_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u5__p2_0, 0 @@ -4564,7 +4564,7 @@ static const long _vq_quantlist__44u5__p3_0[] = { 4, }; -static const long _vq_lengthlist__44u5__p3_0[] = { +static const char _vq_lengthlist__44u5__p3_0[] = { 2, 4, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8, 10, 9,13,12, 8, 9,10,12,12, 5, 7, 7,10,10, 7, 9, 9,11,11, 6, 8, 9,11,11,10,11,11,14,14, 9,10,11, @@ -4609,7 +4609,7 @@ static const long _vq_lengthlist__44u5__p3_0[] = { static const static_codebook _44u5__p3_0 = { 4, 625, - (long *)_vq_lengthlist__44u5__p3_0, + (char *)_vq_lengthlist__44u5__p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u5__p3_0, 0 @@ -4623,7 +4623,7 @@ static const long _vq_quantlist__44u5__p4_0[] = { 4, }; -static const long _vq_lengthlist__44u5__p4_0[] = { +static const char _vq_lengthlist__44u5__p4_0[] = { 4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8, 9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8, 8,10,10, 6, 7, 8, 9,10, 9,10,10,11,12, 9, 9,10, @@ -4668,7 +4668,7 @@ static const long _vq_lengthlist__44u5__p4_0[] = { static const static_codebook _44u5__p4_0 = { 4, 625, - (long *)_vq_lengthlist__44u5__p4_0, + (char *)_vq_lengthlist__44u5__p4_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u5__p4_0, 0 @@ -4686,7 +4686,7 @@ static const long _vq_quantlist__44u5__p5_0[] = { 8, }; -static const long _vq_lengthlist__44u5__p5_0[] = { +static const char _vq_lengthlist__44u5__p5_0[] = { 2, 3, 3, 6, 6, 8, 8,10,10, 4, 5, 5, 8, 7, 8, 8, 11,10, 3, 5, 5, 7, 8, 8, 8,10,11, 6, 8, 7,10, 9, 10,10,11,11, 6, 7, 8, 9, 9, 9,10,11,12, 8, 8, 8, @@ -4697,7 +4697,7 @@ static const long _vq_lengthlist__44u5__p5_0[] = { static const static_codebook _44u5__p5_0 = { 2, 81, - (long *)_vq_lengthlist__44u5__p5_0, + (char *)_vq_lengthlist__44u5__p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44u5__p5_0, 0 @@ -4715,7 +4715,7 @@ static const long _vq_quantlist__44u5__p6_0[] = { 8, }; -static const long _vq_lengthlist__44u5__p6_0[] = { +static const char _vq_lengthlist__44u5__p6_0[] = { 3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7, 9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7, 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 7, 7, @@ -4726,7 +4726,7 @@ static const long _vq_lengthlist__44u5__p6_0[] = { static const static_codebook _44u5__p6_0 = { 2, 81, - (long *)_vq_lengthlist__44u5__p6_0, + (char *)_vq_lengthlist__44u5__p6_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44u5__p6_0, 0 @@ -4738,7 +4738,7 @@ static const long _vq_quantlist__44u5__p7_0[] = { 2, }; -static const long _vq_lengthlist__44u5__p7_0[] = { +static const char _vq_lengthlist__44u5__p7_0[] = { 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 9, 8,11,10, 7, 11,10, 5, 9, 9, 7,10,10, 8,10,11, 4, 9, 9, 9,12, 12, 9,12,12, 8,12,12,11,12,12,10,12,13, 7,12,12, @@ -4749,7 +4749,7 @@ static const long _vq_lengthlist__44u5__p7_0[] = { static const static_codebook _44u5__p7_0 = { 4, 81, - (long *)_vq_lengthlist__44u5__p7_0, + (char *)_vq_lengthlist__44u5__p7_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44u5__p7_0, 0 @@ -4769,7 +4769,7 @@ static const long _vq_quantlist__44u5__p7_1[] = { 10, }; -static const long _vq_lengthlist__44u5__p7_1[] = { +static const char _vq_lengthlist__44u5__p7_1[] = { 2, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 7, 8, 8, 9, 8, 8, 9, 4, 5, 5, 7, 7, 8, 8, 9, 9, 8, 9, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 6, 7, 7, 8, @@ -4782,7 +4782,7 @@ static const long _vq_lengthlist__44u5__p7_1[] = { static const static_codebook _44u5__p7_1 = { 2, 121, - (long *)_vq_lengthlist__44u5__p7_1, + (char *)_vq_lengthlist__44u5__p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44u5__p7_1, 0 @@ -4802,7 +4802,7 @@ static const long _vq_quantlist__44u5__p8_0[] = { 10, }; -static const long _vq_lengthlist__44u5__p8_0[] = { +static const char _vq_lengthlist__44u5__p8_0[] = { 1, 4, 4, 6, 6, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7, 9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,10,10,11, 11, 6, 8, 7, 9, 9,10,10,11,11,13,12, 6, 8, 8, 9, @@ -4815,7 +4815,7 @@ static const long _vq_lengthlist__44u5__p8_0[] = { static const static_codebook _44u5__p8_0 = { 2, 121, - (long *)_vq_lengthlist__44u5__p8_0, + (char *)_vq_lengthlist__44u5__p8_0, 1, -524582912, 1618345984, 4, 0, (long *)_vq_quantlist__44u5__p8_0, 0 @@ -4835,7 +4835,7 @@ static const long _vq_quantlist__44u5__p8_1[] = { 10, }; -static const long _vq_lengthlist__44u5__p8_1[] = { +static const char _vq_lengthlist__44u5__p8_1[] = { 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 5, 7, 6, 7, 7, 8, 8, 8, 8, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 6, 7, 6, 7, 7, 8, 8, 8, 8, 8, 8, 6, 6, 7, 7, @@ -4848,7 +4848,7 @@ static const long _vq_lengthlist__44u5__p8_1[] = { static const static_codebook _44u5__p8_1 = { 2, 121, - (long *)_vq_lengthlist__44u5__p8_1, + (char *)_vq_lengthlist__44u5__p8_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44u5__p8_1, 0 @@ -4870,7 +4870,7 @@ static const long _vq_quantlist__44u5__p9_0[] = { 12, }; -static const long _vq_lengthlist__44u5__p9_0[] = { +static const char _vq_lengthlist__44u5__p9_0[] = { 1, 3, 2,12,10,13,13,13,13,13,13,13,13, 4, 9, 9, 13,13,13,13,13,13,13,13,13,13, 5,10, 9,13,13,13, 13,13,13,13,13,13,13,12,13,13,13,13,13,13,13,13, @@ -4886,7 +4886,7 @@ static const long _vq_lengthlist__44u5__p9_0[] = { static const static_codebook _44u5__p9_0 = { 2, 169, - (long *)_vq_lengthlist__44u5__p9_0, + (char *)_vq_lengthlist__44u5__p9_0, 1, -514332672, 1627381760, 4, 0, (long *)_vq_quantlist__44u5__p9_0, 0 @@ -4910,7 +4910,7 @@ static const long _vq_quantlist__44u5__p9_1[] = { 14, }; -static const long _vq_lengthlist__44u5__p9_1[] = { +static const char _vq_lengthlist__44u5__p9_1[] = { 1, 4, 4, 7, 7, 8, 8, 8, 7, 8, 7, 9, 8, 9, 9, 4, 7, 6, 9, 8,10,10, 9, 8, 9, 9, 9, 9, 9, 8, 5, 6, 6, 8, 9,10,10, 9, 9, 9,10,10,10,10,11, 7, 8, 8, @@ -4930,7 +4930,7 @@ static const long _vq_lengthlist__44u5__p9_1[] = { static const static_codebook _44u5__p9_1 = { 2, 225, - (long *)_vq_lengthlist__44u5__p9_1, + (char *)_vq_lengthlist__44u5__p9_1, 1, -522338304, 1620115456, 4, 0, (long *)_vq_quantlist__44u5__p9_1, 0 @@ -4956,7 +4956,7 @@ static const long _vq_quantlist__44u5__p9_2[] = { 16, }; -static const long _vq_lengthlist__44u5__p9_2[] = { +static const char _vq_lengthlist__44u5__p9_2[] = { 2, 5, 5, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 5, 6, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 5, 6, 6, 7, 7, 8, 8, 9, 8, 9, 9, 9, 9, 9, @@ -4980,13 +4980,13 @@ static const long _vq_lengthlist__44u5__p9_2[] = { static const static_codebook _44u5__p9_2 = { 2, 289, - (long *)_vq_lengthlist__44u5__p9_2, + (char *)_vq_lengthlist__44u5__p9_2, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44u5__p9_2, 0 }; -static const long _huff_lengthlist__44u5__short[] = { +static const char _huff_lengthlist__44u5__short[] = { 4,10,17,13,17,13,17,17,17,17, 3, 6, 8, 9,11, 9, 15,12,16,17, 6, 5, 5, 7, 7, 8,10,11,17,17, 7, 8, 7, 9, 9,10,13,13,17,17, 8, 6, 5, 7, 4, 7, 5, 8, @@ -4998,13 +4998,13 @@ static const long _huff_lengthlist__44u5__short[] = { static const static_codebook _huff_book__44u5__short = { 2, 100, - (long *)_huff_lengthlist__44u5__short, + (char *)_huff_lengthlist__44u5__short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44u6__long[] = { +static const char _huff_lengthlist__44u6__long[] = { 3, 9,14,13,14,13,16,12,13,14, 5, 4, 6, 6, 8, 9, 11,10,12,15,10, 5, 5, 6, 6, 8,10,10,13,16,10, 6, 6, 6, 6, 8, 9, 9,12,14,13, 7, 6, 6, 4, 6, 6, 7, @@ -5016,7 +5016,7 @@ static const long _huff_lengthlist__44u6__long[] = { static const static_codebook _huff_book__44u6__long = { 2, 100, - (long *)_huff_lengthlist__44u6__long, + (char *)_huff_lengthlist__44u6__long, 0, 0, 0, 0, 0, NULL, 0 @@ -5028,7 +5028,7 @@ static const long _vq_quantlist__44u6__p1_0[] = { 2, }; -static const long _vq_lengthlist__44u6__p1_0[] = { +static const char _vq_lengthlist__44u6__p1_0[] = { 1, 4, 4, 4, 8, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7, 9,10, 5, 8, 8, 7,10, 9, 8,10,10, 5, 8, 8, 8,10, 10, 8,10,10, 8,10,10,10,12,13,10,13,13, 7,10,10, @@ -5039,7 +5039,7 @@ static const long _vq_lengthlist__44u6__p1_0[] = { static const static_codebook _44u6__p1_0 = { 4, 81, - (long *)_vq_lengthlist__44u6__p1_0, + (char *)_vq_lengthlist__44u6__p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u6__p1_0, 0 @@ -5051,7 +5051,7 @@ static const long _vq_quantlist__44u6__p2_0[] = { 2, }; -static const long _vq_lengthlist__44u6__p2_0[] = { +static const char _vq_lengthlist__44u6__p2_0[] = { 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6, 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8, 8, 6, 8, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 7, 7, @@ -5062,7 +5062,7 @@ static const long _vq_lengthlist__44u6__p2_0[] = { static const static_codebook _44u6__p2_0 = { 4, 81, - (long *)_vq_lengthlist__44u6__p2_0, + (char *)_vq_lengthlist__44u6__p2_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u6__p2_0, 0 @@ -5076,7 +5076,7 @@ static const long _vq_quantlist__44u6__p3_0[] = { 4, }; -static const long _vq_lengthlist__44u6__p3_0[] = { +static const char _vq_lengthlist__44u6__p3_0[] = { 2, 5, 4, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8, 9, 9,13,12, 8, 9,10,12,13, 5, 7, 7,10, 9, 7, 9, 9,11,11, 7, 8, 9,11,11,10,11,11,14,14, 9,10,11, @@ -5121,7 +5121,7 @@ static const long _vq_lengthlist__44u6__p3_0[] = { static const static_codebook _44u6__p3_0 = { 4, 625, - (long *)_vq_lengthlist__44u6__p3_0, + (char *)_vq_lengthlist__44u6__p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u6__p3_0, 0 @@ -5135,7 +5135,7 @@ static const long _vq_quantlist__44u6__p4_0[] = { 4, }; -static const long _vq_lengthlist__44u6__p4_0[] = { +static const char _vq_lengthlist__44u6__p4_0[] = { 4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8, 9, 9,11,11, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8, 8,10,10, 7, 7, 8, 9,10, 9,10,10,11,11, 9, 9,10, @@ -5180,7 +5180,7 @@ static const long _vq_lengthlist__44u6__p4_0[] = { static const static_codebook _44u6__p4_0 = { 4, 625, - (long *)_vq_lengthlist__44u6__p4_0, + (char *)_vq_lengthlist__44u6__p4_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u6__p4_0, 0 @@ -5198,7 +5198,7 @@ static const long _vq_quantlist__44u6__p5_0[] = { 8, }; -static const long _vq_lengthlist__44u6__p5_0[] = { +static const char _vq_lengthlist__44u6__p5_0[] = { 2, 3, 3, 6, 6, 8, 8,10,10, 4, 5, 5, 8, 7, 8, 8, 11,11, 3, 5, 5, 7, 8, 8, 8,11,11, 6, 8, 7, 9, 9, 10, 9,12,11, 6, 7, 8, 9, 9, 9,10,11,12, 8, 8, 8, @@ -5209,7 +5209,7 @@ static const long _vq_lengthlist__44u6__p5_0[] = { static const static_codebook _44u6__p5_0 = { 2, 81, - (long *)_vq_lengthlist__44u6__p5_0, + (char *)_vq_lengthlist__44u6__p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44u6__p5_0, 0 @@ -5227,7 +5227,7 @@ static const long _vq_quantlist__44u6__p6_0[] = { 8, }; -static const long _vq_lengthlist__44u6__p6_0[] = { +static const char _vq_lengthlist__44u6__p6_0[] = { 3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7, 9, 9, 4, 4, 5, 6, 6, 7, 8, 9, 9, 5, 6, 6, 7, 7, 8, 8,10,10, 5, 6, 6, 7, 7, 8, 8,10,10, 7, 8, 7, @@ -5238,7 +5238,7 @@ static const long _vq_lengthlist__44u6__p6_0[] = { static const static_codebook _44u6__p6_0 = { 2, 81, - (long *)_vq_lengthlist__44u6__p6_0, + (char *)_vq_lengthlist__44u6__p6_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44u6__p6_0, 0 @@ -5250,7 +5250,7 @@ static const long _vq_quantlist__44u6__p7_0[] = { 2, }; -static const long _vq_lengthlist__44u6__p7_0[] = { +static const char _vq_lengthlist__44u6__p7_0[] = { 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 7,10,10, 8, 10,10, 5, 8, 9, 7,10,10, 7,10, 9, 4, 8, 8, 9,11, 11, 8,11,11, 7,11,11,10,10,13,10,13,13, 7,11,11, @@ -5261,7 +5261,7 @@ static const long _vq_lengthlist__44u6__p7_0[] = { static const static_codebook _44u6__p7_0 = { 4, 81, - (long *)_vq_lengthlist__44u6__p7_0, + (char *)_vq_lengthlist__44u6__p7_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44u6__p7_0, 0 @@ -5281,7 +5281,7 @@ static const long _vq_quantlist__44u6__p7_1[] = { 10, }; -static const long _vq_lengthlist__44u6__p7_1[] = { +static const char _vq_lengthlist__44u6__p7_1[] = { 3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 7, 6, 8, 8, 8, 8, 8, 8, 4, 5, 5, 6, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 6, 7, 7, 7, @@ -5294,7 +5294,7 @@ static const long _vq_lengthlist__44u6__p7_1[] = { static const static_codebook _44u6__p7_1 = { 2, 121, - (long *)_vq_lengthlist__44u6__p7_1, + (char *)_vq_lengthlist__44u6__p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44u6__p7_1, 0 @@ -5314,7 +5314,7 @@ static const long _vq_quantlist__44u6__p8_0[] = { 10, }; -static const long _vq_lengthlist__44u6__p8_0[] = { +static const char _vq_lengthlist__44u6__p8_0[] = { 1, 4, 4, 6, 6, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7, 9, 9,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,10,10,11, 11, 6, 8, 8, 9, 9,10,10,11,11,12,12, 6, 8, 8, 9, @@ -5327,7 +5327,7 @@ static const long _vq_lengthlist__44u6__p8_0[] = { static const static_codebook _44u6__p8_0 = { 2, 121, - (long *)_vq_lengthlist__44u6__p8_0, + (char *)_vq_lengthlist__44u6__p8_0, 1, -524582912, 1618345984, 4, 0, (long *)_vq_quantlist__44u6__p8_0, 0 @@ -5347,7 +5347,7 @@ static const long _vq_quantlist__44u6__p8_1[] = { 10, }; -static const long _vq_lengthlist__44u6__p8_1[] = { +static const char _vq_lengthlist__44u6__p8_1[] = { 3, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 5, 7, 7, 7, 7, 8, 7, 8, 8, 5, 5, 6, 6, 7, 7, 7, 7, 7, 8, 8, 6, 7, 7, 7, 7, 8, 7, 8, 8, 8, 8, 6, 6, 7, 7, @@ -5360,7 +5360,7 @@ static const long _vq_lengthlist__44u6__p8_1[] = { static const static_codebook _44u6__p8_1 = { 2, 121, - (long *)_vq_lengthlist__44u6__p8_1, + (char *)_vq_lengthlist__44u6__p8_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44u6__p8_1, 0 @@ -5384,7 +5384,7 @@ static const long _vq_quantlist__44u6__p9_0[] = { 14, }; -static const long _vq_lengthlist__44u6__p9_0[] = { +static const char _vq_lengthlist__44u6__p9_0[] = { 1, 3, 2, 9, 8,15,15,15,15,15,15,15,15,15,15, 4, 8, 9,13,14,14,14,14,14,14,14,14,14,14,14, 5, 8, 9,14,14,14,14,14,14,14,14,14,14,14,14,11,14,14, @@ -5404,7 +5404,7 @@ static const long _vq_lengthlist__44u6__p9_0[] = { static const static_codebook _44u6__p9_0 = { 2, 225, - (long *)_vq_lengthlist__44u6__p9_0, + (char *)_vq_lengthlist__44u6__p9_0, 1, -514071552, 1627381760, 4, 0, (long *)_vq_quantlist__44u6__p9_0, 0 @@ -5428,7 +5428,7 @@ static const long _vq_quantlist__44u6__p9_1[] = { 14, }; -static const long _vq_lengthlist__44u6__p9_1[] = { +static const char _vq_lengthlist__44u6__p9_1[] = { 1, 4, 4, 7, 7, 8, 9, 8, 8, 9, 8, 9, 8, 9, 9, 4, 7, 6, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 4, 7, 6, 9, 9,10,10, 9, 9,10,10,10,10,11,11, 7, 9, 8, @@ -5448,7 +5448,7 @@ static const long _vq_lengthlist__44u6__p9_1[] = { static const static_codebook _44u6__p9_1 = { 2, 225, - (long *)_vq_lengthlist__44u6__p9_1, + (char *)_vq_lengthlist__44u6__p9_1, 1, -522338304, 1620115456, 4, 0, (long *)_vq_quantlist__44u6__p9_1, 0 @@ -5474,7 +5474,7 @@ static const long _vq_quantlist__44u6__p9_2[] = { 16, }; -static const long _vq_lengthlist__44u6__p9_2[] = { +static const char _vq_lengthlist__44u6__p9_2[] = { 3, 5, 5, 7, 7, 8, 8, 8, 8, 8, 8, 9, 8, 8, 9, 9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, @@ -5498,13 +5498,13 @@ static const long _vq_lengthlist__44u6__p9_2[] = { static const static_codebook _44u6__p9_2 = { 2, 289, - (long *)_vq_lengthlist__44u6__p9_2, + (char *)_vq_lengthlist__44u6__p9_2, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44u6__p9_2, 0 }; -static const long _huff_lengthlist__44u6__short[] = { +static const char _huff_lengthlist__44u6__short[] = { 4,11,16,13,17,13,17,16,17,17, 4, 7, 9, 9,13,10, 16,12,16,17, 7, 6, 5, 7, 8, 9,12,12,16,17, 6, 9, 7, 9,10,10,15,15,17,17, 6, 7, 5, 7, 5, 7, 7,10, @@ -5516,13 +5516,13 @@ static const long _huff_lengthlist__44u6__short[] = { static const static_codebook _huff_book__44u6__short = { 2, 100, - (long *)_huff_lengthlist__44u6__short, + (char *)_huff_lengthlist__44u6__short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44u7__long[] = { +static const char _huff_lengthlist__44u7__long[] = { 3, 9,14,13,15,14,16,13,13,14, 5, 5, 7, 7, 8, 9, 11,10,12,15,10, 6, 5, 6, 6, 9,10,10,13,16,10, 6, 6, 6, 6, 8, 9, 9,12,15,14, 7, 6, 6, 5, 6, 6, 8, @@ -5534,7 +5534,7 @@ static const long _huff_lengthlist__44u7__long[] = { static const static_codebook _huff_book__44u7__long = { 2, 100, - (long *)_huff_lengthlist__44u7__long, + (char *)_huff_lengthlist__44u7__long, 0, 0, 0, 0, 0, NULL, 0 @@ -5546,7 +5546,7 @@ static const long _vq_quantlist__44u7__p1_0[] = { 2, }; -static const long _vq_lengthlist__44u7__p1_0[] = { +static const char _vq_lengthlist__44u7__p1_0[] = { 1, 4, 4, 4, 7, 7, 5, 7, 7, 5, 8, 8, 8,10,10, 7, 10,10, 5, 8, 8, 7,10,10, 8,10,10, 5, 8, 8, 8,11, 10, 8,10,10, 8,10,10,10,12,13,10,13,13, 7,10,10, @@ -5557,7 +5557,7 @@ static const long _vq_lengthlist__44u7__p1_0[] = { static const static_codebook _44u7__p1_0 = { 4, 81, - (long *)_vq_lengthlist__44u7__p1_0, + (char *)_vq_lengthlist__44u7__p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u7__p1_0, 0 @@ -5569,7 +5569,7 @@ static const long _vq_quantlist__44u7__p2_0[] = { 2, }; -static const long _vq_lengthlist__44u7__p2_0[] = { +static const char _vq_lengthlist__44u7__p2_0[] = { 3, 4, 4, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 8, 8, 6, 7, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 5, 6, 6, 6, 8, 7, 6, 8, 8, 6, 8, 8, 8, 9, 9, 8, 9, 9, 6, 8, 7, @@ -5580,7 +5580,7 @@ static const long _vq_lengthlist__44u7__p2_0[] = { static const static_codebook _44u7__p2_0 = { 4, 81, - (long *)_vq_lengthlist__44u7__p2_0, + (char *)_vq_lengthlist__44u7__p2_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u7__p2_0, 0 @@ -5594,7 +5594,7 @@ static const long _vq_quantlist__44u7__p3_0[] = { 4, }; -static const long _vq_lengthlist__44u7__p3_0[] = { +static const char _vq_lengthlist__44u7__p3_0[] = { 2, 5, 4, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8, 9, 9,13,12, 8, 9,10,12,13, 5, 7, 7,10, 9, 7, 9, 9,11,11, 6, 8, 9,11,11,10,11,11,14,14, 9,10,11, @@ -5639,7 +5639,7 @@ static const long _vq_lengthlist__44u7__p3_0[] = { static const static_codebook _44u7__p3_0 = { 4, 625, - (long *)_vq_lengthlist__44u7__p3_0, + (char *)_vq_lengthlist__44u7__p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u7__p3_0, 0 @@ -5653,7 +5653,7 @@ static const long _vq_quantlist__44u7__p4_0[] = { 4, }; -static const long _vq_lengthlist__44u7__p4_0[] = { +static const char _vq_lengthlist__44u7__p4_0[] = { 4, 5, 5, 8, 8, 6, 7, 6, 9, 9, 6, 6, 7, 9, 9, 8, 9, 9,11,11, 8, 9, 9,10,11, 6, 7, 7, 9, 9, 7, 8, 8,10,10, 6, 7, 8, 9,10, 9,10,10,12,12, 9, 9,10, @@ -5698,7 +5698,7 @@ static const long _vq_lengthlist__44u7__p4_0[] = { static const static_codebook _44u7__p4_0 = { 4, 625, - (long *)_vq_lengthlist__44u7__p4_0, + (char *)_vq_lengthlist__44u7__p4_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u7__p4_0, 0 @@ -5716,7 +5716,7 @@ static const long _vq_quantlist__44u7__p5_0[] = { 8, }; -static const long _vq_lengthlist__44u7__p5_0[] = { +static const char _vq_lengthlist__44u7__p5_0[] = { 2, 3, 3, 6, 6, 7, 8,10,10, 4, 5, 5, 8, 7, 8, 8, 11,11, 3, 5, 5, 7, 7, 8, 9,11,11, 6, 8, 7, 9, 9, 10,10,12,12, 6, 7, 8, 9,10,10,10,12,12, 8, 8, 8, @@ -5727,7 +5727,7 @@ static const long _vq_lengthlist__44u7__p5_0[] = { static const static_codebook _44u7__p5_0 = { 2, 81, - (long *)_vq_lengthlist__44u7__p5_0, + (char *)_vq_lengthlist__44u7__p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44u7__p5_0, 0 @@ -5745,7 +5745,7 @@ static const long _vq_quantlist__44u7__p6_0[] = { 8, }; -static const long _vq_lengthlist__44u7__p6_0[] = { +static const char _vq_lengthlist__44u7__p6_0[] = { 3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 8, 7, 9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7, 8, 8,10,10, 5, 6, 6, 7, 7, 8, 8,10,10, 7, 8, 7, @@ -5756,7 +5756,7 @@ static const long _vq_lengthlist__44u7__p6_0[] = { static const static_codebook _44u7__p6_0 = { 2, 81, - (long *)_vq_lengthlist__44u7__p6_0, + (char *)_vq_lengthlist__44u7__p6_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44u7__p6_0, 0 @@ -5768,7 +5768,7 @@ static const long _vq_quantlist__44u7__p7_0[] = { 2, }; -static const long _vq_lengthlist__44u7__p7_0[] = { +static const char _vq_lengthlist__44u7__p7_0[] = { 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 9, 8, 8, 9, 9, 7, 10,10, 5, 8, 9, 7, 9,10, 8, 9, 9, 4, 9, 9, 9,11, 10, 8,10,10, 7,11,10,10,10,12,10,12,12, 7,10,10, @@ -5779,7 +5779,7 @@ static const long _vq_lengthlist__44u7__p7_0[] = { static const static_codebook _44u7__p7_0 = { 4, 81, - (long *)_vq_lengthlist__44u7__p7_0, + (char *)_vq_lengthlist__44u7__p7_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44u7__p7_0, 0 @@ -5799,7 +5799,7 @@ static const long _vq_quantlist__44u7__p7_1[] = { 10, }; -static const long _vq_lengthlist__44u7__p7_1[] = { +static const char _vq_lengthlist__44u7__p7_1[] = { 3, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8, 4, 5, 5, 6, 6, 8, 7, 8, 8, 8, 8, 4, 5, 5, 6, 6, 7, 8, 8, 8, 8, 8, 6, 7, 6, 7, 7, 8, 8, 9, 9, 9, 9, 6, 6, 7, 7, @@ -5812,7 +5812,7 @@ static const long _vq_lengthlist__44u7__p7_1[] = { static const static_codebook _44u7__p7_1 = { 2, 121, - (long *)_vq_lengthlist__44u7__p7_1, + (char *)_vq_lengthlist__44u7__p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44u7__p7_1, 0 @@ -5832,7 +5832,7 @@ static const long _vq_quantlist__44u7__p8_0[] = { 10, }; -static const long _vq_lengthlist__44u7__p8_0[] = { +static const char _vq_lengthlist__44u7__p8_0[] = { 1, 4, 4, 6, 6, 8, 8,10,10,11,11, 4, 6, 6, 7, 7, 9, 9,11,10,12,12, 5, 6, 5, 7, 7, 9, 9,10,11,12, 12, 6, 7, 7, 8, 8,10,10,11,11,13,13, 6, 7, 7, 8, @@ -5845,7 +5845,7 @@ static const long _vq_lengthlist__44u7__p8_0[] = { static const static_codebook _44u7__p8_0 = { 2, 121, - (long *)_vq_lengthlist__44u7__p8_0, + (char *)_vq_lengthlist__44u7__p8_0, 1, -524582912, 1618345984, 4, 0, (long *)_vq_quantlist__44u7__p8_0, 0 @@ -5865,7 +5865,7 @@ static const long _vq_quantlist__44u7__p8_1[] = { 10, }; -static const long _vq_lengthlist__44u7__p8_1[] = { +static const char _vq_lengthlist__44u7__p8_1[] = { 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 5, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 6, 7, 7, 7, @@ -5878,7 +5878,7 @@ static const long _vq_lengthlist__44u7__p8_1[] = { static const static_codebook _44u7__p8_1 = { 2, 121, - (long *)_vq_lengthlist__44u7__p8_1, + (char *)_vq_lengthlist__44u7__p8_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44u7__p8_1, 0 @@ -5898,7 +5898,7 @@ static const long _vq_quantlist__44u7__p9_0[] = { 10, }; -static const long _vq_lengthlist__44u7__p9_0[] = { +static const char _vq_lengthlist__44u7__p9_0[] = { 1, 3, 3,10,10,10,10,10,10,10,10, 4,10,10,10,10, 10,10,10,10,10,10, 4,10,10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10, @@ -5911,7 +5911,7 @@ static const long _vq_lengthlist__44u7__p9_0[] = { static const static_codebook _44u7__p9_0 = { 2, 121, - (long *)_vq_lengthlist__44u7__p9_0, + (char *)_vq_lengthlist__44u7__p9_0, 1, -512171520, 1630791680, 4, 0, (long *)_vq_quantlist__44u7__p9_0, 0 @@ -5933,7 +5933,7 @@ static const long _vq_quantlist__44u7__p9_1[] = { 12, }; -static const long _vq_lengthlist__44u7__p9_1[] = { +static const char _vq_lengthlist__44u7__p9_1[] = { 1, 4, 4, 6, 5, 8, 6, 9, 8,10, 9,11,10, 4, 6, 6, 8, 8, 9, 9,11,10,11,11,11,11, 4, 6, 6, 8, 8,10, 9,11,11,11,11,11,12, 6, 8, 8,10,10,11,11,12,12, @@ -5949,7 +5949,7 @@ static const long _vq_lengthlist__44u7__p9_1[] = { static const static_codebook _44u7__p9_1 = { 2, 169, - (long *)_vq_lengthlist__44u7__p9_1, + (char *)_vq_lengthlist__44u7__p9_1, 1, -518889472, 1622704128, 4, 0, (long *)_vq_quantlist__44u7__p9_1, 0 @@ -6007,7 +6007,7 @@ static const long _vq_quantlist__44u7__p9_2[] = { 48, }; -static const long _vq_lengthlist__44u7__p9_2[] = { +static const char _vq_lengthlist__44u7__p9_2[] = { 2, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, @@ -6016,13 +6016,13 @@ static const long _vq_lengthlist__44u7__p9_2[] = { static const static_codebook _44u7__p9_2 = { 1, 49, - (long *)_vq_lengthlist__44u7__p9_2, + (char *)_vq_lengthlist__44u7__p9_2, 1, -526909440, 1611661312, 6, 0, (long *)_vq_quantlist__44u7__p9_2, 0 }; -static const long _huff_lengthlist__44u7__short[] = { +static const char _huff_lengthlist__44u7__short[] = { 5,12,17,16,16,17,17,17,17,17, 4, 7,11,11,12, 9, 17,10,17,17, 7, 7, 8, 9, 7, 9,11,10,15,17, 7, 9, 10,11,10,12,14,12,16,17, 7, 8, 5, 7, 4, 7, 7, 8, @@ -6034,13 +6034,13 @@ static const long _huff_lengthlist__44u7__short[] = { static const static_codebook _huff_book__44u7__short = { 2, 100, - (long *)_huff_lengthlist__44u7__short, + (char *)_huff_lengthlist__44u7__short, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44u8__long[] = { +static const char _huff_lengthlist__44u8__long[] = { 3, 9,13,14,14,15,14,14,15,15, 5, 4, 6, 8,10,12, 12,14,15,15, 9, 5, 4, 5, 8,10,11,13,16,16,10, 7, 4, 3, 5, 7, 9,11,13,13,10, 9, 7, 4, 4, 6, 8,10, @@ -6052,13 +6052,13 @@ static const long _huff_lengthlist__44u8__long[] = { static const static_codebook _huff_book__44u8__long = { 2, 100, - (long *)_huff_lengthlist__44u8__long, + (char *)_huff_lengthlist__44u8__long, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44u8__short[] = { +static const char _huff_lengthlist__44u8__short[] = { 6,14,18,18,17,17,17,17,17,17, 4, 7, 9, 9,10,13, 15,17,17,17, 6, 7, 5, 6, 8,11,16,17,16,17, 5, 7, 5, 4, 6,10,14,17,17,17, 6, 6, 6, 5, 7,10,13,16, @@ -6070,7 +6070,7 @@ static const long _huff_lengthlist__44u8__short[] = { static const static_codebook _huff_book__44u8__short = { 2, 100, - (long *)_huff_lengthlist__44u8__short, + (char *)_huff_lengthlist__44u8__short, 0, 0, 0, 0, 0, NULL, 0 @@ -6082,7 +6082,7 @@ static const long _vq_quantlist__44u8_p1_0[] = { 2, }; -static const long _vq_lengthlist__44u8_p1_0[] = { +static const char _vq_lengthlist__44u8_p1_0[] = { 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 8, 9, 9, 7, 9, 9, 5, 7, 7, 7, 9, 9, 8, 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 9, 7, 9, 9, 9,10,11, 9,11,10, 7, 9, 9, @@ -6093,7 +6093,7 @@ static const long _vq_lengthlist__44u8_p1_0[] = { static const static_codebook _44u8_p1_0 = { 4, 81, - (long *)_vq_lengthlist__44u8_p1_0, + (char *)_vq_lengthlist__44u8_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u8_p1_0, 0 @@ -6107,7 +6107,7 @@ static const long _vq_quantlist__44u8_p2_0[] = { 4, }; -static const long _vq_lengthlist__44u8_p2_0[] = { +static const char _vq_lengthlist__44u8_p2_0[] = { 4, 5, 5, 8, 8, 5, 7, 6, 9, 9, 5, 6, 7, 9, 9, 8, 9, 9,11,11, 8, 9, 9,11,11, 5, 7, 7, 9, 9, 7, 8, 8,10,10, 7, 8, 8,10,10, 9,10,10,12,12, 9,10,10, @@ -6152,7 +6152,7 @@ static const long _vq_lengthlist__44u8_p2_0[] = { static const static_codebook _44u8_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44u8_p2_0, + (char *)_vq_lengthlist__44u8_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u8_p2_0, 0 @@ -6170,7 +6170,7 @@ static const long _vq_quantlist__44u8_p3_0[] = { 8, }; -static const long _vq_lengthlist__44u8_p3_0[] = { +static const char _vq_lengthlist__44u8_p3_0[] = { 3, 4, 4, 5, 5, 7, 7, 9, 9, 4, 5, 4, 6, 6, 7, 7, 9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7, 8, 8,10,10, 6, 6, 6, 7, 7, 8, 8,10,10, 7, 7, 7, @@ -6181,7 +6181,7 @@ static const long _vq_lengthlist__44u8_p3_0[] = { static const static_codebook _44u8_p3_0 = { 2, 81, - (long *)_vq_lengthlist__44u8_p3_0, + (char *)_vq_lengthlist__44u8_p3_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44u8_p3_0, 0 @@ -6207,7 +6207,7 @@ static const long _vq_quantlist__44u8_p4_0[] = { 16, }; -static const long _vq_lengthlist__44u8_p4_0[] = { +static const char _vq_lengthlist__44u8_p4_0[] = { 4, 4, 4, 6, 6, 7, 7, 8, 8, 8, 8,10,10,11,11,11, 11, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11, 12,12, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11, @@ -6231,7 +6231,7 @@ static const long _vq_lengthlist__44u8_p4_0[] = { static const static_codebook _44u8_p4_0 = { 2, 289, - (long *)_vq_lengthlist__44u8_p4_0, + (char *)_vq_lengthlist__44u8_p4_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44u8_p4_0, 0 @@ -6243,7 +6243,7 @@ static const long _vq_quantlist__44u8_p5_0[] = { 2, }; -static const long _vq_lengthlist__44u8_p5_0[] = { +static const char _vq_lengthlist__44u8_p5_0[] = { 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 8, 9, 9, 7, 9, 9, 5, 8, 8, 7, 9, 9, 8, 9, 9, 5, 8, 8, 8,10, 10, 8,10,10, 7,10,10, 9,10,12, 9,12,11, 7,10,10, @@ -6254,7 +6254,7 @@ static const long _vq_lengthlist__44u8_p5_0[] = { static const static_codebook _44u8_p5_0 = { 4, 81, - (long *)_vq_lengthlist__44u8_p5_0, + (char *)_vq_lengthlist__44u8_p5_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44u8_p5_0, 0 @@ -6274,7 +6274,7 @@ static const long _vq_quantlist__44u8_p5_1[] = { 10, }; -static const long _vq_lengthlist__44u8_p5_1[] = { +static const char _vq_lengthlist__44u8_p5_1[] = { 4, 5, 5, 6, 6, 7, 7, 7, 7, 8, 8, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 5, 5, 5, 6, 6, 7, 7, 7, 8, 8, 8, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 6, 6, 6, 7, @@ -6287,7 +6287,7 @@ static const long _vq_lengthlist__44u8_p5_1[] = { static const static_codebook _44u8_p5_1 = { 2, 121, - (long *)_vq_lengthlist__44u8_p5_1, + (char *)_vq_lengthlist__44u8_p5_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44u8_p5_1, 0 @@ -6309,7 +6309,7 @@ static const long _vq_quantlist__44u8_p6_0[] = { 12, }; -static const long _vq_lengthlist__44u8_p6_0[] = { +static const char _vq_lengthlist__44u8_p6_0[] = { 2, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 4, 6, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 6, 7, 7, 7, 8, 8, 8, 8, 9, @@ -6325,7 +6325,7 @@ static const long _vq_lengthlist__44u8_p6_0[] = { static const static_codebook _44u8_p6_0 = { 2, 169, - (long *)_vq_lengthlist__44u8_p6_0, + (char *)_vq_lengthlist__44u8_p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44u8_p6_0, 0 @@ -6339,14 +6339,14 @@ static const long _vq_quantlist__44u8_p6_1[] = { 4, }; -static const long _vq_lengthlist__44u8_p6_1[] = { +static const char _vq_lengthlist__44u8_p6_1[] = { 3, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44u8_p6_1 = { 2, 25, - (long *)_vq_lengthlist__44u8_p6_1, + (char *)_vq_lengthlist__44u8_p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u8_p6_1, 0 @@ -6368,7 +6368,7 @@ static const long _vq_quantlist__44u8_p7_0[] = { 12, }; -static const long _vq_lengthlist__44u8_p7_0[] = { +static const char _vq_lengthlist__44u8_p7_0[] = { 1, 4, 5, 6, 6, 7, 7, 8, 8,10,10,11,11, 5, 6, 6, 7, 7, 8, 8, 9, 9,11,10,12,11, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,11,11,12, 6, 7, 7, 8, 8, 9, 9,10,10, @@ -6384,7 +6384,7 @@ static const long _vq_lengthlist__44u8_p7_0[] = { static const static_codebook _44u8_p7_0 = { 2, 169, - (long *)_vq_lengthlist__44u8_p7_0, + (char *)_vq_lengthlist__44u8_p7_0, 1, -523206656, 1618345984, 4, 0, (long *)_vq_quantlist__44u8_p7_0, 0 @@ -6404,7 +6404,7 @@ static const long _vq_quantlist__44u8_p7_1[] = { 10, }; -static const long _vq_lengthlist__44u8_p7_1[] = { +static const char _vq_lengthlist__44u8_p7_1[] = { 4, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 6, 7, 7, 7, @@ -6417,7 +6417,7 @@ static const long _vq_lengthlist__44u8_p7_1[] = { static const static_codebook _44u8_p7_1 = { 2, 121, - (long *)_vq_lengthlist__44u8_p7_1, + (char *)_vq_lengthlist__44u8_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44u8_p7_1, 0 @@ -6441,7 +6441,7 @@ static const long _vq_quantlist__44u8_p8_0[] = { 14, }; -static const long _vq_lengthlist__44u8_p8_0[] = { +static const char _vq_lengthlist__44u8_p8_0[] = { 1, 4, 4, 7, 7, 8, 8, 8, 7, 9, 8,10, 9,11,10, 4, 6, 6, 8, 8,10, 9, 9, 9,10,10,11,10,12,10, 4, 6, 6, 8, 8,10,10, 9, 9,10,10,11,11,11,12, 7, 8, 8, @@ -6461,7 +6461,7 @@ static const long _vq_lengthlist__44u8_p8_0[] = { static const static_codebook _44u8_p8_0 = { 2, 225, - (long *)_vq_lengthlist__44u8_p8_0, + (char *)_vq_lengthlist__44u8_p8_0, 1, -520986624, 1620377600, 4, 0, (long *)_vq_quantlist__44u8_p8_0, 0 @@ -6491,7 +6491,7 @@ static const long _vq_quantlist__44u8_p8_1[] = { 20, }; -static const long _vq_lengthlist__44u8_p8_1[] = { +static const char _vq_lengthlist__44u8_p8_1[] = { 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 6, 6, 7, 7, 8, @@ -6524,7 +6524,7 @@ static const long _vq_lengthlist__44u8_p8_1[] = { static const static_codebook _44u8_p8_1 = { 2, 441, - (long *)_vq_lengthlist__44u8_p8_1, + (char *)_vq_lengthlist__44u8_p8_1, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__44u8_p8_1, 0 @@ -6542,7 +6542,7 @@ static const long _vq_quantlist__44u8_p9_0[] = { 8, }; -static const long _vq_lengthlist__44u8_p9_0[] = { +static const char _vq_lengthlist__44u8_p9_0[] = { 1, 3, 3, 9, 9, 9, 9, 9, 9, 4, 9, 9, 9, 9, 9, 9, 9, 9, 5, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, @@ -6553,7 +6553,7 @@ static const long _vq_lengthlist__44u8_p9_0[] = { static const static_codebook _44u8_p9_0 = { 2, 81, - (long *)_vq_lengthlist__44u8_p9_0, + (char *)_vq_lengthlist__44u8_p9_0, 1, -511895552, 1631393792, 4, 0, (long *)_vq_quantlist__44u8_p9_0, 0 @@ -6581,7 +6581,7 @@ static const long _vq_quantlist__44u8_p9_1[] = { 18, }; -static const long _vq_lengthlist__44u8_p9_1[] = { +static const char _vq_lengthlist__44u8_p9_1[] = { 1, 4, 4, 7, 7, 8, 7, 8, 6, 9, 7,10, 8,11,10,11, 11,11,11, 4, 7, 6, 9, 9,10, 9, 9, 9,10,10,11,10, 11,10,11,11,13,11, 4, 7, 7, 9, 9, 9, 9, 9, 9,10, @@ -6609,7 +6609,7 @@ static const long _vq_lengthlist__44u8_p9_1[] = { static const static_codebook _44u8_p9_1 = { 2, 361, - (long *)_vq_lengthlist__44u8_p9_1, + (char *)_vq_lengthlist__44u8_p9_1, 1, -518287360, 1622704128, 5, 0, (long *)_vq_quantlist__44u8_p9_1, 0 @@ -6667,7 +6667,7 @@ static const long _vq_quantlist__44u8_p9_2[] = { 48, }; -static const long _vq_lengthlist__44u8_p9_2[] = { +static const char _vq_lengthlist__44u8_p9_2[] = { 2, 3, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, @@ -6676,13 +6676,13 @@ static const long _vq_lengthlist__44u8_p9_2[] = { static const static_codebook _44u8_p9_2 = { 1, 49, - (long *)_vq_lengthlist__44u8_p9_2, + (char *)_vq_lengthlist__44u8_p9_2, 1, -526909440, 1611661312, 6, 0, (long *)_vq_quantlist__44u8_p9_2, 0 }; -static const long _huff_lengthlist__44u9__long[] = { +static const char _huff_lengthlist__44u9__long[] = { 3, 9,13,13,14,15,14,14,15,15, 5, 5, 9,10,12,12, 13,14,16,15,10, 6, 6, 6, 8,11,12,13,16,15,11, 7, 5, 3, 5, 8,10,12,15,15,10,10, 7, 4, 3, 5, 8,10, @@ -6694,13 +6694,13 @@ static const long _huff_lengthlist__44u9__long[] = { static const static_codebook _huff_book__44u9__long = { 2, 100, - (long *)_huff_lengthlist__44u9__long, + (char *)_huff_lengthlist__44u9__long, 0, 0, 0, 0, 0, NULL, 0 }; -static const long _huff_lengthlist__44u9__short[] = { +static const char _huff_lengthlist__44u9__short[] = { 9,16,18,18,17,17,17,17,17,17, 5, 8,11,12,11,12, 17,17,16,16, 6, 6, 8, 8, 9,10,14,15,16,16, 6, 7, 7, 4, 6, 9,13,16,16,16, 6, 6, 7, 4, 5, 8,11,15, @@ -6712,7 +6712,7 @@ static const long _huff_lengthlist__44u9__short[] = { static const static_codebook _huff_book__44u9__short = { 2, 100, - (long *)_huff_lengthlist__44u9__short, + (char *)_huff_lengthlist__44u9__short, 0, 0, 0, 0, 0, NULL, 0 @@ -6724,7 +6724,7 @@ static const long _vq_quantlist__44u9_p1_0[] = { 2, }; -static const long _vq_lengthlist__44u9_p1_0[] = { +static const char _vq_lengthlist__44u9_p1_0[] = { 1, 5, 5, 5, 7, 7, 5, 7, 7, 5, 7, 7, 7, 9, 9, 7, 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 9, 5, 7, 7, 7, 9, 9, 7, 9, 9, 8, 9, 9, 9,10,11, 9,11,11, 7, 9, 9, @@ -6735,7 +6735,7 @@ static const long _vq_lengthlist__44u9_p1_0[] = { static const static_codebook _44u9_p1_0 = { 4, 81, - (long *)_vq_lengthlist__44u9_p1_0, + (char *)_vq_lengthlist__44u9_p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44u9_p1_0, 0 @@ -6749,7 +6749,7 @@ static const long _vq_quantlist__44u9_p2_0[] = { 4, }; -static const long _vq_lengthlist__44u9_p2_0[] = { +static const char _vq_lengthlist__44u9_p2_0[] = { 3, 5, 5, 8, 8, 5, 7, 7, 9, 9, 6, 7, 7, 9, 9, 8, 9, 9,11,10, 8, 9, 9,11,11, 6, 7, 7, 9, 9, 7, 8, 8,10,10, 7, 8, 8, 9,10, 9,10,10,11,11, 9, 9,10, @@ -6794,7 +6794,7 @@ static const long _vq_lengthlist__44u9_p2_0[] = { static const static_codebook _44u9_p2_0 = { 4, 625, - (long *)_vq_lengthlist__44u9_p2_0, + (char *)_vq_lengthlist__44u9_p2_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u9_p2_0, 0 @@ -6812,7 +6812,7 @@ static const long _vq_quantlist__44u9_p3_0[] = { 8, }; -static const long _vq_lengthlist__44u9_p3_0[] = { +static const char _vq_lengthlist__44u9_p3_0[] = { 3, 4, 4, 5, 5, 7, 7, 8, 8, 4, 5, 5, 6, 6, 7, 7, 9, 9, 4, 4, 5, 6, 6, 7, 7, 9, 9, 5, 6, 6, 7, 7, 8, 8, 9, 9, 5, 6, 6, 7, 7, 8, 8, 9, 9, 7, 7, 7, @@ -6823,7 +6823,7 @@ static const long _vq_lengthlist__44u9_p3_0[] = { static const static_codebook _44u9_p3_0 = { 2, 81, - (long *)_vq_lengthlist__44u9_p3_0, + (char *)_vq_lengthlist__44u9_p3_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44u9_p3_0, 0 @@ -6849,7 +6849,7 @@ static const long _vq_quantlist__44u9_p4_0[] = { 16, }; -static const long _vq_lengthlist__44u9_p4_0[] = { +static const char _vq_lengthlist__44u9_p4_0[] = { 4, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10,11, 11, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 11,11, 5, 5, 5, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9,10, @@ -6873,7 +6873,7 @@ static const long _vq_lengthlist__44u9_p4_0[] = { static const static_codebook _44u9_p4_0 = { 2, 289, - (long *)_vq_lengthlist__44u9_p4_0, + (char *)_vq_lengthlist__44u9_p4_0, 1, -529530880, 1611661312, 5, 0, (long *)_vq_quantlist__44u9_p4_0, 0 @@ -6885,7 +6885,7 @@ static const long _vq_quantlist__44u9_p5_0[] = { 2, }; -static const long _vq_lengthlist__44u9_p5_0[] = { +static const char _vq_lengthlist__44u9_p5_0[] = { 1, 4, 4, 5, 7, 7, 5, 7, 7, 5, 8, 8, 8, 9, 9, 7, 9, 9, 5, 8, 8, 7, 9, 9, 8, 9, 9, 5, 8, 8, 8,10, 10, 8,10,10, 7,10,10, 9,10,12, 9,11,11, 7,10,10, @@ -6896,7 +6896,7 @@ static const long _vq_lengthlist__44u9_p5_0[] = { static const static_codebook _44u9_p5_0 = { 4, 81, - (long *)_vq_lengthlist__44u9_p5_0, + (char *)_vq_lengthlist__44u9_p5_0, 1, -529137664, 1618345984, 2, 0, (long *)_vq_quantlist__44u9_p5_0, 0 @@ -6916,7 +6916,7 @@ static const long _vq_quantlist__44u9_p5_1[] = { 10, }; -static const long _vq_lengthlist__44u9_p5_1[] = { +static const char _vq_lengthlist__44u9_p5_1[] = { 5, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 7, 5, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 6, 6, 6, 7, @@ -6929,7 +6929,7 @@ static const long _vq_lengthlist__44u9_p5_1[] = { static const static_codebook _44u9_p5_1 = { 2, 121, - (long *)_vq_lengthlist__44u9_p5_1, + (char *)_vq_lengthlist__44u9_p5_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44u9_p5_1, 0 @@ -6951,7 +6951,7 @@ static const long _vq_quantlist__44u9_p6_0[] = { 12, }; -static const long _vq_lengthlist__44u9_p6_0[] = { +static const char _vq_lengthlist__44u9_p6_0[] = { 2, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9,10,10, 4, 6, 5, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 4, 5, 6, 7, 7, 8, 8, 8, 8, 9, 9,10,10, 6, 7, 7, 8, 8, 8, 8, 9, 9, @@ -6967,7 +6967,7 @@ static const long _vq_lengthlist__44u9_p6_0[] = { static const static_codebook _44u9_p6_0 = { 2, 169, - (long *)_vq_lengthlist__44u9_p6_0, + (char *)_vq_lengthlist__44u9_p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44u9_p6_0, 0 @@ -6981,14 +6981,14 @@ static const long _vq_quantlist__44u9_p6_1[] = { 4, }; -static const long _vq_lengthlist__44u9_p6_1[] = { +static const char _vq_lengthlist__44u9_p6_1[] = { 4, 4, 4, 5, 5, 4, 5, 4, 5, 5, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, }; static const static_codebook _44u9_p6_1 = { 2, 25, - (long *)_vq_lengthlist__44u9_p6_1, + (char *)_vq_lengthlist__44u9_p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44u9_p6_1, 0 @@ -7010,7 +7010,7 @@ static const long _vq_quantlist__44u9_p7_0[] = { 12, }; -static const long _vq_lengthlist__44u9_p7_0[] = { +static const char _vq_lengthlist__44u9_p7_0[] = { 1, 4, 5, 6, 6, 7, 7, 8, 9,10,10,11,11, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11, 5, 6, 6, 7, 7, 8, 8, 9, 9,10,10,11,11, 6, 7, 7, 8, 8, 9, 9,10,10, @@ -7026,7 +7026,7 @@ static const long _vq_lengthlist__44u9_p7_0[] = { static const static_codebook _44u9_p7_0 = { 2, 169, - (long *)_vq_lengthlist__44u9_p7_0, + (char *)_vq_lengthlist__44u9_p7_0, 1, -523206656, 1618345984, 4, 0, (long *)_vq_quantlist__44u9_p7_0, 0 @@ -7046,7 +7046,7 @@ static const long _vq_quantlist__44u9_p7_1[] = { 10, }; -static const long _vq_lengthlist__44u9_p7_1[] = { +static const char _vq_lengthlist__44u9_p7_1[] = { 5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 7, @@ -7059,7 +7059,7 @@ static const long _vq_lengthlist__44u9_p7_1[] = { static const static_codebook _44u9_p7_1 = { 2, 121, - (long *)_vq_lengthlist__44u9_p7_1, + (char *)_vq_lengthlist__44u9_p7_1, 1, -531365888, 1611661312, 4, 0, (long *)_vq_quantlist__44u9_p7_1, 0 @@ -7083,7 +7083,7 @@ static const long _vq_quantlist__44u9_p8_0[] = { 14, }; -static const long _vq_lengthlist__44u9_p8_0[] = { +static const char _vq_lengthlist__44u9_p8_0[] = { 1, 4, 4, 7, 7, 8, 8, 8, 8, 9, 9,10, 9,11,10, 4, 6, 6, 8, 8, 9, 9, 9, 9,10,10,11,10,12,10, 4, 6, 6, 8, 8, 9,10, 9, 9,10,10,11,11,12,12, 7, 8, 8, @@ -7103,7 +7103,7 @@ static const long _vq_lengthlist__44u9_p8_0[] = { static const static_codebook _44u9_p8_0 = { 2, 225, - (long *)_vq_lengthlist__44u9_p8_0, + (char *)_vq_lengthlist__44u9_p8_0, 1, -520986624, 1620377600, 4, 0, (long *)_vq_quantlist__44u9_p8_0, 0 @@ -7133,7 +7133,7 @@ static const long _vq_quantlist__44u9_p8_1[] = { 20, }; -static const long _vq_lengthlist__44u9_p8_1[] = { +static const char _vq_lengthlist__44u9_p8_1[] = { 4, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 6, 6, 7, 7, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 6, 6, 7, 7, 8, @@ -7166,7 +7166,7 @@ static const long _vq_lengthlist__44u9_p8_1[] = { static const static_codebook _44u9_p8_1 = { 2, 441, - (long *)_vq_lengthlist__44u9_p8_1, + (char *)_vq_lengthlist__44u9_p8_1, 1, -529268736, 1611661312, 5, 0, (long *)_vq_quantlist__44u9_p8_1, 0 @@ -7190,7 +7190,7 @@ static const long _vq_quantlist__44u9_p9_0[] = { 14, }; -static const long _vq_lengthlist__44u9_p9_0[] = { +static const char _vq_lengthlist__44u9_p9_0[] = { 1, 3, 3,11,11,11,11,11,11,11,11,11,11,11,11, 4, 10,11,11,11,11,11,11,11,11,11,11,11,11,11, 4,10, 10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, @@ -7210,7 +7210,7 @@ static const long _vq_lengthlist__44u9_p9_0[] = { static const static_codebook _44u9_p9_0 = { 2, 225, - (long *)_vq_lengthlist__44u9_p9_0, + (char *)_vq_lengthlist__44u9_p9_0, 1, -510036736, 1631393792, 4, 0, (long *)_vq_quantlist__44u9_p9_0, 0 @@ -7238,7 +7238,7 @@ static const long _vq_quantlist__44u9_p9_1[] = { 18, }; -static const long _vq_lengthlist__44u9_p9_1[] = { +static const char _vq_lengthlist__44u9_p9_1[] = { 1, 4, 4, 7, 7, 8, 7, 8, 7, 9, 8,10, 9,10,10,11, 11,12,12, 4, 7, 6, 9, 9,10, 9, 9, 8,10,10,11,10, 12,10,13,12,13,12, 4, 6, 6, 9, 9, 9, 9, 9, 9,10, @@ -7266,7 +7266,7 @@ static const long _vq_lengthlist__44u9_p9_1[] = { static const static_codebook _44u9_p9_1 = { 2, 361, - (long *)_vq_lengthlist__44u9_p9_1, + (char *)_vq_lengthlist__44u9_p9_1, 1, -518287360, 1622704128, 5, 0, (long *)_vq_quantlist__44u9_p9_1, 0 @@ -7324,7 +7324,7 @@ static const long _vq_quantlist__44u9_p9_2[] = { 48, }; -static const long _vq_lengthlist__44u9_p9_2[] = { +static const char _vq_lengthlist__44u9_p9_2[] = { 2, 4, 4, 5, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, @@ -7333,13 +7333,13 @@ static const long _vq_lengthlist__44u9_p9_2[] = { static const static_codebook _44u9_p9_2 = { 1, 49, - (long *)_vq_lengthlist__44u9_p9_2, + (char *)_vq_lengthlist__44u9_p9_2, 1, -526909440, 1611661312, 6, 0, (long *)_vq_quantlist__44u9_p9_2, 0 }; -static const long _huff_lengthlist__44un1__long[] = { +static const char _huff_lengthlist__44un1__long[] = { 5, 6,12, 9,14, 9, 9,19, 6, 1, 5, 5, 8, 7, 9,19, 12, 4, 4, 7, 7, 9,11,18, 9, 5, 6, 6, 8, 7, 8,17, 14, 8, 7, 8, 8,10,12,18, 9, 6, 8, 6, 8, 6, 8,18, @@ -7348,7 +7348,7 @@ static const long _huff_lengthlist__44un1__long[] = { static const static_codebook _huff_book__44un1__long = { 2, 64, - (long *)_huff_lengthlist__44un1__long, + (char *)_huff_lengthlist__44un1__long, 0, 0, 0, 0, 0, NULL, 0 @@ -7360,7 +7360,7 @@ static const long _vq_quantlist__44un1__p1_0[] = { 2, }; -static const long _vq_lengthlist__44un1__p1_0[] = { +static const char _vq_lengthlist__44un1__p1_0[] = { 1, 4, 4, 5, 8, 7, 5, 7, 8, 5, 8, 8, 8,10,11, 8, 10,11, 5, 8, 8, 8,11,10, 8,11,10, 4, 9, 9, 8,11, 11, 8,11,11, 8,12,11,10,12,14,11,13,13, 7,11,11, @@ -7371,7 +7371,7 @@ static const long _vq_lengthlist__44un1__p1_0[] = { static const static_codebook _44un1__p1_0 = { 4, 81, - (long *)_vq_lengthlist__44un1__p1_0, + (char *)_vq_lengthlist__44un1__p1_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44un1__p1_0, 0 @@ -7383,7 +7383,7 @@ static const long _vq_quantlist__44un1__p2_0[] = { 2, }; -static const long _vq_lengthlist__44un1__p2_0[] = { +static const char _vq_lengthlist__44un1__p2_0[] = { 2, 4, 4, 5, 6, 6, 5, 6, 6, 5, 7, 7, 7, 8, 8, 6, 7, 9, 5, 7, 7, 6, 8, 7, 7, 9, 8, 4, 7, 7, 7, 9, 8, 7, 8, 8, 7, 9, 8, 8, 8,10, 9,10,10, 6, 8, 8, @@ -7394,7 +7394,7 @@ static const long _vq_lengthlist__44un1__p2_0[] = { static const static_codebook _44un1__p2_0 = { 4, 81, - (long *)_vq_lengthlist__44un1__p2_0, + (char *)_vq_lengthlist__44un1__p2_0, 1, -535822336, 1611661312, 2, 0, (long *)_vq_quantlist__44un1__p2_0, 0 @@ -7408,7 +7408,7 @@ static const long _vq_quantlist__44un1__p3_0[] = { 4, }; -static const long _vq_lengthlist__44un1__p3_0[] = { +static const char _vq_lengthlist__44un1__p3_0[] = { 1, 5, 5, 8, 8, 5, 8, 7, 9, 9, 5, 7, 8, 9, 9, 9, 10, 9,12,12, 9, 9,10,11,12, 6, 8, 8,10,10, 8,10, 10,11,11, 8, 9,10,11,11,10,11,11,13,13,10,11,11, @@ -7453,7 +7453,7 @@ static const long _vq_lengthlist__44un1__p3_0[] = { static const static_codebook _44un1__p3_0 = { 4, 625, - (long *)_vq_lengthlist__44un1__p3_0, + (char *)_vq_lengthlist__44un1__p3_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44un1__p3_0, 0 @@ -7467,7 +7467,7 @@ static const long _vq_quantlist__44un1__p4_0[] = { 4, }; -static const long _vq_lengthlist__44un1__p4_0[] = { +static const char _vq_lengthlist__44un1__p4_0[] = { 3, 5, 5, 9, 9, 5, 6, 6,10, 9, 5, 6, 6, 9,10,10, 10,10,12,11, 9,10,10,12,12, 5, 7, 7,10,10, 7, 7, 8,10,11, 7, 7, 8,10,11,10,10,11,11,13,10,10,11, @@ -7512,7 +7512,7 @@ static const long _vq_lengthlist__44un1__p4_0[] = { static const static_codebook _44un1__p4_0 = { 4, 625, - (long *)_vq_lengthlist__44un1__p4_0, + (char *)_vq_lengthlist__44un1__p4_0, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44un1__p4_0, 0 @@ -7530,7 +7530,7 @@ static const long _vq_quantlist__44un1__p5_0[] = { 8, }; -static const long _vq_lengthlist__44un1__p5_0[] = { +static const char _vq_lengthlist__44un1__p5_0[] = { 1, 4, 4, 7, 7, 8, 8, 9, 9, 4, 6, 5, 8, 7, 8, 8, 10, 9, 4, 6, 6, 8, 8, 8, 8,10,10, 7, 8, 7, 9, 9, 9, 9,11,10, 7, 8, 8, 9, 9, 9, 9,10,11, 8, 8, 8, @@ -7541,7 +7541,7 @@ static const long _vq_lengthlist__44un1__p5_0[] = { static const static_codebook _44un1__p5_0 = { 2, 81, - (long *)_vq_lengthlist__44un1__p5_0, + (char *)_vq_lengthlist__44un1__p5_0, 1, -531628032, 1611661312, 4, 0, (long *)_vq_quantlist__44un1__p5_0, 0 @@ -7563,7 +7563,7 @@ static const long _vq_quantlist__44un1__p6_0[] = { 12, }; -static const long _vq_lengthlist__44un1__p6_0[] = { +static const char _vq_lengthlist__44un1__p6_0[] = { 1, 4, 4, 6, 6, 8, 8,10,10,11,11,15,15, 4, 5, 5, 8, 8, 9, 9,11,11,12,12,16,16, 4, 5, 6, 8, 8, 9, 9,11,11,12,12,14,14, 7, 8, 8, 9, 9,10,10,11,12, @@ -7579,7 +7579,7 @@ static const long _vq_lengthlist__44un1__p6_0[] = { static const static_codebook _44un1__p6_0 = { 2, 169, - (long *)_vq_lengthlist__44un1__p6_0, + (char *)_vq_lengthlist__44un1__p6_0, 1, -526516224, 1616117760, 4, 0, (long *)_vq_quantlist__44un1__p6_0, 0 @@ -7593,14 +7593,14 @@ static const long _vq_quantlist__44un1__p6_1[] = { 4, }; -static const long _vq_lengthlist__44un1__p6_1[] = { +static const char _vq_lengthlist__44un1__p6_1[] = { 2, 4, 4, 5, 5, 4, 5, 5, 5, 5, 4, 5, 5, 6, 5, 5, 6, 5, 6, 6, 5, 6, 6, 6, 6, }; static const static_codebook _44un1__p6_1 = { 2, 25, - (long *)_vq_lengthlist__44un1__p6_1, + (char *)_vq_lengthlist__44un1__p6_1, 1, -533725184, 1611661312, 3, 0, (long *)_vq_quantlist__44un1__p6_1, 0 @@ -7614,7 +7614,7 @@ static const long _vq_quantlist__44un1__p7_0[] = { 4, }; -static const long _vq_lengthlist__44un1__p7_0[] = { +static const char _vq_lengthlist__44un1__p7_0[] = { 1, 5, 3,11,11,11,11,11,11,11, 8,11,11,11,11,11, 11,11,11,11,11,11,11,11,11,10,11,11,11,11,11,11, 11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11, @@ -7659,7 +7659,7 @@ static const long _vq_lengthlist__44un1__p7_0[] = { static const static_codebook _44un1__p7_0 = { 4, 625, - (long *)_vq_lengthlist__44un1__p7_0, + (char *)_vq_lengthlist__44un1__p7_0, 1, -518709248, 1626677248, 3, 0, (long *)_vq_quantlist__44un1__p7_0, 0 @@ -7681,7 +7681,7 @@ static const long _vq_quantlist__44un1__p7_1[] = { 12, }; -static const long _vq_lengthlist__44un1__p7_1[] = { +static const char _vq_lengthlist__44un1__p7_1[] = { 1, 4, 4, 6, 6, 6, 6, 9, 8, 9, 8, 8, 8, 5, 7, 7, 7, 7, 8, 8, 8,10, 8,10, 8, 9, 5, 7, 7, 8, 7, 7, 8,10,10,11,10,12,11, 7, 8, 8, 9, 9, 9,10,11,11, @@ -7697,7 +7697,7 @@ static const long _vq_lengthlist__44un1__p7_1[] = { static const static_codebook _44un1__p7_1 = { 2, 169, - (long *)_vq_lengthlist__44un1__p7_1, + (char *)_vq_lengthlist__44un1__p7_1, 1, -523010048, 1618608128, 4, 0, (long *)_vq_quantlist__44un1__p7_1, 0 @@ -7719,7 +7719,7 @@ static const long _vq_quantlist__44un1__p7_2[] = { 12, }; -static const long _vq_lengthlist__44un1__p7_2[] = { +static const char _vq_lengthlist__44un1__p7_2[] = { 3, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9, 9, 8, 4, 5, 5, 6, 6, 8, 8, 9, 8, 9, 9, 9, 9, 4, 5, 5, 7, 6, 8, 8, 8, 8, 9, 8, 9, 8, 6, 7, 7, 7, 8, 8, 8, 9, 9, @@ -7735,13 +7735,13 @@ static const long _vq_lengthlist__44un1__p7_2[] = { static const static_codebook _44un1__p7_2 = { 2, 169, - (long *)_vq_lengthlist__44un1__p7_2, + (char *)_vq_lengthlist__44un1__p7_2, 1, -531103744, 1611661312, 4, 0, (long *)_vq_quantlist__44un1__p7_2, 0 }; -static const long _huff_lengthlist__44un1__short[] = { +static const char _huff_lengthlist__44un1__short[] = { 12,12,14,12,14,14,14,14,12, 6, 6, 8, 9, 9,11,14, 12, 4, 2, 6, 6, 7,11,14,13, 6, 5, 7, 8, 9,11,14, 13, 8, 5, 8, 6, 8,12,14,12, 7, 7, 8, 8, 8,10,14, @@ -7750,7 +7750,7 @@ static const long _huff_lengthlist__44un1__short[] = { static const static_codebook _huff_book__44un1__short = { 2, 64, - (long *)_huff_lengthlist__44un1__short, + (char *)_huff_lengthlist__44un1__short, 0, 0, 0, 0, 0, NULL, 0 diff --git a/drivers/vorbis/codebook.c b/drivers/vorbis/codebook.c index 8a928cebb9..72f8a17a35 100644 --- a/drivers/vorbis/codebook.c +++ b/drivers/vorbis/codebook.c @@ -5,13 +5,13 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 * * by the Xiph.Org Foundation http://www.xiph.org/ * * * ******************************************************************** function: basic codebook pack/unpack/code/decode operations - last mod: $Id: codebook.c 17553 2010-10-21 17:54:26Z tterribe $ + last mod: $Id: codebook.c 19457 2015-03-03 00:15:29Z giles $ ********************************************************************/ @@ -53,16 +53,16 @@ int vorbis_staticbook_pack(const static_codebook *c,oggpack_buffer *opb){ oggpack_write(opb,c->lengthlist[0]-1,5); /* 1 to 32 */ for(i=1;i<c->entries;i++){ - long this=c->lengthlist[i]; - long last=c->lengthlist[i-1]; + char this=c->lengthlist[i]; + char last=c->lengthlist[i-1]; if(this>last){ for(j=last;j<this;j++){ - oggpack_write(opb,i-count,_ilog(c->entries-count)); + oggpack_write(opb,i-count,ov_ilog(c->entries-count)); count=i; } } } - oggpack_write(opb,i-count,_ilog(c->entries-count)); + oggpack_write(opb,i-count,ov_ilog(c->entries-count)); }else{ /* length random. Again, we don't code the codeword itself, just @@ -159,7 +159,7 @@ static_codebook *vorbis_staticbook_unpack(oggpack_buffer *opb){ s->entries=oggpack_read(opb,24); if(s->entries==-1)goto _eofout; - if(_ilog(s->dim)+_ilog(s->entries)>24)goto _eofout; + if(ov_ilog(s->dim)+ov_ilog(s->entries)>24)goto _eofout; /* codeword ordering.... length ordered or unordered? */ switch((int)oggpack_read(opb,1)){ @@ -203,7 +203,7 @@ static_codebook *vorbis_staticbook_unpack(oggpack_buffer *opb){ s->lengthlist=_ogg_malloc(sizeof(*s->lengthlist)*s->entries); for(i=0;i<s->entries;){ - long num=oggpack_read(opb,_ilog(s->entries-i)); + long num=oggpack_read(opb,ov_ilog(s->entries-i)); if(num==-1)goto _eofout; if(length>32 || num>s->entries-i || (num>0 && (num-1)>>(length-1)>1)){ @@ -312,6 +312,12 @@ STIN long decode_packed_entry_number(codebook *book, oggpack_buffer *b){ hi=book->used_entries; } + /* Single entry codebooks use a firsttablen of 1 and a + dec_maxlength of 1. If a single-entry codebook gets here (due to + failure to read one bit above), the next look attempt will also + fail and we'll correctly kick out instead of trying to walk the + underformed tree */ + lok = oggpack_look(b, read); while(lok<0 && read>1) @@ -367,6 +373,7 @@ long vorbis_book_decode(codebook *book, oggpack_buffer *b){ } /* returns 0 on OK or -1 on eof *************************************/ +/* decode vector / dim granularity gaurding is done in the upper layer */ long vorbis_book_decodevs_add(codebook *book,float *a,oggpack_buffer *b,int n){ if(book->used_entries>0){ int step=n/book->dim; @@ -386,6 +393,7 @@ long vorbis_book_decodevs_add(codebook *book,float *a,oggpack_buffer *b,int n){ return(0); } +/* decode vector / dim granularity gaurding is done in the upper layer */ long vorbis_book_decodev_add(codebook *book,float *a,oggpack_buffer *b,int n){ if(book->used_entries>0){ int i,j,entry; @@ -431,6 +439,9 @@ long vorbis_book_decodev_add(codebook *book,float *a,oggpack_buffer *b,int n){ return(0); } +/* unlike the others, we guard against n not being an integer number + of <dim> internally rather than in the upper layer (called only by + floor0) */ long vorbis_book_decodev_set(codebook *book,float *a,oggpack_buffer *b,int n){ if(book->used_entries>0){ int i,j,entry; @@ -440,15 +451,15 @@ long vorbis_book_decodev_set(codebook *book,float *a,oggpack_buffer *b,int n){ entry = decode_packed_entry_number(book,b); if(entry==-1)return(-1); t = book->valuelist+entry*book->dim; - for (j=0;j<book->dim;) + for (j=0;i<n && j<book->dim;){ a[i++]=t[j++]; + } } }else{ - int i,j; + int i; for(i=0;i<n;){ - for (j=0;j<book->dim;) - a[i++]=0.f; + a[i++]=0.f; } } return(0); diff --git a/drivers/vorbis/codebook.h b/drivers/vorbis/codebook.h index 94c30054cf..537d6c12d3 100644 --- a/drivers/vorbis/codebook.h +++ b/drivers/vorbis/codebook.h @@ -5,13 +5,13 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 * * by the Xiph.Org Foundation http://www.xiph.org/ * * * ******************************************************************** function: basic shared codebook operations - last mod: $Id: codebook.h 17030 2010-03-25 06:52:55Z xiphmont $ + last mod: $Id: codebook.h 19457 2015-03-03 00:15:29Z giles $ ********************************************************************/ @@ -34,14 +34,14 @@ */ typedef struct static_codebook{ - long dim; /* codebook dimensions (elements per vector) */ - long entries; /* codebook entries */ - long *lengthlist; /* codeword lengths in bits */ + long dim; /* codebook dimensions (elements per vector) */ + long entries; /* codebook entries */ + char *lengthlist; /* codeword lengths in bits */ /* mapping ***************************************************************/ - int maptype; /* 0=none - 1=implicitly populated values from map column - 2=listed arbitrary values */ + int maptype; /* 0=none + 1=implicitly populated values from map column + 2=listed arbitrary values */ /* The below does a linear, single monotonic sequence mapping. */ long q_min; /* packed 32 bit float; quant value 0 maps to minval */ @@ -89,7 +89,6 @@ extern float *_book_logdist(const static_codebook *b,float *vals); extern float _float32_unpack(long val); extern long _float32_pack(float val); extern int _best(codebook *book, float *a, int step); -extern int _ilog(unsigned int v); extern long _book_maptype1_quantvals(const static_codebook *b); extern int vorbis_book_besterror(codebook *book,float *a,int step,int addmul); diff --git a/drivers/vorbis/floor0.c b/drivers/vorbis/floor0.c index 4c32e91991..213cce4ec8 100644 --- a/drivers/vorbis/floor0.c +++ b/drivers/vorbis/floor0.c @@ -5,13 +5,13 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 * * by the Xiph.Org Foundation http://www.xiph.org/ * * * ******************************************************************** function: floor backend 0 implementation - last mod: $Id: floor0.c 17558 2010-10-22 00:24:41Z tterribe $ + last mod: $Id: floor0.c 19457 2015-03-03 00:15:29Z giles $ ********************************************************************/ @@ -147,6 +147,9 @@ static vorbis_look_floor *floor0_look(vorbis_dsp_state *vd, vorbis_info_floor *i){ vorbis_info_floor0 *info=(vorbis_info_floor0 *)i; vorbis_look_floor0 *look=_ogg_calloc(1,sizeof(*look)); + + (void)vd; + look->m=info->order; look->ln=info->barkmap; look->vi=info; @@ -165,7 +168,7 @@ static void *floor0_inverse1(vorbis_block *vb,vorbis_look_floor *i){ if(ampraw>0){ /* also handles the -1 out of data case */ long maxval=(1<<info->ampbits)-1; float amp=(float)ampraw/maxval*info->ampdB; - int booknum=oggpack_read(&vb->opb,_ilog(info->numbooks)); + int booknum=oggpack_read(&vb->opb,ov_ilog(info->numbooks)); if(booknum!=-1 && booknum<info->numbooks){ /* be paranoid */ codec_setup_info *ci=vb->vd->vi->codec_setup; @@ -177,10 +180,9 @@ static void *floor0_inverse1(vorbis_block *vb,vorbis_look_floor *i){ vector */ float *lsp=_vorbis_block_alloc(vb,sizeof(*lsp)*(look->m+b->dim+1)); - for(j=0;j<look->m;j+=b->dim) - if(vorbis_book_decodev_set(b,lsp+j,&vb->opb,b->dim)==-1)goto eop; + if(vorbis_book_decodev_set(b,lsp,&vb->opb,look->m)==-1)goto eop; for(j=0;j<look->m;){ - for(k=0;k<b->dim;k++,j++)lsp[j]+=last; + for(k=0;j<look->m && k<b->dim;k++,j++)lsp[j]+=last; last=lsp[j-1]; } diff --git a/drivers/vorbis/floor1.c b/drivers/vorbis/floor1.c index ae3dcedb1f..d8bd4645c1 100644 --- a/drivers/vorbis/floor1.c +++ b/drivers/vorbis/floor1.c @@ -5,13 +5,13 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 * * by the Xiph.Org Foundation http://www.xiph.org/ * * * ******************************************************************** function: floor backend 1 implementation - last mod: $Id: floor1.c 17555 2010-10-21 18:14:51Z tterribe $ + last mod: $Id: floor1.c 19457 2015-03-03 00:15:29Z giles $ ********************************************************************/ @@ -72,25 +72,6 @@ static void floor1_free_look(vorbis_look_floor *i){ } } -static int ilog(unsigned int v){ - int ret=0; - while(v){ - ret++; - v>>=1; - } - return(ret); -} - -static int ilog2(unsigned int v){ - int ret=0; - if(v)--v; - while(v){ - ret++; - v>>=1; - } - return(ret); -} - static void floor1_pack (vorbis_info_floor *i,oggpack_buffer *opb){ vorbis_info_floor1 *info=(vorbis_info_floor1 *)i; int j,k; @@ -117,8 +98,10 @@ static void floor1_pack (vorbis_info_floor *i,oggpack_buffer *opb){ /* save out the post list */ oggpack_write(opb,info->mult-1,2); /* only 1,2,3,4 legal now */ - oggpack_write(opb,ilog2(maxposit),4); - rangebits=ilog2(maxposit); + /* maxposit cannot legally be less than 1; this is encode-side, we + can assume our setup is OK */ + oggpack_write(opb,ov_ilog(maxposit-1),4); + rangebits=ov_ilog(maxposit-1); for(j=0,k=0;j<info->partitions;j++){ count+=info->class_dim[info->partitionclass[j]]; @@ -167,6 +150,7 @@ static vorbis_info_floor *floor1_unpack (vorbis_info *vi,oggpack_buffer *opb){ for(j=0,k=0;j<info->partitions;j++){ count+=info->class_dim[info->partitionclass[j]]; + if(count>VIF_POSIT) goto err_out; for(;k<count;k++){ int t=info->postlist[k+2]=oggpack_read(opb,rangebits); if(t<0 || t>=(1<<rangebits)) @@ -202,6 +186,8 @@ static vorbis_look_floor *floor1_look(vorbis_dsp_state *vd, vorbis_look_floor1 *look=_ogg_calloc(1,sizeof(*look)); int i,j,n=0; + (void)vd; + look->vi=info; look->n=info->postlist[1]; @@ -851,9 +837,9 @@ int floor1_encode(oggpack_buffer *opb,vorbis_block *vb, /* beginning/end post */ look->frames++; - look->postbits+=ilog(look->quant_q-1)*2; - oggpack_write(opb,out[0],ilog(look->quant_q-1)); - oggpack_write(opb,out[1],ilog(look->quant_q-1)); + look->postbits+=ov_ilog(look->quant_q-1)*2; + oggpack_write(opb,out[0],ov_ilog(look->quant_q-1)); + oggpack_write(opb,out[1],ov_ilog(look->quant_q-1)); /* partition by partition */ @@ -869,7 +855,9 @@ int floor1_encode(oggpack_buffer *opb,vorbis_block *vb, /* generate the partition's first stage cascade value */ if(csubbits){ - int maxval[8]; + int maxval[8]={0,0,0,0,0,0,0,0}; /* gcc's static analysis + issues a warning without + initialization */ for(k=0;k<csub;k++){ int booknum=info->class_subbook[class][k]; if(booknum<0){ @@ -977,8 +965,8 @@ static void *floor1_inverse1(vorbis_block *vb,vorbis_look_floor *in){ if(oggpack_read(&vb->opb,1)==1){ int *fit_value=_vorbis_block_alloc(vb,(look->posts)*sizeof(*fit_value)); - fit_value[0]=oggpack_read(&vb->opb,ilog(look->quant_q-1)); - fit_value[1]=oggpack_read(&vb->opb,ilog(look->quant_q-1)); + fit_value[0]=oggpack_read(&vb->opb,ov_ilog(look->quant_q-1)); + fit_value[1]=oggpack_read(&vb->opb,ov_ilog(look->quant_q-1)); /* partition by partition */ for(i=0,j=2;i<info->partitions;i++){ diff --git a/drivers/vorbis/info.c b/drivers/vorbis/info.c index 3932480a44..8a2a001f99 100644 --- a/drivers/vorbis/info.c +++ b/drivers/vorbis/info.c @@ -5,13 +5,13 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010 * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 * * by the Xiph.Org Foundation http://www.xiph.org/ * * * ******************************************************************** function: maintain the info structure, info <-> header packets - last mod: $Id: info.c 17584 2010-11-01 19:26:16Z xiphmont $ + last mod: $Id: info.c 19441 2015-01-21 01:17:41Z xiphmont $ ********************************************************************/ @@ -31,20 +31,10 @@ #include "misc.h" #include "os.h" -#define GENERAL_VENDOR_STRING "Xiph.Org libVorbis 1.3.2" -#define ENCODE_VENDOR_STRING "Xiph.Org libVorbis I 20101101 (Schaufenugget)" +#define GENERAL_VENDOR_STRING "Xiph.Org libVorbis 1.3.5" +#define ENCODE_VENDOR_STRING "Xiph.Org libVorbis I 20150105 (⛄⛄⛄⛄)" /* helpers */ -static int ilog2(unsigned int v){ - int ret=0; - if(v)--v; - while(v){ - ret++; - v>>=1; - } - return(ret); -} - static void _v_writestring(oggpack_buffer *o,const char *s, int bytes){ while(bytes--){ @@ -272,7 +262,6 @@ static int _vorbis_unpack_comment(vorbis_comment *vc,oggpack_buffer *opb){ static int _vorbis_unpack_books(vorbis_info *vi,oggpack_buffer *opb){ codec_setup_info *ci=vi->codec_setup; int i; - if(!ci)return(OV_EFAULT); /* codebooks */ ci->books=oggpack_read(opb,8)+1; @@ -411,6 +400,10 @@ int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,ogg_packet *op) /* um... we didn't get the initial header */ return(OV_EBADHEADER); } + if(vc->vendor!=NULL){ + /* previously initialized comment header */ + return(OV_EBADHEADER); + } return(_vorbis_unpack_comment(vc,&opb)); @@ -419,6 +412,14 @@ int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,ogg_packet *op) /* um... we didn;t get the initial header or comments yet */ return(OV_EBADHEADER); } + if(vi->codec_setup==NULL){ + /* improperly initialized vorbis_info */ + return(OV_EFAULT); + } + if(((codec_setup_info *)vi->codec_setup)->books>0){ + /* previously initialized setup header */ + return(OV_EBADHEADER); + } return(_vorbis_unpack_books(vi,&opb)); @@ -436,7 +437,11 @@ int vorbis_synthesis_headerin(vorbis_info *vi,vorbis_comment *vc,ogg_packet *op) static int _vorbis_pack_info(oggpack_buffer *opb,vorbis_info *vi){ codec_setup_info *ci=vi->codec_setup; - if(!ci)return(OV_EFAULT); + if(!ci|| + ci->blocksizes[0]<64|| + ci->blocksizes[1]<ci->blocksizes[0]){ + return(OV_EFAULT); + } /* preamble */ oggpack_write(opb,0x01,8); @@ -451,8 +456,8 @@ static int _vorbis_pack_info(oggpack_buffer *opb,vorbis_info *vi){ oggpack_write(opb,vi->bitrate_nominal,32); oggpack_write(opb,vi->bitrate_lower,32); - oggpack_write(opb,ilog2(ci->blocksizes[0]),4); - oggpack_write(opb,ilog2(ci->blocksizes[1]),4); + oggpack_write(opb,ov_ilog(ci->blocksizes[0]-1),4); + oggpack_write(opb,ov_ilog(ci->blocksizes[1]-1),4); oggpack_write(opb,1,1); return(0); @@ -550,7 +555,10 @@ int vorbis_commentheader_out(vorbis_comment *vc, oggpack_buffer opb; oggpack_writeinit(&opb); - if(_vorbis_pack_comment(&opb,vc)) return OV_EIMPL; + if(_vorbis_pack_comment(&opb,vc)){ + oggpack_writeclear(&opb); + return OV_EIMPL; + } op->packet = _ogg_malloc(oggpack_bytes(&opb)); memcpy(op->packet, opb.buffer, oggpack_bytes(&opb)); @@ -561,6 +569,7 @@ int vorbis_commentheader_out(vorbis_comment *vc, op->granulepos=0; op->packetno=1; + oggpack_writeclear(&opb); return 0; } @@ -574,7 +583,7 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v, oggpack_buffer opb; private_state *b=v->backend_state; - if(!b){ + if(!b||vi->channels<=0){ ret=OV_EFAULT; goto err_out; } diff --git a/drivers/vorbis/lsp.c b/drivers/vorbis/lsp.c index 50031a7a1c..6a619f7b0c 100644 --- a/drivers/vorbis/lsp.c +++ b/drivers/vorbis/lsp.c @@ -11,7 +11,7 @@ ******************************************************************** function: LSP (also called LSF) conversion routines - last mod: $Id: lsp.c 17538 2010-10-15 02:52:29Z tterribe $ + last mod: $Id: lsp.c 19453 2015-03-02 22:35:34Z xiphmont $ The LSP generation code is taken (with minimal modification and a few bugfixes) from "On the Computation of the LSP Frequencies" by @@ -309,7 +309,6 @@ static int comp(const void *a,const void *b){ #define EPSILON 10e-7 static int Laguerre_With_Deflation(float *a,int ord,float *r){ int i,m; - double lastdelta=0.f; double *defl=alloca(sizeof(*defl)*(ord+1)); for(i=0;i<=ord;i++)defl[i]=a[i]; @@ -346,7 +345,6 @@ static int Laguerre_With_Deflation(float *a,int ord,float *r){ if(delta<0.f)delta*=-1; if(fabs(delta/new)<10e-12)break; - lastdelta=delta; } r[m-1]=new; diff --git a/drivers/vorbis/mapping0.c b/drivers/vorbis/mapping0.c index 7d279a8575..85c7d22d83 100644 --- a/drivers/vorbis/mapping0.c +++ b/drivers/vorbis/mapping0.c @@ -11,7 +11,7 @@ ******************************************************************** function: channel mapping 0 implementation - last mod: $Id: mapping0.c 17022 2010-03-25 03:45:42Z xiphmont $ + last mod: $Id: mapping0.c 19441 2015-01-21 01:17:41Z xiphmont $ ********************************************************************/ @@ -45,16 +45,6 @@ static void mapping0_free_info(vorbis_info_mapping *i){ } } -static int ilog(unsigned int v){ - int ret=0; - if(v)--v; - while(v){ - ret++; - v>>=1; - } - return(ret); -} - static void mapping0_pack(vorbis_info *vi,vorbis_info_mapping *vm, oggpack_buffer *opb){ int i; @@ -78,8 +68,8 @@ static void mapping0_pack(vorbis_info *vi,vorbis_info_mapping *vm, oggpack_write(opb,info->coupling_steps-1,8); for(i=0;i<info->coupling_steps;i++){ - oggpack_write(opb,info->coupling_mag[i],ilog(vi->channels)); - oggpack_write(opb,info->coupling_ang[i],ilog(vi->channels)); + oggpack_write(opb,info->coupling_mag[i],ov_ilog(vi->channels-1)); + oggpack_write(opb,info->coupling_ang[i],ov_ilog(vi->channels-1)); } }else oggpack_write(opb,0,1); @@ -104,6 +94,7 @@ static vorbis_info_mapping *mapping0_unpack(vorbis_info *vi,oggpack_buffer *opb) vorbis_info_mapping0 *info=_ogg_calloc(1,sizeof(*info)); codec_setup_info *ci=vi->codec_setup; memset(info,0,sizeof(*info)); + if(vi->channels<=0)goto err_out; b=oggpack_read(opb,1); if(b<0)goto err_out; @@ -119,8 +110,11 @@ static vorbis_info_mapping *mapping0_unpack(vorbis_info *vi,oggpack_buffer *opb) info->coupling_steps=oggpack_read(opb,8)+1; if(info->coupling_steps<=0)goto err_out; for(i=0;i<info->coupling_steps;i++){ - int testM=info->coupling_mag[i]=oggpack_read(opb,ilog(vi->channels)); - int testA=info->coupling_ang[i]=oggpack_read(opb,ilog(vi->channels)); + /* vi->channels > 0 is enforced in the caller */ + int testM=info->coupling_mag[i]= + oggpack_read(opb,ov_ilog(vi->channels-1)); + int testA=info->coupling_ang[i]= + oggpack_read(opb,ov_ilog(vi->channels-1)); if(testM<0 || testA<0 || diff --git a/drivers/vorbis/misc.h b/drivers/vorbis/misc.h index 85fe3074ac..73b4519898 100644 --- a/drivers/vorbis/misc.h +++ b/drivers/vorbis/misc.h @@ -5,13 +5,13 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 * * by the Xiph.Org Foundation http://www.xiph.org/ * * * ******************************************************************** function: miscellaneous prototypes - last mod: $Id: misc.h 16227 2009-07-08 06:58:46Z xiphmont $ + last mod: $Id: misc.h 19457 2015-03-03 00:15:29Z giles $ ********************************************************************/ @@ -21,6 +21,7 @@ extern void *_vorbis_block_alloc(vorbis_block *vb,long bytes); extern void _vorbis_block_ripcord(vorbis_block *vb); +extern int ov_ilog(ogg_uint32_t v); #ifdef ANALYSIS extern int analysis_noisy; diff --git a/drivers/vorbis/modes/residue_44p51.h b/drivers/vorbis/modes/residue_44p51.h index 103e960d72..a52cc5245e 100644 --- a/drivers/vorbis/modes/residue_44p51.h +++ b/drivers/vorbis/modes/residue_44p51.h @@ -11,7 +11,7 @@ ******************************************************************** function: toplevel residue templates for 32/44.1/48kHz uncoupled - last mod: $Id$ + last mod: $Id: residue_44p51.h 19013 2013-11-12 04:04:50Z giles $ ********************************************************************/ diff --git a/drivers/vorbis/modes/setup_44p51.h b/drivers/vorbis/modes/setup_44p51.h index e46468a15b..67d9979608 100644 --- a/drivers/vorbis/modes/setup_44p51.h +++ b/drivers/vorbis/modes/setup_44p51.h @@ -11,7 +11,7 @@ ******************************************************************** function: toplevel settings for 44.1/48kHz 5.1 surround modes - last mod: $Id$ + last mod: $Id: setup_44p51.h 19013 2013-11-12 04:04:50Z giles $ ********************************************************************/ diff --git a/drivers/vorbis/os.h b/drivers/vorbis/os.h index 3df1d194e9..8bc3e5fe9c 100644 --- a/drivers/vorbis/os.h +++ b/drivers/vorbis/os.h @@ -7,13 +7,13 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 * * by the Xiph.Org Foundation http://www.xiph.org/ * * * ******************************************************************** function: #ifdef jail to whip a few platforms into the UNIX ideal. - last mod: $Id: os.h 16227 2009-07-08 06:58:46Z xiphmont $ + last mod: $Id: os.h 19457 2015-03-03 00:15:29Z giles $ ********************************************************************/ @@ -119,8 +119,9 @@ static inline int vorbis_ftoi(double f){ /* yes, double! Otherwise, /* MSVC inline assembly. 32 bit only; inline ASM isn't implemented in the - * 64 bit compiler */ -#if defined(_MSC_VER) && !defined(_WIN64) && !defined(_WIN32_WCE) && !defined(WINDOWSPHONE_ENABLED) + * 64 bit compiler and doesn't work on arm. */ +#if defined(_MSC_VER) && !defined(_WIN64) && \ + !defined(_WIN32_WCE) && !defined(_M_ARM) # define VORBIS_FPU_CONTROL typedef ogg_int16_t vorbis_fpu_control; @@ -135,9 +136,11 @@ static __inline int vorbis_ftoi(double f){ } static __inline void vorbis_fpu_setround(vorbis_fpu_control *fpu){ + (void)fpu; } static __inline void vorbis_fpu_restore(vorbis_fpu_control fpu){ + (void)fpu; } #endif /* Special MSVC 32 bit implementation */ @@ -156,9 +159,11 @@ static __inline int vorbis_ftoi(double f){ } static __inline void vorbis_fpu_setround(vorbis_fpu_control *fpu){ + (void)fpu; } static __inline void vorbis_fpu_restore(vorbis_fpu_control fpu){ + (void)fpu; } #endif /* Special MSVC x64 implementation */ diff --git a/drivers/vorbis/psy.c b/drivers/vorbis/psy.c index 29d2824372..f7a44c6d00 100644 --- a/drivers/vorbis/psy.c +++ b/drivers/vorbis/psy.c @@ -11,7 +11,7 @@ ******************************************************************** function: psychoacoustics not including preecho - last mod: $Id: psy.c 17569 2010-10-26 17:09:47Z xiphmont $ + last mod: $Id: psy.c 18077 2011-09-02 02:49:00Z giles $ ********************************************************************/ @@ -1020,7 +1020,9 @@ void _vp_couple_quantize_normalize(int blobno, int limit = g->coupling_pointlimit[p->vi->blockflag][blobno]; float prepoint=stereo_threshholds[g->coupling_prepointamp[blobno]]; float postpoint=stereo_threshholds[g->coupling_postpointamp[blobno]]; +#if 0 float de=0.1*p->m_val; /* a blend of the AoTuV M2 and M3 code here and below */ +#endif /* mdct is our raw mdct output, floor not removed. */ /* inout passes in the ifloor, passes back quantized result */ @@ -1154,27 +1156,28 @@ void _vp_couple_quantize_normalize(int blobno, reM[j] += reA[j]; qeM[j] = fabs(reM[j]); }else{ +#if 0 /* AoTuV */ /** @ M2 ** The boost problem by the combination of noise normalization and point stereo is eased. However, this is a temporary patch. by Aoyumi @ 2004/04/18 */ - /*float derate = (1.0 - de*((float)(j-limit+i) / (float)(n-limit))); */ - /* elliptical + float derate = (1.0 - de*((float)(j-limit+i) / (float)(n-limit))); + /* elliptical */ if(reM[j]+reA[j]<0){ reM[j] = - (qeM[j] = (fabs(reM[j])+fabs(reA[j]))*derate*derate); }else{ reM[j] = (qeM[j] = (fabs(reM[j])+fabs(reA[j]))*derate*derate); - }*/ - + } +#else /* elliptical */ if(reM[j]+reA[j]<0){ reM[j] = - (qeM[j] = fabs(reM[j])+fabs(reA[j])); }else{ reM[j] = (qeM[j] = fabs(reM[j])+fabs(reA[j])); } - +#endif } reA[j]=qeA[j]=0.f; diff --git a/drivers/vorbis/res0.c b/drivers/vorbis/res0.c index fa0ad97561..ec11488c2f 100644 --- a/drivers/vorbis/res0.c +++ b/drivers/vorbis/res0.c @@ -11,7 +11,7 @@ ******************************************************************** function: residue backend 0, 1 and 2 implementation - last mod: $Id: res0.c 17556 2010-10-21 18:25:19Z tterribe $ + last mod: $Id: res0.c 19441 2015-01-21 01:17:41Z xiphmont $ ********************************************************************/ @@ -152,15 +152,6 @@ void res0_free_look(vorbis_look_residue *i){ } } -static int ilog(unsigned int v){ - int ret=0; - while(v){ - ret++; - v>>=1; - } - return(ret); -} - static int icount(unsigned int v){ int ret=0; while(v){ @@ -186,7 +177,7 @@ void res0_pack(vorbis_info_residue *vr,oggpack_buffer *opb){ bitmask of one indicates this partition class has bits to write this pass */ for(j=0;j<info->partitions;j++){ - if(ilog(info->secondstages[j])>3){ + if(ov_ilog(info->secondstages[j])>3){ /* yes, this is a minor hack due to not thinking ahead */ oggpack_write(opb,info->secondstages[j],3); oggpack_write(opb,1,1); @@ -284,7 +275,7 @@ vorbis_look_residue *res0_look(vorbis_dsp_state *vd, look->partbooks=_ogg_calloc(look->parts,sizeof(*look->partbooks)); for(j=0;j<look->parts;j++){ - int stages=ilog(info->secondstages[j]); + int stages=ov_ilog(info->secondstages[j]); if(stages){ if(stages>maxstage)maxstage=stages; look->partbooks[j]=_ogg_calloc(stages,sizeof(*look->partbooks[j])); @@ -390,8 +381,13 @@ static int local_book_besterror(codebook *book,int *a){ return(index); } +#ifdef TRAIN_RES static int _encodepart(oggpack_buffer *opb,int *vec, int n, codebook *book,long *acc){ +#else +static int _encodepart(oggpack_buffer *opb,int *vec, int n, + codebook *book){ +#endif int i,bits=0; int dim=book->dim; int step=n/dim; @@ -534,12 +530,18 @@ static long **_2class(vorbis_block *vb,vorbis_look_residue *vl,int **in, } static int _01forward(oggpack_buffer *opb, - vorbis_block *vb,vorbis_look_residue *vl, + vorbis_look_residue *vl, int **in,int ch, long **partword, +#ifdef TRAIN_RES int (*encode)(oggpack_buffer *,int *,int, codebook *,long *), - int submap){ + int submap +#else + int (*encode)(oggpack_buffer *,int *,int, + codebook *) +#endif +){ long i,j,k,s; vorbis_look_residue0 *look=(vorbis_look_residue0 *)vl; vorbis_info_residue0 *info=look->info; @@ -609,9 +611,8 @@ static int _01forward(oggpack_buffer *opb, codebook *statebook=look->partbooks[partword[j][i]][s]; if(statebook){ int ret; - long *accumulator=NULL; - #ifdef TRAIN_RES + long *accumulator=NULL; accumulator=look->training_data[s][partword[j][i]]; { int l; @@ -623,10 +624,12 @@ static int _01forward(oggpack_buffer *opb, look->training_max[s][partword[j][i]]=samples[l]; } } -#endif - ret=encode(opb,in[j]+offset,samples_per_partition, statebook,accumulator); +#else + ret=encode(opb,in[j]+offset,samples_per_partition, + statebook); +#endif look->postbits+=ret; resbits[partword[j][i]]+=ret; @@ -637,19 +640,6 @@ static int _01forward(oggpack_buffer *opb, } } - /*{ - long total=0; - long totalbits=0; - fprintf(stderr,"%d :: ",vb->mode); - for(k=0;k<possible_partitions;k++){ - fprintf(stderr,"%ld/%1.2g, ",resvals[k],(float)resbits[k]/resvals[k]); - total+=resvals[k]; - totalbits+=resbits[k]; - } - - fprintf(stderr,":: %ld:%1.2g\n",total,(double)totalbits/total); - }*/ - return(0); } @@ -729,12 +719,18 @@ int res0_inverse(vorbis_block *vb,vorbis_look_residue *vl, int res1_forward(oggpack_buffer *opb,vorbis_block *vb,vorbis_look_residue *vl, int **in,int *nonzero,int ch, long **partword, int submap){ int i,used=0; + (void)vb; for(i=0;i<ch;i++) if(nonzero[i]) in[used++]=in[i]; if(used){ - return _01forward(opb,vb,vl,in,used,partword,_encodepart,submap); +#ifdef TRAIN_RES + return _01forward(opb,vl,in,used,partword,_encodepart,submap); +#else + (void)submap; + return _01forward(opb,vl,in,used,partword,_encodepart); +#endif }else{ return(0); } @@ -795,7 +791,12 @@ int res2_forward(oggpack_buffer *opb, } if(used){ - return _01forward(opb,vb,vl,&work,1,partword,_encodepart,submap); +#ifdef TRAIN_RES + return _01forward(opb,vl,&work,1,partword,_encodepart,submap); +#else + (void)submap; + return _01forward(opb,vl,&work,1,partword,_encodepart); +#endif }else{ return(0); } diff --git a/drivers/vorbis/sharedbook.c b/drivers/vorbis/sharedbook.c index 545e302f82..6bfdf7311e 100644 --- a/drivers/vorbis/sharedbook.c +++ b/drivers/vorbis/sharedbook.c @@ -5,13 +5,13 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 * * by the Xiph.Org Foundation http://www.xiph.org/ * * * ******************************************************************** function: basic shared codebook operations - last mod: $Id: sharedbook.c 17030 2010-03-25 06:52:55Z xiphmont $ + last mod: $Id: sharedbook.c 19457 2015-03-03 00:15:29Z giles $ ********************************************************************/ @@ -26,13 +26,11 @@ #include "scales.h" /**** pack/unpack helpers ******************************************/ -int _ilog(unsigned int v){ - int ret=0; - while(v){ - ret++; - v>>=1; - } - return(ret); + +int ov_ilog(ogg_uint32_t v){ + int ret; + for(ret=0;v;ret++)v>>=1; + return ret; } /* 32 bit float (not IEEE; nonnormalized mantissa + @@ -70,7 +68,7 @@ float _float32_unpack(long val){ /* given a list of word lengths, generate a list of codewords. Works for length ordered or unordered, always assigns the lowest valued codewords first. Extended to handle unused entries (length 0) */ -ogg_uint32_t *_make_words(long *l,long n,long sparsecount){ +ogg_uint32_t *_make_words(char *l,long n,long sparsecount){ long i,j,count=0; ogg_uint32_t marker[33]; ogg_uint32_t *r=_ogg_malloc((sparsecount?sparsecount:n)*sizeof(*r)); @@ -125,16 +123,15 @@ ogg_uint32_t *_make_words(long *l,long n,long sparsecount){ if(sparsecount==0)count++; } - /* sanity check the huffman tree; an underpopulated tree must be - rejected. The only exception is the one-node pseudo-nil tree, - which appears to be underpopulated because the tree doesn't - really exist; there's only one possible 'codeword' or zero bits, - but the above tree-gen code doesn't mark that. */ - if(sparsecount != 1){ + /* any underpopulated tree must be rejected. */ + /* Single-entry codebooks are a retconned extension to the spec. + They have a single codeword '0' of length 1 that results in an + underpopulated tree. Shield that case from the underformed tree check. */ + if(!(count==1 && marker[2]==2)){ for(i=1;i<33;i++) if(marker[i] & (0xffffffffUL>>(32-i))){ - _ogg_free(r); - return(NULL); + _ogg_free(r); + return(NULL); } } @@ -313,9 +310,10 @@ static int sort32a(const void *a,const void *b){ int vorbis_book_init_decode(codebook *c,const static_codebook *s){ int i,j,n=0,tabn; int *sortindex; + memset(c,0,sizeof(*c)); - /* count actually used entries */ + /* count actually used entries and find max length */ for(i=0;i<s->entries;i++) if(s->lengthlist[i]>0) n++; @@ -325,7 +323,6 @@ int vorbis_book_init_decode(codebook *c,const static_codebook *s){ c->dim=s->dim; if(n>0){ - /* two different remappings go on here. First, we collapse the likely sparse codebook down only to @@ -361,7 +358,6 @@ int vorbis_book_init_decode(codebook *c,const static_codebook *s){ c->codelist[sortindex[i]]=codes[i]; _ogg_free(codes); - c->valuelist=_book_unquantize(s,n,sortindex); c->dec_index=_ogg_malloc(n*sizeof(*c->dec_index)); @@ -370,51 +366,62 @@ int vorbis_book_init_decode(codebook *c,const static_codebook *s){ c->dec_index[sortindex[n++]]=i; c->dec_codelengths=_ogg_malloc(n*sizeof(*c->dec_codelengths)); + c->dec_maxlength=0; for(n=0,i=0;i<s->entries;i++) - if(s->lengthlist[i]>0) + if(s->lengthlist[i]>0){ c->dec_codelengths[sortindex[n++]]=s->lengthlist[i]; + if(s->lengthlist[i]>c->dec_maxlength) + c->dec_maxlength=s->lengthlist[i]; + } - c->dec_firsttablen=_ilog(c->used_entries)-4; /* this is magic */ - if(c->dec_firsttablen<5)c->dec_firsttablen=5; - if(c->dec_firsttablen>8)c->dec_firsttablen=8; - - tabn=1<<c->dec_firsttablen; - c->dec_firsttable=_ogg_calloc(tabn,sizeof(*c->dec_firsttable)); - c->dec_maxlength=0; + if(n==1 && c->dec_maxlength==1){ + /* special case the 'single entry codebook' with a single bit + fastpath table (that always returns entry 0 )in order to use + unmodified decode paths. */ + c->dec_firsttablen=1; + c->dec_firsttable=_ogg_calloc(2,sizeof(*c->dec_firsttable)); + c->dec_firsttable[0]=c->dec_firsttable[1]=1; - for(i=0;i<n;i++){ - if(c->dec_maxlength<c->dec_codelengths[i]) - c->dec_maxlength=c->dec_codelengths[i]; - if(c->dec_codelengths[i]<=c->dec_firsttablen){ - ogg_uint32_t orig=bitreverse(c->codelist[i]); - for(j=0;j<(1<<(c->dec_firsttablen-c->dec_codelengths[i]));j++) - c->dec_firsttable[orig|(j<<c->dec_codelengths[i])]=i+1; + }else{ + c->dec_firsttablen=ov_ilog(c->used_entries)-4; /* this is magic */ + if(c->dec_firsttablen<5)c->dec_firsttablen=5; + if(c->dec_firsttablen>8)c->dec_firsttablen=8; + + tabn=1<<c->dec_firsttablen; + c->dec_firsttable=_ogg_calloc(tabn,sizeof(*c->dec_firsttable)); + + for(i=0;i<n;i++){ + if(c->dec_codelengths[i]<=c->dec_firsttablen){ + ogg_uint32_t orig=bitreverse(c->codelist[i]); + for(j=0;j<(1<<(c->dec_firsttablen-c->dec_codelengths[i]));j++) + c->dec_firsttable[orig|(j<<c->dec_codelengths[i])]=i+1; + } } - } - /* now fill in 'unused' entries in the firsttable with hi/lo search - hints for the non-direct-hits */ - { - ogg_uint32_t mask=0xfffffffeUL<<(31-c->dec_firsttablen); - long lo=0,hi=0; - - for(i=0;i<tabn;i++){ - ogg_uint32_t word=i<<(32-c->dec_firsttablen); - if(c->dec_firsttable[bitreverse(word)]==0){ - while((lo+1)<n && c->codelist[lo+1]<=word)lo++; - while( hi<n && word>=(c->codelist[hi]&mask))hi++; - - /* we only actually have 15 bits per hint to play with here. - In order to overflow gracefully (nothing breaks, efficiency - just drops), encode as the difference from the extremes. */ - { - unsigned long loval=lo; - unsigned long hival=n-hi; - - if(loval>0x7fff)loval=0x7fff; - if(hival>0x7fff)hival=0x7fff; - c->dec_firsttable[bitreverse(word)]= - 0x80000000UL | (loval<<15) | hival; + /* now fill in 'unused' entries in the firsttable with hi/lo search + hints for the non-direct-hits */ + { + ogg_uint32_t mask=0xfffffffeUL<<(31-c->dec_firsttablen); + long lo=0,hi=0; + + for(i=0;i<tabn;i++){ + ogg_uint32_t word=i<<(32-c->dec_firsttablen); + if(c->dec_firsttable[bitreverse(word)]==0){ + while((lo+1)<n && c->codelist[lo+1]<=word)lo++; + while( hi<n && word>=(c->codelist[hi]&mask))hi++; + + /* we only actually have 15 bits per hint to play with here. + In order to overflow gracefully (nothing breaks, efficiency + just drops), encode as the difference from the extremes. */ + { + unsigned long loval=lo; + unsigned long hival=n-hi; + + if(loval>0x7fff)loval=0x7fff; + if(hival>0x7fff)hival=0x7fff; + c->dec_firsttable[bitreverse(word)]= + 0x80000000UL | (loval<<15) | hival; + } } } } diff --git a/drivers/vorbis/synthesis.c b/drivers/vorbis/synthesis.c index 1af211d001..932d271a63 100644 --- a/drivers/vorbis/synthesis.c +++ b/drivers/vorbis/synthesis.c @@ -5,13 +5,13 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 * * by the Xiph.Org Foundation http://www.xiph.org/ * * * ******************************************************************** function: single-block PCM synthesis - last mod: $Id: synthesis.c 17474 2010-09-30 03:41:41Z gmaxwell $ + last mod: $Id: synthesis.c 19441 2015-01-21 01:17:41Z xiphmont $ ********************************************************************/ @@ -145,6 +145,11 @@ long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op){ oggpack_buffer opb; int mode; + if(ci==NULL || ci->modes<=0){ + /* codec setup not properly intialized */ + return(OV_EFAULT); + } + oggpack_readinit(&opb,op->packet,op->bytes); /* Check the packet type */ @@ -153,18 +158,9 @@ long vorbis_packet_blocksize(vorbis_info *vi,ogg_packet *op){ return(OV_ENOTAUDIO); } - { - int modebits=0; - int v=ci->modes; - while(v>1){ - modebits++; - v>>=1; - } - - /* read our mode and pre/post windowsize */ - mode=oggpack_read(&opb,modebits); - } - if(mode==-1)return(OV_EBADPACKET); + /* read our mode and pre/post windowsize */ + mode=oggpack_read(&opb,ov_ilog(ci->modes-1)); + if(mode==-1 || !ci->mode_param[mode])return(OV_EBADPACKET); return(ci->blocksizes[ci->mode_param[mode]->blockflag]); } diff --git a/drivers/vorbis/tone.c b/drivers/vorbis/tone.c index 5f1f43cf7b..73afc67d4c 100644 --- a/drivers/vorbis/tone.c +++ b/drivers/vorbis/tone.c @@ -3,10 +3,6 @@ #include <math.h> #include <string.h> -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - void usage(){ fprintf(stderr,"tone <frequency_Hz>,[<amplitude>] [<frequency_Hz>,[<amplitude>]...]\n"); exit(1); diff --git a/drivers/vorbis/vorbisenc.c b/drivers/vorbis/vorbisenc.c index f0f7c08558..b5d621e900 100644 --- a/drivers/vorbis/vorbisenc.c +++ b/drivers/vorbis/vorbisenc.c @@ -5,13 +5,13 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 * * by the Xiph.Org Foundation http://www.xiph.org/ * * * ******************************************************************** function: simple programmatic interface for encoder mode setup - last mod: $Id: vorbisenc.c 17028 2010-03-25 05:22:15Z xiphmont $ + last mod: $Id: vorbisenc.c 19457 2015-03-03 00:15:29Z giles $ ********************************************************************/ @@ -903,8 +903,12 @@ int vorbis_encode_setup_vbr(vorbis_info *vi, long channels, long rate, float quality){ - codec_setup_info *ci=vi->codec_setup; - highlevel_encode_setup *hi=&ci->hi; + codec_setup_info *ci; + highlevel_encode_setup *hi; + if(rate<=0) return OV_EINVAL; + + ci=vi->codec_setup; + hi=&ci->hi; quality+=.0000001; if(quality>=1.)quality=.9999; @@ -948,9 +952,14 @@ int vorbis_encode_setup_managed(vorbis_info *vi, long nominal_bitrate, long min_bitrate){ - codec_setup_info *ci=vi->codec_setup; - highlevel_encode_setup *hi=&ci->hi; - double tnominal=nominal_bitrate; + codec_setup_info *ci; + highlevel_encode_setup *hi; + double tnominal; + if(rate<=0) return OV_EINVAL; + + ci=vi->codec_setup; + hi=&ci->hi; + tnominal=nominal_bitrate; if(nominal_bitrate<=0.){ if(max_bitrate>0.){ diff --git a/drivers/vorbis/vorbisfile.c b/drivers/vorbis/vorbisfile.c index 3afbd9d002..fc0c86ff11 100644 --- a/drivers/vorbis/vorbisfile.c +++ b/drivers/vorbis/vorbisfile.c @@ -5,13 +5,13 @@ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * * * - * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 * + * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2015 * * by the Xiph.Org Foundation http://www.xiph.org/ * * * ******************************************************************** function: stdio-based convenience library for opening/seeking/decoding - last mod: $Id: vorbisfile.c 17573 2010-10-27 14:53:59Z xiphmont $ + last mod: $Id: vorbisfile.c 19457 2015-03-03 00:15:29Z giles $ ********************************************************************/ @@ -80,11 +80,14 @@ static long _get_data(OggVorbis_File *vf){ /* save a tiny smidge of verbosity to make the code more readable */ static int _seek_helper(OggVorbis_File *vf,ogg_int64_t offset){ if(vf->datasource){ - if(!(vf->callbacks.seek_func)|| - (vf->callbacks.seek_func)(vf->datasource, offset, SEEK_SET) == -1) - return OV_EREAD; - vf->offset=offset; - ogg_sync_reset(&vf->oy); + /* only seek if the file position isn't already there */ + if(vf->offset != offset){ + if(!(vf->callbacks.seek_func)|| + (vf->callbacks.seek_func)(vf->datasource, offset, SEEK_SET) == -1) + return OV_EREAD; + vf->offset=offset; + ogg_sync_reset(&vf->oy); + } }else{ /* shouldn't happen unless someone writes a broken callback */ return OV_EFAULT; @@ -138,14 +141,12 @@ static ogg_int64_t _get_next_page(OggVorbis_File *vf,ogg_page *og, } } -/* find the latest page beginning before the current stream cursor - position. Much dirtier than the above as Ogg doesn't have any - backward search linkage. no 'readp' as it will certainly have to - read. */ +/* find the latest page beginning before the passed in position. Much + dirtier than the above as Ogg doesn't have any backward search + linkage. no 'readp' as it will certainly have to read. */ /* returns offset or OV_EREAD, OV_FAULT */ -static ogg_int64_t _get_prev_page(OggVorbis_File *vf,ogg_page *og){ - ogg_int64_t begin=vf->offset; - ogg_int64_t end=begin; +static ogg_int64_t _get_prev_page(OggVorbis_File *vf,ogg_int64_t begin,ogg_page *og){ + ogg_int64_t end = begin; ogg_int64_t ret; ogg_int64_t offset=-1; @@ -220,11 +221,10 @@ static int _lookup_page_serialno(ogg_page *og, long *serialno_list, int n){ info of last page of the matching serial number instead of the very last page. If no page of the specified serialno is seen, it will return the info of last page and alter *serialno. */ -static ogg_int64_t _get_prev_page_serial(OggVorbis_File *vf, +static ogg_int64_t _get_prev_page_serial(OggVorbis_File *vf, ogg_int64_t begin, long *serial_list, int serial_n, int *serialno, ogg_int64_t *granpos){ ogg_page og; - ogg_int64_t begin=vf->offset; ogg_int64_t end=begin; ogg_int64_t ret; @@ -438,9 +438,11 @@ static ogg_int64_t _initial_pcmoffset(OggVorbis_File *vf, vorbis_info *vi){ while((result=ogg_stream_packetout(&vf->os,&op))){ if(result>0){ /* ignore holes */ long thisblock=vorbis_packet_blocksize(vi,&op); - if(lastblock!=-1) - accumulated+=(lastblock+thisblock)>>2; - lastblock=thisblock; + if(thisblock>=0){ + if(lastblock!=-1) + accumulated+=(lastblock+thisblock)>>2; + lastblock=thisblock; + } } } @@ -494,10 +496,10 @@ static int _bisect_forward_serialno(OggVorbis_File *vf, down to (or just started with) a single link. Now we need to find the last vorbis page belonging to the first vorbis stream for this link. */ - + searched = end; while(endserial != serialno){ endserial = serialno; - vf->offset=_get_prev_page_serial(vf,currentno_list,currentnos,&endserial,&endgran); + searched=_get_prev_page_serial(vf,searched,currentno_list,currentnos,&endserial,&endgran); } vf->links=m+1; @@ -518,10 +520,15 @@ static int _bisect_forward_serialno(OggVorbis_File *vf, }else{ + /* last page is not in the starting stream's serial number list, + so we have multiple links. Find where the stream that begins + our bisection ends. */ + long *next_serialno_list=NULL; int next_serialnos=0; vorbis_info vi; vorbis_comment vc; + int testserial = serialno+1; /* the below guards against garbage seperating the last and first pages of two links. */ @@ -534,10 +541,8 @@ static int _bisect_forward_serialno(OggVorbis_File *vf, bisect=(searched+endsearched)/2; } - if(bisect != vf->offset){ - ret=_seek_helper(vf,bisect); - if(ret)return(ret); - } + ret=_seek_helper(vf,bisect); + if(ret)return(ret); last=_get_next_page(vf,&og,-1); if(last==OV_EREAD)return(OV_EREAD); @@ -550,28 +555,22 @@ static int _bisect_forward_serialno(OggVorbis_File *vf, } /* Bisection point found */ - /* for the time being, fetch end PCM offset the simple way */ - { - int testserial = serialno+1; - vf->offset = next; - while(testserial != serialno){ - testserial = serialno; - vf->offset=_get_prev_page_serial(vf,currentno_list,currentnos,&testserial,&searchgran); - } + searched = next; + while(testserial != serialno){ + testserial = serialno; + searched = _get_prev_page_serial(vf,searched,currentno_list,currentnos,&testserial,&searchgran); } - if(vf->offset!=next){ - ret=_seek_helper(vf,next); - if(ret)return(ret); - } + ret=_seek_helper(vf,next); + if(ret)return(ret); ret=_fetch_headers(vf,&vi,&vc,&next_serialno_list,&next_serialnos,NULL); if(ret)return(ret); serialno = vf->os.serialno; dataoffset = vf->offset; - /* this will consume a page, however the next bistection always + /* this will consume a page, however the next bisection always starts with a raw seek */ pcmoffset = _initial_pcmoffset(vf,&vi); @@ -638,11 +637,11 @@ static int _open_seekable2(OggVorbis_File *vf){ /* Get the offset of the last page of the physical bitstream, or, if we're lucky the last vorbis page of this link as most OggVorbis files will contain a single logical bitstream */ - end=_get_prev_page_serial(vf,vf->serialnos+2,vf->serialnos[1],&endserial,&endgran); + end=_get_prev_page_serial(vf,vf->end,vf->serialnos+2,vf->serialnos[1],&endserial,&endgran); if(end<0)return(end); /* now determine bitstream structure recursively */ - if(_bisect_forward_serialno(vf,0,dataoffset,vf->offset,endgran,endserial, + if(_bisect_forward_serialno(vf,0,dataoffset,end,endgran,endserial, vf->serialnos+2,vf->serialnos[1],0)<0)return(OV_EREAD); vf->offsets[0]=0; @@ -1055,7 +1054,11 @@ int ov_halfrate_p(OggVorbis_File *vf){ /* Only partially open the vorbis file; test for Vorbisness, and load the headers for the first chain. Do not seek (although test for seekability). Use ov_test_open to finish opening the file, else - ov_clear to close/free it. Same return codes as open. */ + ov_clear to close/free it. Same return codes as open. + + Note that vorbisfile does _not_ take ownership of the file if the + call fails; the calling applicaiton is responsible for closing the file + if this call returns an error. */ int ov_test_callbacks(void *f,OggVorbis_File *vf, const char *initial,long ibytes,ov_callbacks callbacks) @@ -1417,22 +1420,41 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ if(pos>=total)break; } - /* search within the logical bitstream for the page with the highest - pcm_pos preceding (or equal to) pos. There is a danger here; - missing pages or incorrect frame number information in the - bitstream could make our task impossible. Account for that (it - would be an error condition) */ + /* Search within the logical bitstream for the page with the highest + pcm_pos preceding pos. If we're looking for a position on the + first page, bisection will halt without finding our position as + it's before the first explicit granulepos fencepost. That case is + handled separately below. + + There is a danger here; missing pages or incorrect frame number + information in the bitstream could make our task impossible. + Account for that (it would be an error condition) */ + + /* new search algorithm originally by HB (Nicholas Vinen) */ - /* new search algorithm by HB (Nicholas Vinen) */ { ogg_int64_t end=vf->offsets[link+1]; - ogg_int64_t begin=vf->offsets[link]; + ogg_int64_t begin=vf->dataoffsets[link]; ogg_int64_t begintime = vf->pcmlengths[link*2]; ogg_int64_t endtime = vf->pcmlengths[link*2+1]+begintime; ogg_int64_t target=pos-total+begintime; - ogg_int64_t best=begin; + ogg_int64_t best=-1; + int got_page=0; ogg_page og; + + /* if we have only one page, there will be no bisection. Grab the page here */ + if(begin==end){ + result=_seek_helper(vf,begin); + if(result) goto seek_error; + + result=_get_next_page(vf,&og,1); + if(result<0) goto seek_error; + + got_page=1; + } + + /* bisection loop */ while(begin<end){ ogg_int64_t bisect; @@ -1447,51 +1469,80 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ bisect=begin; } - if(bisect!=vf->offset){ - result=_seek_helper(vf,bisect); - if(result) goto seek_error; - } + result=_seek_helper(vf,bisect); + if(result) goto seek_error; + /* read loop within the bisection loop */ while(begin<end){ result=_get_next_page(vf,&og,end-vf->offset); if(result==OV_EREAD) goto seek_error; if(result<0){ + /* there is no next page! */ if(bisect<=begin+1) - end=begin; /* found it */ + /* No bisection left to perform. We've either found the + best candidate already or failed. Exit loop. */ + end=begin; else{ + /* We tried to load a fraction of the last page; back up a + bit and try to get the whole last page */ if(bisect==0) goto seek_error; bisect-=CHUNKSIZE; + + /* don't repeat/loop on a read we've already performed */ if(bisect<=begin)bisect=begin+1; + + /* seek and cntinue bisection */ result=_seek_helper(vf,bisect); if(result) goto seek_error; } }else{ ogg_int64_t granulepos; + got_page=1; + /* got a page. analyze it */ + /* only consider pages from primary vorbis stream */ if(ogg_page_serialno(&og)!=vf->serialnos[link]) continue; + /* only consider pages with the granulepos set */ granulepos=ogg_page_granulepos(&og); if(granulepos==-1)continue; if(granulepos<target){ + /* this page is a successful candidate! Set state */ + best=result; /* raw offset of packet with granulepos */ begin=vf->offset; /* raw offset of next page */ begintime=granulepos; + /* if we're before our target but within a short distance, + don't bisect; read forward */ if(target-begintime>44100)break; - bisect=begin; /* *not* begin + 1 */ + + bisect=begin; /* *not* begin + 1 as above */ }else{ - if(bisect<=begin+1) - end=begin; /* found it */ - else{ - if(end==vf->offset){ /* we're pretty close - we'd be stuck in */ + + /* This is one of our pages, but the granpos is + post-target; it is not a bisection return + candidate. (The only way we'd use it is if it's the + first page in the stream; we handle that case later + outside the bisection) */ + if(bisect<=begin+1){ + /* No bisection left to perform. We've either found the + best candidate already or failed. Exit loop. */ + end=begin; + }else{ + if(end==vf->offset){ + /* bisection read to the end; use the known page + boundary (result) to update bisection, back up a + little bit, and try again */ end=result; - bisect-=CHUNKSIZE; /* an endless loop otherwise. */ + bisect-=CHUNKSIZE; if(bisect<=begin)bisect=begin+1; result=_seek_helper(vf,bisect); if(result) goto seek_error; }else{ + /* Normal bisection */ end=bisect; endtime=granulepos; break; @@ -1502,9 +1553,46 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ } } - /* found our page. seek to it, update pcm offset. Easier case than - raw_seek, don't keep packets preceding granulepos. */ - { + /* Out of bisection: did it 'fail?' */ + if(best == -1){ + + /* Check the 'looking for data in first page' special case; + bisection would 'fail' because our search target was before the + first PCM granule position fencepost. */ + + if(got_page && + begin == vf->dataoffsets[link] && + ogg_page_serialno(&og)==vf->serialnos[link]){ + + /* Yes, this is the beginning-of-stream case. We already have + our page, right at the beginning of PCM data. Set state + and return. */ + + vf->pcm_offset=total; + + if(link!=vf->current_link){ + /* Different link; dump entire decode machine */ + _decode_clear(vf); + + vf->current_link=link; + vf->current_serialno=vf->serialnos[link]; + vf->ready_state=STREAMSET; + + }else{ + vorbis_synthesis_restart(&vf->vd); + } + + ogg_stream_reset_serialno(&vf->os,vf->current_serialno); + ogg_stream_pagein(&vf->os,&og); + + }else + goto seek_error; + + }else{ + + /* Bisection found our page. seek to it, update pcm offset. Easier case than + raw_seek, don't keep packets preceding granulepos. */ + ogg_page og; ogg_packet op; @@ -1534,23 +1622,23 @@ int ov_pcm_seek_page(OggVorbis_File *vf,ogg_int64_t pos){ while(1){ result=ogg_stream_packetpeek(&vf->os,&op); if(result==0){ - /* !!! the packet finishing this page originated on a - preceding page. Keep fetching previous pages until we - get one with a granulepos or without the 'continued' flag - set. Then just use raw_seek for simplicity. */ - - result=_seek_helper(vf,best); - if(result<0) goto seek_error; - - while(1){ - result=_get_prev_page(vf,&og); + /* No packet returned; we exited the bisection with 'best' + pointing to a page with a granule position, so the packet + finishing this page ('best') originated on a preceding + page. Keep fetching previous pages until we get one with + a granulepos or without the 'continued' flag set. Then + just use raw_seek for simplicity. */ + /* Do not rewind past the beginning of link data; if we do, + it's either a bug or a broken stream */ + result=best; + while(result>vf->dataoffsets[link]){ + result=_get_prev_page(vf,result,&og); if(result<0) goto seek_error; if(ogg_page_serialno(&og)==vf->current_serialno && (ogg_page_granulepos(&og)>-1 || !ogg_page_continued(&og))){ return ov_raw_seek(vf,result); } - vf->offset=result; } } if(result<0){ @@ -2054,14 +2142,14 @@ long ov_read_float(OggVorbis_File *vf,float ***pcm_channels,int length, } } -extern float *vorbis_window(vorbis_dsp_state *v,int W); +extern const float *vorbis_window(vorbis_dsp_state *v,int W); static void _ov_splice(float **pcm,float **lappcm, int n1, int n2, int ch1, int ch2, - float *w1, float *w2){ + const float *w1, const float *w2){ int i,j; - float *w=w1; + const float *w=w1; int n=n1; if(n1>n2){ @@ -2169,7 +2257,7 @@ int ov_crosslap(OggVorbis_File *vf1, OggVorbis_File *vf2){ vorbis_info *vi1,*vi2; float **lappcm; float **pcm; - float *w1,*w2; + const float *w1,*w2; int n1,n2,i,ret,hs1,hs2; if(vf1==vf2)return(0); /* degenerate case */ @@ -2223,7 +2311,7 @@ static int _ov_64_seek_lap(OggVorbis_File *vf,ogg_int64_t pos, vorbis_info *vi; float **lappcm; float **pcm; - float *w1,*w2; + const float *w1,*w2; int n1,n2,ch1,ch2,hs; int i,ret; @@ -2284,7 +2372,7 @@ static int _ov_d_seek_lap(OggVorbis_File *vf,double pos, vorbis_info *vi; float **lappcm; float **pcm; - float *w1,*w2; + const float *w1,*w2; int n1,n2,ch1,ch2,hs; int i,ret; diff --git a/drivers/vorbis/window.c b/drivers/vorbis/window.c index efebbfa8a0..0305b79297 100644 --- a/drivers/vorbis/window.c +++ b/drivers/vorbis/window.c @@ -11,7 +11,7 @@ ******************************************************************** function: window functions - last mod: $Id: window.c 16227 2009-07-08 06:58:46Z xiphmont $ + last mod: $Id: window.c 19028 2013-12-02 23:23:39Z tterribe $ ********************************************************************/ @@ -19,6 +19,7 @@ #include <math.h> #include "os.h" #include "misc.h" +#include "window.h" static const float vwin64[32] = { 0.0009460463F, 0.0085006468F, 0.0235352254F, 0.0458950567F, diff --git a/drivers/vorbis/window.h b/drivers/vorbis/window.h index 192bd9cfe7..51f97599f5 100644 --- a/drivers/vorbis/window.h +++ b/drivers/vorbis/window.h @@ -11,14 +11,14 @@ ******************************************************************** function: window functions - last mod: $Id: window.h 13293 2007-07-24 00:09:47Z xiphmont $ + last mod: $Id: window.h 19028 2013-12-02 23:23:39Z tterribe $ ********************************************************************/ #ifndef _V_WINDOW_ #define _V_WINDOW_ -extern float *_vorbis_window_get(int n); +extern const float *_vorbis_window_get(int n); extern void _vorbis_apply_window(float *d,int *winno,long *blocksizes, int lW,int W,int nW); diff --git a/drivers/webp/image_loader_webp.cpp b/drivers/webp/image_loader_webp.cpp index 5fb14eaf7a..68bb857293 100644 --- a/drivers/webp/image_loader_webp.cpp +++ b/drivers/webp/image_loader_webp.cpp @@ -1,14 +1,31 @@ -/*************************************************/ -/* image_loader_webp.cpp */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* image_loader_webp.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "image_loader_webp.h" #include "print_string.h" diff --git a/drivers/webp/image_loader_webp.h b/drivers/webp/image_loader_webp.h index ea99a60676..24f79708db 100644 --- a/drivers/webp/image_loader_webp.h +++ b/drivers/webp/image_loader_webp.h @@ -1,14 +1,31 @@ -/*************************************************/ -/* image_loader_webp.h */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* image_loader_webp.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef IMAGE_LOADER_WEBP_H #define IMAGE_LOADER_WEBP_H diff --git a/drivers/webpold/image_loader_webp.cpp b/drivers/webpold/image_loader_webp.cpp index 5fb14eaf7a..68bb857293 100644 --- a/drivers/webpold/image_loader_webp.cpp +++ b/drivers/webpold/image_loader_webp.cpp @@ -1,14 +1,31 @@ -/*************************************************/ -/* image_loader_webp.cpp */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* image_loader_webp.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "image_loader_webp.h" #include "print_string.h" diff --git a/drivers/webpold/image_loader_webp.h b/drivers/webpold/image_loader_webp.h index ea99a60676..24f79708db 100644 --- a/drivers/webpold/image_loader_webp.h +++ b/drivers/webpold/image_loader_webp.h @@ -1,14 +1,31 @@ -/*************************************************/ -/* image_loader_webp.h */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* image_loader_webp.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef IMAGE_LOADER_WEBP_H #define IMAGE_LOADER_WEBP_H diff --git a/drivers/windows/dir_access_windows.cpp b/drivers/windows/dir_access_windows.cpp index 913ba1eb2b..fa18f7c1f5 100644 --- a/drivers/windows/dir_access_windows.cpp +++ b/drivers/windows/dir_access_windows.cpp @@ -191,23 +191,21 @@ Error DirAccessWindows::make_dir(String p_dir) { #else - p_dir=fix_path(p_dir); - - //p_dir.replace("/","\\"); + if (p_dir.is_rel_path()) + p_dir=get_current_dir().plus_file(p_dir); + else + p_dir=fix_path(p_dir); + p_dir = p_dir.replace("/","\\"); bool success; int err; - wchar_t real_current_dir_name[2048]; - GetCurrentDirectoryW(2048,real_current_dir_name); - - SetCurrentDirectoryW(current_dir.c_str()); + p_dir="\\\\?\\"+p_dir; //done according to +// https://msdn.microsoft.com/en-us/library/windows/desktop/aa363855(v=vs.85).aspx success=CreateDirectoryW(p_dir.c_str(), NULL); err = GetLastError(); - SetCurrentDirectoryW(real_current_dir_name); - if (success) { return OK; }; @@ -315,6 +313,7 @@ Error DirAccessWindows::remove(String p_path) { else p_path=fix_path(p_path); + printf("erasing %s\n",p_path.utf8().get_data()); //WIN32_FILE_ATTRIBUTE_DATA fileInfo; //DWORD fileAttr = GetFileAttributesExW(p_path.c_str(), GetFileExInfoStandard, &fileInfo); @@ -360,7 +359,8 @@ FileType DirAccessWindows::get_file_type(const String& p_file) const { size_t DirAccessWindows::get_space_left() { uint64_t bytes = 0; - GetDiskFreeSpaceEx(NULL,(PULARGE_INTEGER)&bytes,NULL,NULL); + if (!GetDiskFreeSpaceEx(NULL,(PULARGE_INTEGER)&bytes,NULL,NULL)) + return 0; //this is either 0 or a value in bytes. return (size_t)bytes; diff --git a/main/input_default.cpp b/main/input_default.cpp index a6f14ae1f5..4fcb450bce 100644 --- a/main/input_default.cpp +++ b/main/input_default.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* input_default.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "input_default.h" #include "servers/visual_server.h" #include "os/os.h" @@ -327,7 +355,7 @@ void InputDefault::start_joy_vibration(int p_device, float p_weak_magnitude, flo vibration.weak_magnitude = p_weak_magnitude; vibration.strong_magnitude = p_strong_magnitude; vibration.duration = p_duration; - vibration.timestamp = OS::get_singleton()->get_unix_time(); + vibration.timestamp = OS::get_singleton()->get_ticks_usec(); joy_vibration[p_device] = vibration; } @@ -337,7 +365,7 @@ void InputDefault::stop_joy_vibration(int p_device) { vibration.weak_magnitude = 0; vibration.strong_magnitude = 0; vibration.duration = 0; - vibration.timestamp = OS::get_singleton()->get_unix_time(); + vibration.timestamp = OS::get_singleton()->get_ticks_usec(); joy_vibration[p_device] = vibration; } diff --git a/main/input_default.h b/main/input_default.h index 01b813f3ca..c7fef8374c 100644 --- a/main/input_default.h +++ b/main/input_default.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* input_default.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef INPUT_DEFAULT_H #define INPUT_DEFAULT_H @@ -161,7 +189,7 @@ public: void set_magnetometer(const Vector3& p_magnetometer); void set_joy_axis(int p_device,int p_axis,float p_value); - virtual void start_joy_vibration(int p_device, float p_weak_magnitude, float p_strong_magnitude, float p_duration); + virtual void start_joy_vibration(int p_device, float p_weak_magnitude, float p_strong_magnitude, float p_duration=0); virtual void stop_joy_vibration(int p_device); void set_main_loop(MainLoop *main_loop); diff --git a/main/main.cpp b/main/main.cpp index 6cddea823a..de212deefd 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -110,6 +110,7 @@ static bool use_debug_profiler=false; static bool force_lowdpi=false; static int init_screen=-1; static bool use_vsync=true; +static bool editor=false; static String unescape_cmdline(const String& p_str) { @@ -281,7 +282,7 @@ Error Main::setup(const char *execpath,int argc, char *argv[],bool p_second_phas packed_data->add_pack_source(zip_packed_data); #endif - bool editor=false; + while(I) { @@ -953,7 +954,7 @@ Error Main::setup2() { Globals::get_singleton()->set_custom_property_info("application/icon",PropertyInfo(Variant::STRING,"application/icon",PROPERTY_HINT_FILE,"*.png,*.webp")); if (bool(GLOBAL_DEF("display/emulate_touchscreen",false))) { - if (!OS::get_singleton()->has_touchscreen_ui_hint() && Input::get_singleton()) { + if (!OS::get_singleton()->has_touchscreen_ui_hint() && Input::get_singleton() && !editor) { //only if no touchscreen ui hint, set emulation InputDefault *id = Input::get_singleton()->cast_to<InputDefault>(); if (id) diff --git a/modules/gdscript/gd_editor.cpp b/modules/gdscript/gd_editor.cpp index 7e5ff620c9..b1da7e782c 100644 --- a/modules/gdscript/gd_editor.cpp +++ b/modules/gdscript/gd_editor.cpp @@ -497,11 +497,6 @@ static Ref<Reference> _get_parent_class(GDCompletionContext& context) { int base_idx = GDScriptLanguage::get_singleton()->get_global_map()[base]; native = GDScriptLanguage::get_singleton()->get_global_array()[base_idx]; - if (!native.is_valid()) { - - print_line("Global not a class: '"+base+"'"); - - } return native; } @@ -1024,7 +1019,7 @@ static bool _guess_identifier_type_in_block(GDCompletionContext& context,int p_l } -static bool _guess_identifier_from_assignment_in_function(GDCompletionContext& context,const StringName& p_identifier, const StringName& p_function,GDCompletionIdentifier &r_type) { +static bool _guess_identifier_from_assignment_in_function(GDCompletionContext& context, int p_src_line, const StringName& p_identifier, const StringName& p_function,GDCompletionIdentifier &r_type) { const GDParser::FunctionNode* func=NULL; for(int i=0;i<context._class->functions.size();i++) { @@ -1039,7 +1034,9 @@ static bool _guess_identifier_from_assignment_in_function(GDCompletionContext& c for(int i=0;i<func->body->statements.size();i++) { - + if (func->body->statements[i]->line == p_src_line) { + break; + } if (func->body->statements[i]->type==GDParser::BlockNode::TYPE_OPERATOR) { const GDParser::OperatorNode *op = static_cast<const GDParser::OperatorNode *>(func->body->statements[i]); @@ -1160,11 +1157,11 @@ static bool _guess_identifier_type(GDCompletionContext& context,int p_line,const } //try to guess from assignment in construtor or _ready - if (_guess_identifier_from_assignment_in_function(context,p_identifier,"_ready",r_type)) + if (_guess_identifier_from_assignment_in_function(context,p_line+1,p_identifier,"_ready",r_type)) return true; - if (_guess_identifier_from_assignment_in_function(context,p_identifier,"_enter_tree",r_type)) + if (_guess_identifier_from_assignment_in_function(context,p_line+1,p_identifier,"_enter_tree",r_type)) return true; - if (_guess_identifier_from_assignment_in_function(context,p_identifier,"_init",r_type)) + if (_guess_identifier_from_assignment_in_function(context,p_line+1,p_identifier,"_init",r_type)) return true; return false; @@ -2122,10 +2119,8 @@ Error GDScriptLanguage::complete_code(const String& p_code, const String& p_base switch(p.get_completion_type()) { case GDParser::COMPLETION_NONE: { - print_line("No completion"); } break; case GDParser::COMPLETION_BUILT_IN_TYPE_CONSTANT: { - print_line("Built in type constant"); List<StringName> constants; Variant::get_numeric_constants_for_type(p.get_completion_built_in_constant(),&constants); for(List<StringName>::Element *E=constants.front();E;E=E->next()) { @@ -2141,7 +2136,6 @@ Error GDScriptLanguage::complete_code(const String& p_code, const String& p_base _find_identifiers(context,p.get_completion_line(),isfunction,options); } break; case GDParser::COMPLETION_PARENT_FUNCTION: { - print_line("parent function"); } break; case GDParser::COMPLETION_METHOD: diff --git a/modules/gdscript/gd_function.cpp b/modules/gdscript/gd_function.cpp index 9d438998cb..6e52686de4 100644 --- a/modules/gdscript/gd_function.cpp +++ b/modules/gdscript/gd_function.cpp @@ -654,10 +654,10 @@ Variant GDFunction::call(GDInstance *p_instance, const Variant **p_args, int p_a if (call_ret) { GET_VARIANT_PTR(ret,argc); - *ret = base->call(*methodname,(const Variant**)argptrs,argc,err); + base->call_ptr(*methodname,(const Variant**)argptrs,argc,ret,err); } else { - base->call(*methodname,(const Variant**)argptrs,argc,err); + base->call_ptr(*methodname,(const Variant**)argptrs,argc,NULL,err); } #ifdef DEBUG_ENABLED if (GDScriptLanguage::get_singleton()->profiling) { diff --git a/modules/gdscript/gd_functions.cpp b/modules/gdscript/gd_functions.cpp index 077255064d..ec66841662 100644 --- a/modules/gdscript/gd_functions.cpp +++ b/modules/gdscript/gd_functions.cpp @@ -87,6 +87,7 @@ const char *GDFunctions::get_func_name(Function p_func) { "funcref", "convert", "typeof", + "type_exists", "str", "print", "printt", @@ -532,6 +533,12 @@ void GDFunctions::call(Function p_func,const Variant **p_args,int p_arg_count,Va r_ret = p_args[0]->get_type(); } break; + case TYPE_EXISTS: { + + VALIDATE_ARG_COUNT(1); + r_ret = ObjectTypeDB::type_exists(*p_args[0]); + + } break; case TEXT_STR: { String str; @@ -1126,6 +1133,7 @@ bool GDFunctions::is_deterministic(Function p_func) { case LOGIC_NEAREST_PO2: case TYPE_CONVERT: case TYPE_OF: + case TYPE_EXISTS: case TEXT_STR: case COLOR8: // enable for debug only, otherwise not desirable - case GEN_RANGE: @@ -1309,12 +1317,12 @@ MethodInfo GDFunctions::get_info(Function p_func) { return mi; } break; case MATH_SEED: { - MethodInfo mi("seed",PropertyInfo(Variant::REAL,"seed")); + MethodInfo mi("seed",PropertyInfo(Variant::INT,"seed")); mi.return_val.type=Variant::NIL; return mi; } break; case MATH_RANDSEED: { - MethodInfo mi("rand_seed",PropertyInfo(Variant::REAL,"seed")); + MethodInfo mi("rand_seed",PropertyInfo(Variant::INT,"seed")); mi.return_val.type=Variant::ARRAY; return mi; } break; @@ -1389,6 +1397,13 @@ MethodInfo GDFunctions::get_info(Function p_func) { return mi; } break; + case TYPE_EXISTS: { + + MethodInfo mi("type_exists",PropertyInfo(Variant::STRING,"type")); + mi.return_val.type=Variant::BOOL; + return mi; + + } break; case TEXT_STR: { MethodInfo mi("str",PropertyInfo(Variant::NIL,"what"),PropertyInfo(Variant::NIL,"...")); diff --git a/modules/gdscript/gd_functions.h b/modules/gdscript/gd_functions.h index 8c88472567..c78956fe20 100644 --- a/modules/gdscript/gd_functions.h +++ b/modules/gdscript/gd_functions.h @@ -81,6 +81,7 @@ public: FUNC_FUNCREF, TYPE_CONVERT, TYPE_OF, + TYPE_EXISTS, TEXT_STR, TEXT_PRINT, TEXT_PRINT_TABBED, diff --git a/modules/gdscript/gd_pretty_print.cpp b/modules/gdscript/gd_pretty_print.cpp deleted file mode 100644 index cca3cd3984..0000000000 --- a/modules/gdscript/gd_pretty_print.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/*************************************************************************/ -/* gd_pretty_print.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "gd_pretty_print.h" - -GDPrettyPrint::GDPrettyPrint() { - - -} diff --git a/modules/gdscript/gd_pretty_print.h b/modules/gdscript/gd_pretty_print.h deleted file mode 100644 index 0106d873d9..0000000000 --- a/modules/gdscript/gd_pretty_print.h +++ /dev/null @@ -1,40 +0,0 @@ -/*************************************************************************/ -/* gd_pretty_print.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef GD_PRETTY_PRINT_H -#define GD_PRETTY_PRINT_H - - - - -class GDPrettyPrint { -public: - GDPrettyPrint(); -}; - -#endif // GD_PRETTY_PRINT_H diff --git a/modules/gdscript/gd_tokenizer.cpp b/modules/gdscript/gd_tokenizer.cpp index 8dd68cf95a..0a77b96569 100644 --- a/modules/gdscript/gd_tokenizer.cpp +++ b/modules/gdscript/gd_tokenizer.cpp @@ -725,7 +725,7 @@ void GDTokenizerText::_advance() { if (hexa_found) { int val = str.hex_to_int(); _make_constant(val); - } else if (period_found) { + } else if (period_found || exponent_found) { real_t val = str.to_double(); //print_line("*%*%*%*% to convert: "+str+" result: "+rtos(val)); _make_constant(val); diff --git a/modules/gdscript/register_types.cpp b/modules/gdscript/register_types.cpp index 2aea494f39..6aa53f03ef 100644 --- a/modules/gdscript/register_types.cpp +++ b/modules/gdscript/register_types.cpp @@ -1,14 +1,31 @@ -/*************************************************/ -/* register_script_types.cpp */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* register_types.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "register_types.h" #include "gd_script.h" diff --git a/modules/ik/ik.cpp b/modules/ik/ik.cpp index 6c383fdb55..172e16459e 100644 --- a/modules/ik/ik.cpp +++ b/modules/ik/ik.cpp @@ -1,12 +1,12 @@ /*************************************************************************/ /* ik.cpp */ +/* Copyright (c) 2016 Sergey Lapin <slapinid@gmail.com> */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ /* http://www.godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* This file is Copyright (c) 2016 Sergey Lapin <slapinid@gmail.com> */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/ik/ik.h b/modules/ik/ik.h index 9daddb229d..b57d69b026 100644 --- a/modules/ik/ik.h +++ b/modules/ik/ik.h @@ -1,12 +1,12 @@ /*************************************************************************/ -/* ik.h */ +/* ik.h */ +/* Copyright (c) 2016 Sergey Lapin <slapinid@gmail.com> */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ /* http://www.godotengine.org */ /*************************************************************************/ /* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* This file is (c) 2016 Sergey Lapin <slapinid@gmail.com> */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/modules/register_module_types.h b/modules/register_module_types.h index 3cc0422d80..683ce7c6b8 100644 --- a/modules/register_module_types.h +++ b/modules/register_module_types.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* register_module_types.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef REGISTER_MODULE_TYPES_H #define REGISTER_MODULE_TYPES_H diff --git a/platform/android/AndroidManifest.xml.template b/platform/android/AndroidManifest.xml.template index 852a821c65..2a24c7cdc2 100644 --- a/platform/android/AndroidManifest.xml.template +++ b/platform/android/AndroidManifest.xml.template @@ -7,7 +7,7 @@ > <supports-screens android:smallScreens="true" android:normalScreens="true" - android:largeScreens="false" + android:largeScreens="true" android:xlargeScreens="true"/> <application android:label="@string/godot_project_name_string" android:icon="@drawable/icon" android:allowBackup="false" $$ADD_APPATTRIBUTE_CHUNKS$$ > diff --git a/platform/android/android_native_app_glue.h b/platform/android/android_native_app_glue.h index 3e7a4ea7a0..36278d4c66 100644 --- a/platform/android/android_native_app_glue.h +++ b/platform/android/android_native_app_glue.h @@ -1,32 +1,5 @@ -/*************************************************************************/ -/* android_native_app_glue.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -/* Copyright (C) 2010 The Android Open Source Project +/* + * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp index 441df02a78..872f047c95 100644 --- a/platform/android/export/export.cpp +++ b/platform/android/export/export.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* export.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "version.h" #include "export.h" #include "tools/editor/editor_settings.h" diff --git a/platform/android/export/export.h b/platform/android/export/export.h index 88581802b8..a9421e692e 100644 --- a/platform/android/export/export.h +++ b/platform/android/export/export.h @@ -1,3 +1,29 @@ - - +/*************************************************************************/ +/* export.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ void register_android_exporter(); diff --git a/platform/android/globals/global_defaults.cpp b/platform/android/globals/global_defaults.cpp index 824a4e3606..9a4252bde0 100644 --- a/platform/android/globals/global_defaults.cpp +++ b/platform/android/globals/global_defaults.cpp @@ -1,4 +1,31 @@ - +/*************************************************************************/ +/* global_defaults.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "global_defaults.h" #include "globals.h" diff --git a/platform/android/globals/global_defaults.h b/platform/android/globals/global_defaults.h index 11617ddfd0..6f240572d8 100644 --- a/platform/android/globals/global_defaults.h +++ b/platform/android/globals/global_defaults.h @@ -1,3 +1,29 @@ - - +/*************************************************************************/ +/* global_defaults.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ void register_android_global_defaults(); diff --git a/platform/android/java/res/values-id/strings.xml b/platform/android/java/res/values-in/strings.xml index 9e9a8b0c03..9e9a8b0c03 100644 --- a/platform/android/java/res/values-id/strings.xml +++ b/platform/android/java/res/values-in/strings.xml diff --git a/platform/android/java/res/values-he/strings.xml b/platform/android/java/res/values-iw/strings.xml index f52ede2085..f52ede2085 100644 --- a/platform/android/java/res/values-he/strings.xml +++ b/platform/android/java/res/values-iw/strings.xml diff --git a/platform/android/java/src/org/godotengine/godot/Dictionary.java b/platform/android/java/src/org/godotengine/godot/Dictionary.java index 34051c4bb8..e003c245bb 100644 --- a/platform/android/java/src/org/godotengine/godot/Dictionary.java +++ b/platform/android/java/src/org/godotengine/godot/Dictionary.java @@ -5,7 +5,7 @@ /* GODOT ENGINE */ /* http://www.godotengine.org */ /*************************************************************************/ -/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ /* */ /* Permission is hereby granted, free of charge, to any person obtaining */ /* a copy of this software and associated documentation files (the */ diff --git a/platform/android/java/src/org/godotengine/godot/Godot.java b/platform/android/java/src/org/godotengine/godot/Godot.java index 73d54b6afa..cdf17e3161 100644 --- a/platform/android/java/src/org/godotengine/godot/Godot.java +++ b/platform/android/java/src/org/godotengine/godot/Godot.java @@ -115,7 +115,17 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC private int mState; private boolean keep_screen_on=true; - private void setState(int newState) { + static private Intent mCurrentIntent; + + @Override public void onNewIntent(Intent intent) { + mCurrentIntent = intent; + } + + static public Intent getCurrentIntent() { + return mCurrentIntent; + } + + private void setState(int newState) { if (mState != newState) { mState = newState; mStatusText.setText(Helpers.getDownloaderStringResourceIDFromState(newState)); @@ -545,6 +555,8 @@ public class Godot extends Activity implements SensorEventListener, IDownloaderC } } + mCurrentIntent = getIntent(); + initializeGodot(); diff --git a/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java b/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java index b602f4757c..ea6c070fae 100644 --- a/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java +++ b/platform/android/java/src/org/godotengine/godot/GodotDownloaderAlarmReceiver.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* GodotDownloaderAlarmReceiver.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot; import com.google.android.vending.expansion.downloader.DownloaderClientMarshaller; diff --git a/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java b/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java index 6735d387f3..4ea3f13021 100644 --- a/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java +++ b/platform/android/java/src/org/godotengine/godot/GodotDownloaderService.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* GodotDownloaderService.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot; import android.content.Context; diff --git a/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java b/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java index 6bec49410d..fde752acc9 100644 --- a/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java +++ b/platform/android/java/src/org/godotengine/godot/GodotPaymentV3.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* GodotPaymentV3.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot; import org.godotengine.godot.Dictionary; diff --git a/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java b/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java index c8ffa74ecd..aa92eeae0f 100644 --- a/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java +++ b/platform/android/java/src/org/godotengine/godot/input/GodotEditText.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* GodotEditText.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot.input; import android.content.Context; import android.util.AttributeSet; diff --git a/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java b/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java index 64d8826b44..13c8c8b3ec 100644 --- a/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java +++ b/platform/android/java/src/org/godotengine/godot/input/GodotTextInputWrapper.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* GodotTextInputWrapper.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot.input; import android.content.Context; import android.text.Editable; diff --git a/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java b/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java index 61ccb97161..16b669fbe8 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java +++ b/platform/android/java/src/org/godotengine/godot/payments/ConsumeTask.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* ConsumeTask.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot.payments; import com.android.vending.billing.IInAppBillingService; diff --git a/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java b/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java index 293e903284..175d401c87 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java +++ b/platform/android/java/src/org/godotengine/godot/payments/GenericConsumeTask.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* GenericConsumeTask.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot.payments; import com.android.vending.billing.IInAppBillingService; diff --git a/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java b/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java index d120551e4a..e63230c4f8 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java +++ b/platform/android/java/src/org/godotengine/godot/payments/HandlePurchaseTask.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* HandlePurchaseTask.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot.payments; import org.json.JSONException; diff --git a/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java b/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java index 5f3d931593..0635385f53 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java +++ b/platform/android/java/src/org/godotengine/godot/payments/PaymentsCache.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* PaymentsCache.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot.payments; import android.content.Context; diff --git a/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java b/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java index effb58aa35..eb33b37ecc 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java +++ b/platform/android/java/src/org/godotengine/godot/payments/PaymentsManager.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* PaymentsManager.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot.payments; import java.util.ArrayList; diff --git a/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java b/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java index 8b048d8065..9e92d8b5a5 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java +++ b/platform/android/java/src/org/godotengine/godot/payments/PurchaseTask.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* PurchaseTask.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot.payments; import org.json.JSONException; diff --git a/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java b/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java index 7bb5131b49..2dc7dcf6b1 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java +++ b/platform/android/java/src/org/godotengine/godot/payments/ReleaseAllConsumablesTask.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* ReleaseAllConsumablesTask.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot.payments; import java.util.ArrayList; diff --git a/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java b/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java index 2fcf7483b4..f3532f311f 100644 --- a/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java +++ b/platform/android/java/src/org/godotengine/godot/payments/ValidateTask.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* ValidateTask.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot.payments; import org.json.JSONException; diff --git a/platform/android/java/src/org/godotengine/godot/utils/Crypt.java b/platform/android/java/src/org/godotengine/godot/utils/Crypt.java index 2fb81cef8c..ef7793c1e6 100644 --- a/platform/android/java/src/org/godotengine/godot/utils/Crypt.java +++ b/platform/android/java/src/org/godotengine/godot/utils/Crypt.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* Crypt.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot.utils; import java.security.MessageDigest; diff --git a/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java b/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java index 2db88fcc9b..f2b0e8786e 100644 --- a/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java +++ b/platform/android/java/src/org/godotengine/godot/utils/CustomSSLSocketFactory.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* CustomSSLSocketFactory.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot.utils; import java.io.IOException; import java.net.Socket; @@ -51,4 +79,4 @@ public class CustomSSLSocketFactory extends SSLSocketFactory { public Socket createSocket() throws IOException { return sslContext.getSocketFactory().createSocket(); } -}
\ No newline at end of file +} diff --git a/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java b/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java index 14346702cc..5687b3c1e1 100644 --- a/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java +++ b/platform/android/java/src/org/godotengine/godot/utils/HttpRequester.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* HttpRequester.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot.utils; import java.io.BufferedReader; diff --git a/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java b/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java index 36753e368c..d66dfe9531 100644 --- a/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java +++ b/platform/android/java/src/org/godotengine/godot/utils/RequestParams.java @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* RequestParams.java */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ package org.godotengine.godot.utils; import java.util.ArrayList; diff --git a/platform/android/java_bind.cpp b/platform/android/java_bind.cpp deleted file mode 100644 index 33ecfcffb6..0000000000 --- a/platform/android/java_bind.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "java_bind.h" - -JavaBind::JavaBind() -{ -} diff --git a/platform/android/java_bind.h b/platform/android/java_bind.h deleted file mode 100644 index ca6b4650d3..0000000000 --- a/platform/android/java_bind.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef JAVA_BIND_H -#define JAVA_BIND_H - -class JavaBind -{ -public: - JavaBind(); -}; - -#endif // JAVA_BIND_H diff --git a/platform/android/java_class_wrapper.cpp b/platform/android/java_class_wrapper.cpp index 283ea81152..4fda13fec0 100644 --- a/platform/android/java_class_wrapper.cpp +++ b/platform/android/java_class_wrapper.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* java_class_wrapper.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "java_class_wrapper.h" #include "thread_jandroid.h" diff --git a/platform/android/java_class_wrapper.h b/platform/android/java_class_wrapper.h index d5d8bd5be8..012e7854fe 100644 --- a/platform/android/java_class_wrapper.h +++ b/platform/android/java_class_wrapper.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* java_class_wrapper.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef JAVA_CLASS_WRAPPER_H #define JAVA_CLASS_WRAPPER_H diff --git a/platform/bb10/bbutil.h b/platform/bb10/bbutil.h index bc422cd9b9..c2a4c5a7f5 100644 --- a/platform/bb10/bbutil.h +++ b/platform/bb10/bbutil.h @@ -1,31 +1,3 @@ -/*************************************************************************/ -/* bbutil.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ #ifndef _UTILITY_H_INCLUDED #define _UTILITY_H_INCLUDED diff --git a/platform/bb10/export/export.cpp b/platform/bb10/export/export.cpp index daee5aab9b..7cb0aa3607 100644 --- a/platform/bb10/export/export.cpp +++ b/platform/bb10/export/export.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* export.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "version.h" #include "export.h" #include "tools/editor/editor_settings.h" diff --git a/platform/bb10/export/export.h b/platform/bb10/export/export.h index 06c7a681be..bd9cad5cb3 100644 --- a/platform/bb10/export/export.h +++ b/platform/bb10/export/export.h @@ -1,3 +1,29 @@ - - +/*************************************************************************/ +/* export.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ void register_bb10_exporter(); diff --git a/platform/haiku/context_gl_haiku.cpp b/platform/haiku/context_gl_haiku.cpp index 330046162d..2fedd1532a 100644 --- a/platform/haiku/context_gl_haiku.cpp +++ b/platform/haiku/context_gl_haiku.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* context_gl_haiku.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "context_gl_haiku.h" #if defined(OPENGL_ENABLED) || defined(LEGACYGL_ENABLED) diff --git a/platform/haiku/context_gl_haiku.h b/platform/haiku/context_gl_haiku.h index 63caec6fb3..91aae6b382 100644 --- a/platform/haiku/context_gl_haiku.h +++ b/platform/haiku/context_gl_haiku.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* context_gl_haiku.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef CONTEXT_GL_HAIKU_H #define CONTEXT_GL_HAIKU_H diff --git a/platform/haiku/godot_haiku.cpp b/platform/haiku/godot_haiku.cpp index fa5651d89a..71c9d30239 100644 --- a/platform/haiku/godot_haiku.cpp +++ b/platform/haiku/godot_haiku.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* godot_haiku.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "main/main.h" #include "os_haiku.h" diff --git a/platform/haiku/haiku_application.cpp b/platform/haiku/haiku_application.cpp index 180bd133fb..2b9604f563 100644 --- a/platform/haiku/haiku_application.cpp +++ b/platform/haiku/haiku_application.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* haiku_application.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "haiku_application.h" HaikuApplication::HaikuApplication() diff --git a/platform/haiku/haiku_application.h b/platform/haiku/haiku_application.h index a64b01c94d..74316b9b1f 100644 --- a/platform/haiku/haiku_application.h +++ b/platform/haiku/haiku_application.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* haiku_application.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef HAIKU_APPLICATION_H #define HAIKU_APPLICATION_H diff --git a/platform/haiku/haiku_direct_window.cpp b/platform/haiku/haiku_direct_window.cpp index 184d64f840..583453af1e 100644 --- a/platform/haiku/haiku_direct_window.cpp +++ b/platform/haiku/haiku_direct_window.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* haiku_direct_window.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include <UnicodeChar.h> #include "main/main.h" diff --git a/platform/haiku/haiku_direct_window.h b/platform/haiku/haiku_direct_window.h index f0398df505..b4fdb6edb2 100644 --- a/platform/haiku/haiku_direct_window.h +++ b/platform/haiku/haiku_direct_window.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* haiku_direct_window.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef HAIKU_DIRECT_WINDOW_H #define HAIKU_DIRECT_WINDOW_H diff --git a/platform/haiku/haiku_gl_view.cpp b/platform/haiku/haiku_gl_view.cpp index 481d6098a7..da0957c81d 100644 --- a/platform/haiku/haiku_gl_view.cpp +++ b/platform/haiku/haiku_gl_view.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* haiku_gl_view.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "main/main.h" #include "haiku_gl_view.h" diff --git a/platform/haiku/haiku_gl_view.h b/platform/haiku/haiku_gl_view.h index f44b6d4325..05c288e83b 100644 --- a/platform/haiku/haiku_gl_view.h +++ b/platform/haiku/haiku_gl_view.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* haiku_gl_view.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef HAIKU_GL_VIEW_H #define HAIKU_GL_VIEW_H diff --git a/platform/haiku/key_mapping_haiku.cpp b/platform/haiku/key_mapping_haiku.cpp index f0622d3f1d..43981b8855 100644 --- a/platform/haiku/key_mapping_haiku.cpp +++ b/platform/haiku/key_mapping_haiku.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* key_mapping_haiku.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include <InterfaceDefs.h> #include "key_mapping_haiku.h" diff --git a/platform/haiku/key_mapping_haiku.h b/platform/haiku/key_mapping_haiku.h index e2864678a8..1309ee034d 100644 --- a/platform/haiku/key_mapping_haiku.h +++ b/platform/haiku/key_mapping_haiku.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* key_mapping_haiku.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef KEY_MAPPING_HAIKU_H #define KEY_MAPPING_HAIKU_H diff --git a/platform/haiku/os_haiku.cpp b/platform/haiku/os_haiku.cpp index 308800cec0..f5674fb0eb 100644 --- a/platform/haiku/os_haiku.cpp +++ b/platform/haiku/os_haiku.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* os_haiku.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include <Screen.h> #include "servers/visual/visual_server_raster.h" diff --git a/platform/haiku/os_haiku.h b/platform/haiku/os_haiku.h index e1b0b86cf4..e1d6b5b7b9 100644 --- a/platform/haiku/os_haiku.h +++ b/platform/haiku/os_haiku.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* os_haiku.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef OS_HAIKU_H #define OS_HAIKU_H diff --git a/platform/haiku/platform_config.h b/platform/haiku/platform_config.h index 691bdbdb9c..72dc0e5149 100644 --- a/platform/haiku/platform_config.h +++ b/platform/haiku/platform_config.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* platform_config.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include <alloca.h> // for ifaddrs.h needed in drivers/unix/ip_unix.cpp diff --git a/platform/iphone/Appirater.h b/platform/iphone/Appirater.h index 9c7e3febf6..96dd30e7c7 100644 --- a/platform/iphone/Appirater.h +++ b/platform/iphone/Appirater.h @@ -1,31 +1,4 @@ -/*************************************************************************/ -/* Appirater.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ +/* This file is part of Appirater. Copyright (c) 2010, Arash Payan diff --git a/platform/iphone/globals/global_defaults.cpp b/platform/iphone/globals/global_defaults.cpp index 18a51a5b4e..23261ceb02 100755 --- a/platform/iphone/globals/global_defaults.cpp +++ b/platform/iphone/globals/global_defaults.cpp @@ -1,4 +1,31 @@ - +/*************************************************************************/ +/* global_defaults.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "global_defaults.h" #include "globals.h" diff --git a/platform/iphone/globals/global_defaults.h b/platform/iphone/globals/global_defaults.h index 305b600b43..0f4bf64c9b 100644 --- a/platform/iphone/globals/global_defaults.h +++ b/platform/iphone/globals/global_defaults.h @@ -1,3 +1,29 @@ - - +/*************************************************************************/ +/* global_defaults.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ void register_iphone_global_defaults(); diff --git a/platform/iphone/ios.h b/platform/iphone/ios.h index 0e4661520b..8861417284 100644 --- a/platform/iphone/ios.h +++ b/platform/iphone/ios.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* ios.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef IOS_H #define IOS_H diff --git a/platform/iphone/ios.mm b/platform/iphone/ios.mm index deb63feacf..949d3bcb27 100644 --- a/platform/iphone/ios.mm +++ b/platform/iphone/ios.mm @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* ios.mm */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "ios.h" #import <UIKit/UIKit.h> diff --git a/platform/iphone/main.m b/platform/iphone/main.m index 055e6a63c8..ea46a69672 100644 --- a/platform/iphone/main.m +++ b/platform/iphone/main.m @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* main.m */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #import <UIKit/UIKit.h> #import "app_delegate.h" #include <stdio.h> diff --git a/platform/iphone/platform_refcount.h b/platform/iphone/platform_refcount.h index 45391e651a..3bf8652b4a 100644 --- a/platform/iphone/platform_refcount.h +++ b/platform/iphone/platform_refcount.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* platform_refcount.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "safe_refcount.h" #ifdef IPHONE_ENABLED diff --git a/platform/isim/SCsub b/platform/isim/SCsub index 2bd65cb49b..8a46565e7e 100644 --- a/platform/isim/SCsub +++ b/platform/isim/SCsub @@ -12,22 +12,25 @@ iphone_lib = [ '#platform/iphone/view_controller.mm', '#platform/iphone/game_center.mm', '#platform/iphone/in_app_store.mm', - '#platform/iphone/Appirater.m', + '#platform/iphone/icloud.mm', + #'#platform/iphone/Appirater.m', + '#platform/iphone/ios.mm', ] - #env.Depends('#core/math/vector3.h', 'vector3_psp.h') #iphone_lib = env.Library('iphone', iphone_lib) env_ios = env.Clone(); + if env['ios_gles22_override'] == "yes": env_ios.Append(CPPFLAGS=['-DGLES2_OVERRIDE']) -if env['ios_appirater'] == "yes": - env_ios.Append(CPPFLAGS=['-DAPPIRATER_ENABLED']) +#if env['ios_appirater'] == "yes": +# env_ios.Append(CPPFLAGS=['-DAPPIRATER_ENABLED']) + obj = env_ios.Object('#platform/iphone/godot_iphone.cpp') diff --git a/platform/javascript/audio_server_javascript.cpp b/platform/javascript/audio_server_javascript.cpp index fbd5d2e1c0..71a7e77266 100644 --- a/platform/javascript/audio_server_javascript.cpp +++ b/platform/javascript/audio_server_javascript.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* audio_server_javascript.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "audio_server_javascript.h" #include "emscripten.h" @@ -88,7 +116,7 @@ void AudioServerJavascript::sample_set_data(RID p_sample, const DVector<uint8_t> } -const DVector<uint8_t> AudioServerJavascript::sample_get_data(RID p_sample) const{ +DVector<uint8_t> AudioServerJavascript::sample_get_data(RID p_sample) const{ return DVector<uint8_t>(); diff --git a/platform/javascript/audio_server_javascript.h b/platform/javascript/audio_server_javascript.h index 1dc90c48ee..e27192cd93 100644 --- a/platform/javascript/audio_server_javascript.h +++ b/platform/javascript/audio_server_javascript.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* audio_server_javascript.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef AUDIO_SERVER_JAVASCRIPT_H #define AUDIO_SERVER_JAVASCRIPT_H @@ -104,7 +132,7 @@ public: virtual void sample_set_data(RID p_sample, const DVector<uint8_t>& p_buffer); - virtual const DVector<uint8_t> sample_get_data(RID p_sample) const; + virtual DVector<uint8_t> sample_get_data(RID p_sample) const; virtual void sample_set_mix_rate(RID p_sample,int p_rate); virtual int sample_get_mix_rate(RID p_sample) const; diff --git a/platform/osx/dir_access_osx.h b/platform/osx/dir_access_osx.h index 8b742b64fa..d20eee1e2e 100644 --- a/platform/osx/dir_access_osx.h +++ b/platform/osx/dir_access_osx.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* dir_access_unix.h */ +/* dir_access_osx.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -37,52 +37,16 @@ #include <dirent.h> #include "os/dir_access.h" +#include "drivers/unix/dir_access_unix.h" /** @author Juan Linietsky <reduzio@gmail.com> */ -class DirAccessOSX : public DirAccess { +class DirAccessOSX : public DirAccessUnix { +protected: - DIR *dir_stream; - - static DirAccess *create_fs(); - - String current_dir; - bool _cisdir; - bool _cishidden; - -public: - - virtual bool list_dir_begin(); ///< This starts dir listing - virtual String get_next(); - virtual bool current_is_dir() const; - virtual bool current_is_hidden() const; - - virtual void list_dir_end(); ///< - - virtual int get_drive_count(); - virtual String get_drive(int p_drive); - - virtual Error change_dir(String p_dir); ///< can be relative or absolute, return false on success - virtual String get_current_dir(); ///< return current dir location - virtual Error make_dir(String p_dir); - - virtual bool file_exists(String p_file); - virtual bool dir_exists(String p_dir); - - virtual uint64_t get_modified_time(String p_file); - - - - virtual Error rename(String p_from, String p_to); - virtual Error remove(String p_name); - - virtual size_t get_space_left(); - - - DirAccessOSX(); - ~DirAccessOSX(); + virtual String fix_unicode_name(const char* p_name) const; }; diff --git a/platform/osx/dir_access_osx.mm b/platform/osx/dir_access_osx.mm index d123c5c648..5615858262 100644 --- a/platform/osx/dir_access_osx.mm +++ b/platform/osx/dir_access_osx.mm @@ -1,5 +1,5 @@ /*************************************************************************/ -/* dir_access_unix.cpp */ +/* dir_access_osx.mm */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -30,324 +30,21 @@ #if defined(UNIX_ENABLED) || defined(LIBC_FILEIO_ENABLED) -#ifndef ANDROID_ENABLED -#include <sys/statvfs.h> -#endif - -#include <stdio.h> -#include "os/memory.h" -#include "print_string.h" #include <errno.h> #include <Foundation/NSString.h> -DirAccess *DirAccessOSX::create_fs() { - - return memnew( DirAccessOSX ); -} - -bool DirAccessOSX::list_dir_begin() { - - list_dir_end(); //close any previous dir opening! - - -// char real_current_dir_name[2048]; //is this enough?! - //getcwd(real_current_dir_name,2048); - //chdir(curent_path.utf8().get_data()); - dir_stream = opendir(current_dir.utf8().get_data()); - //chdir(real_current_dir_name); - if (!dir_stream) - return true; //error! - - return false; -} - -bool DirAccessOSX::file_exists(String p_file) { - - GLOBAL_LOCK_FUNCTION - - - if (p_file.is_rel_path()) - p_file=current_dir+"/"+p_file; - else - p_file=fix_path(p_file); - - struct stat flags; - bool success = (stat(p_file.utf8().get_data(),&flags)==0); - - if (success && S_ISDIR(flags.st_mode)) { - success=false; - } - - return success; - -} - -bool DirAccessOSX::dir_exists(String p_dir) { - - GLOBAL_LOCK_FUNCTION - - - if (p_dir.is_rel_path()) - p_dir=get_current_dir().plus_file(p_dir); - else - p_dir=fix_path(p_dir); - - struct stat flags; - bool success = (stat(p_dir.utf8().get_data(),&flags)==0); - - if (success && S_ISDIR(flags.st_mode)) - return true; - - return false; - -} - -uint64_t DirAccessOSX::get_modified_time(String p_file) { - - if (p_file.is_rel_path()) - p_file=current_dir+"/"+p_file; - else - p_file=fix_path(p_file); - - struct stat flags; - bool success = (stat(p_file.utf8().get_data(),&flags)==0); - if (success) { - return flags.st_mtime; - } else { - - ERR_FAIL_V(0); - }; - return 0; -}; - - -String DirAccessOSX::get_next() { - - if (!dir_stream) - return ""; - dirent *entry; - - entry=readdir(dir_stream); - - if (entry==NULL) { - - list_dir_end(); - return ""; - } - - //typedef struct stat Stat; - struct stat flags; +String DirAccessOSX::fix_unicode_name(const char* p_name) const { String fname; - NSString* nsstr = [[NSString stringWithUTF8String: entry->d_name] precomposedStringWithCanonicalMapping]; + NSString* nsstr = [[NSString stringWithUTF8String: p_name] precomposedStringWithCanonicalMapping]; fname.parse_utf8([nsstr UTF8String]); - //[nsstr autorelease]; - - String f=current_dir+"/"+fname; - - if (stat(f.utf8().get_data(),&flags)==0) { - - if (S_ISDIR(flags.st_mode)) { - - _cisdir=true; - - } else { - - _cisdir=false; - } - - } else { - - _cisdir=false; - - } - - _cishidden=(fname!="." && fname!=".." && fname.begins_with(".")); - - - return fname; - -} - -bool DirAccessOSX::current_is_dir() const { - - return _cisdir; -} - -bool DirAccessOSX::current_is_hidden() const { - - return _cishidden; -} - - -void DirAccessOSX::list_dir_end() { - - if (dir_stream) - closedir(dir_stream); - dir_stream=0; - _cisdir=false; -} - -int DirAccessOSX::get_drive_count() { - - return 0; -} -String DirAccessOSX::get_drive(int p_drive) { - - return ""; -} - -Error DirAccessOSX::make_dir(String p_dir) { - - GLOBAL_LOCK_FUNCTION - - p_dir=fix_path(p_dir); - - char real_current_dir_name[2048]; - getcwd(real_current_dir_name,2048); - chdir(current_dir.utf8().get_data()); //ascii since this may be unicode or wathever the host os wants - - bool success=(mkdir(p_dir.utf8().get_data(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)==0); - int err = errno; - - chdir(real_current_dir_name); - - if (success) { - return OK; - }; - - if (err == EEXIST) { - return ERR_ALREADY_EXISTS; - }; - - return ERR_CANT_CREATE; } -Error DirAccessOSX::change_dir(String p_dir) { - - GLOBAL_LOCK_FUNCTION - p_dir=fix_path(p_dir); - - - char real_current_dir_name[2048]; - getcwd(real_current_dir_name,2048); - String prev_dir; - if (prev_dir.parse_utf8(real_current_dir_name)) - prev_dir=real_current_dir_name; //no utf8, maybe latin? - - chdir(current_dir.utf8().get_data()); //ascii since this may be unicode or wathever the host os wants - bool worked=(chdir(p_dir.utf8().get_data())==0); // we can only give this utf8 -#ifndef IPHONE_ENABLED - String base = _get_root_path(); - if (base!="") { - - getcwd(real_current_dir_name,2048); - String new_dir; - new_dir.parse_utf8(real_current_dir_name); - if (!new_dir.begins_with(base)) - worked=false; - } -#endif - if (worked) { - - getcwd(real_current_dir_name,2048); - if (current_dir.parse_utf8(real_current_dir_name)) - current_dir=real_current_dir_name; //no utf8, maybe latin? - } - - chdir(prev_dir.utf8().get_data()); - return worked?OK:ERR_INVALID_PARAMETER; - -} - -String DirAccessOSX::get_current_dir() { - - String base = _get_root_path(); - if (base!="") { - - String bd = current_dir.replace_first(base,""); - if (bd.begins_with("/")) - return _get_root_string()+bd.substr(1,bd.length()); - else - return _get_root_string()+bd; - - } - return current_dir; -} - -Error DirAccessOSX::rename(String p_path,String p_new_path) { - - if (p_path.is_rel_path()) - p_path=get_current_dir().plus_file(p_path); - else - p_path=fix_path(p_path); - - if (p_new_path.is_rel_path()) - p_new_path=get_current_dir().plus_file(p_new_path); - else - p_new_path=fix_path(p_new_path); - - return ::rename(p_path.utf8().get_data(),p_new_path.utf8().get_data())==0?OK:FAILED; -} -Error DirAccessOSX::remove(String p_path) { - - if (p_path.is_rel_path()) - p_path=get_current_dir().plus_file(p_path); - else - p_path=fix_path(p_path); - - struct stat flags; - if ((stat(p_path.utf8().get_data(),&flags)!=0)) - return FAILED; - - if (S_ISDIR(flags.st_mode)) - return ::rmdir(p_path.utf8().get_data())==0?OK:FAILED; - else - return ::unlink(p_path.utf8().get_data())==0?OK:FAILED; -} - - -size_t DirAccessOSX::get_space_left() { - -#ifndef NO_STATVFS - struct statvfs vfs; - if (statvfs(current_dir.utf8().get_data(), &vfs) != 0) { - - return 0; - }; - - return (size_t) (vfs.f_bavail * vfs.f_bsize); -#else -#warning THIS IS BROKEN - return 0; -#endif -}; - - - -DirAccessOSX::DirAccessOSX() { - - dir_stream=0; - current_dir="."; - _cisdir=false; - - /* determine drive count */ - - change_dir(current_dir); - -} - - -DirAccessOSX::~DirAccessOSX() { - - list_dir_end(); -} - #endif //posix_enabled diff --git a/platform/osx/export/export.cpp b/platform/osx/export/export.cpp index 2604c2c15a..cb0514da9d 100644 --- a/platform/osx/export/export.cpp +++ b/platform/osx/export/export.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* export.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "version.h" #include "export.h" #include "tools/editor/editor_settings.h" diff --git a/platform/osx/export/export.h b/platform/osx/export/export.h index b149e482c9..8e0b83b457 100644 --- a/platform/osx/export/export.h +++ b/platform/osx/export/export.h @@ -1,3 +1,29 @@ - - +/*************************************************************************/ +/* export.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ void register_osx_exporter(); diff --git a/platform/server/platform_config.h b/platform/server/platform_config.h index 72b10a0fb2..143f16c1fa 100644 --- a/platform/server/platform_config.h +++ b/platform/server/platform_config.h @@ -27,4 +27,3 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ #include <alloca.h> - diff --git a/platform/windows/export/export.cpp b/platform/windows/export/export.cpp index 952f51fdd4..9bf9ba93fe 100644 --- a/platform/windows/export/export.cpp +++ b/platform/windows/export/export.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* export.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "export.h" #include "platform/windows/logo.h" #include "tools/editor/editor_import_export.h" diff --git a/platform/windows/export/export.h b/platform/windows/export/export.h index 68ce500a20..aa3578fb98 100644 --- a/platform/windows/export/export.h +++ b/platform/windows/export/export.h @@ -1,4 +1,29 @@ - - +/*************************************************************************/ +/* export.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ void register_windows_exporter(); - diff --git a/platform/windows/godot.manifest b/platform/windows/godot.manifest new file mode 100644 index 0000000000..c095f007b0 --- /dev/null +++ b/platform/windows/godot.manifest @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> + <security> + <requestedPrivileges> + <requestedExecutionLevel level="asInvoker" uiAccess="false"/> + </requestedPrivileges> + </security> + </trustInfo> + <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> + <application> + <!-- Windows 10 --> + <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/> + <!-- Windows 8.1 --> + <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> + <!-- Windows 8 --> + <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> + <!-- Windows 7 --> + <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> + <!-- Windows Vista --> + <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> + </application> + </compatibility> +</assembly> diff --git a/platform/windows/godot_res.rc b/platform/windows/godot_res.rc index 5f1e951e0f..d069ecdc79 100644 --- a/platform/windows/godot_res.rc +++ b/platform/windows/godot_res.rc @@ -1,3 +1,4 @@ +#include <winuser.h> #include "core/version.h" #ifndef _STR #define _STR(m_x) #m_x @@ -6,6 +7,8 @@ GODOT_ICON ICON platform/windows/godot.ico +CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST platform/windows/godot.manifest + 1 VERSIONINFO FILEVERSION VERSION_MAJOR,VERSION_MINOR,0,0 PRODUCTVERSION VERSION_MAJOR,VERSION_MINOR,0,0 diff --git a/platform/windows/joystick.cpp b/platform/windows/joystick.cpp index f8526b5ec1..663bbe3b9b 100644 --- a/platform/windows/joystick.cpp +++ b/platform/windows/joystick.cpp @@ -37,6 +37,7 @@ #endif DWORD WINAPI _xinput_get_state(DWORD dwUserIndex, XINPUT_STATE* pState) { return ERROR_DEVICE_NOT_CONNECTED; } +DWORD WINAPI _xinput_set_state(DWORD dwUserIndex, XINPUT_VIBRATION* pVibration) { return ERROR_DEVICE_NOT_CONNECTED; } joystick_windows::joystick_windows() { @@ -50,6 +51,7 @@ joystick_windows::joystick_windows(InputDefault* _input, HWND* hwnd) { dinput = NULL; xinput_dll = NULL; xinput_get_state = NULL; + xinput_set_state = NULL; load_xinput(); @@ -300,6 +302,9 @@ void joystick_windows::probe_joysticks() { x_joysticks[i].attached = true; x_joysticks[i].id = id; + x_joysticks[i].ff_timestamp = 0; + x_joysticks[i].ff_end_timestamp = 0; + x_joysticks[i].vibrating = false; attached_joysticks[id] = true; input->joy_connection_changed(id, true, "XInput Gamepad","__XINPUT_DEVICE__"); } @@ -358,6 +363,20 @@ unsigned int joystick_windows::process_joysticks(unsigned int p_last_id) { p_last_id = input->joy_axis(p_last_id, joy.id, JOY_AXIS_5, axis_correct(joy.state.Gamepad.bRightTrigger, true, true)); joy.last_packet = joy.state.dwPacketNumber; } + uint64_t timestamp = input->get_joy_vibration_timestamp(joy.id); + if (timestamp > joy.ff_timestamp) { + Vector2 strength = input->get_joy_vibration_strength(joy.id); + float duration = input->get_joy_vibration_duration(joy.id); + if (strength.x == 0 && strength.y == 0) { + joystick_vibration_stop_xinput(i, timestamp); + } else { + joystick_vibration_start_xinput(i, strength.x, strength.y, duration, timestamp); + } + } else if (joy.vibrating && joy.ff_end_timestamp != 0) { + uint64_t current_time = OS::get_singleton()->get_ticks_usec(); + if (current_time >= joy.ff_end_timestamp) + joystick_vibration_stop_xinput(i, current_time); + } } for (int i = 0; i < JOYSTICKS_MAX; i++) { @@ -401,7 +420,7 @@ unsigned int joystick_windows::process_joysticks(unsigned int p_last_id) { } } - // on mingw, these constants are not constants + // on mingw, these constants are not constants int count = 6; int axes[] = { DIJOFS_X, DIJOFS_Y, DIJOFS_Z, DIJOFS_RX, DIJOFS_RY, DIJOFS_RZ }; int values[] = { js.lX, js.lY, js.lZ, js.lRx, js.lRy, js.lRz }; @@ -500,9 +519,38 @@ InputDefault::JoyAxis joystick_windows::axis_correct(int p_val, bool p_xinput, b return jx; } +void joystick_windows::joystick_vibration_start_xinput(int p_device, float p_weak_magnitude, float p_strong_magnitude, float p_duration, uint64_t p_timestamp) { + xinput_gamepad &joy = x_joysticks[p_device]; + if (joy.attached) { + XINPUT_VIBRATION effect; + effect.wLeftMotorSpeed = (65535 * p_strong_magnitude); + effect.wRightMotorSpeed = (65535 * p_weak_magnitude); + if (xinput_set_state(p_device, &effect) == ERROR_SUCCESS) { + joy.ff_timestamp = p_timestamp; + joy.ff_end_timestamp = p_duration == 0 ? 0 : p_timestamp + (uint64_t)(p_duration * 1000000.0); + joy.vibrating = true; + } + } +} + +void joystick_windows::joystick_vibration_stop_xinput(int p_device, uint64_t p_timestamp) { + xinput_gamepad &joy = x_joysticks[p_device]; + if (joy.attached) { + XINPUT_VIBRATION effect; + effect.wLeftMotorSpeed = 0; + effect.wRightMotorSpeed = 0; + if (xinput_set_state(p_device, &effect) == ERROR_SUCCESS) { + joy.ff_timestamp = p_timestamp; + joy.vibrating = false; + } + } +} + + void joystick_windows::load_xinput() { xinput_get_state = &_xinput_get_state; + xinput_set_state = &_xinput_set_state; xinput_dll = LoadLibrary( "XInput1_4.dll" ); if (!xinput_dll) { xinput_dll = LoadLibrary("XInput1_3.dll"); @@ -519,12 +567,13 @@ void joystick_windows::load_xinput() { } XInputGetState_t func = (XInputGetState_t)GetProcAddress((HMODULE)xinput_dll, "XInputGetState"); - if (!func) { + XInputSetState_t set_func = (XInputSetState_t)GetProcAddress((HMODULE)xinput_dll, "XInputSetState"); + if (!func || !set_func) { unload_xinput(); return; } xinput_get_state = func; - return; + xinput_set_state = set_func; } void joystick_windows::unload_xinput() { diff --git a/platform/windows/joystick.h b/platform/windows/joystick.h index 332e86fbb8..77dee0466f 100644 --- a/platform/windows/joystick.h +++ b/platform/windows/joystick.h @@ -39,8 +39,8 @@ #define SAFE_RELEASE(x) \ if(x != NULL) \ { \ - x->Release(); \ - x = NULL; \ + x->Release(); \ + x = NULL; \ } #endif @@ -96,16 +96,23 @@ private: int id; bool attached; + bool vibrating; DWORD last_packet; XINPUT_STATE state; + uint64_t ff_timestamp; + uint64_t ff_end_timestamp; xinput_gamepad() { attached = false; + vibrating = false; + ff_timestamp = 0; + ff_end_timestamp = 0; last_packet = 0; } }; typedef DWORD (WINAPI *XInputGetState_t) (DWORD dwUserIndex, XINPUT_STATE* pState); + typedef DWORD (WINAPI *XInputSetState_t) (DWORD dwUserIndex, XINPUT_VIBRATION* pVibration); HWND* hWnd; HANDLE xinput_dll; @@ -132,9 +139,12 @@ private: bool have_device(const GUID &p_guid); bool is_xinput_device(const GUID* p_guid); bool setup_dinput_joystick(const DIDEVICEINSTANCE* instance); + void joystick_vibration_start_xinput(int p_device, float p_weak_magnitude, float p_strong_magnitude, float p_duration, uint64_t p_timestamp); + void joystick_vibration_stop_xinput(int p_device, uint64_t p_timestamp); InputDefault::JoyAxis axis_correct(int p_val, bool p_xinput = false, bool p_trigger = false, bool p_negate = false) const; XInputGetState_t xinput_get_state; + XInputSetState_t xinput_set_state; }; #endif diff --git a/platform/windows/packet_peer_udp_winsock.cpp b/platform/windows/packet_peer_udp_winsock.cpp index 0ca2d358af..2c79365c08 100644 --- a/platform/windows/packet_peer_udp_winsock.cpp +++ b/platform/windows/packet_peer_udp_winsock.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* packet_peer_udp_winsock.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "packet_peer_udp_winsock.h" #include <winsock2.h> diff --git a/platform/windows/packet_peer_udp_winsock.h b/platform/windows/packet_peer_udp_winsock.h index 34dbcbee91..b24dbac592 100644 --- a/platform/windows/packet_peer_udp_winsock.h +++ b/platform/windows/packet_peer_udp_winsock.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* packet_peer_udp_winsock.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef PACKET_PEER_UDP_WINSOCK_H #define PACKET_PEER_UDP_WINSOCK_H diff --git a/platform/winrt/gl_context_egl.cpp b/platform/winrt/gl_context_egl.cpp index fd9fbe406f..12ccd404a9 100644 --- a/platform/winrt/gl_context_egl.cpp +++ b/platform/winrt/gl_context_egl.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* gl_context_egl.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "gl_context_egl.h" #include "EGL/eglext.h" diff --git a/platform/winrt/gl_context_egl.h b/platform/winrt/gl_context_egl.h index ca3760e723..68dcdd5035 100644 --- a/platform/winrt/gl_context_egl.h +++ b/platform/winrt/gl_context_egl.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* gl_context_egl.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef CONTEXT_EGL_H #define CONTEXT_EGL_H diff --git a/platform/winrt/os_winrt.cpp b/platform/winrt/os_winrt.cpp index 5ec1bd2756..f045f54bf6 100644 --- a/platform/winrt/os_winrt.cpp +++ b/platform/winrt/os_winrt.cpp @@ -1,5 +1,5 @@ /*************************************************************************/ -/* os_winrt.cpp */ +/* os_winrt.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ diff --git a/platform/winrt/os_winrt.h b/platform/winrt/os_winrt.h index 0307f81954..145ccf0f7a 100644 --- a/platform/winrt/os_winrt.h +++ b/platform/winrt/os_winrt.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* OSWinrt.h */ +/* os_winrt.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ diff --git a/platform/winrt/platform_config.h b/platform/winrt/platform_config.h index 91669ad489..88b1fefed8 100644 --- a/platform/winrt/platform_config.h +++ b/platform/winrt/platform_config.h @@ -1,2 +1,29 @@ +/*************************************************************************/ +/* platform_config.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include <malloc.h> - diff --git a/platform/winrt/thread_winrt.cpp b/platform/winrt/thread_winrt.cpp index 3217292bee..097050e511 100644 --- a/platform/winrt/thread_winrt.cpp +++ b/platform/winrt/thread_winrt.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* thread_winrt.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "thread_winrt.h" #include "os/memory.h" diff --git a/platform/winrt/thread_winrt.h b/platform/winrt/thread_winrt.h index 6140c9c506..df275d560a 100644 --- a/platform/winrt/thread_winrt.h +++ b/platform/winrt/thread_winrt.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* thread_winrt.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef THREAD_WINRT_H #define THREAD_WINRT_H diff --git a/platform/x11/export/export.cpp b/platform/x11/export/export.cpp index bed57fbe9f..c6675ace72 100644 --- a/platform/x11/export/export.cpp +++ b/platform/x11/export/export.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* export.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "export.h" #include "platform/x11/logo.h" #include "tools/editor/editor_import_export.h" diff --git a/platform/x11/export/export.h b/platform/x11/export/export.h index 1077709ea1..9dc13d7459 100644 --- a/platform/x11/export/export.h +++ b/platform/x11/export/export.h @@ -1,4 +1,29 @@ - - +/*************************************************************************/ +/* export.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ void register_x11_exporter(); - diff --git a/platform/x11/joystick_linux.cpp b/platform/x11/joystick_linux.cpp index 5ce0219df7..82f79c2640 100644 --- a/platform/x11/joystick_linux.cpp +++ b/platform/x11/joystick_linux.cpp @@ -439,11 +439,9 @@ void joystick_linux::joystick_vibration_stop(int p_id, uint64_t p_timestamp) return; } - struct input_event stop; - stop.type = EV_FF; - stop.code = joy.ff_effect_id; - stop.value = 0; - write(joy.fd, (const void*)&stop, sizeof(stop)); + if (ioctl(joy.fd, EVIOCRMFF, joy.ff_effect_id) < 0) { + return; + } joy.ff_effect_id = -1; joy.ff_effect_timestamp = p_timestamp; diff --git a/platform/x11/os_x11.cpp b/platform/x11/os_x11.cpp index 1ca779ef7c..c9349c1bbe 100644 --- a/platform/x11/os_x11.cpp +++ b/platform/x11/os_x11.cpp @@ -1625,7 +1625,7 @@ void OS_X11::process_xevents() { //Reply that all is well. XClientMessageEvent m; - memset(&m, sizeof(m), 0); + memset(&m, 0, sizeof(m)); m.type = ClientMessage; m.display = x11_display; m.window = xdnd_source_window; @@ -1662,7 +1662,7 @@ void OS_X11::process_xevents() { //xdnd position event, reply with an XDND status message //just depending on type of data for now XClientMessageEvent m; - memset(&m, sizeof(m), 0); + memset(&m, 0, sizeof(m)); m.type = ClientMessage; m.display = event.xclient.display; m.window = event.xclient.data.l[0]; @@ -1689,7 +1689,7 @@ void OS_X11::process_xevents() { else { //Reply that we're not interested. XClientMessageEvent m; - memset(&m, sizeof(m), 0); + memset(&m, 0, sizeof(m)); m.type = ClientMessage; m.display = event.xclient.display; m.window = event.xclient.data.l[0]; diff --git a/scene/2d/back_buffer_copy.cpp b/scene/2d/back_buffer_copy.cpp index 7a138830db..a83a3ce041 100644 --- a/scene/2d/back_buffer_copy.cpp +++ b/scene/2d/back_buffer_copy.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* back_buffer_copy.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "back_buffer_copy.h" void BackBufferCopy::_update_copy_mode() { diff --git a/scene/2d/back_buffer_copy.h b/scene/2d/back_buffer_copy.h index 734cad458a..f371dbdef4 100644 --- a/scene/2d/back_buffer_copy.h +++ b/scene/2d/back_buffer_copy.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* back_buffer_copy.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef BACKBUFFERCOPY_H #define BACKBUFFERCOPY_H diff --git a/scene/2d/camera_2d.cpp b/scene/2d/camera_2d.cpp index fd8a0ed0f3..85256be940 100644 --- a/scene/2d/camera_2d.cpp +++ b/scene/2d/camera_2d.cpp @@ -281,11 +281,10 @@ void Camera2D::_notification(int p_what) { inv_camera_transform.xform(Vector2(0, screen_size.height)) }; - Matrix32 inv_transform = get_transform().affine_inverse(); // undo global space - draw_set_transform(inv_transform.get_origin(), inv_transform.get_rotation(), inv_transform.get_scale()); + Matrix32 inv_transform = get_global_transform().affine_inverse(); // undo global space for(int i=0;i<4;i++) { - draw_line(screen_endpoints[i], screen_endpoints[(i+1)%4], area_axis_color, area_axis_width); + draw_line(inv_transform.xform(screen_endpoints[i]), inv_transform.xform(screen_endpoints[(i+1)%4]), area_axis_color, area_axis_width); } } break; diff --git a/scene/2d/canvas_item.cpp b/scene/2d/canvas_item.cpp index 8864459dfb..eb37634b24 100644 --- a/scene/2d/canvas_item.cpp +++ b/scene/2d/canvas_item.cpp @@ -112,21 +112,9 @@ void CanvasItemMaterial::_get_property_list( List<PropertyInfo> *p_list) const { void CanvasItemMaterial::set_shader(const Ref<Shader>& p_shader) { ERR_FAIL_COND(p_shader.is_valid() && p_shader->get_mode()!=Shader::MODE_CANVAS_ITEM); -#ifdef TOOLS_ENABLED - if (shader.is_valid()) { - shader->disconnect("changed",this,"_shader_changed"); - } -#endif shader=p_shader; -#ifdef TOOLS_ENABLED - - if (shader.is_valid()) { - shader->connect("changed",this,"_shader_changed"); - } -#endif - RID rid; if (shader.is_valid()) rid=shader->get_rid(); @@ -151,11 +139,6 @@ Variant CanvasItemMaterial::get_shader_param(const StringName& p_param) const{ return VS::get_singleton()->canvas_item_material_get_shader_param(material,p_param); } -void CanvasItemMaterial::_shader_changed() { - - -} - RID CanvasItemMaterial::get_rid() const { return material; @@ -1020,11 +1003,14 @@ InputEvent CanvasItem::make_input_local(const InputEvent& p_event) const { Vector2 CanvasItem::get_global_mouse_pos() const { - return get_viewport_transform().affine_inverse().xform(Input::get_singleton()->get_mouse_pos()); + ERR_FAIL_COND_V(!get_viewport(),Vector2()); + return get_canvas_transform().affine_inverse().xform( get_viewport()->get_mouse_pos() ); } Vector2 CanvasItem::get_local_mouse_pos() const{ - return (get_viewport_transform() * get_global_transform()).affine_inverse().xform(Input::get_singleton()->get_mouse_pos()); + ERR_FAIL_COND_V(!get_viewport(),Vector2()); + + return get_global_transform().affine_inverse().xform( get_global_mouse_pos() ); } diff --git a/scene/2d/canvas_item.h b/scene/2d/canvas_item.h index d915f742ec..8b44e09857 100644 --- a/scene/2d/canvas_item.h +++ b/scene/2d/canvas_item.h @@ -60,7 +60,6 @@ protected: bool _get(const StringName& p_name,Variant &r_ret) const; void _get_property_list( List<PropertyInfo> *p_list) const; - void _shader_changed(); static void _bind_methods(); void get_argument_options(const StringName& p_function,int p_idx,List<String>*r_options) const; diff --git a/scene/2d/canvas_modulate.cpp b/scene/2d/canvas_modulate.cpp index 6a74cb1d91..e4a0500123 100644 --- a/scene/2d/canvas_modulate.cpp +++ b/scene/2d/canvas_modulate.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* canvas_modulate.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "canvas_modulate.h" diff --git a/scene/2d/canvas_modulate.h b/scene/2d/canvas_modulate.h index 0445db27af..ed642c788d 100644 --- a/scene/2d/canvas_modulate.h +++ b/scene/2d/canvas_modulate.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* canvas_modulate.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef CANVASMODULATE_H #define CANVASMODULATE_H diff --git a/scene/2d/light_2d.cpp b/scene/2d/light_2d.cpp index 1cb34075bb..f37cef673d 100644 --- a/scene/2d/light_2d.cpp +++ b/scene/2d/light_2d.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* light_2d.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "light_2d.h" #include "servers/visual_server.h" diff --git a/scene/2d/light_2d.h b/scene/2d/light_2d.h index a8b0ef3b23..c03ef96eff 100644 --- a/scene/2d/light_2d.h +++ b/scene/2d/light_2d.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* light_2d.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef LIGHT_2D_H #define LIGHT_2D_H diff --git a/scene/2d/light_occluder_2d.cpp b/scene/2d/light_occluder_2d.cpp index ce617b1737..58c3e2191e 100644 --- a/scene/2d/light_occluder_2d.cpp +++ b/scene/2d/light_occluder_2d.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* light_occluder_2d.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "light_occluder_2d.h" diff --git a/scene/2d/light_occluder_2d.h b/scene/2d/light_occluder_2d.h index ccc2a1cd9c..69ed860a84 100644 --- a/scene/2d/light_occluder_2d.h +++ b/scene/2d/light_occluder_2d.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* light_occluder_2d.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef LIGHTOCCLUDER2D_H #define LIGHTOCCLUDER2D_H diff --git a/scene/2d/navigation2d.cpp b/scene/2d/navigation2d.cpp index fe1760b84a..b4332cc75d 100644 --- a/scene/2d/navigation2d.cpp +++ b/scene/2d/navigation2d.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* navigation2d.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "navigation2d.h" #define USE_ENTRY_POINT diff --git a/scene/2d/navigation2d.h b/scene/2d/navigation2d.h index 231f1e8c63..415470295b 100644 --- a/scene/2d/navigation2d.h +++ b/scene/2d/navigation2d.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* navigation2d.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef NAVIGATION_2D_H #define NAVIGATION_2D_H diff --git a/scene/2d/navigation_polygon.cpp b/scene/2d/navigation_polygon.cpp index 8c0d9cf35f..95f71104d0 100644 --- a/scene/2d/navigation_polygon.cpp +++ b/scene/2d/navigation_polygon.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* navigation_polygon.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "navigation_polygon.h" #include "navigation2d.h" #include "triangulator.h" diff --git a/scene/2d/navigation_polygon.h b/scene/2d/navigation_polygon.h index 07fee571f0..c40933cf7a 100644 --- a/scene/2d/navigation_polygon.h +++ b/scene/2d/navigation_polygon.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* navigation_polygon.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef NAVIGATION_POLYGON_H #define NAVIGATION_POLYGON_H diff --git a/scene/2d/node_2d_singleton.cpp b/scene/2d/node_2d_singleton.cpp deleted file mode 100644 index b26804fedf..0000000000 --- a/scene/2d/node_2d_singleton.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/*************************************************************************/ -/* node_2d_singleton.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "node_2d_singleton.h" - diff --git a/scene/2d/node_2d_singleton.h b/scene/2d/node_2d_singleton.h deleted file mode 100644 index 0aa6bbf992..0000000000 --- a/scene/2d/node_2d_singleton.h +++ /dev/null @@ -1,33 +0,0 @@ -/*************************************************************************/ -/* node_2d_singleton.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef NODE_2D_SINGLETON_H -#define NODE_2D_SINGLETON_H - - -#endif // NODE_2D_SINGLETON_H diff --git a/scene/2d/path_texture.cpp b/scene/2d/path_texture.cpp index 09596083eb..3f7c514317 100644 --- a/scene/2d/path_texture.cpp +++ b/scene/2d/path_texture.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* path_texture.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "path_texture.h" diff --git a/scene/2d/path_texture.h b/scene/2d/path_texture.h index 0e63758b10..11a60b1390 100644 --- a/scene/2d/path_texture.h +++ b/scene/2d/path_texture.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* path_texture.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef PATH_TEXTURE_H #define PATH_TEXTURE_H diff --git a/scene/2d/physics_body_2d.cpp b/scene/2d/physics_body_2d.cpp index 8f0474b765..26c4ea385f 100644 --- a/scene/2d/physics_body_2d.cpp +++ b/scene/2d/physics_body_2d.cpp @@ -450,6 +450,19 @@ void RigidBody2D::_direct_state_changed(Object *p_state) { state=(Physics2DDirectBodyState*)p_state; //trust it #endif + set_block_transform_notify(true); // don't want notify (would feedback loop) + if (mode!=MODE_KINEMATIC) + set_global_transform(state->get_transform()); + linear_velocity=state->get_linear_velocity(); + angular_velocity=state->get_angular_velocity(); + if(sleeping!=state->is_sleeping()) { + sleeping=state->is_sleeping(); + emit_signal(SceneStringNames::get_singleton()->sleeping_state_changed); + } + if (get_script_instance()) + get_script_instance()->call("_integrate_forces",state); + set_block_transform_notify(false); // want it back + if (contact_monitor) { contact_monitor->locked=true; @@ -539,18 +552,7 @@ void RigidBody2D::_direct_state_changed(Object *p_state) { } - set_block_transform_notify(true); // don't want notify (would feedback loop) - if (mode!=MODE_KINEMATIC) - set_global_transform(state->get_transform()); - linear_velocity=state->get_linear_velocity(); - angular_velocity=state->get_angular_velocity(); - if(sleeping!=state->is_sleeping()) { - sleeping=state->is_sleeping(); - emit_signal(SceneStringNames::get_singleton()->sleeping_state_changed); - } - if (get_script_instance()) - get_script_instance()->call("_integrate_forces",state); - set_block_transform_notify(false); // want it back + state=NULL; } diff --git a/scene/2d/polygon_2d.cpp b/scene/2d/polygon_2d.cpp index 03ced12c55..cfb87fb998 100644 --- a/scene/2d/polygon_2d.cpp +++ b/scene/2d/polygon_2d.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* polygon_2d.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "polygon_2d.h" Rect2 Polygon2D::get_item_rect() const { diff --git a/scene/2d/polygon_2d.h b/scene/2d/polygon_2d.h index eaa642787c..04e8aeb6fd 100644 --- a/scene/2d/polygon_2d.h +++ b/scene/2d/polygon_2d.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* polygon_2d.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef POLYGON_2D_H #define POLYGON_2D_H diff --git a/scene/2d/sample_player_2d.cpp b/scene/2d/sample_player_2d.cpp index 4d719b532b..7c997b3f12 100644 --- a/scene/2d/sample_player_2d.cpp +++ b/scene/2d/sample_player_2d.cpp @@ -81,7 +81,7 @@ void SamplePlayer2D::_get_property_list(List<PropertyInfo> *p_list) const { } } - p_list->push_back( PropertyInfo( Variant::STRING, "play/play", PROPERTY_HINT_ENUM, en,PROPERTY_USAGE_EDITOR)); + p_list->push_back( PropertyInfo( Variant::STRING, "play/play", PROPERTY_HINT_ENUM, en,PROPERTY_USAGE_EDITOR|PROPERTY_USAGE_ANIMATE_AS_TRIGGER)); } void SamplePlayer2D::_notification(int p_what) { diff --git a/scene/2d/y_sort.cpp b/scene/2d/y_sort.cpp index d441abfaf1..ed753ef745 100644 --- a/scene/2d/y_sort.cpp +++ b/scene/2d/y_sort.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* y_sort.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "y_sort.h" diff --git a/scene/2d/y_sort.h b/scene/2d/y_sort.h index 6d04a67e42..c8fa152c75 100644 --- a/scene/2d/y_sort.h +++ b/scene/2d/y_sort.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* y_sort.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef Y_SORT_H #define Y_SORT_H diff --git a/scene/3d/baked_light_instance.cpp b/scene/3d/baked_light_instance.cpp index 4487415030..fafa62866f 100644 --- a/scene/3d/baked_light_instance.cpp +++ b/scene/3d/baked_light_instance.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* baked_light_instance.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "baked_light_instance.h" #include "scene/scene_string_names.h" diff --git a/scene/3d/baked_light_instance.h b/scene/3d/baked_light_instance.h index 0694c813ce..92c2d50986 100644 --- a/scene/3d/baked_light_instance.h +++ b/scene/3d/baked_light_instance.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* baked_light_instance.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef BAKED_LIGHT_INSTANCE_H #define BAKED_LIGHT_INSTANCE_H diff --git a/scene/3d/body_shape.cpp b/scene/3d/body_shape.cpp index e62ab394af..adb0d17753 100644 --- a/scene/3d/body_shape.cpp +++ b/scene/3d/body_shape.cpp @@ -32,11 +32,10 @@ #include "scene/resources/ray_shape.h" #include "scene/resources/box_shape.h" #include "scene/resources/capsule_shape.h" -//#include "scene/resources/cylinder_shape.h" #include "scene/resources/convex_polygon_shape.h" #include "scene/resources/concave_polygon_shape.h" -#include "scene/resources/height_map_shape.h" #include "scene/resources/plane_shape.h" +//TODO: Implement CylinderShape and HeightMapShape? #include "mesh_instance.h" #include "physics_body.h" #include "quick_hull.h" diff --git a/scene/3d/collision_polygon.cpp b/scene/3d/collision_polygon.cpp index e05f29714b..2948966fb3 100644 --- a/scene/3d/collision_polygon.cpp +++ b/scene/3d/collision_polygon.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* collision_polygon.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "collision_polygon.h" #include "collision_object.h" diff --git a/scene/3d/collision_polygon.h b/scene/3d/collision_polygon.h index 3d190a02b3..63ff3e84e4 100644 --- a/scene/3d/collision_polygon.h +++ b/scene/3d/collision_polygon.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* collision_polygon.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef COLLISION_POLYGON_H #define COLLISION_POLYGON_H diff --git a/scene/3d/immediate_geometry.cpp b/scene/3d/immediate_geometry.cpp index 651d20ae71..4964582be4 100644 --- a/scene/3d/immediate_geometry.cpp +++ b/scene/3d/immediate_geometry.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* immediate_geometry.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "immediate_geometry.h" diff --git a/scene/3d/immediate_geometry.h b/scene/3d/immediate_geometry.h index beb8ea8214..28b5735ca8 100644 --- a/scene/3d/immediate_geometry.h +++ b/scene/3d/immediate_geometry.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* immediate_geometry.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef IMMEDIATE_GEOMETRY_H #define IMMEDIATE_GEOMETRY_H diff --git a/scene/3d/navigation.cpp b/scene/3d/navigation.cpp index 2b74d43ad2..74f83b67da 100644 --- a/scene/3d/navigation.cpp +++ b/scene/3d/navigation.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* navigation.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "navigation.h" void Navigation::_navmesh_link(int p_id) { diff --git a/scene/3d/navigation.h b/scene/3d/navigation.h index f8434aaf72..1cfc416fc9 100644 --- a/scene/3d/navigation.h +++ b/scene/3d/navigation.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* navigation.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef NAVIGATION_H #define NAVIGATION_H diff --git a/scene/3d/navigation_agent.cpp b/scene/3d/navigation_agent.cpp deleted file mode 100644 index 9b304e45ec..0000000000 --- a/scene/3d/navigation_agent.cpp +++ /dev/null @@ -1,5 +0,0 @@ -#include "navigation_agent.h" - -NavigationAgent::NavigationAgent() -{ -} diff --git a/scene/3d/navigation_agent.h b/scene/3d/navigation_agent.h deleted file mode 100644 index baceb693a5..0000000000 --- a/scene/3d/navigation_agent.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef NAVIGATION_AGENT_H -#define NAVIGATION_AGENT_H - -class NavigationAgent -{ -public: - NavigationAgent(); -}; - -#endif // NAVIGATION_AGENT_H diff --git a/scene/3d/navigation_mesh.cpp b/scene/3d/navigation_mesh.cpp index 3adf282f13..386a0fab57 100644 --- a/scene/3d/navigation_mesh.cpp +++ b/scene/3d/navigation_mesh.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* navigation_mesh.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "navigation_mesh.h" #include "navigation.h" #include "mesh_instance.h" diff --git a/scene/3d/navigation_mesh.h b/scene/3d/navigation_mesh.h index cb3b5d95f6..c49965cd85 100644 --- a/scene/3d/navigation_mesh.h +++ b/scene/3d/navigation_mesh.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* navigation_mesh.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef NAVIGATION_MESH_H #define NAVIGATION_MESH_H diff --git a/scene/3d/optimized_spatial_scene.cpp b/scene/3d/optimized_spatial_scene.cpp deleted file mode 100644 index 27631c7a74..0000000000 --- a/scene/3d/optimized_spatial_scene.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/*************************************************************************/ -/* optimized_spatial_scene.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "optimized_spatial_scene.h" - -OptimizedSpatialScene::OptimizedSpatialScene() -{ -} diff --git a/scene/3d/optimized_spatial_scene.h b/scene/3d/optimized_spatial_scene.h deleted file mode 100644 index e1e6e14f73..0000000000 --- a/scene/3d/optimized_spatial_scene.h +++ /dev/null @@ -1,41 +0,0 @@ -/*************************************************************************/ -/* optimized_spatial_scene.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef OPTIMIZED_SPATIAL_SCENE_H -#define OPTIMIZED_SPATIAL_SCENE_H - -#include "scene/3d/spatial.h" - -class OptimizedSpatialScene : public Spatial { - - OBJ_TYPE( OptimizedSpatialScene, Spatial ); -public: - OptimizedSpatialScene(); -}; - -#endif // OPTIMIZED_SPATIAL_SCENE_H diff --git a/scene/3d/physics_body.cpp b/scene/3d/physics_body.cpp index 243cb31aca..116f967bd2 100644 --- a/scene/3d/physics_body.cpp +++ b/scene/3d/physics_body.cpp @@ -397,6 +397,18 @@ void RigidBody::_direct_state_changed(Object *p_state) { state=(PhysicsDirectBodyState*)p_state; //trust it #endif + set_ignore_transform_notification(true); + set_global_transform(state->get_transform()); + linear_velocity=state->get_linear_velocity(); + angular_velocity=state->get_angular_velocity(); + if(sleeping!=state->is_sleeping()) { + sleeping=state->is_sleeping(); + emit_signal(SceneStringNames::get_singleton()->sleeping_state_changed); + } + if (get_script_instance()) + get_script_instance()->call("_integrate_forces",state); + set_ignore_transform_notification(false); + if (contact_monitor) { contact_monitor->locked=true; @@ -484,17 +496,7 @@ void RigidBody::_direct_state_changed(Object *p_state) { } - set_ignore_transform_notification(true); - set_global_transform(state->get_transform()); - linear_velocity=state->get_linear_velocity(); - angular_velocity=state->get_angular_velocity(); - if(sleeping!=state->is_sleeping()) { - sleeping=state->is_sleeping(); - emit_signal(SceneStringNames::get_singleton()->sleeping_state_changed); - } - if (get_script_instance()) - get_script_instance()->call("_integrate_forces",state); - set_ignore_transform_notification(false); + state=NULL; } diff --git a/scene/3d/spatial_sample_player.cpp b/scene/3d/spatial_sample_player.cpp index 0df921f208..4c5b2c240e 100644 --- a/scene/3d/spatial_sample_player.cpp +++ b/scene/3d/spatial_sample_player.cpp @@ -82,7 +82,7 @@ void SpatialSamplePlayer::_get_property_list(List<PropertyInfo> *p_list) const { } } - p_list->push_back( PropertyInfo( Variant::STRING, "play/play", PROPERTY_HINT_ENUM, en,PROPERTY_USAGE_EDITOR)); + p_list->push_back( PropertyInfo( Variant::STRING, "play/play", PROPERTY_HINT_ENUM, en,PROPERTY_USAGE_EDITOR|PROPERTY_USAGE_ANIMATE_AS_TRIGGER)); } void SpatialSamplePlayer::_notification(int p_what) { diff --git a/scene/3d/sprite_3d.cpp b/scene/3d/sprite_3d.cpp index a65d199937..8c86c4bf35 100644 --- a/scene/3d/sprite_3d.cpp +++ b/scene/3d/sprite_3d.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* sprite_3d.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "sprite_3d.h" #include "scene/scene_string_names.h" #include "core_string_names.h" diff --git a/scene/3d/sprite_3d.h b/scene/3d/sprite_3d.h index d1d859f634..41e6ba804a 100644 --- a/scene/3d/sprite_3d.h +++ b/scene/3d/sprite_3d.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* sprite_3d.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef SPRITE_3D_H #define SPRITE_3D_H diff --git a/scene/3d/vehicle_body.cpp b/scene/3d/vehicle_body.cpp index 7d134a070e..6ccf07db1e 100644 --- a/scene/3d/vehicle_body.cpp +++ b/scene/3d/vehicle_body.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* vehicle_body.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "vehicle_body.h" #define ROLLING_INFLUENCE_FIX diff --git a/scene/3d/vehicle_body.h b/scene/3d/vehicle_body.h index 31c61ff99d..3a516be716 100644 --- a/scene/3d/vehicle_body.h +++ b/scene/3d/vehicle_body.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* vehicle_body.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef VEHICLE_BODY_H #define VEHICLE_BODY_H diff --git a/scene/animation/animation_cache.cpp b/scene/animation/animation_cache.cpp index b1123897b2..113e2c2278 100644 --- a/scene/animation/animation_cache.cpp +++ b/scene/animation/animation_cache.cpp @@ -301,7 +301,7 @@ void AnimationCache::set_all(float p_time, float p_delta) { } break; case Animation::TYPE_VALUE: { - if (animation->value_track_is_continuous(i)) { + if (animation->value_track_get_update_mode(i)==Animation::UPDATE_CONTINUOUS || (animation->value_track_get_update_mode(i)==Animation::UPDATE_DISCRETE && p_delta==0)) { Variant v = animation->value_track_interpolate(i,p_time); set_track_value(i,v); } else { diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp index 2399bee539..dd4fa992ac 100644 --- a/scene/animation/animation_player.cpp +++ b/scene/animation/animation_player.cpp @@ -174,7 +174,7 @@ void AnimationPlayer::_get_property_list( List<PropertyInfo> *p_list) const { hint+=E->get(); } - p_list->push_back( PropertyInfo( Variant::STRING, "playback/play", PROPERTY_HINT_ENUM, hint,PROPERTY_USAGE_EDITOR) ); + p_list->push_back( PropertyInfo( Variant::STRING, "playback/play", PROPERTY_HINT_ENUM, hint,PROPERTY_USAGE_EDITOR|PROPERTY_USAGE_ANIMATE_AS_TRIGGER) ); p_list->push_back( PropertyInfo( Variant::BOOL, "playback/active", PROPERTY_HINT_NONE,"" ) ); p_list->push_back( PropertyInfo( Variant::REAL, "playback/speed", PROPERTY_HINT_RANGE, "-64,64,0.01") ); @@ -421,12 +421,13 @@ void AnimationPlayer::_animation_process_animation(AnimationData* p_anim,float p TrackNodeCache::PropertyAnim *pa = &E->get(); - if (a->value_track_is_continuous(i) || p_delta==0) { //delta == 0 means seek + if (a->value_track_get_update_mode(i)==Animation::UPDATE_CONTINUOUS || (p_delta==0 && a->value_track_get_update_mode(i)==Animation::UPDATE_DISCRETE)) { //delta == 0 means seek Variant value=a->value_track_interpolate(i,p_time); - if (p_delta==0 && value.get_type()==Variant::STRING) - continue; // doing this with strings is messy, should find another way + //thanks to trigger mode, this should be solved now.. + //if (p_delta==0 && value.get_type()==Variant::STRING) + // continue; // doing this with strings is messy, should find another way if (pa->accum_pass!=accum_pass) { ERR_CONTINUE( cache_update_prop_size >= NODE_CACHE_UPDATE_MAX ); cache_update_prop[cache_update_prop_size++]=pa; @@ -437,11 +438,12 @@ void AnimationPlayer::_animation_process_animation(AnimationData* p_anim,float p } - } else if (p_allow_discrete) { + } else if (p_allow_discrete && p_delta!=0) { List<int> indices; a->value_track_get_key_indices(i,p_time,p_delta,&indices); + for(List<int>::Element *F=indices.front();F;F=F->next()) { Variant value=a->track_get_key_value(i,F->get()); @@ -538,6 +540,7 @@ void AnimationPlayer::_animation_process_data(PlaybackData &cd,float p_delta,flo float len=cd.from->animation->get_length(); bool loop=cd.from->animation->has_loop(); + bool loop_interpolation=cd.from->animation->has_loop_interpolation(); if (!loop) { @@ -563,10 +566,21 @@ void AnimationPlayer::_animation_process_data(PlaybackData &cd,float p_delta,flo } - } else { + } else if (loop_interpolation) { next_pos=Math::fposmod(next_pos,len); + } else { + + if (next_pos<0 || next_pos>len) { + if (!backwards) + next_pos=0; + else if (backwards) + next_pos=len; + } + // fix delta - not sure if needed here + delta=next_pos-cd.pos; + } cd.pos=next_pos; diff --git a/scene/animation/animation_player.h b/scene/animation/animation_player.h index 2ae3a0756c..ac0265dbaa 100644 --- a/scene/animation/animation_player.h +++ b/scene/animation/animation_player.h @@ -33,7 +33,6 @@ #include "scene/resources/animation.h" #include "scene/3d/spatial.h" #include "scene/3d/skeleton.h" -#include "scene/main/misc.h" #include "scene/2d/node_2d.h" /** @author Juan Linietsky <reduzio@gmail.com> diff --git a/scene/animation/animation_tree_player.cpp b/scene/animation/animation_tree_player.cpp index 0f7ed1cb29..628edf09de 100644 --- a/scene/animation/animation_tree_player.cpp +++ b/scene/animation/animation_tree_player.cpp @@ -825,7 +825,7 @@ void AnimationTreePlayer::_process_animation(float p_delta) { } break; case Animation::TYPE_VALUE: { ///< Set a value in a property, can be interpolated. - if (a->value_track_is_continuous(tr.local_track)) { + if (a->value_track_get_update_mode(tr.local_track)==Animation::UPDATE_CONTINUOUS) { Variant value = a->value_track_interpolate(tr.local_track,anim_list->time); Variant::blend(tr.track->value,value,blend,tr.track->value); } else { diff --git a/scene/animation/animation_tree_player.h b/scene/animation/animation_tree_player.h index 0e78281e4c..dae891b5ce 100644 --- a/scene/animation/animation_tree_player.h +++ b/scene/animation/animation_tree_player.h @@ -33,7 +33,6 @@ #include "scene/resources/animation.h" #include "scene/3d/spatial.h" #include "scene/3d/skeleton.h" -#include "scene/main/misc.h" #include "animation_player.h" diff --git a/scene/animation/transitioner.cpp b/scene/animation/transitioner.cpp deleted file mode 100644 index adcf73d489..0000000000 --- a/scene/animation/transitioner.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/*************************************************************************/ -/* transitioner.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "transitioner.h" -/* -Transitioner::Transitioner() -{ -} -*/ diff --git a/scene/animation/transitioner.h b/scene/animation/transitioner.h deleted file mode 100644 index 8b7ec4f3fa..0000000000 --- a/scene/animation/transitioner.h +++ /dev/null @@ -1,68 +0,0 @@ -/*************************************************************************/ -/* transitioner.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef TRANSITIONER_H -#define TRANSITIONER_H - -/* -class Transitioner : public Node { - OBJ_TYPE(Transitioner, Node); -public: - enum Interpolation { - INTERPOLATION_NEAREST, - INTERPOLATION_LINEAR, - INTERPOLATION_CUBIC - }; - - enum TransitionType { - TYPE_PROPERTY, - TYPE_METHOD, - TYPE_TRANSITION - - }; - - - void create_transition(const String& p_transition, TransitionType p_type); - void transition_set_target(const NodePath& p_node,const String& p_target); - TransitionType transition_get_type() const; - void transition_add_key(const String& p_transition,float p_time, const Variant& p_key); - int transition_get_key_count(const String& p_transition) const; - Variant transition_get_key_time(const String& p_transition.int p_key_index) const - Variant transition_get_key(const String& p_transition,int p_key_index) const; - - void transition_remove_key(const String& p_transition, int p_key_index); - void transition_clear_keys(const String& p_transition); - void remove_transition(const String& p_transition); - - void transition_ - - - Transitioner(); -}; -*/ -#endif // TRANSITIONER_H diff --git a/scene/animation/tween_interpolaters.cpp b/scene/animation/tween_interpolaters.cpp index 80588d643e..058a7f12bc 100644 --- a/scene/animation/tween_interpolaters.cpp +++ b/scene/animation/tween_interpolaters.cpp @@ -1,5 +1,5 @@ /*************************************************************************/ -/* tween.cpp */ +/* tween_interpolaters.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ diff --git a/scene/audio/sample_player.cpp b/scene/audio/sample_player.cpp index bcd4354975..3827d40a71 100644 --- a/scene/audio/sample_player.cpp +++ b/scene/audio/sample_player.cpp @@ -152,7 +152,7 @@ void SamplePlayer::_get_property_list(List<PropertyInfo> *p_list) const { } } - p_list->push_back( PropertyInfo( Variant::STRING, "play/play", PROPERTY_HINT_ENUM, en,PROPERTY_USAGE_EDITOR)); + p_list->push_back( PropertyInfo( Variant::STRING, "play/play", PROPERTY_HINT_ENUM, en,PROPERTY_USAGE_EDITOR|PROPERTY_USAGE_ANIMATE_AS_TRIGGER)); p_list->push_back( PropertyInfo( Variant::INT, "config/polyphony", PROPERTY_HINT_RANGE, "1,256,1")); p_list->push_back( PropertyInfo( Variant::OBJECT, "config/samples", PROPERTY_HINT_RESOURCE_TYPE, "SampleLibrary")); p_list->push_back( PropertyInfo( Variant::REAL, "default/volume_db", PROPERTY_HINT_RANGE, "-80,24,0.01")); diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp index bd24b43761..d6bbdf2d21 100644 --- a/scene/gui/color_picker.cpp +++ b/scene/gui/color_picker.cpp @@ -664,10 +664,15 @@ bool ColorPickerButton::is_editing_alpha() const{ } +ColorPicker *ColorPickerButton::get_picker() { + return picker; +} + void ColorPickerButton::_bind_methods(){ ObjectTypeDB::bind_method(_MD("set_color","color"),&ColorPickerButton::set_color); ObjectTypeDB::bind_method(_MD("get_color"),&ColorPickerButton::get_color); + ObjectTypeDB::bind_method(_MD("get_picker:ColorPicker"),&ColorPickerButton::get_picker); ObjectTypeDB::bind_method(_MD("set_edit_alpha","show"),&ColorPickerButton::set_edit_alpha); ObjectTypeDB::bind_method(_MD("is_editing_alpha"),&ColorPickerButton::is_editing_alpha); ObjectTypeDB::bind_method(_MD("_color_changed"),&ColorPickerButton::_color_changed); diff --git a/scene/gui/color_picker.h b/scene/gui/color_picker.h index 4559bc7391..f5de982200 100644 --- a/scene/gui/color_picker.h +++ b/scene/gui/color_picker.h @@ -133,6 +133,8 @@ public: void set_edit_alpha(bool p_show); bool is_editing_alpha() const; + ColorPicker *get_picker(); + ColorPickerButton(); }; diff --git a/scene/gui/color_ramp_edit.cpp b/scene/gui/color_ramp_edit.cpp index 2ab004e04b..50e1ffbec9 100644 --- a/scene/gui/color_ramp_edit.cpp +++ b/scene/gui/color_ramp_edit.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* color_ramp_edit.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "color_ramp_edit.h" #include "os/keyboard.h" diff --git a/scene/gui/color_ramp_edit.h b/scene/gui/color_ramp_edit.h index 91292eed0d..61365d9f07 100644 --- a/scene/gui/color_ramp_edit.h +++ b/scene/gui/color_ramp_edit.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* color_ramp_edit.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef SCENE_GUI_COLOR_RAMP_EDIT_H_ #define SCENE_GUI_COLOR_RAMP_EDIT_H_ diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index 666ac88055..edc8a8bcb8 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -153,6 +153,9 @@ bool Control::_set(const StringName& p_name, const Variant& p_value) { update(); } else if (name.begins_with("custom_fonts/")) { String dname = name.get_slicec('/',1); + if (data.font_override.has(dname)) { + _unref_font(data.font_override[dname]); + } data.font_override.erase(dname); notification(NOTIFICATION_THEME_CHANGED); update(); @@ -1551,7 +1554,15 @@ void Control::add_style_override(const StringName& p_name, const Ref<StyleBox>& void Control::add_font_override(const StringName& p_name, const Ref<Font>& p_font) { ERR_FAIL_COND(p_font.is_null()); + if (data.font_override.has(p_name)) { + _unref_font(data.font_override[p_name]); + } data.font_override[p_name]=p_font; + + if (p_font.is_valid()) { + _ref_font(p_font); + } + notification(NOTIFICATION_THEME_CHANGED); update(); } @@ -2244,6 +2255,33 @@ float Control::_get_rotation_deg() const { WARN_PRINT("Deprecated method Control._get_rotation_deg(): This method was renamed to get_rotation_deg. Please adapt your code accordingly, as the old method will be obsoleted."); return get_rotation_deg(); } +//needed to update the control if the font changes.. +void Control::_ref_font( Ref<Font> p_sc) { + + if (!data.font_refcount.has(p_sc)) { + data.font_refcount[p_sc]=1; + p_sc->connect("changed",this,"_font_changed"); + } else { + data.font_refcount[p_sc]+=1; + } +} + +void Control::_unref_font(Ref<Font> p_sc) { + + ERR_FAIL_COND(!data.font_refcount.has(p_sc)); + data.font_refcount[p_sc]--; + if (data.font_refcount[p_sc]==0) { + p_sc->disconnect("changed",this,"_font_changed"); + data.font_refcount.erase(p_sc); + } +} + +void Control::_font_changed(){ + + update(); + notification(NOTIFICATION_THEME_CHANGED); + minimum_size_changed(); //fonts affect minimum size pretty much almost always +} void Control::set_scale(const Vector2& p_scale){ @@ -2396,6 +2434,8 @@ void Control::_bind_methods() { ObjectTypeDB::bind_method(_MD("minimum_size_changed"), &Control::minimum_size_changed); + ObjectTypeDB::bind_method(_MD("_font_changed"), &Control::_font_changed); + BIND_VMETHOD(MethodInfo("_input_event",PropertyInfo(Variant::INPUT_EVENT,"event"))); BIND_VMETHOD(MethodInfo(Variant::VECTOR2,"get_minimum_size")); BIND_VMETHOD(MethodInfo(Variant::OBJECT,"get_drag_data",PropertyInfo(Variant::VECTOR2,"pos"))); diff --git a/scene/gui/control.h b/scene/gui/control.h index 69ee41f180..07a28de1ea 100644 --- a/scene/gui/control.h +++ b/scene/gui/control.h @@ -153,6 +153,8 @@ private: HashMap<StringName, Ref<Font>, StringNameHasher > font_override; HashMap<StringName, Color, StringNameHasher > color_override; HashMap<StringName, int, StringNameHasher > constant_override; + Map< Ref<Font>, int> font_refcount; + } data; // used internally @@ -184,6 +186,11 @@ private: void _set_rotation_deg(float p_degrees); float _get_rotation_deg() const; + void _ref_font(Ref<Font> p_sc); + void _unref_font( Ref<Font> p_sc); + void _font_changed(); + + friend class Viewport; void _modal_stack_remove(); void _modal_set_prev_focus_owner(ObjectID p_prev); diff --git a/scene/gui/custom_button.h b/scene/gui/custom_button.h deleted file mode 100644 index 2492750489..0000000000 --- a/scene/gui/custom_button.h +++ /dev/null @@ -1,43 +0,0 @@ -/*************************************************************************/ -/* custom_button.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef CUSTOM_BUTTON_H -#define CUSTOM_BUTTON_H - -/** - @author Juan Linietsky <reduzio@gmail.com> -*/ -class CustomButton{ -public: - CustomButton(); - - ~CustomButton(); - -}; - -#endif diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp index 732cbb8e72..d335399caa 100644 --- a/scene/gui/file_dialog.cpp +++ b/scene/gui/file_dialog.cpp @@ -339,6 +339,11 @@ void FileDialog::update_file_list() { } } + if (dirs.find("..")==NULL) { + //may happen if lacking permissions + dirs.push_back(".."); + } + dirs.sort_custom<NoCaseComparator>(); files.sort_custom<NoCaseComparator>(); diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp index 9123194589..ee3b8913b4 100644 --- a/scene/gui/graph_edit.cpp +++ b/scene/gui/graph_edit.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* graph_edit.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "graph_edit.h" #include "os/input.h" #include "os/keyboard.h" diff --git a/scene/gui/graph_edit.h b/scene/gui/graph_edit.h index 8a7721b9b5..ac4e71ba49 100644 --- a/scene/gui/graph_edit.h +++ b/scene/gui/graph_edit.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* graph_edit.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef GRAPH_EDIT_H #define GRAPH_EDIT_H diff --git a/scene/gui/graph_node.cpp b/scene/gui/graph_node.cpp index eef1bf79c4..94001b2ac1 100644 --- a/scene/gui/graph_node.cpp +++ b/scene/gui/graph_node.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* graph_node.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "graph_node.h" #include "method_bind_ext.inc" diff --git a/scene/gui/graph_node.h b/scene/gui/graph_node.h index dc407a6809..5a50d0d68d 100644 --- a/scene/gui/graph_node.h +++ b/scene/gui/graph_node.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* graph_node.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef GRAPH_NODE_H #define GRAPH_NODE_H diff --git a/scene/gui/grid_container.cpp b/scene/gui/grid_container.cpp index a514f1b3d7..dde9768a6d 100644 --- a/scene/gui/grid_container.cpp +++ b/scene/gui/grid_container.cpp @@ -158,6 +158,7 @@ void GridContainer::set_columns(int p_columns) { columns=p_columns; queue_sort(); + minimum_size_changed(); } diff --git a/scene/gui/item_list.cpp b/scene/gui/item_list.cpp index 66e8fe10ff..5379836746 100644 --- a/scene/gui/item_list.cpp +++ b/scene/gui/item_list.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* item_list.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "item_list.h" #include "os/os.h" #include "globals.h" diff --git a/scene/gui/item_list.h b/scene/gui/item_list.h index a4909205ef..aa6dd64c50 100644 --- a/scene/gui/item_list.h +++ b/scene/gui/item_list.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* item_list.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef ITEMLIST_H #define ITEMLIST_H diff --git a/scene/gui/line_edit.cpp b/scene/gui/line_edit.cpp index ab556ede0c..52ef57cf1c 100644 --- a/scene/gui/line_edit.cpp +++ b/scene/gui/line_edit.cpp @@ -32,6 +32,11 @@ #include "print_string.h" #include "label.h" +static bool _is_text_char(CharType c) { + + return (c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9') || c=='_'; +} + void LineEdit::_input_event(InputEvent p_event) { @@ -54,26 +59,36 @@ void LineEdit::_input_event(InputEvent p_event) { if (b.pressed) { + shift_selection_check_pre(b.mod.shift); + set_cursor_at_pixel_pos(b.x); - if (b.doubleclick) { + if (b.mod.shift) { - selection.enabled=true; - selection.begin=0; - selection.end=text.length(); - selection.doubleclick=true; - } + selection_fill_at_cursor(); + selection.creating=true; - selection.drag_attempt=false; + } else { - if ((cursor_pos<selection.begin) || (cursor_pos>selection.end) || !selection.enabled) { + if (b.doubleclick) { - selection_clear(); - selection.cursor_start=cursor_pos; - selection.creating=true; - } else if (selection.enabled) { + selection.enabled=true; + selection.begin=0; + selection.end=text.length(); + selection.doubleclick=true; + } + + selection.drag_attempt=false; + + if ((cursor_pos<selection.begin) || (cursor_pos>selection.end) || !selection.enabled) { + + selection_clear(); + selection.cursor_start=cursor_pos; + selection.creating=true; + } else if (selection.enabled) { - selection.drag_attempt=true; + selection.drag_attempt=true; + } } // if (!editable) @@ -124,7 +139,7 @@ void LineEdit::_input_event(InputEvent p_event) { case (KEY_X): { // CUT - if(k.mod.command && editable) { + if(editable) { cut_text(); } @@ -132,15 +147,13 @@ void LineEdit::_input_event(InputEvent p_event) { case (KEY_C): { // COPY - if(k.mod.command) { - copy_text(); - } + copy_text(); } break; case (KEY_V): { // PASTE - if(k.mod.command && editable) { + if(editable) { paste_text(); } @@ -149,7 +162,7 @@ void LineEdit::_input_event(InputEvent p_event) { case (KEY_Z): { // Simple One level undo - if( k.mod.command && editable) { + if(editable) { undo(); @@ -160,7 +173,7 @@ void LineEdit::_input_event(InputEvent p_event) { case (KEY_U): { // Delete from start to cursor - if( k.mod.command && editable) { + if(editable) { selection_clear(); undo_text = text; @@ -184,7 +197,7 @@ void LineEdit::_input_event(InputEvent p_event) { case (KEY_Y): { // PASTE (Yank for unix users) - if(k.mod.command && editable) { + if(editable) { paste_text(); } @@ -192,7 +205,7 @@ void LineEdit::_input_event(InputEvent p_event) { } break; case (KEY_K): { // Delete from cursor_pos to end - if(k.mod.command && editable) { + if(editable) { selection_clear(); undo_text = text; @@ -215,7 +228,7 @@ void LineEdit::_input_event(InputEvent p_event) { } - if (!k.mod.alt && !k.mod.meta && !k.mod.command) { + if (!k.mod.meta) { bool handled=true; switch (code) { @@ -232,13 +245,45 @@ void LineEdit::_input_event(InputEvent p_event) { case KEY_BACKSPACE: { - if (editable) { - undo_text = text; - if (selection.enabled) - selection_delete(); - else - delete_char(); + if (!editable) + break; + + if (selection.enabled) { + undo_text=text; + selection_delete(); + break; + } + +#ifdef APPLE_STYLE_KEYS + if (k.mod.alt) { +#else + if (k.mod.alt) { + handled=false; + break; + } else if (k.mod.command) { +#endif + int cc=cursor_pos; + bool prev_char=false; + + while (cc>0) { + bool ischar=_is_text_char(text[cc-1]); + + if (prev_char && !ischar) + break; + + prev_char=ischar; + cc--; + } + + delete_text(cc, cursor_pos); + + set_cursor_pos(cc); + + } else { + undo_text=text; + delete_char(); } + } break; case KEY_KP_4: { if (k.unicode != 0) { @@ -248,8 +293,39 @@ void LineEdit::_input_event(InputEvent p_event) { // numlock disabled. fallthrough to key_left } case KEY_LEFT: { + shift_selection_check_pre(k.mod.shift); - set_cursor_pos(get_cursor_pos()-1); + +#ifdef APPLE_STYLE_KEYS + if (k.mod.command) { + set_cursor_pos(0); + } else if (k.mod.alt) { + +#else + if (k.mod.alt) { + handled=false; + break; + } else if (k.mod.command) { +#endif + bool prev_char=false; + int cc=cursor_pos; + + while (cc>0) { + bool ischar=_is_text_char(text[cc-1]); + + if (prev_char && !ischar) + break; + + prev_char=ischar; + cc--; + } + + set_cursor_pos(cc); + + } else { + set_cursor_pos(get_cursor_pos()-1); + } + shift_selection_check_post(k.mod.shift); } break; @@ -263,25 +339,88 @@ void LineEdit::_input_event(InputEvent p_event) { case KEY_RIGHT: { shift_selection_check_pre(k.mod.shift); - set_cursor_pos(get_cursor_pos()+1); + +#ifdef APPLE_STYLE_KEYS + if (k.mod.command) { + set_cursor_pos(text.length()); + } else if (k.mod.alt) { +#else + if (k.mod.alt) { + handled=false; + break; + } else if (k.mod.command) { +#endif + bool prev_char=false; + int cc=cursor_pos; + + while (cc<text.length()) { + bool ischar=_is_text_char(text[cc]); + + if (prev_char && !ischar) + break; + + prev_char=ischar; + cc++; + } + + set_cursor_pos(cc); + + } else { + set_cursor_pos(get_cursor_pos()+1); + } + shift_selection_check_post(k.mod.shift); + } break; case KEY_DELETE: { - if (k.mod.shift && !k.mod.command && !k.mod.alt && editable) { + if (!editable) + break; + + if (k.mod.shift && !k.mod.command && !k.mod.alt) { cut_text(); break; } - if (editable) { - undo_text = text; - if (selection.enabled) - selection_delete(); - else if (cursor_pos<text.length()) { + if (selection.enabled) { + undo_text=text; + selection_delete(); + break; + } + + int text_len = text.length(); + + if (cursor_pos==text_len) + break; // nothing to do + +#ifdef APPLE_STYLE_KEYS + if (k.mod.alt) { +#else + if (k.mod.alt) { + handled=false; + break; + } else if (k.mod.command) { +#endif + int cc=cursor_pos; + + bool prev_char=false; + + while (cc<text.length()) { - set_cursor_pos(get_cursor_pos()+1); - delete_char(); + bool ischar=_is_text_char(text[cc]); + + if (prev_char && !ischar) + break; + prev_char=ischar; + cc++; } + + delete_text(cursor_pos,cc); + + } else { + undo_text=text; + set_cursor_pos(cursor_pos+1); + delete_char(); } } break; @@ -339,8 +478,6 @@ void LineEdit::_input_event(InputEvent p_event) { } } - - selection.old_shift=k.mod.shift; update(); } @@ -577,7 +714,7 @@ void LineEdit::undo() { void LineEdit::shift_selection_check_pre(bool p_shift) { - if (!selection.old_shift && p_shift) { + if (!selection.enabled && p_shift) { selection.cursor_start=cursor_pos; } if (!p_shift) @@ -673,6 +810,39 @@ void LineEdit::delete_char() { _change_notify("text"); } +void LineEdit::delete_text(int p_from_column, int p_to_column) { + + undo_text = text; + + if (text.size() > 0) + { + Ref<Font> font = get_font("font"); + if (font != NULL) { + for (int i = p_from_column; i < p_to_column; i++) + cached_width -= font->get_char_size(text[i]).width; + } + } + else + { + cached_width = 0; + } + + text.erase(p_from_column,p_to_column-p_from_column); + cursor_pos-=CLAMP( cursor_pos-p_from_column, 0, p_to_column-p_from_column); + + if (cursor_pos>=text.length()) { + + cursor_pos=text.length(); + } + if (window_pos>cursor_pos) { + + window_pos=cursor_pos; + } + + emit_signal("text_changed",text); + _change_notify("text"); +} + void LineEdit::set_text(String p_text) { clear_internal(); @@ -820,46 +990,14 @@ void LineEdit::selection_clear() { selection.cursor_start=0; selection.enabled=false; selection.creating=false; - selection.old_shift=false; selection.doubleclick=false; update(); } - void LineEdit::selection_delete() { - if (selection.enabled) { - - undo_text = text; - - if (text.size() > 0) - { - Ref<Font> font = get_font("font"); - if (font != NULL) { - for (int i = selection.begin; i < selection.end; i++) - cached_width -= font->get_char_size(text[i]).width; - } - } - else - { - cached_width = 0; - } - - text.erase(selection.begin,selection.end-selection.begin); - cursor_pos-=CLAMP( cursor_pos-selection.begin, 0, selection.end-selection.begin); - - if (cursor_pos>=text.length()) { - - cursor_pos=text.length(); - } - if (window_pos>cursor_pos) { - - window_pos=cursor_pos; - } - - emit_signal("text_changed",text); - _change_notify("text"); - }; + if (selection.enabled) + delete_text(selection.begin,selection.end); selection_clear(); } @@ -946,7 +1084,6 @@ void LineEdit::select(int p_from, int p_to) { selection.begin=p_from; selection.end=p_to; selection.creating=false; - selection.old_shift=false; selection.doubleclick=false; update(); } diff --git a/scene/gui/line_edit.h b/scene/gui/line_edit.h index 586a54e950..ce3958db02 100644 --- a/scene/gui/line_edit.h +++ b/scene/gui/line_edit.h @@ -83,7 +83,6 @@ private: int cursor_start; bool enabled; bool creating; - bool old_shift; bool doubleclick; bool drag_attempt; } selection; @@ -123,6 +122,7 @@ public: void select_all(); void delete_char(); + void delete_text(int p_from_column, int p_to_column); void set_text(String p_text); String get_text() const; void set_cursor_pos(int p_pos); diff --git a/scene/gui/link_button.cpp b/scene/gui/link_button.cpp index 065423ae2d..62829fd5a4 100644 --- a/scene/gui/link_button.cpp +++ b/scene/gui/link_button.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* link_button.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "link_button.h" diff --git a/scene/gui/link_button.h b/scene/gui/link_button.h index d218482337..9978f66cc0 100644 --- a/scene/gui/link_button.h +++ b/scene/gui/link_button.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* link_button.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef LINKBUTTON_H #define LINKBUTTON_H diff --git a/scene/gui/patch_9_frame.cpp b/scene/gui/patch_9_frame.cpp index 3ecee7328b..a6a3490ad2 100644 --- a/scene/gui/patch_9_frame.cpp +++ b/scene/gui/patch_9_frame.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* patch_9_frame.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "patch_9_frame.h" #include "servers/visual_server.h" diff --git a/scene/gui/patch_9_frame.h b/scene/gui/patch_9_frame.h index 52e2324c3d..7763db567a 100644 --- a/scene/gui/patch_9_frame.h +++ b/scene/gui/patch_9_frame.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* patch_9_frame.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef PATCH_9_FRAME_H #define PATCH_9_FRAME_H diff --git a/scene/gui/tab_container.cpp b/scene/gui/tab_container.cpp index d19e5f0d60..5eb579f1d2 100644 --- a/scene/gui/tab_container.cpp +++ b/scene/gui/tab_container.cpp @@ -412,8 +412,9 @@ void TabContainer::_notification(int p_what) { } break; case NOTIFICATION_THEME_CHANGED: { - - call_deferred("set_current_tab",get_current_tab()); //wait until all changed theme + if (get_tab_count() > 0) { + call_deferred("set_current_tab",get_current_tab()); //wait until all changed theme + } } break; } } @@ -704,13 +705,13 @@ Size2 TabContainer::get_minimum_size() const { if (c->is_set_as_toplevel()) continue; - if (!c->has_meta("_tab_name")) - continue; + //if (!c->has_meta("_tab_name")) + // continue; if (!c->is_visible()) continue; - Size2 cms = c->get_minimum_size(); + Size2 cms = c->get_combined_minimum_size(); ms.x=MAX(ms.x,cms.x); ms.y=MAX(ms.y,cms.y); } @@ -722,6 +723,9 @@ Size2 TabContainer::get_minimum_size() const { ms.y+=MAX(tab_bg->get_minimum_size().y,tab_fg->get_minimum_size().y); ms.y+=font->get_height(); + Ref<StyleBox> sb = get_stylebox("panel"); + ms+=sb->get_minimum_size(); + return ms; } diff --git a/scene/gui/text_edit.cpp b/scene/gui/text_edit.cpp index 49d7527786..9342d077eb 100644 --- a/scene/gui/text_edit.cpp +++ b/scene/gui/text_edit.cpp @@ -417,8 +417,22 @@ void TextEdit::_notification(int p_what) { _update_caches(); } break; + case MainLoop::NOTIFICATION_WM_FOCUS_IN: { + window_has_focus = true; + draw_caret = true; + update(); + } break; + case MainLoop::NOTIFICATION_WM_FOCUS_OUT: { + window_has_focus = false; + draw_caret = false; + update(); + } break; case NOTIFICATION_DRAW: { + if ((!has_focus() && !menu->has_focus()) || !window_has_focus) { + draw_caret = false; + } + if (draw_breakpoint_gutter) { breakpoint_gutter_width = (get_row_height() * 55) / 100; cache.breakpoint_gutter_width = breakpoint_gutter_width; @@ -1027,11 +1041,8 @@ void TextEdit::_notification(int p_what) { if (completion_active) { // code completion box Ref<StyleBox> csb = get_stylebox("completion"); - Ref<StyleBox> csel = get_stylebox("completion_selected"); int maxlines = get_constant("completion_lines"); int cmax_width = get_constant("completion_max_width")*cache.font->get_char_size('x').x; - Color existing = get_color("completion_existing"); - existing.a=0.2; int scrollw = get_constant("completion_scroll_width"); Color scrollc = get_color("completion_scroll_color"); @@ -1075,11 +1086,12 @@ void TextEdit::_notification(int p_what) { draw_style_box(csb,Rect2(completion_rect.pos-csb->get_offset(),completion_rect.size+csb->get_minimum_size()+Size2(scrollw,0))); - + if (cache.completion_background_color.a>0.01) { + VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(completion_rect.pos,completion_rect.size+Size2(scrollw,0)),cache.completion_background_color); + } int line_from = CLAMP(completion_index - lines/2, 0, completion_options.size() - lines); - draw_style_box(csel,Rect2(Point2(completion_rect.pos.x,completion_rect.pos.y+(completion_index-line_from)*get_row_height()),Size2(completion_rect.size.width,get_row_height()))); - - draw_rect(Rect2(completion_rect.pos,Size2(nofs,completion_rect.size.height)),existing); + VisualServer::get_singleton()->canvas_item_add_rect(ci,Rect2(Point2(completion_rect.pos.x,completion_rect.pos.y+(completion_index-line_from)*get_row_height()),Size2(completion_rect.size.width,get_row_height())),cache.completion_selected_color); + draw_rect(Rect2(completion_rect.pos,Size2(nofs,completion_rect.size.height)),cache.completion_existing_color); @@ -1195,6 +1207,9 @@ void TextEdit::_notification(int p_what) { } break; case NOTIFICATION_FOCUS_ENTER: { + if (!caret_blink_enabled) { + draw_caret = true; + } if (OS::get_singleton()->has_virtual_keyboard()) OS::get_singleton()->show_virtual_keyboard(get_text(),get_global_rect()); @@ -1452,10 +1467,10 @@ void TextEdit::_input_event(const InputEvent& p_input_event) { } if (mb.pressed) { - if (mb.button_index==BUTTON_WHEEL_UP) { + if (mb.button_index==BUTTON_WHEEL_UP && !mb.mod.command) { v_scroll->set_val( v_scroll->get_val() -3 ); } - if (mb.button_index==BUTTON_WHEEL_DOWN) { + if (mb.button_index==BUTTON_WHEEL_DOWN && !mb.mod.command) { v_scroll->set_val( v_scroll->get_val() +3 ); } if (mb.button_index==BUTTON_WHEEL_LEFT) { @@ -3270,6 +3285,9 @@ void TextEdit::_update_caches() { cache.style_normal=get_stylebox("normal"); cache.style_focus=get_stylebox("focus"); + cache.completion_background_color=get_color("completion_background_color"); + cache.completion_selected_color=get_color("completion_selected_color"); + cache.completion_existing_color=get_color("completion_existing_color"); cache.font=get_font("font"); cache.caret_color=get_color("caret_color"); cache.line_number_color=get_color("line_number_color"); @@ -3837,8 +3855,14 @@ void TextEdit::undo() { } } - cursor_set_line(undo_stack_pos->get().from_line); - cursor_set_column(undo_stack_pos->get().from_column); + if (undo_stack_pos->get().type == TextOperation::TYPE_REMOVE) { + cursor_set_line(undo_stack_pos->get().to_line); + cursor_set_column(undo_stack_pos->get().to_column); + _cancel_code_hint(); + } else { + cursor_set_line(undo_stack_pos->get().from_line); + cursor_set_column(undo_stack_pos->get().from_column); + } update(); } @@ -3981,28 +4005,19 @@ void TextEdit::set_completion(bool p_enabled,const Vector<String>& p_prefixes) { void TextEdit::_confirm_completion() { - String remaining=completion_current.substr(completion_base.length(),completion_current.length()-completion_base.length()); - String l = text[cursor.line]; - bool same=true; - //if what is going to be inserted is the same as what it is, don't change it - for(int i=0;i<remaining.length();i++) { - int c=i+cursor.column; - if (c>=l.length() || l[c]!=remaining[i]) { - same=false; - break; - } - } + begin_complex_operation(); - if (same) - cursor_set_column(cursor.column+remaining.length()); - else { - insert_text_at_cursor(remaining); - if (remaining.ends_with("(") && auto_brace_completion_enabled) { - insert_text_at_cursor(")"); - cursor.column--; - } + _remove_text(cursor.line, cursor.column - completion_base.length(), cursor.line, cursor.column); + cursor_set_column(cursor.column - completion_base.length(), false); + insert_text_at_cursor(completion_current); + + if (completion_current.ends_with("(") && auto_brace_completion_enabled) { + insert_text_at_cursor(")"); + cursor.column--; } + end_complex_operation(); + _cancel_completion(); } @@ -4105,30 +4120,29 @@ void TextEdit::_update_completion_candidates() { completion_index=0; completion_base=s; int ci_match=0; + Vector<float> sim_cache; for(int i=0;i<completion_strings.size();i++) { - if (completion_strings[i].begins_with(s)) { + if (s.is_subsequence_ofi(completion_strings[i])) { // don't remove duplicates if no input is provided - if (completion_options.find(completion_strings[i]) != -1 && s != "") { - continue; - } - completion_options.push_back(completion_strings[i]); - int m=0; - int max=MIN(completion_current.length(),completion_strings[i].length()); - if (max<ci_match) + if (s != "" && completion_options.find(completion_strings[i]) != -1) { continue; - for(int j=0;j<max;j++) { - - if (j>=completion_strings[i].length()) - break; - if (completion_current[j]!=completion_strings[i][j]) - break; - m++; } - if (m>ci_match) { - ci_match=m; - completion_index=completion_options.size()-1; + // Calculate the similarity to keep completions in good order + float similarity = s.similarity(completion_strings[i]); + int comp_size = completion_options.size(); + if (comp_size == 0) { + completion_options.push_back(completion_strings[i]); + sim_cache.push_back(similarity); + } else { + float comp_sim; + int pos = 0; + do { + comp_sim = sim_cache[pos++]; + } while(pos < comp_size && similarity <= comp_sim); + pos--; // Pos will be off by one + completion_options.insert(pos, completion_strings[i]); + sim_cache.insert(pos, similarity); } - } } @@ -4141,7 +4155,8 @@ void TextEdit::_update_completion_candidates() { } - completion_current=completion_options[completion_index]; + // The top of the list is the best match + completion_current=completion_options[0]; #if 0 // even there's only one option, user still get the chance to choose using it or not if (completion_options.size()==1) { @@ -4153,8 +4168,6 @@ void TextEdit::_update_completion_candidates() { } #endif - if (completion_options.size()==1 && s==completion_options[0]) - _cancel_completion(); completion_enabled=true; } @@ -4518,6 +4531,7 @@ TextEdit::TextEdit() { brace_matching_enabled=false; auto_indent=false; insert_mode = false; + window_has_focus=true; menu = memnew( PopupMenu ); add_child(menu); diff --git a/scene/gui/text_edit.h b/scene/gui/text_edit.h index 22f024c491..acac687b59 100644 --- a/scene/gui/text_edit.h +++ b/scene/gui/text_edit.h @@ -74,6 +74,9 @@ class TextEdit : public Control { Ref<StyleBox> style_normal; Ref<StyleBox> style_focus; Ref<Font> font; + Color completion_background_color; + Color completion_selected_color; + Color completion_existing_color; Color caret_color; Color line_number_color; Color font_color; @@ -217,6 +220,7 @@ class TextEdit : public Control { Timer *caret_blink_timer; bool caret_blink_enabled; bool draw_caret; + bool window_has_focus; bool setting_row; bool wrap; diff --git a/scene/gui/tree.cpp b/scene/gui/tree.cpp index 08fe847a33..f8516f8f5d 100644 --- a/scene/gui/tree.cpp +++ b/scene/gui/tree.cpp @@ -811,6 +811,8 @@ void Tree::update_cache() { cache.item_margin=get_constant("item_margin"); cache.button_margin=get_constant("button_margin"); cache.guide_width=get_constant("guide_width"); + cache.draw_relationship_lines=get_constant("draw_relationship_lines"); + cache.relationship_line_color=get_color("relationship_line_color"); cache.title_button = get_stylebox("title_button_normal"); cache.title_button_pressed = get_stylebox("title_button_pressed"); @@ -1295,9 +1297,21 @@ int Tree::draw_item(const Point2i& p_pos,const Point2& p_draw_ofs, const Size2& while (c) { + if (cache.draw_relationship_lines == 1){ + int root_ofs = children_pos.x + (hide_folding?cache.hseparation:cache.item_margin); + int parent_ofs = p_pos.x + (hide_folding?cache.hseparation:cache.item_margin); + Point2i root_pos = Point2i(root_ofs, children_pos.y + label_h/2)-cache.offset+p_draw_ofs; + if (c->get_children() > 0) + root_pos -= Point2i(cache.arrow->get_width(),0); + + Point2i parent_pos = Point2i(parent_ofs - cache.arrow->get_width()/2, p_pos.y + label_h/2 + cache.arrow->get_height()/2)-cache.offset+p_draw_ofs; + VisualServer::get_singleton()->canvas_item_add_line(ci, root_pos, Point2i(parent_pos.x, root_pos.y), cache.relationship_line_color); + VisualServer::get_singleton()->canvas_item_add_line(ci, Point2i(parent_pos.x, root_pos.y), parent_pos, cache.relationship_line_color); + } + int child_h=draw_item(children_pos, p_draw_ofs, p_draw_size, c ); - if (child_h<0) + if (child_h<0 && cache.draw_relationship_lines == 0) return -1; // break, stop drawing, no need to anymore htotal+=child_h; @@ -3674,4 +3688,3 @@ Tree::~Tree() { } } - diff --git a/scene/gui/tree.h b/scene/gui/tree.h index 1dad26dffe..0172546c1d 100644 --- a/scene/gui/tree.h +++ b/scene/gui/tree.h @@ -377,6 +377,7 @@ friend class TreeItem; Color font_color_selected; Color guide_color; Color drop_position_color; + Color relationship_line_color; int hseparation; int vseparation; @@ -384,6 +385,7 @@ friend class TreeItem; int guide_width; int button_margin; Point2 offset; + int draw_relationship_lines; enum ClickType { CLICK_NONE, @@ -532,4 +534,3 @@ public: VARIANT_ENUM_CAST( Tree::SelectMode ); #endif - diff --git a/scene/gui/video_player.cpp b/scene/gui/video_player.cpp index 26227d6389..e9ff76bd91 100644 --- a/scene/gui/video_player.cpp +++ b/scene/gui/video_player.cpp @@ -208,10 +208,17 @@ void VideoPlayer::set_stream(const Ref<VideoStream> &p_stream) { playback->set_paused(paused); texture=playback->get_texture(); + const int channels = playback->get_channels(); + AudioServer::get_singleton()->lock(); - resampler.setup(playback->get_channels(),playback->get_mix_rate(),server_mix_rate,buffering_ms,0); + if (channels > 0) + resampler.setup(channels,playback->get_mix_rate(),server_mix_rate,buffering_ms,0); + else + resampler.clear(); AudioServer::get_singleton()->unlock(); - playback->set_mix_callback(_audio_mix_callback,this); + + if (channels > 0) + playback->set_mix_callback(_audio_mix_callback,this); } else { texture.unref(); diff --git a/scene/main/http_request.cpp b/scene/main/http_request.cpp index be0d0c012d..040d509286 100644 --- a/scene/main/http_request.cpp +++ b/scene/main/http_request.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* http_request.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "http_request.h" void HTTPRequest::_redirect_request(const String& p_new_url) { diff --git a/scene/main/http_request.h b/scene/main/http_request.h index 7659d9e6d6..7c3ccb2eb9 100644 --- a/scene/main/http_request.h +++ b/scene/main/http_request.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* http_request.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef HTTPREQUEST_H #define HTTPREQUEST_H diff --git a/scene/main/instance_placeholder.cpp b/scene/main/instance_placeholder.cpp index f822107918..fb047ea5e4 100644 --- a/scene/main/instance_placeholder.cpp +++ b/scene/main/instance_placeholder.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* instance_placeholder.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "instance_placeholder.h" #include "scene/resources/packed_scene.h" diff --git a/scene/main/instance_placeholder.h b/scene/main/instance_placeholder.h index 9c47655ce7..ef76686196 100644 --- a/scene/main/instance_placeholder.h +++ b/scene/main/instance_placeholder.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* instance_placeholder.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef INSTANCE_PLACEHOLDER_H #define INSTANCE_PLACEHOLDER_H diff --git a/scene/main/misc.cpp b/scene/main/misc.cpp deleted file mode 100644 index 35d8b4cdfb..0000000000 --- a/scene/main/misc.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/*************************************************************************/ -/* misc.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "misc.h" - -Misc::Misc() -{ -} - - -Misc::~Misc() -{ -} - - diff --git a/scene/main/misc.h b/scene/main/misc.h deleted file mode 100644 index d5db8c3247..0000000000 --- a/scene/main/misc.h +++ /dev/null @@ -1,45 +0,0 @@ -/*************************************************************************/ -/* misc.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef MISC_H -#define MISC_H - -#include "scene/main/node.h" -/** - @author Juan Linietsky <reduzio@gmail.com> -*/ -class Misc : public Node { - - OBJ_TYPE( Misc, Node ); -public: - Misc(); - ~Misc(); - -}; - -#endif diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 50b0fe224e..11b400d4a9 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -2081,6 +2081,10 @@ void Node::update_configuration_warning() { } +bool Node::is_owned_by_parent() const { + return data.parent_owned; +} + void Node::_bind_methods() { ObjectTypeDB::bind_method(_MD("_add_child_below_node","node:Node","child_node:Node","legible_unique_name"),&Node::add_child_below_node,DEFVAL(false)); diff --git a/scene/main/node.h b/scene/main/node.h index a3b8d8de81..88334f32f0 100644 --- a/scene/main/node.h +++ b/scene/main/node.h @@ -313,6 +313,8 @@ public: NodePath get_import_path() const; #endif + bool is_owned_by_parent() const; + void get_argument_options(const StringName& p_function,int p_idx,List<String>*r_options) const; void clear_internal_tree_resource_paths(); diff --git a/scene/main/scene_main_loop.h b/scene/main/scene_main_loop.h index 15604a3460..38d13c0447 100644 --- a/scene/main/scene_main_loop.h +++ b/scene/main/scene_main_loop.h @@ -33,7 +33,6 @@ #include "os/main_loop.h" #include "scene/resources/world.h" #include "scene/resources/world_2d.h" -#include "scene/main/scene_singleton.h" #include "os/thread_safe.h" #include "self_list.h" /** diff --git a/scene/main/scene_singleton.cpp b/scene/main/scene_singleton.cpp deleted file mode 100644 index 3dcc6b1204..0000000000 --- a/scene/main/scene_singleton.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/*************************************************************************/ -/* scene_singleton.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "scene_singleton.h" - diff --git a/scene/main/scene_singleton.h b/scene/main/scene_singleton.h deleted file mode 100644 index 0b209f7944..0000000000 --- a/scene/main/scene_singleton.h +++ /dev/null @@ -1,36 +0,0 @@ -/*************************************************************************/ -/* scene_singleton.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef SCENE_SINGLETON_H -#define SCENE_SINGLETON_H - - -#include "reference.h" - - -#endif // SCENE_SINGLETON_H diff --git a/scene/main/viewport.cpp b/scene/main/viewport.cpp index 79502c74ce..a1df7062ea 100644 --- a/scene/main/viewport.cpp +++ b/scene/main/viewport.cpp @@ -1574,6 +1574,14 @@ void Viewport::_gui_call_input(Control *p_control,const InputEvent& p_input) { // _block(); + + //mouse wheel events can't be stopped + bool cant_stop_me_now = (p_input.type==InputEvent::MOUSE_BUTTON && + (p_input.mouse_button.button_index==BUTTON_WHEEL_DOWN || + p_input.mouse_button.button_index==BUTTON_WHEEL_UP || + p_input.mouse_button.button_index==BUTTON_WHEEL_LEFT || + p_input.mouse_button.button_index==BUTTON_WHEEL_RIGHT ) ); + CanvasItem *ci=p_control; while(ci) { @@ -1589,7 +1597,7 @@ void Viewport::_gui_call_input(Control *p_control,const InputEvent& p_input) { break; if (gui.key_event_accepted) break; - if (control->data.stop_mouse && (p_input.type==InputEvent::MOUSE_BUTTON || p_input.type==InputEvent::MOUSE_MOTION)) + if (!cant_stop_me_now && control->data.stop_mouse && (p_input.type==InputEvent::MOUSE_BUTTON || p_input.type==InputEvent::MOUSE_MOTION)) break; } @@ -1836,8 +1844,9 @@ void Viewport::_gui_input_event(InputEvent p_event) { Size2 pos = mpos; pos = gui.focus_inv_xform.xform(pos); - - gui.mouse_over->drop_data(pos,gui.drag_data); + if (gui.mouse_over->can_drop_data(pos,gui.drag_data)) { + gui.mouse_over->drop_data(pos,gui.drag_data); + } gui.drag_data=Variant(); _propagate_viewport_notification(this,NOTIFICATION_DRAG_END); //change mouse accordingly @@ -2360,8 +2369,8 @@ void Viewport::input(const InputEvent& p_event) { ERR_FAIL_COND(!is_inside_tree()); - get_tree()->_call_input_pause(input_group,"_input",p_event); _gui_input_event(p_event); + get_tree()->_call_input_pause(input_group,"_input",p_event); //get_tree()->call_group(SceneTree::GROUP_CALL_REVERSE|SceneTree::GROUP_CALL_REALTIME|SceneTree::GROUP_CALL_MULIILEVEL,gui_input_group,"_gui_input",p_event); //special one for GUI, as controls use their own process check } diff --git a/scene/register_scene_types.cpp b/scene/register_scene_types.cpp index 54b4ddca9e..c83ab88c73 100644 --- a/scene/register_scene_types.cpp +++ b/scene/register_scene_types.cpp @@ -172,7 +172,6 @@ #include "scene/resources/world.h" #include "scene/resources/world_2d.h" -#include "scene/resources/volume.h" #include "scene/resources/sample_library.h" #include "scene/resources/audio_stream.h" @@ -271,7 +270,28 @@ void register_scene_types() { resource_loader_shader = memnew( ResourceFormatLoaderShader ); ResourceLoader::add_resource_format_loader( resource_loader_shader ); - make_default_theme(); + bool default_theme_hidpi=GLOBAL_DEF("display/use_hidpi_theme",false); + Globals::get_singleton()->set_custom_property_info("display/use_hidpi_theme",PropertyInfo(Variant::BOOL,"display/use_hidpi_theme",PROPERTY_HINT_NONE,"",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED)); + String theme_path = GLOBAL_DEF("display/custom_theme",""); + Globals::get_singleton()->set_custom_property_info("display/custom_theme",PropertyInfo(Variant::STRING,"display/custom_theme",PROPERTY_HINT_FILE,"*.tres,*.res",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED)); + String font_path = GLOBAL_DEF("display/custom_theme_font",""); + Globals::get_singleton()->set_custom_property_info("display/custom_theme_font",PropertyInfo(Variant::STRING,"display/custom_theme_font",PROPERTY_HINT_FILE,"*.tres,*.res,*.fnt",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED)); + + + if (theme_path!=String()) { + Ref<Theme> theme = ResourceLoader::load(theme_path); + if (theme.is_valid()) { + Theme::set_default(theme); + } + } else { + + Ref<Font> font; + if (font_path!=String()) { + font=ResourceLoader::load(font_path); + } + make_default_theme(default_theme_hidpi,font); + } + OS::get_singleton()->yield(); //may take time to init @@ -455,31 +475,10 @@ void register_scene_types() { AcceptDialog::set_swap_ok_cancel( GLOBAL_DEF("display/swap_ok_cancel",bool(OS::get_singleton()->get_swap_ok_cancel())) ); ObjectTypeDB::register_type<SamplePlayer>(); - - -// ObjectTypeDB::register_type<StaticBody>(); -// ObjectTypeDB::register_type<RigidBody>(); -// ObjectTypeDB::register_type<CharacterBody>(); -// ObjectTypeDB::register_type<BodyVolumeSphere>(); - //ObjectTypeDB::register_type<BodyVolumeBox>(); - //ObjectTypeDB::register_type<BodyVolumeCylinder>(); - //ObjectTypeDB::register_type<BodyVolumeCapsule>(); - //ObjectTypeDB::register_type<PhysicsJointPin>(); - - - - ObjectTypeDB::register_type<StreamPlayer>(); ObjectTypeDB::register_type<EventPlayer>(); - /* disable types by default, only editors should enable them */ - //ObjectTypeDB::set_type_enabled("BodyVolumeSphere",false); - //ObjectTypeDB::set_type_enabled("BodyVolumeBox",false); - //ObjectTypeDB::set_type_enabled("BodyVolumeCapsule",false); - //ObjectTypeDB::set_type_enabled("BodyVolumeCylinder",false); - //ObjectTypeDB::set_type_enabled("BodyVolumeConvexPolygon",false); - ObjectTypeDB::register_type<CanvasItemMaterial>(); ObjectTypeDB::register_virtual_type<CanvasItem>(); ObjectTypeDB::register_type<Node2D>(); @@ -600,11 +599,11 @@ void register_scene_types() { OS::get_singleton()->yield(); //may take time to init - //ObjectTypeDB::register_type<Volume>(); ObjectTypeDB::register_type<Sample>(); ObjectTypeDB::register_type<SampleLibrary>(); ObjectTypeDB::register_virtual_type<AudioStream>(); ObjectTypeDB::register_virtual_type<AudioStreamPlayback>(); +//TODO: Adapt to the new AudioStream API or drop (GH-3307) // ObjectTypeDB::register_type<AudioStreamGibberish>(); ObjectTypeDB::register_virtual_type<VideoStream>(); diff --git a/scene/resources/animation.cpp b/scene/resources/animation.cpp index f7d5ddc744..8be39e3021 100644 --- a/scene/resources/animation.cpp +++ b/scene/resources/animation.cpp @@ -38,6 +38,8 @@ bool Animation::_set(const StringName& p_name, const Variant& p_value) { set_length(p_value); else if (name=="loop") set_loop(p_value); + else if (name=="loop_interpolation") + set_loop_interpolation(p_value); else if (name=="step") set_step(p_value); else if (name.begins_with("tracks/")) { @@ -72,6 +74,8 @@ bool Animation::_set(const StringName& p_name, const Variant& p_value) { track_set_path(track,p_value); else if (what=="interp") track_set_interpolation_type(track,InterpolationType(p_value.operator int())); + else if (what=="imported") + track_set_imported(track,p_value); else if (what == "keys" || what=="key_values") { if (track_get_type(track)==TYPE_TRANSFORM) { @@ -154,8 +158,21 @@ bool Animation::_set(const StringName& p_name, const Variant& p_value) { Dictionary d = p_value; ERR_FAIL_COND_V(!d.has("times"),false); ERR_FAIL_COND_V(!d.has("values"),false); - if (d.has("cont")) - vt->continuous=d["cont"]; + if (d.has("cont")) { + bool v = d["cont"]; + vt->update_mode=v?UPDATE_CONTINUOUS:UPDATE_DISCRETE; + } + + if (d.has("update")) { + int um =d["update"]; + if (um<0) + um=0; + else if (um>2) + um=2; + vt->update_mode=UpdateMode(um); + } + + DVector<float> times=d["times"]; Array values=d["values"]; @@ -253,6 +270,8 @@ bool Animation::_get(const StringName& p_name,Variant &r_ret) const { r_ret= length; else if (name=="loop") r_ret= loop; + else if (name=="loop_interpolation") + r_ret= loop_interpolation; else if (name=="step") r_ret= step; else if (name.begins_with("tracks/")) { @@ -276,6 +295,8 @@ bool Animation::_get(const StringName& p_name,Variant &r_ret) const { r_ret=track_get_path(track); else if (what=="interp") r_ret = track_get_interpolation_type(track); + else if (what=="imported") + r_ret = track_is_imported(track); else if (what=="keys") { if (track_get_type(track)==TYPE_TRANSFORM) { @@ -353,7 +374,7 @@ bool Animation::_get(const StringName& p_name,Variant &r_ret) const { d["transitions"]=key_transitions; d["values"]=key_values; if (track_get_type(track)==TYPE_VALUE) { - d["cont"]=value_track_is_continuous(track); + d["update"]=value_track_get_update_mode(track); } r_ret=d; @@ -394,7 +415,7 @@ bool Animation::_get(const StringName& p_name,Variant &r_ret) const { d["transitions"]=key_transitions; d["values"]=key_values; if (track_get_type(track)==TYPE_VALUE) { - d["cont"]=value_track_is_continuous(track); + d["update"]=value_track_get_update_mode(track); } r_ret=d; @@ -416,6 +437,7 @@ void Animation::_get_property_list( List<PropertyInfo> *p_list) const { p_list->push_back( PropertyInfo( Variant::REAL, "length", PROPERTY_HINT_RANGE, "0.001,99999,0.001")); p_list->push_back( PropertyInfo( Variant::BOOL, "loop" )); + p_list->push_back( PropertyInfo( Variant::BOOL, "loop_interpolation")); p_list->push_back( PropertyInfo( Variant::REAL, "step", PROPERTY_HINT_RANGE, "0,4096,0.001" )); for (int i=0;i<tracks.size();i++) { @@ -423,6 +445,7 @@ void Animation::_get_property_list( List<PropertyInfo> *p_list) const { p_list->push_back( PropertyInfo( Variant::STRING, "tracks/"+itos(i)+"/type", PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR) ); p_list->push_back( PropertyInfo( Variant::NODE_PATH, "tracks/"+itos(i)+"/path", PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR) ); p_list->push_back( PropertyInfo( Variant::INT, "tracks/"+itos(i)+"/interp", PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR) ); + p_list->push_back( PropertyInfo( Variant::BOOL, "tracks/"+itos(i)+"/imported", PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR) ); p_list->push_back( PropertyInfo( Variant::ARRAY, "tracks/"+itos(i)+"/keys", PROPERTY_HINT_NONE,"",PROPERTY_USAGE_NOEDITOR) ); } } @@ -1221,7 +1244,7 @@ T Animation::_interpolate( const Vector< TKey<T> >& p_keys, float p_time, Inter float c=0; // prepare for all cases of interpolation - if (loop) { + if (loop && loop_interpolation) { // loop if (idx>=0) { @@ -1373,7 +1396,7 @@ Variant Animation::value_track_interpolate(int p_track, float p_time) const { bool ok; - Variant res = _interpolate( vt->values, p_time, vt->interpolation, &ok ); + Variant res = _interpolate( vt->values, p_time, vt->update_mode==UPDATE_CONTINUOUS?vt->interpolation:INTERPOLATION_NEAREST, &ok ); if (ok) { @@ -1461,28 +1484,30 @@ void Animation::value_track_get_key_indices(int p_track, float p_time, float p_d } -void Animation::value_track_set_continuous(int p_track, bool p_continuous) { +void Animation::value_track_set_update_mode(int p_track, UpdateMode p_mode) { ERR_FAIL_INDEX(p_track, tracks.size()); Track *t=tracks[p_track]; ERR_FAIL_COND( t->type != TYPE_VALUE ); + ERR_FAIL_INDEX(p_mode,3); ValueTrack * vt = static_cast<ValueTrack*>(t); - vt->continuous=p_continuous; + vt->update_mode=p_mode; } -bool Animation::value_track_is_continuous(int p_track) const{ +Animation::UpdateMode Animation::value_track_get_update_mode(int p_track) const { - ERR_FAIL_INDEX_V(p_track, tracks.size(), false); + ERR_FAIL_INDEX_V(p_track, tracks.size(), UPDATE_CONTINUOUS); Track *t=tracks[p_track]; - ERR_FAIL_COND_V( t->type != TYPE_VALUE, false ); + ERR_FAIL_COND_V( t->type != TYPE_VALUE, UPDATE_CONTINUOUS ); ValueTrack * vt = static_cast<ValueTrack*>(t); - return vt->continuous; + return vt->update_mode; } + void Animation::_method_track_get_key_indices_in_range(const MethodTrack * mt, float from_time, float to_time,List<int> *p_indices) const { if (from_time!=length && to_time==length) @@ -1607,10 +1632,19 @@ void Animation::set_loop(bool p_enabled) { loop=p_enabled; emit_changed(); } +void Animation::set_loop_interpolation(bool p_enabled) { + + loop_interpolation=p_enabled; + emit_changed(); +} bool Animation::has_loop() const { return loop; } +bool Animation::has_loop_interpolation() const { + + return loop_interpolation; +} void Animation::track_move_up(int p_track) { @@ -1623,6 +1657,20 @@ void Animation::track_move_up(int p_track) { emit_changed(); } +void Animation::track_set_imported(int p_track,bool p_imported) { + + ERR_FAIL_INDEX(p_track,tracks.size()); + tracks[p_track]->imported=p_imported; +} + +bool Animation::track_is_imported(int p_track) const{ + + ERR_FAIL_INDEX_V(p_track,tracks.size(),false); + return tracks[p_track]->imported; + +} + + void Animation::track_move_down(int p_track) { if (p_track>0 && p_track<tracks.size()) { @@ -1657,6 +1705,10 @@ void Animation::_bind_methods() { ObjectTypeDB::bind_method(_MD("track_move_up","idx"),&Animation::track_move_up); ObjectTypeDB::bind_method(_MD("track_move_down","idx"),&Animation::track_move_down); + ObjectTypeDB::bind_method(_MD("track_set_imported","idx","imported"),&Animation::track_set_imported); + ObjectTypeDB::bind_method(_MD("track_is_imported","idx"),&Animation::track_is_imported); + + ObjectTypeDB::bind_method(_MD("transform_track_insert_key","idx","time","loc","rot","scale"),&Animation::transform_track_insert_key); ObjectTypeDB::bind_method(_MD("track_insert_key","idx","time","key","transition"),&Animation::track_insert_key,DEFVAL(1)); ObjectTypeDB::bind_method(_MD("track_remove_key","idx","key_idx"),&Animation::track_remove_key); @@ -1676,8 +1728,8 @@ void Animation::_bind_methods() { ObjectTypeDB::bind_method(_MD("transform_track_interpolate","idx","time_sec"),&Animation::_transform_track_interpolate); - ObjectTypeDB::bind_method(_MD("value_track_set_continuous","idx","continuous"),&Animation::value_track_set_continuous); - ObjectTypeDB::bind_method(_MD("value_track_is_continuous","idx"),&Animation::value_track_is_continuous); + ObjectTypeDB::bind_method(_MD("value_track_set_update_mode","idx","mode"),&Animation::value_track_set_update_mode); + ObjectTypeDB::bind_method(_MD("value_track_get_update_mode","idx"),&Animation::value_track_get_update_mode); ObjectTypeDB::bind_method(_MD("value_track_get_key_indices","idx","time_sec","delta"),&Animation::_value_track_get_key_indices); @@ -1689,7 +1741,9 @@ void Animation::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_length"),&Animation::get_length); ObjectTypeDB::bind_method(_MD("set_loop","enabled"),&Animation::set_loop); + ObjectTypeDB::bind_method(_MD("set_loop_interpolation","enabled"),&Animation::set_loop_interpolation); ObjectTypeDB::bind_method(_MD("has_loop"),&Animation::has_loop); + ObjectTypeDB::bind_method(_MD("has_loop_interpolation"),&Animation::has_loop_interpolation); ObjectTypeDB::bind_method(_MD("set_step","size_sec"),&Animation::set_step); ObjectTypeDB::bind_method(_MD("get_step"),&Animation::get_step); @@ -1704,6 +1758,11 @@ void Animation::_bind_methods() { BIND_CONSTANT( INTERPOLATION_LINEAR ); BIND_CONSTANT( INTERPOLATION_CUBIC ); + BIND_CONSTANT( UPDATE_CONTINUOUS ); + BIND_CONSTANT( UPDATE_DISCRETE ); + BIND_CONSTANT( UPDATE_TRIGGER ); + + } void Animation::clear() { @@ -1712,6 +1771,7 @@ void Animation::clear() { memdelete( tracks[i] ); tracks.clear(); loop=false; + loop_interpolation=true; length=1; } @@ -1971,6 +2031,7 @@ Animation::Animation() { step=0.1; loop=false; + loop_interpolation=true; length=1; } @@ -1981,5 +2042,3 @@ Animation::~Animation() { memdelete( tracks[i] ); } - - diff --git a/scene/resources/animation.h b/scene/resources/animation.h index 1f2d9b80ab..ee643c9678 100644 --- a/scene/resources/animation.h +++ b/scene/resources/animation.h @@ -58,6 +58,13 @@ public: INTERPOLATION_CUBIC }; + enum UpdateMode { + UPDATE_CONTINUOUS, + UPDATE_DISCRETE, + UPDATE_TRIGGER, + + }; + private: struct Track { @@ -65,7 +72,8 @@ private: TrackType type; InterpolationType interpolation; NodePath path; // path to something - Track() { interpolation=INTERPOLATION_LINEAR; } + bool imported; + Track() { interpolation=INTERPOLATION_LINEAR; imported=false;} virtual ~Track() {} }; @@ -105,10 +113,11 @@ private: struct ValueTrack : public Track { - bool continuous; + UpdateMode update_mode; + bool update_on_seek; Vector< TKey<Variant> > values; - ValueTrack() { type=TYPE_VALUE; continuous=true; } + ValueTrack() { type=TYPE_VALUE; update_mode=UPDATE_CONTINUOUS; } }; @@ -163,6 +172,7 @@ private: float length; float step; bool loop; + bool loop_interpolation; // bind helpers private: @@ -232,6 +242,9 @@ public: void track_move_up(int p_track); void track_move_down(int p_track); + void track_set_imported(int p_track,bool p_imported); + bool track_is_imported(int p_track) const; + int transform_track_insert_key(int p_track, float p_time, const Vector3 p_loc, const Quat& p_rot=Quat(), const Vector3& p_scale=Vector3()); void track_insert_key(int p_track, float p_time, const Variant& p_key, float p_transition=1); void track_set_key_transition(int p_track, int p_key_idx,float p_transition); @@ -253,8 +266,9 @@ public: Variant value_track_interpolate(int p_track, float p_time) const; void value_track_get_key_indices(int p_track, float p_time, float p_delta,List<int> *p_indices) const; - void value_track_set_continuous(int p_track, bool p_continuous); - bool value_track_is_continuous(int p_track) const; + void value_track_set_update_mode(int p_track, UpdateMode p_mode); + UpdateMode value_track_get_update_mode(int p_track) const; + void method_track_get_key_indices(int p_track, float p_time, float p_delta,List<int> *p_indices) const; Vector<Variant> method_track_get_params(int p_track,int p_key_idx) const; @@ -265,7 +279,9 @@ public: float get_length() const; void set_loop(bool p_enabled); + void set_loop_interpolation(bool p_enabled); bool has_loop() const; + bool has_loop_interpolation() const; void set_step(float p_step); float get_step() const; @@ -281,5 +297,8 @@ public: VARIANT_ENUM_CAST( Animation::TrackType ); VARIANT_ENUM_CAST( Animation::InterpolationType ); +VARIANT_ENUM_CAST( Animation::UpdateMode ); + + #endif diff --git a/scene/resources/baked_light.cpp b/scene/resources/baked_light.cpp index aa4aae03cb..e4510be874 100644 --- a/scene/resources/baked_light.cpp +++ b/scene/resources/baked_light.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* baked_light.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "baked_light.h" #include "servers/visual_server.h" diff --git a/scene/resources/baked_light.h b/scene/resources/baked_light.h index f9a1368e8d..16806d29e3 100644 --- a/scene/resources/baked_light.h +++ b/scene/resources/baked_light.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* baked_light.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef BAKED_LIGHT_H #define BAKED_LIGHT_H diff --git a/scene/resources/color_ramp.cpp b/scene/resources/color_ramp.cpp index bf1f298e7a..dfa9181d60 100644 --- a/scene/resources/color_ramp.cpp +++ b/scene/resources/color_ramp.cpp @@ -1,7 +1,31 @@ -/* - * color_ramp.h - */ - +/*************************************************************************/ +/* color_ramp.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "color_ramp.h" //setter and getter names for property serialization diff --git a/scene/resources/color_ramp.h b/scene/resources/color_ramp.h index aab5698c2b..daa21b480a 100644 --- a/scene/resources/color_ramp.h +++ b/scene/resources/color_ramp.h @@ -1,7 +1,31 @@ -/* - * color_ramp.h - */ - +/*************************************************************************/ +/* color_ramp.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef SCENE_RESOURCES_COLOR_RAMP_H_ #define SCENE_RESOURCES_COLOR_RAMP_H_ diff --git a/scene/resources/default_theme/bold_font.inc b/scene/resources/default_theme/bold_font.inc deleted file mode 100644 index 89fdeb4e97..0000000000 --- a/scene/resources/default_theme/bold_font.inc +++ /dev/null @@ -1,5 +0,0 @@ -static const int _bi_font_bold_height=15; -static const int _bi_font_bold_ascent=13; -static const int _bi_font_bold_valign=-2; -static const int _bi_font_bold_charcount=196; -static const int _bi_font_bold_characters[]={0, 215, 76, 3, 3, -1, 13, 0, 8, 252, 0, 3, 3, -1, 13, 0, 9, 252, 8, 3, 3, -1, 13, 3, 13, 252, 61, 3, 3, -1, 13, 3, 29, 252, 57, 3, 3, -1, 13, 0, 32, 252, 53, 3, 3, -1, 13, 3, 33, 71, 69, 4, 11, 0, 4, 4, 34, 111, 78, 7, 6, 0, 3, 6, 35, 42, 57, 9, 11, 0, 4, 9, 36, 135, 0, 8, 15, 0, 2, 8, 37, 0, 45, 14, 11, -1, 4, 12, 38, 156, 44, 10, 11, 0, 4, 9, 39, 132, 78, 4, 6, 0, 3, 4, 40, 104, 16, 6, 14, 0, 3, 5, 41, 111, 16, 6, 14, -1, 3, 5, 42, 76, 81, 7, 7, 0, 4, 7, 43, 24, 81, 8, 8, 0, 6, 8, 44, 126, 78, 5, 6, -1, 11, 4, 45, 198, 77, 6, 4, 0, 8, 6, 46, 210, 76, 4, 4, 0, 11, 4, 47, 43, 16, 8, 14, -1, 3, 6, 48, 234, 54, 8, 11, 0, 4, 8, 49, 53, 69, 6, 11, 1, 4, 8, 50, 99, 56, 8, 11, 0, 4, 8, 51, 108, 56, 8, 11, 0, 4, 8, 52, 22, 57, 9, 11, 0, 4, 8, 53, 171, 55, 8, 11, 0, 4, 8, 54, 207, 54, 8, 11, 0, 4, 8, 55, 198, 55, 8, 11, 0, 4, 8, 56, 189, 55, 8, 11, 0, 4, 8, 57, 180, 55, 8, 11, 0, 4, 8, 58, 251, 66, 4, 9, 0, 6, 4, 59, 60, 69, 5, 11, -1, 6, 4, 60, 198, 67, 8, 9, 0, 6, 7, 61, 51, 81, 8, 7, 0, 7, 8, 62, 139, 68, 9, 9, -1, 6, 7, 63, 148, 31, 8, 12, -1, 3, 6, 64, 191, 0, 13, 14, 0, 4, 13, 65, 86, 44, 11, 11, -1, 4, 9, 66, 32, 57, 9, 11, 0, 4, 9, 67, 135, 56, 8, 11, 0, 4, 8, 68, 244, 41, 10, 11, 0, 4, 10, 69, 126, 56, 8, 11, 0, 4, 8, 70, 117, 56, 8, 11, 0, 4, 7, 71, 52, 57, 9, 11, 0, 4, 9, 72, 134, 44, 10, 11, 0, 4, 10, 73, 66, 69, 4, 11, 0, 4, 4, 74, 90, 56, 8, 11, -1, 4, 7, 75, 0, 57, 10, 11, 0, 4, 9, 76, 81, 56, 8, 11, 0, 4, 7, 77, 45, 45, 13, 11, 0, 4, 13, 78, 167, 43, 10, 11, 0, 4, 10, 79, 178, 43, 10, 11, 0, 4, 10, 80, 36, 69, 8, 11, 0, 4, 8, 81, 167, 16, 10, 13, 0, 4, 10, 82, 189, 43, 10, 11, 0, 4, 9, 83, 27, 69, 8, 11, 0, 4, 8, 84, 200, 42, 10, 11, -1, 4, 8, 85, 211, 42, 10, 11, 0, 4, 10, 86, 110, 44, 11, 11, -1, 4, 9, 87, 237, 29, 15, 11, -1, 4, 13, 88, 122, 44, 11, 11, -1, 4, 9, 89, 222, 42, 10, 11, -1, 4, 8, 90, 9, 69, 8, 11, 0, 4, 8, 91, 132, 16, 6, 14, 0, 3, 5, 92, 70, 16, 8, 14, -1, 3, 6, 93, 139, 16, 6, 14, -1, 3, 5, 94, 41, 81, 9, 7, -1, 4, 7, 95, 166, 78, 9, 4, -1, 14, 7, 96, 160, 78, 5, 5, 0, 3, 4, 97, 243, 66, 7, 9, 0, 6, 7, 98, 94, 31, 8, 12, 0, 3, 8, 99, 8, 81, 7, 9, 0, 6, 7, 100, 112, 31, 8, 12, 0, 3, 8, 101, 189, 67, 8, 9, 0, 6, 8, 102, 200, 29, 7, 12, 0, 3, 5, 103, 0, 69, 8, 11, 0, 6, 8, 104, 175, 30, 8, 12, 0, 3, 8, 105, 224, 29, 6, 12, -1, 3, 4, 106, 96, 16, 7, 14, -2, 3, 4, 107, 64, 31, 9, 12, 0, 3, 8, 108, 231, 29, 5, 12, 0, 3, 4, 109, 104, 68, 12, 9, 0, 6, 12, 110, 207, 66, 8, 9, 0, 6, 8, 111, 216, 66, 8, 9, 0, 6, 8, 112, 153, 56, 8, 11, 0, 6, 8, 113, 144, 56, 8, 11, 0, 6, 8, 114, 0, 81, 7, 9, 0, 6, 6, 115, 234, 66, 8, 9, -1, 6, 7, 116, 45, 69, 7, 11, 0, 4, 6, 117, 225, 66, 8, 9, 0, 6, 8, 118, 149, 68, 9, 9, -1, 6, 7, 119, 90, 68, 13, 9, -1, 6, 11, 120, 179, 67, 9, 9, -1, 6, 7, 121, 62, 57, 9, 11, -1, 6, 7, 122, 16, 81, 7, 9, 0, 6, 7, 123, 118, 16, 6, 14, -1, 3, 4, 124, 146, 16, 4, 14, 0, 3, 4, 125, 125, 16, 6, 14, -1, 3, 4, 126, 137, 78, 8, 5, 0, 7, 7, 160, 252, 4, 3, 3, -1, 13, 3, 161, 76, 69, 4, 11, 0, 6, 4, 162, 50, 31, 7, 13, 0, 4, 7, 163, 243, 54, 8, 11, -1, 4, 7, 164, 159, 68, 9, 9, -1, 5, 7, 165, 11, 57, 10, 11, -1, 4, 8, 166, 151, 16, 4, 14, 0, 3, 4, 167, 178, 16, 8, 13, -1, 4, 7, 168, 176, 78, 7, 4, 0, 3, 7, 169, 233, 42, 10, 11, 0, 4, 10, 170, 98, 78, 6, 7, -1, 4, 5, 171, 169, 68, 9, 9, 0, 6, 8, 172, 68, 81, 7, 7, 0, 7, 7, 173, 191, 77, 6, 4, 0, 8, 6, 174, 145, 44, 10, 11, 0, 4, 10, 175, 184, 77, 6, 4, -1, 3, 5, 176, 146, 78, 7, 5, -1, 3, 5, 177, 225, 54, 8, 11, 0, 4, 8, 178, 84, 79, 6, 7, -1, 4, 5, 179, 91, 78, 6, 7, -1, 4, 5, 180, 154, 78, 5, 5, -1, 3, 4, 181, 72, 57, 8, 11, 0, 6, 8, 182, 12, 0, 11, 15, -1, 3, 9, 183, 205, 77, 4, 4, 0, 8, 4, 184, 119, 78, 6, 6, -1, 12, 4, 185, 105, 78, 5, 7, 0, 4, 5, 186, 60, 81, 7, 7, -1, 4, 6, 187, 129, 68, 9, 9, -1, 6, 8, 188, 59, 45, 13, 11, 0, 4, 11, 189, 73, 44, 12, 11, 0, 4, 11, 190, 30, 45, 14, 11, -1, 4, 11, 191, 162, 56, 8, 11, -1, 6, 6, 192, 0, 0, 11, 15, -1, 0, 9, 193, 36, 0, 11, 15, -1, 0, 9, 194, 24, 0, 11, 15, -1, 0, 9, 195, 229, 0, 11, 14, -1, 1, 9, 196, 217, 0, 11, 14, -1, 1, 9, 197, 205, 0, 11, 14, -1, 1, 9, 198, 15, 45, 14, 11, -1, 4, 13, 199, 61, 16, 8, 14, 0, 4, 8, 200, 162, 0, 8, 15, 0, 0, 8, 201, 153, 0, 8, 15, 0, 0, 8, 202, 144, 0, 8, 15, 0, 0, 8, 203, 52, 16, 8, 14, 0, 1, 8, 204, 185, 0, 5, 15, -1, 0, 4, 205, 179, 0, 5, 15, 0, 0, 4, 206, 171, 0, 7, 15, -1, 0, 4, 207, 88, 16, 7, 14, -1, 1, 4, 208, 98, 44, 11, 11, -1, 4, 10, 209, 22, 16, 10, 14, 0, 1, 10, 210, 114, 0, 10, 15, 0, 0, 10, 211, 103, 0, 10, 15, 0, 0, 10, 212, 92, 0, 10, 15, 0, 0, 10, 213, 11, 16, 10, 14, 0, 1, 10, 214, 0, 16, 10, 14, 0, 1, 10, 215, 33, 81, 7, 8, 0, 6, 7, 216, 156, 16, 10, 13, 0, 3, 10, 217, 81, 0, 10, 15, 0, 0, 10, 218, 70, 0, 10, 15, 0, 0, 10, 219, 59, 0, 10, 15, 0, 0, 10, 220, 241, 0, 10, 14, 0, 1, 10, 221, 48, 0, 10, 15, -1, 0, 8, 222, 18, 69, 8, 11, 0, 4, 8, 223, 74, 31, 9, 12, 0, 3, 9, 224, 18, 31, 7, 13, 0, 2, 7, 225, 26, 31, 7, 13, 0, 2, 7, 226, 34, 31, 7, 13, 0, 2, 7, 227, 184, 30, 7, 12, 0, 3, 7, 228, 208, 29, 7, 12, 0, 3, 7, 229, 216, 29, 7, 12, 0, 3, 7, 230, 117, 68, 11, 9, 0, 6, 11, 231, 103, 31, 8, 12, 0, 6, 7, 232, 9, 31, 8, 13, 0, 2, 8, 233, 205, 15, 8, 13, 0, 2, 8, 234, 232, 15, 8, 13, 0, 2, 8, 235, 157, 30, 8, 12, 0, 3, 8, 236, 250, 15, 5, 13, -1, 2, 4, 237, 58, 31, 5, 13, 0, 2, 4, 238, 42, 31, 7, 13, -1, 2, 4, 239, 192, 30, 7, 12, -2, 3, 4, 240, 84, 31, 9, 12, 0, 3, 8, 241, 139, 31, 8, 12, 0, 3, 8, 242, 187, 16, 8, 13, 0, 2, 8, 243, 0, 31, 8, 13, 0, 2, 8, 244, 241, 15, 8, 13, 0, 2, 8, 245, 130, 31, 8, 12, 0, 3, 8, 246, 121, 31, 8, 12, 0, 3, 8, 247, 81, 68, 8, 10, 0, 5, 8, 248, 216, 54, 8, 11, 0, 5, 8, 249, 214, 15, 8, 13, 0, 2, 8, 250, 223, 15, 8, 13, 0, 2, 8, 251, 196, 15, 8, 13, 0, 2, 8, 252, 166, 30, 8, 12, 0, 3, 8, 253, 125, 0, 9, 15, -1, 2, 7, 254, 79, 16, 8, 14, 0, 3, 8, 255, 33, 16, 9, 14, -1, 3, 7}; diff --git a/scene/resources/default_theme/default_font.inc b/scene/resources/default_theme/default_font.inc deleted file mode 100644 index d5c9ab66b1..0000000000 --- a/scene/resources/default_theme/default_font.inc +++ /dev/null @@ -1,458 +0,0 @@ -static const int _builtin_font_height=16; -static const int _builtin_font_ascent=13; -static const int _builtin_font_charcount=190; -static const int _builtin_font_charrects[190][6]={ - /* charidx , ofs_x, ofs_y, size_x, size_y, valign */ - {210,2,2,10,14,0}, - {211,16,2,10,14,0}, - {212,30,2,10,14,0}, - {213,44,2,10,14,0}, - {217,58,2,9,14,0}, - {218,71,2,9,14,0}, - {219,84,2,9,14,0}, - {40,97,2,4,13,3}, - {41,105,2,4,13,3}, - {91,113,2,4,13,3}, - {93,121,2,4,13,3}, - {106,129,2,3,13,3}, - {123,136,2,5,13,3}, - {124,145,2,2,13,3}, - {125,151,2,5,13,3}, - {166,160,2,2,13,3}, - {167,166,2,7,13,3}, - {182,177,2,7,13,3}, - {192,188,2,10,13,0}, - {193,202,2,10,13,0}, - {194,216,2,10,13,0}, - {195,230,2,10,13,0}, - {197,2,20,10,13,0}, - {199,16,20,9,13,3}, - {200,29,20,8,13,0}, - {201,41,20,8,13,0}, - {202,53,20,8,13,0}, - {204,65,20,4,13,0}, - {205,73,20,4,13,0}, - {206,81,20,5,13,0}, - {209,90,20,9,13,0}, - {214,103,20,10,13,1}, - {220,117,20,9,13,1}, - {221,130,20,9,13,0}, - {253,143,20,7,13,3}, - {254,154,20,8,13,3}, - {36,166,20,7,12,3}, - {64,177,20,13,12,3}, - {196,194,20,10,12,1}, - {203,208,20,8,12,1}, - {207,220,20,5,12,1}, - {229,229,20,7,12,2}, - {35,240,20,8,11,3}, - {37,2,37,12,11,3}, - {38,18,37,10,11,3}, - {47,32,37,4,11,3}, - {48,40,37,7,11,3}, - {51,51,37,7,11,3}, - {53,62,37,7,11,3}, - {54,73,37,7,11,3}, - {56,84,37,7,11,3}, - {57,95,37,7,11,3}, - {67,106,37,9,11,3}, - {71,119,37,10,11,3}, - {74,133,37,7,11,3}, - {79,144,37,10,11,3}, - {81,158,37,10,11,3}, - {83,172,37,9,11,3}, - {85,185,37,9,11,3}, - {92,198,37,5,11,3}, - {98,207,37,8,11,3}, - {100,219,37,8,11,3}, - {103,231,37,8,11,5}, - {112,243,37,8,11,5}, - {113,2,52,8,11,5}, - {121,14,52,7,11,5}, - {161,25,52,3,11,5}, - {162,32,52,7,11,4}, - {163,43,52,7,11,3}, - {169,54,52,11,11,3}, - {174,69,52,11,11,3}, - {181,84,52,8,11,5}, - {188,96,52,12,11,3}, - {189,112,52,11,11,3}, - {190,127,52,12,11,3}, - {191,143,52,8,11,5}, - {216,155,52,10,11,3}, - {223,169,52,8,11,3}, - {224,181,52,7,11,3}, - {225,192,52,7,11,3}, - {226,203,52,7,11,3}, - {227,214,52,7,11,3}, - {228,225,52,7,11,3}, - {231,236,52,7,11,5}, - {232,2,67,7,11,3}, - {233,13,67,7,11,3}, - {234,24,67,7,11,3}, - {235,35,67,7,11,3}, - {240,46,67,8,11,3}, - {242,58,67,8,11,3}, - {243,70,67,8,11,3}, - {244,82,67,8,11,3}, - {245,94,67,8,11,3}, - {246,106,67,8,11,3}, - {249,118,67,8,11,3}, - {250,130,67,8,11,3}, - {251,142,67,8,11,3}, - {252,154,67,8,11,3}, - {33,166,67,3,10,3}, - {49,173,67,5,10,3}, - {50,182,67,7,10,3}, - {52,193,67,7,10,3}, - {55,204,67,7,10,3}, - {59,215,67,3,10,6}, - {63,222,67,8,10,3}, - {65,234,67,10,10,3}, - {66,2,82,8,10,3}, - {68,14,82,8,10,3}, - {69,26,82,8,10,3}, - {70,38,82,8,10,3}, - {72,50,82,9,10,3}, - {73,63,82,3,10,3}, - {75,70,82,10,10,3}, - {76,84,82,7,10,3}, - {77,95,82,11,10,3}, - {78,110,82,9,10,3}, - {80,123,82,9,10,3}, - {82,136,82,8,10,3}, - {84,148,82,8,10,3}, - {86,160,82,9,10,3}, - {87,173,82,13,10,3}, - {88,190,82,9,10,3}, - {89,203,82,9,10,3}, - {90,216,82,8,10,3}, - {102,228,82,5,10,3}, - {104,237,82,8,10,3}, - {105,249,82,3,10,3}, - {107,2,96,8,10,3}, - {108,14,96,3,10,3}, - {116,21,96,4,10,4}, - {165,29,96,8,10,3}, - {198,41,96,13,10,3}, - {208,58,96,9,10,3}, - {222,71,96,9,10,3}, - {236,84,96,4,10,3}, - {237,92,96,4,10,3}, - {238,100,96,5,10,3}, - {239,109,96,5,10,3}, - {241,118,96,8,10,3}, - {97,130,96,7,9,5}, - {99,141,96,7,9,5}, - {101,152,96,7,9,5}, - {111,163,96,8,9,5}, - {115,175,96,7,9,5}, - {117,186,96,8,9,5}, - {177,198,96,7,9,5}, - {230,209,96,12,9,5}, - {248,225,96,8,9,5}, - {43,237,96,7,8,6}, - {60,2,110,7,8,6}, - {62,13,110,7,8,6}, - {109,24,110,11,8,5}, - {110,39,110,8,8,5}, - {114,51,110,5,8,5}, - {118,60,110,7,8,5}, - {119,71,110,10,8,5}, - {120,85,110,7,8,5}, - {122,96,110,7,8,5}, - {247,107,110,7,8,6}, - {58,118,110,3,7,6}, - {94,125,110,7,7,3}, - {164,136,110,7,7,5}, - {170,147,110,5,7,3}, - {171,156,110,6,7,6}, - {178,166,110,5,7,3}, - {179,175,110,5,7,3}, - {185,184,110,4,7,3}, - {186,192,110,5,7,3}, - {187,201,110,5,7,6}, - {61,210,110,7,6,7}, - {215,221,110,6,6,7}, - {42,231,110,5,5,3}, - {44,240,110,3,5,11}, - {176,247,110,5,5,4}, - {34,2,122,6,4,3}, - {39,12,122,3,4,3}, - {126,19,122,7,4,8}, - {172,30,122,8,4,8}, - {45,42,122,4,3,8}, - {96,50,122,3,3,3}, - {173,57,122,4,3,8}, - {180,65,122,4,3,3}, - {184,73,122,4,3,13}, - {46,81,122,3,2,11}, - {95,88,122,9,2,14}, - {168,101,122,5,2,3}, - {175,110,122,5,2,3}, - {183,119,122,3,2,9}, - {32,126,122,5,1,0}, - {160,137,122,0,0,13} -}; -static const int _builtin_font_texture_height=256; -static const int _builtin_font_texture_width=256; - -static const unsigned char _builtin_font_texture[65536]={ - - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,27,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,36,0,0,0,0,0,0,0,0,0,0,0,28,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,7,0,0,0,0,0,0,0,0,0,42,28,0,0,0,0,0,0,0,0,0,0,0,0,5,44,21,0,0,0,0,0,0,0,0,0,0,42,23,0,0,0,0,0,0,0,0,0,63,101,0,0,0,0,74,91,0,0,0,0,0,0,17,124,124,124,0,0,0,0,94,124,124,46,0,0,0,0,11,124,91,0,0,0,0,0,0,77,123,15,0,0,0,0,87,42,0,0,0,0,7,123,85,0,0,0,0,0,0,87,42,0,0,0,0,0,0,53,95,65,1,0,0,0,0,0,0,21,108,124,124,124,108,0,0,0,0,0,0,2,43,24,0,0,0,0,0,0,0,0,0,0,0,0,0,1,40,22,0,0,0,0,0,0,0,0,0,0,0,43,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,48,244,63,0,0,0,0,0,0,0,0,0,0,0,0,24,246,85,0,0,0,0,0,0,0,0,0,0,31,219,219,69,0,0,0,0,0,0,0,0,0,0,193,236,153,179,93,0,0,0,0,0,0,0,0,0,120,228,6,0,0,0,0,0,0,0,0,0,0,0,100,229,26,0,0,0,0,0,0,0,0,0,100,203,221,14,0,0,0,0,0,0,0,13,231,117,0,0,0,0,59,252,48,0,0,0,0,0,36,255,237,216,0,0,0,0,165,228,255,96,0,0,0,0,24,255,188,0,0,0,0,0,71,255,227,26,0,0,0,0,180,88,0,0,0,0,13,220,255,82,0,0,0,0,0,180,88,0,0,0,0,0,158,255,246,255,166,0,0,0,0,0,29,230,255,255,146,249,145,0,0,0,0,0,0,0,144,210,0,0,0,0,0,0,0,0,0,0,0,0,0,78,239,39,0,0,0,0,0,0,0,0,0,0,108,202,218,11,0,0,0,0,0,0,0,0,0,44,240,210,129,222,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,78,132,0,0,0,0,0,0,0,0,0,0,0,0,95,115,0,0,0,0,0,0,0,0,0,0,0,140,63,41,168,3,0,0,0,0,0,0,0,0,13,124,25,107,127,8,0,0,0,0,0,0,0,0,0,0,143,66,0,0,0,0,0,0,0,0,0,0,0,160,51,0,0,0,0,0,0,0,0,0,17,171,14,104,109,0,0,0,0,0,0,0,123,244,15,0,0,0,0,0,198,178,0,0,0,0,0,36,255,140,0,0,0,0,0,0,80,255,96,0,0,0,0,3,40,29,0,0,0,0,0,118,255,25,0,0,0,0,0,180,88,0,0,0,0,0,7,255,130,0,0,0,0,0,180,88,0,0,0,0,29,255,192,0,160,234,18,0,0,0,0,147,255,255,255,56,244,80,0,0,0,0,0,0,0,3,159,48,0,0,0,0,0,0,0,0,0,0,0,0,147,68,0,0,0,0,0,0,0,0,0,0,20,171,12,110,103,0,0,0,0,0,0,0,0,0,67,73,50,130,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,6,93,150,153,106,15,0,0,0,0,0,0,0,0,6,93,150,153,106,15,0,0,0,0,0,0,0,0,6,93,150,153,106,15,0,0,0,0,0,0,0,0,6,93,150,153,106,15,0,0,0,0,0,0,1,124,116,0,0,0,56,124,62,0,0,0,0,1,124,116,0,0,0,56,124,62,0,0,0,0,1,124,116,0,0,0,56,124,62,0,0,0,0,2,228,163,0,0,0,0,0,0,103,254,32,0,0,0,0,36,255,140,0,0,0,0,0,0,80,255,96,0,0,0,0,24,255,188,0,0,0,0,0,120,255,16,0,0,0,0,0,180,88,0,0,0,0,0,0,255,132,0,0,0,0,0,180,88,0,0,0,0,15,246,251,126,10,0,0,0,0,0,0,187,255,255,255,56,244,80,0,0,0,0,0,0,0,47,124,116,0,0,0,0,0,0,0,0,0,0,0,47,124,116,0,0,0,0,0,0,0,0,0,0,0,47,124,116,0,0,0,0,0,0,0,0,0,0,0,47,124,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,26,211,255,255,255,255,231,48,0,0,0,0,0,0,26,211,255,255,255,255,231,48,0,0,0,0,0,0,26,211,255,255,255,255,231,48,0,0,0,0,0,0,26,211,255,255,255,255,231,48,0,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,53,255,90,0,0,0,0,0,0,33,255,112,0,0,0,0,36,255,140,0,0,0,0,0,0,80,255,96,0,0,0,0,24,255,188,0,0,0,0,0,120,255,16,0,0,0,0,0,180,88,0,0,0,0,0,0,255,132,0,0,0,0,0,180,88,0,0,0,0,0,167,255,255,228,89,0,0,0,0,0,155,255,255,255,56,244,80,0,0,0,0,0,0,0,165,255,255,50,0,0,0,0,0,0,0,0,0,0,165,255,255,50,0,0,0,0,0,0,0,0,0,0,165,255,255,50,0,0,0,0,0,0,0,0,0,0,165,255,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,192,255,162,32,25,135,255,223,8,0,0,0,0,0,192,255,162,32,25,135,255,223,8,0,0,0,0,0,192,255,162,32,25,135,255,223,8,0,0,0,0,0,192,255,162,32,25,135,255,223,8,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,102,255,47,0,0,0,0,0,0,1,246,162,0,0,0,0,36,255,140,0,0,0,0,0,0,80,255,96,0,0,0,0,24,255,188,0,0,0,0,13,164,249,6,0,0,0,0,0,180,88,0,0,0,0,0,0,246,158,1,0,0,0,0,104,50,0,0,0,0,90,254,55,142,248,255,100,0,0,0,0,37,238,255,255,56,244,80,0,0,0,0,0,0,11,244,251,255,139,0,0,0,0,0,0,0,0,0,11,244,251,255,139,0,0,0,0,0,0,0,0,0,11,244,251,255,139,0,0,0,0,0,0,0,0,0,11,244,251,255,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,51,255,216,4,0,0,0,177,255,89,0,0,0,0,51,255,216,4,0,0,0,177,255,89,0,0,0,0,51,255,216,4,0,0,0,177,255,89,0,0,0,0,51,255,216,4,0,0,0,177,255,89,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,120,255,34,0,0,0,0,0,0,0,231,177,0,0,0,0,36,255,140,0,0,0,0,0,0,80,255,96,0,0,0,0,24,255,188,0,0,0,0,132,253,128,0,0,0,0,0,0,180,88,0,0,0,0,0,0,121,252,147,0,0,0,0,0,0,0,0,0,0,139,255,91,0,36,242,179,0,0,0,0,0,27,122,255,56,244,80,0,0,0,0,0,0,91,255,140,246,226,1,0,0,0,0,0,0,0,0,91,255,140,246,226,1,0,0,0,0,0,0,0,0,91,255,140,246,226,1,0,0,0,0,0,0,0,0,91,255,140,246,226,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,106,255,140,0,0,0,0,99,255,144,0,0,0,0,106,255,140,0,0,0,0,99,255,144,0,0,0,0,106,255,140,0,0,0,0,99,255,144,0,0,0,0,106,255,140,0,0,0,0,99,255,144,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,107,255,47,0,0,0,0,0,0,0,242,160,0,0,0,0,36,255,140,0,0,0,0,0,0,80,255,96,0,0,0,0,24,255,188,0,0,0,0,16,164,248,6,0,0,0,0,0,180,88,0,0,0,0,0,0,234,191,35,0,0,0,0,81,39,0,0,0,0,50,243,255,194,87,244,125,0,0,0,0,0,0,12,255,56,244,80,0,0,0,0,0,0,181,255,43,172,255,60,0,0,0,0,0,0,0,0,181,255,43,172,255,60,0,0,0,0,0,0,0,0,181,255,43,172,255,60,0,0,0,0,0,0,0,0,181,255,43,172,255,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,119,255,124,0,0,0,0,80,255,158,0,0,0,0,119,255,124,0,0,0,0,80,255,158,0,0,0,0,119,255,124,0,0,0,0,80,255,158,0,0,0,0,119,255,124,0,0,0,0,80,255,158,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,62,255,86,0,0,0,0,0,0,27,255,116,0,0,0,0,36,255,140,0,0,0,0,0,0,80,255,96,0,0,0,0,24,255,188,0,0,0,0,0,120,255,16,0,0,0,0,0,180,88,0,0,0,0,0,0,255,132,0,0,0,0,0,180,88,0,0,0,0,0,31,173,255,255,212,3,0,0,0,0,0,0,12,255,56,244,80,0,0,0,0,0,21,251,214,0,87,255,149,0,0,0,0,0,0,0,21,251,214,0,87,255,149,0,0,0,0,0,0,0,21,251,214,0,87,255,149,0,0,0,0,0,0,0,21,251,214,0,87,255,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,93,255,157,0,0,0,0,114,255,133,0,0,0,0,93,255,157,0,0,0,0,114,255,133,0,0,0,0,93,255,157,0,0,0,0,114,255,133,0,0,0,0,93,255,157,0,0,0,0,114,255,133,0,0,0,0,3,255,240,0,0,0,116,255,127,0,0,0,0,3,255,240,0,0,0,116,255,127,0,0,0,0,3,255,240,0,0,0,116,255,127,0,0,0,0,5,236,152,0,0,0,0,0,0,97,255,41,0,0,0,0,36,255,140,0,0,0,0,0,0,80,255,96,0,0,0,0,24,255,188,0,0,0,0,0,120,255,16,0,0,0,0,0,180,88,0,0,0,0,0,0,255,132,0,0,0,0,0,180,88,0,0,0,0,0,0,0,66,221,255,76,0,0,0,0,0,0,12,255,56,244,80,0,0,0,0,0,107,255,207,136,147,255,233,3,0,0,0,0,0,0,107,255,207,136,147,255,233,3,0,0,0,0,0,0,107,255,207,136,147,255,233,3,0,0,0,0,0,0,107,255,207,136,147,255,233,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,25,251,241,26,0,0,11,219,255,61,0,0,0,0,25,251,241,26,0,0,11,219,255,61,0,0,0,0,25,251,241,26,0,0,11,219,255,61,0,0,0,0,25,251,241,26,0,0,11,219,255,61,0,0,0,0,0,246,254,23,0,0,150,255,114,0,0,0,0,0,246,254,23,0,0,150,255,114,0,0,0,0,0,246,254,23,0,0,150,255,114,0,0,0,0,0,136,235,7,0,0,0,0,0,191,193,0,0,0,0,0,36,255,140,0,0,0,0,0,0,80,255,96,0,0,0,0,24,255,188,0,0,0,0,0,119,255,19,0,0,0,0,0,180,88,0,0,0,0,0,4,255,131,0,0,0,0,0,180,88,0,0,0,0,26,255,167,0,126,255,94,0,0,0,0,0,0,12,255,56,244,80,0,0,0,0,0,197,255,255,255,255,255,255,70,0,0,0,0,0,0,197,255,255,255,255,255,255,70,0,0,0,0,0,0,197,255,255,255,255,255,255,70,0,0,0,0,0,0,197,255,255,255,255,255,255,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,133,255,222,113,107,207,255,175,0,0,0,0,0,0,133,255,222,113,107,207,255,175,0,0,0,0,0,0,133,255,222,113,107,207,255,175,0,0,0,0,0,0,133,255,222,113,107,207,255,175,0,0,0,0,0,0,172,255,204,105,139,250,253,44,0,0,0,0,0,172,255,204,105,139,250,253,44,0,0,0,0,0,172,255,204,105,139,250,253,44,0,0,0,0,0,21,239,101,0,0,0,0,48,255,62,0,0,0,0,0,36,255,223,184,0,0,0,0,140,206,255,96,0,0,0,0,180,255,178,0,0,0,0,0,80,255,195,22,0,0,0,0,180,88,0,0,0,0,11,198,255,96,0,0,0,0,0,180,88,0,0,0,0,0,197,255,223,252,229,19,0,0,0,0,0,0,12,255,56,244,80,0,0,0,0,33,255,213,24,24,24,101,255,158,0,0,0,0,0,33,255,213,24,24,24,101,255,158,0,0,0,0,0,33,255,213,24,24,24,101,255,158,0,0,0,0,0,33,255,213,24,24,24,101,255,158,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,1,130,248,255,255,253,157,9,0,0,0,0,0,0,1,130,248,255,255,253,157,9,0,0,0,0,0,0,1,130,248,255,255,253,157,9,0,0,0,0,0,0,1,130,248,255,255,253,157,9,0,0,0,0,0,0,22,191,255,255,255,240,97,0,0,0,0,0,0,22,191,255,255,255,240,97,0,0,0,0,0,0,22,191,255,255,255,240,97,0,0,0,0,0,0,0,82,119,0,0,0,0,87,118,0,0,0,0,0,0,21,152,152,152,0,0,0,0,116,152,152,57,0,0,0,0,195,202,67,0,0,0,0,0,1,109,151,19,0,0,0,0,106,52,0,0,0,0,9,151,114,3,0,0,0,0,0,106,52,0,0,0,0,0,15,116,150,119,22,0,0,0,0,0,0,0,5,124,27,118,38,0,0,0,0,123,255,127,0,0,0,13,248,240,7,0,0,0,0,123,255,127,0,0,0,13,248,240,7,0,0,0,0,123,255,127,0,0,0,13,248,240,7,0,0,0,0,123,255,127,0,0,0,13,248,240,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,13,62,66,21,0,0,0,0,0,0,0,0,0,0,13,62,66,21,0,0,0,0,0,0,0,0,0,0,13,62,66,21,0,0,0,0,0,0,0,0,0,0,13,62,66,21,0,0,0,0,0,0,0,0,0,0,37,70,57,8,0,0,0,0,0,0,0,0,0,37,70,57,8,0,0,0,0,0,0,0,0,0,37,70,57,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,1,70,27,0,0,0,0,0,0,0,0,0,0,13,106,155,150,94,5,0,0,0,0,0,0,10,44,16,0,0,0,0,0,0,0,0,0,0,0,18,44,7,0,0,0,0,0,0,0,0,10,44,12,0,0,0,0,0,0,0,2,43,24,0,0,0,0,0,0,0,39,31,0,0,0,0,0,0,39,27,0,0,0,0,0,0,0,0,0,0,0,11,1,0,0,0,0,0,0,0,0,212,145,106,252,0,0,0,0,0,0,0,0,0,43,252,63,189,169,0,0,0,0,0,0,0,0,0,0,19,44,7,0,0,0,0,0,0,0,0,0,106,195,18,0,0,0,0,0,31,124,71,0,0,0,0,0,0,0,0,0,0,0,23,207,45,0,0,0,0,0,0,0,0,0,1,74,143,169,159,108,19,0,0,0,0,0,0,0,0,0,47,252,59,192,165,0,0,0,0,0,0,0,0,114,244,7,252,98,0,0,0,0,0,0,27,252,78,173,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,11,0,14,7,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,92,126,172,0,0,0,0,0,0,0,0,0,35,225,255,255,255,255,205,15,0,0,0,0,0,4,187,163,0,0,0,0,0,0,0,0,0,0,0,180,174,1,0,0,0,0,0,0,0,0,167,200,172,0,0,0,0,0,0,0,0,144,210,0,0,0,0,0,0,45,248,62,0,0,0,0,0,80,208,227,24,0,0,0,0,0,0,44,240,210,129,222,8,0,0,0,0,0,0,0,0,128,87,64,152,0,0,0,0,0,0,0,0,0,26,152,38,114,102,0,0,0,0,0,0,0,0,0,0,184,170,1,0,0,0,0,0,0,0,0,6,223,61,0,0,0,0,0,0,64,255,148,0,0,0,0,0,0,0,0,0,3,157,254,255,255,195,15,0,0,0,0,0,0,36,206,204,117,86,103,174,241,94,0,0,0,0,0,0,0,0,28,152,35,116,99,0,0,0,0,0,0,0,0,68,147,4,152,59,0,0,0,0,0,0,16,152,47,104,111,0,0,0,0,0,0,95,176,110,0,0,0,0,0,0,0,0,184,163,8,251,90,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,54,180,141,0,0,0,0,0,0,0,0,0,199,255,155,27,30,174,255,141,0,0,0,0,0,0,16,179,15,0,0,0,0,0,0,0,0,0,24,175,10,0,0,0,0,0,0,0,0,59,144,2,156,56,0,0,0,0,0,0,0,3,159,48,0,0,0,0,0,117,93,0,0,0,0,0,9,171,23,89,125,0,0,0,0,0,0,67,73,50,130,83,0,0,0,0,0,0,0,0,6,93,150,153,106,15,0,0,0,0,0,0,1,124,116,0,0,0,56,124,62,0,0,0,0,0,0,0,27,174,9,0,0,0,0,0,0,0,3,4,5,20,0,3,3,0,0,0,0,64,255,148,2,27,4,0,0,0,0,0,0,88,255,123,220,96,255,131,0,0,0,0,0,34,234,118,1,0,0,0,0,64,240,86,0,0,0,0,0,0,0,0,47,124,116,0,0,0,0,0,0,0,0,120,124,124,124,124,124,108,0,0,0,0,0,0,23,124,94,0,0,0,0,0,0,0,137,102,149,0,0,0,0,0,0,0,0,233,114,53,255,39,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,47,124,116,0,0,0,0,0,0,0,0,45,255,221,3,0,0,23,188,151,0,0,0,0,120,124,124,124,124,124,108,0,0,0,0,0,120,124,124,124,124,124,108,0,0,0,0,0,120,124,124,124,124,124,108,0,0,0,0,0,0,23,124,94,0,0,0,0,23,124,94,0,0,0,0,0,0,23,124,94,0,0,0,0,0,13,124,121,6,0,0,44,124,73,0,0,0,0,0,26,211,255,255,255,255,231,48,0,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,65,124,77,0,0,0,104,124,40,0,0,0,0,181,255,71,0,12,249,209,0,0,0,0,64,255,178,218,255,231,62,0,0,0,0,0,121,255,45,216,12,130,93,0,0,0,0,0,193,142,0,7,118,180,123,110,71,85,230,3,0,0,0,0,0,0,0,165,255,255,50,0,0,0,0,0,0,0,248,255,255,255,255,255,224,0,0,0,0,0,0,48,255,196,0,0,0,0,0,0,0,19,105,23,0,0,0,0,0,0,121,205,255,221,220,255,205,38,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,165,255,255,50,0,0,0,0,0,0,0,92,255,153,0,0,0,0,0,0,0,0,0,0,248,255,255,255,255,255,224,0,0,0,0,0,248,255,255,255,255,255,224,0,0,0,0,0,248,255,255,255,255,255,224,0,0,0,0,0,0,48,255,196,0,0,0,0,48,255,196,0,0,0,0,0,0,48,255,196,0,0,0,0,0,28,255,255,118,0,0,92,255,152,0,0,0,0,0,192,255,162,32,25,135,255,223,8,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,39,252,236,10,0,42,255,234,10,0,0,0,0,89,255,149,0,78,255,120,0,0,0,0,64,255,255,152,126,248,235,13,0,0,0,0,59,255,221,239,45,0,0,0,0,0,0,62,245,14,0,175,186,59,168,251,60,2,239,51,0,0,0,0,0,0,11,244,251,255,139,0,0,0,0,0,0,0,248,252,36,36,36,36,31,0,0,0,0,0,0,48,255,196,0,0,0,0,0,2,152,251,255,253,171,5,0,0,0,0,73,171,255,126,211,218,124,23,0,0,0,0,0,0,0,0 - ,0,0,0,0,11,244,251,255,139,0,0,0,0,0,0,0,103,255,136,0,0,0,0,0,0,0,0,0,0,248,252,36,36,36,36,31,0,0,0,0,0,248,252,36,36,36,36,31,0,0,0,0,0,248,252,36,36,36,36,31,0,0,0,0,0,0,48,255,196,0,0,0,0,48,255,196,0,0,0,0,0,0,48,255,196,0,0,0,0,0,28,255,255,242,24,0,92,255,152,0,0,0,0,51,255,216,4,0,0,0,177,255,89,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,0,156,255,110,0,152,255,116,0,0,0,0,0,10,242,225,0,151,255,32,0,0,0,0,64,255,200,0,0,141,255,86,0,0,0,0,0,96,230,255,255,179,20,0,0,0,0,136,186,0,66,233,13,0,73,240,4,0,224,74,0,0,0,0,0,0,91,255,140,246,226,1,0,0,0,0,0,0,248,252,0,0,0,0,0,0,0,0,0,0,0,48,255,196,0,0,0,0,0,79,255,183,89,184,255,80,0,0,0,0,0,131,221,0,207,145,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,91,255,140,246,226,1,0,0,0,0,0,0,81,255,162,0,0,0,1,60,53,0,0,0,0,248,252,0,0,0,0,0,0,0,0,0,0,248,252,0,0,0,0,0,0,0,0,0,0,248,252,0,0,0,0,0,0,0,0,0,0,0,48,255,196,0,0,0,0,48,255,196,0,0,0,0,0,0,48,255,196,0,0,0,0,0,28,255,238,251,159,0,92,255,152,0,0,0,0,106,255,140,0,0,0,0,99,255,144,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,0,28,247,224,22,245,233,10,0,0,0,0,0,0,161,255,48,224,198,0,0,0,0,0,64,255,153,0,0,97,255,115,0,0,0,0,0,0,1,219,156,255,163,0,0,0,0,162,161,0,143,165,0,0,119,173,0,31,254,38,0,0,0,0,0,0,181,255,43,172,255,60,0,0,0,0,0,0,248,254,180,180,180,180,92,0,0,0,0,0,0,48,255,196,0,0,0,0,0,35,76,32,52,176,255,99,0,0,0,0,127,213,221,132,250,184,88,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,181,255,43,172,255,60,0,0,0,0,0,0,22,251,237,17,0,0,51,255,200,0,0,0,0,248,254,180,180,180,180,92,0,0,0,0,0,248,254,180,180,180,180,92,0,0,0,0,0,248,254,180,180,180,180,92,0,0,0,0,0,0,48,255,196,0,0,0,0,48,255,196,0,0,0,0,0,0,48,255,196,0,0,0,0,0,28,255,212,144,254,54,92,255,152,0,0,0,0,119,255,124,0,0,0,0,80,255,158,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,0,0,141,255,199,255,114,0,0,0,0,0,0,0,69,255,167,255,108,0,0,0,0,0,64,255,181,0,0,129,255,94,0,0,0,0,122,175,6,216,12,232,210,0,0,0,0,139,188,0,143,199,2,29,233,122,7,184,187,0,0,0,0,0,0,21,251,214,0,87,255,149,0,0,0,0,0,0,248,255,236,236,236,236,121,0,0,0,0,0,0,48,255,196,0,0,0,0,0,19,180,251,245,222,255,100,0,0,0,0,189,254,219,212,255,202,131,0,0,0,0,0,0,0,0,0 - ,0,0,0,21,251,214,0,87,255,149,0,0,0,0,0,0,0,147,255,212,104,110,224,255,100,0,0,0,0,248,255,236,236,236,236,121,0,0,0,0,0,248,255,236,236,236,236,121,0,0,0,0,0,248,255,236,236,236,236,121,0,0,0,0,0,0,48,255,196,0,0,0,0,48,255,196,0,0,0,0,0,0,48,255,196,0,0,0,0,0,28,255,212,16,235,199,93,255,152,0,0,0,0,93,255,157,0,0,0,0,114,255,133,0,0,0,0,3,255,240,0,0,0,116,255,127,0,0,0,0,0,0,19,241,255,232,9,0,0,0,0,0,0,0,2,229,255,252,23,0,0,0,0,0,64,255,253,110,82,237,247,24,0,0,0,0,127,255,130,222,99,253,170,0,0,0,0,62,250,35,36,236,221,228,162,241,228,199,21,0,0,0,0,0,0,107,255,207,136,147,255,233,3,0,0,0,0,0,248,252,0,0,0,0,0,0,0,0,0,0,0,48,255,196,0,0,0,0,0,135,255,109,2,110,255,100,0,0,0,0,26,255,70,101,247,4,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,107,255,207,136,147,255,233,3,0,0,0,0,0,0,6,162,254,255,255,247,124,0,0,0,0,0,248,252,0,0,0,0,0,0,0,0,0,0,248,252,0,0,0,0,0,0,0,0,0,0,248,252,0,0,0,0,0,0,0,0,0,0,0,48,255,196,0,0,0,0,48,255,196,0,0,0,0,0,0,48,255,196,0,0,0,0,0,28,255,212,0,102,255,185,255,152,0,0,0,0,25,251,241,26,0,0,11,219,255,61,0,0,0,0,0,246,254,23,0,0,150,255,114,0,0,0,0,0,0,0,143,255,131,0,0,0,0,0,0,0,0,0,140,255,186,0,0,0,0,0,0,64,255,197,242,255,249,92,0,0,0,0,0,11,182,255,255,255,211,33,0,0,0,0,0,174,209,25,16,62,16,0,44,50,1,0,0,0,0,0,0,0,197,255,255,255,255,255,255,70,0,0,0,0,0,248,252,0,0,0,0,0,0,0,0,0,0,0,48,255,196,0,0,0,0,0,152,255,123,60,213,255,100,0,0,0,0,77,255,18,151,201,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,197,255,255,255,255,255,255,70,0,0,0,0,0,0,0,0,25,197,112,13,0,0,0,0,0,0,248,252,0,0,0,0,0,0,0,0,0,0,248,252,0,0,0,0,0,0,0,0,0,0,248,252,0,0,0,0,0,0,0,0,0,0,0,48,255,196,0,0,0,0,48,255,196,0,0,0,0,0,0,48,255,196,0,0,0,0,0,28,255,212,0,2,207,255,255,152,0,0,0,0,0,133,255,222,113,107,207,255,175,0,0,0,0,0,0,172,255,204,105,139,250,253,44,0,0,0,0,0,0,0,128,255,116,0,0,0,0,0,0,0,0,0,83,255,97,0,0,0,0,0,0,64,255,148,21,69,26,0,0,0,0,0,0,0,0,35,226,55,1,0,0,0,0,0,0,11,171,239,137,74,59,81,144,29,0,0,0,0,0,0,0,33,255,213,24,24,24,101,255,158,0,0,0,0,0,248,254,160,160,160,160,160,17,0,0,0,0,0,48,255,196,0,0,0,0,0,56,247,255,248,173,255,155,0,0,0,0,47,100,0,78,70,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,33,255,213,24,24,24,101,255,158,0,0,0,0,0,0,0,2,19,70,248,39,0,0,0,0,0,0,248,254,160,160,160,160,160,17,0,0,0,0,248,254,160,160,160,160,160,17,0,0,0,0,248,254,160,160,160,160,160,17,0,0,0,0,0,48,255,196,0,0,0,0,48,255,196,0,0,0,0,0,0,48,255,196,0,0,0,0,0,28,255,212,0,0,61,255,255,152,0,0,0,0,0,1,130,248,255,255,253,157,9,0,0,0,0,0,0,22,191,255,255,255,240,97,0,0,0,0,0,0,0,0,128,255,116,0,0,0,0,0,0,0,0,114,218,246,15,0,0,0,0,0,0,64,255,148,0,0,0,0,0,0,0,0,0,0,0,0,138,7,0,0,0,0,0,0,0,0,0,61,146,189,200,181,129,24,0,0,0,0,0,0,0,123,255,127,0,0,0,13,248,240,7,0,0,0,0,248,255,255,255,255,255,255,28,0,0,0,0,0,48,255,196,0,0,0,0,0,0,25,69,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,123,255,127,0,0,0,13,248,240,7,0,0,0,0,0,0,23,169,179,169,8,0,0,0,0,0,0,248,255,255,255,255,255,255,28,0,0,0,0,248,255,255,255,255,255,255,28,0,0,0,0,248,255,255,255,255,255,255,28,0,0,0,0,0,48,255,196,0,0,0,0,48,255,196,0,0,0,0,0,0,48,255,196,0,0,0,0,0,28,255,212,0,0,0,167,255,152,0,0,0,0,0,0,0,13,62,66,21,0,0,0,0,0,0,0,0,0,0,37,70,57,8,0,0,0,0,0,0,0,0,0,128,255,116,0,0,0,0,0,0,0,0,185,194,78,0,0,0,0,0,0,0,53,212,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,20,4,0,0,0,10,44,0,0,0,0,0,0,0,0,0,4,75,93,25,0,0,0,0,0,0,0,0,0,0,24,38,0,0,0,0,0,0,54,96,62,0,0,0,0,0,0,0,2,70,99,67,2,0,0,0,0,0,0,32,56,56,56,56,20,0,0,0,0,0,0,35,94,81,12,0,0,0,0,0,0,0,60,99,70,3,0,0,0,0,0,0,1,64,97,54,0,0,0,0,0,0,0,0,13,106,155,150,94,5,0,0,0,0,0,0,0,4,88,148,155,116,25,0,0,0,0,0,0,0,0,0,0,77,124,38,0,0,0,0,0,0,6,93,150,153,106,15,0,0,0,0,0,0,0,0,4,88,148,154,109,17,0,0,0,0,0,0,0,5,92,148,156,123,34,0,0,0,0,0,0,1,124,116,0,0,0,56,124,62,0,0,0,0,8,54,0,0,0,0,0,0,0,29,124,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,91,124,9,0,0,0,0,0,0,7,26,0,2,4,0,0,0,0,0,1,4,2,2,27,4,0,0,0,0,0,0,0 - ,0,0,19,196,255,237,73,0,0,132,120,0,0,0,0,0,0,0,0,7,203,255,255,241,36,0,0,0,0,0,0,0,0,0,133,90,0,0,0,0,0,146,255,255,255,169,2,0,0,0,0,7,198,255,255,255,194,5,0,0,0,0,0,174,255,255,255,255,92,0,0,0,0,0,102,252,255,255,223,23,0,0,0,0,4,179,255,255,255,201,11,0,0,0,0,4,180,255,255,255,148,0,0,0,0,0,0,35,225,255,255,255,255,205,15,0,0,0,0,0,20,204,255,255,255,255,242,66,0,0,0,0,0,0,0,0,0,160,255,80,0,0,0,0,0,26,211,255,255,255,255,231,48,0,0,0,0,0,0,20,204,255,255,255,255,234,52,0,0,0,0,0,5,198,255,249,245,255,248,63,0,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,1,215,6,0,0,0,0,0,0,60,255,152,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,255,20,0,0,0,0,0,78,238,255,190,190,255,8,0,0,0,0,64,255,178,218,255,234,67,0,0,0,0,0,0 - ,0,0,146,219,58,154,232,1,25,217,9,0,0,0,0,0,0,0,0,68,255,136,67,255,111,0,0,0,0,0,0,0,0,0,202,20,0,0,0,0,51,255,184,26,161,255,78,0,0,0,0,87,255,138,23,172,255,78,0,0,0,0,0,215,180,104,104,104,37,0,0,0,0,21,246,198,31,97,224,107,0,0,0,0,78,255,140,23,113,255,106,0,0,0,0,98,255,143,26,163,255,59,0,0,0,0,0,199,255,155,27,30,174,255,141,0,0,0,0,0,183,255,163,34,20,108,252,232,6,0,0,0,0,0,0,0,0,160,255,80,0,0,0,0,0,192,255,162,32,25,135,255,223,8,0,0,0,0,0,179,255,169,34,19,122,255,228,12,0,0,0,0,77,255,176,7,2,95,255,190,0,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,0,150,73,0,0,0,0,0,0,60,255,152,3,28,4,0,0,0,0,0,0,0,0,8,27,0,188,255,20,0,0,0,0,25,244,240,118,177,255,255,8,0,0,0,0,64,255,255,152,126,248,237,14,0,0,0,0,0 - ,0,0,174,166,0,76,254,8,153,99,0,0,0,0,0,0,0,0,0,38,253,204,119,255,65,0,0,0,0,0,0,0,0,22,199,0,0,0,0,0,120,255,86,0,62,255,144,0,0,0,0,84,176,37,0,117,255,87,0,0,0,0,5,251,98,47,35,0,0,0,0,0,0,93,255,89,6,8,0,0,0,0,0,0,89,255,68,0,33,255,114,0,0,0,0,155,255,33,0,51,255,137,0,0,0,0,45,255,221,3,0,0,23,188,151,0,0,0,0,43,255,221,4,0,0,0,102,140,27,0,0,0,0,0,0,0,0,160,255,80,0,0,0,0,51,255,216,4,0,0,0,177,255,89,0,0,0,0,39,255,228,6,0,0,0,166,255,101,0,0,0,0,100,255,151,0,0,0,100,89,0,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,0,67,155,0,0,0,0,0,0,60,255,189,224,255,233,66,0,0,0,0,0,0,89,242,255,206,206,255,20,0,0,0,0,108,255,119,0,3,224,255,8,0,0,0,0,64,255,200,0,0,141,255,88,0,0,0,0,0 - ,0,0,81,253,183,234,172,40,209,3,0,0,0,0,0,0,0,0,0,0,138,255,255,118,0,0,0,0,0,0,0,0,0,94,128,0,0,0,0,0,150,255,59,0,32,255,173,0,0,0,0,0,0,15,108,230,202,9,0,0,0,0,41,255,236,255,255,174,5,0,0,0,0,133,255,176,247,252,163,5,0,0,0,0,9,194,226,143,210,212,20,0,0,0,0,147,255,53,0,71,255,171,0,0,0,0,92,255,153,0,0,0,0,0,0,0,0,0,0,98,255,149,0,0,13,24,24,24,6,0,0,0,0,0,0,0,0,160,255,80,0,0,0,0,106,255,140,0,0,0,0,99,255,144,0,0,0,0,94,255,156,0,0,0,0,89,255,158,0,0,0,0,35,247,255,220,158,106,37,0,0,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,0,4,214,2,0,0,0,0,0,60,255,255,154,127,248,237,14,0,0,0,0,37,250,236,116,176,255,255,20,0,0,0,0,139,255,73,0,0,177,255,8,0,0,0,0,64,255,153,0,0,97,255,115,0,0,0,0,0 - ,0,0,0,74,152,115,8,175,79,44,136,117,14,0,0,0,0,0,0,89,244,249,255,106,42,216,62,0,0,0,0,0,0,166,56,0,0,0,0,0,158,255,52,0,25,255,181,0,0,0,0,0,0,38,235,255,191,16,0,0,0,0,74,236,154,64,181,255,108,0,0,0,0,145,255,217,102,183,255,115,0,0,0,0,22,208,244,187,240,219,34,0,0,0,0,67,255,216,129,223,255,176,0,0,0,0,104,255,136,0,0,0,0,0,0,0,0,0,0,110,255,133,0,0,140,255,255,255,64,0,0,0,0,0,0,0,0,160,255,80,0,0,0,0,119,255,124,0,0,0,0,80,255,158,0,0,0,0,107,255,137,0,0,0,0,74,255,171,0,0,0,0,0,47,160,224,255,255,254,140,0,0,0,0,0,4,255,240,0,0,0,116,255,128,0,0,0,0,0,0,158,63,0,0,0,0,0,60,255,201,0,0,138,255,87,0,0,0,0,126,255,104,0,5,232,255,20,0,0,0,0,125,255,99,0,0,210,255,8,0,0,0,0,64,255,181,0,0,129,255,95,0,0,0,0,0 - ,0,0,0,0,0,0,58,195,44,245,207,230,200,1,0,0,0,0,25,250,189,24,213,250,167,255,35,0,0,0,0,0,2,216,2,0,0,0,0,0,148,255,62,0,31,255,171,0,0,0,0,0,0,0,0,106,255,138,0,0,0,0,0,0,0,0,42,255,173,0,0,0,0,138,255,77,0,17,255,182,0,0,0,0,145,255,75,0,47,255,172,0,0,0,0,0,116,240,246,157,255,159,0,0,0,0,82,255,162,0,0,0,1,60,53,0,0,0,0,84,255,170,0,0,74,136,188,255,64,0,0,0,0,90,132,35,0,160,255,80,0,0,0,0,93,255,157,0,0,0,0,114,255,133,0,0,0,0,81,255,169,0,0,15,79,105,255,145,0,0,0,0,0,0,0,0,20,92,242,255,34,0,0,0,0,3,255,240,0,0,0,116,255,127,0,0,0,0,0,0,76,145,0,0,0,0,0,60,255,157,0,0,93,255,115,0,0,0,0,155,255,57,0,0,193,255,20,0,0,0,0,54,255,223,74,131,255,255,8,0,0,0,0,64,255,253,107,79,237,248,25,0,0,0,0,0 - ,0,0,0,0,0,0,195,58,133,207,0,39,255,44,0,0,0,0,67,255,124,0,37,240,255,189,0,0,0,0,0,0,54,166,0,0,0,0,0,0,115,255,99,0,62,255,136,0,0,0,0,104,180,36,0,39,255,173,0,0,0,0,66,104,21,0,43,255,169,0,0,0,0,105,255,67,0,16,255,177,0,0,0,0,178,255,38,0,10,255,205,0,0,0,0,17,36,9,1,71,255,116,0,0,0,0,23,252,237,17,0,0,51,255,199,0,0,0,0,18,246,248,42,0,0,2,187,255,64,0,0,0,0,173,255,72,0,163,255,76,0,0,0,0,25,251,241,26,0,0,11,219,255,61,0,0,0,0,17,247,246,33,0,126,254,228,255,71,0,0,0,0,110,212,87,0,0,0,175,255,50,0,0,0,0,0,246,254,23,0,0,150,255,114,0,0,0,0,0,0,7,212,0,0,0,0,0,60,255,186,0,0,126,255,94,0,0,0,0,136,255,85,0,0,224,255,20,0,0,0,0,0,139,255,255,230,213,255,8,0,0,0,0,64,255,197,243,255,251,98,0,0,0,0,0,0 - ,0,0,0,0,0,79,176,0,109,233,52,109,253,25,0,0,0,0,27,252,232,78,101,236,255,202,7,0,0,0,0,0,126,94,0,0,0,0,0,0,39,253,209,77,192,255,58,0,0,0,0,95,255,180,76,176,255,122,0,0,0,0,122,255,176,78,188,255,95,0,0,0,0,33,252,201,78,170,255,107,0,0,0,0,119,255,178,75,160,255,148,0,0,0,0,97,255,164,74,205,251,33,0,0,0,0,0,151,255,212,104,110,224,255,97,0,0,0,0,0,121,255,234,122,105,196,249,255,64,0,0,0,0,131,255,188,104,235,255,38,0,0,0,0,0,133,255,222,113,107,207,255,175,0,0,0,0,0,0,124,255,227,116,107,245,255,217,0,0,0,0,0,57,254,231,102,71,118,249,234,8,0,0,0,0,0,172,255,204,105,139,250,253,44,0,0,0,0,0,0,0,167,53,0,0,0,0,60,255,254,112,82,237,247,23,0,0,0,0,57,255,217,73,136,255,255,20,0,0,0,0,16,40,60,70,14,193,251,2,0,0,0,0,64,255,148,23,73,29,0,0,0,0,0,0,0 - ,0,0,0,0,3,210,41,0,9,187,255,250,112,0,0,0,0,0,0,105,249,255,255,205,148,255,157,0,0,0,0,0,197,23,0,0,0,0,0,0,0,123,254,255,255,145,0,0,0,0,0,4,173,255,255,255,182,9,0,0,0,0,11,189,255,255,254,151,2,0,0,0,0,0,106,250,255,255,171,5,0,0,0,0,6,171,255,255,255,190,16,0,0,0,0,6,184,255,255,250,105,0,0,0,0,0,0,6,158,253,255,255,247,124,0,0,0,0,0,0,0,123,247,255,255,234,71,252,64,0,0,0,0,17,205,255,255,253,134,0,0,0,0,0,0,1,130,248,255,255,253,157,9,0,0,0,0,0,0,0,123,246,255,255,254,210,255,103,0,0,0,0,0,108,244,255,255,255,219,58,0,0,0,0,0,0,22,191,255,255,255,240,97,0,0,0,0,0,0,0,0,85,135,0,0,0,0,60,255,207,245,255,249,94,0,0,0,0,0,0,132,255,255,233,217,255,20,0,0,0,0,58,255,218,99,136,254,173,0,0,0,0,0,64,255,148,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,13,54,0,0,0,0,32,18,0,0,0,0,0,0,0,0,21,69,55,1,0,0,0,0,0,0,0,0,41,0,0,0,0,0,0,0,0,0,32,71,37,0,0,0,0,0,0,0,0,41,71,42,0,0,0,0,0,0,0,0,46,71,31,0,0,0,0,0,0,0,0,23,69,44,0,0,0,0,0,0,0,0,37,71,44,0,0,0,0,0,0,0,0,51,74,25,0,0,0,0,0,0,0,0,0,24,66,63,14,0,0,0,0,0,0,0,0,0,15,64,65,10,0,7,2,0,0,0,0,0,2,52,69,28,0,0,0,0,0,0,0,0,0,13,62,66,21,0,0,0,0,0,0,0,0,0,0,12,61,69,26,0,109,18,0,0,0,0,0,0,10,57,69,44,0,0,0,0,0,0,0,0,0,0,37,70,57,8,0,0,0,0,0,0,0,0,0,6,34,0,0,0,0,0,0,0,23,69,26,0,0,0,0,0,0,0,0,37,68,14,0,0,0,0,0,0,0,0,76,178,207,194,125,10,0,0,0,0,0,53,212,122,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,8,26,0,3,4,0,0,0,0,0,3,4,0,0,0,3,3,0,0,0,0,0,4,3,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,34,71,50,1,0,0,0,0,0,0,0,0,29,119,162,149,86,3,0,0,0,0,0,0,0,0,0,29,119,162,149,86,3,0,0,0,0,0,0,1,4,2,0,0,4,3,0,0,0,0,0,0,0,41,7,0,0,0,29,57,0,0,0,0,0,0,0,0,0,41,7,0,0,0,35,51,0,0,0,0,0,0,0,48,74,14,0,0,0,0,72,12,0,0,0,0,0,0,0,0,0,4,3,0,0,0,0,0,0,0,0,0,8,97,151,154,103,12,39,97,0,0,0,0,0,0,65,117,109,41,0,0,0,0,0,0,0,12,188,119,0,0,0,0,0,0,0,0,0,0,106,195,18,0,0,0,0,0,0,0,92,208,118,0,0,0,0,0,0,0,49,165,102,46,147,0,0,0,0,0,0,65,168,5,162,76,0,0,0,0,0,0,0,2,26,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,95,243,255,194,202,255,20,0,0,0,0,181,255,71,0,12,249,209,0,0,0,0,36,255,208,0,0,0,0,0,0,2,158,16,0,0,0,0,0,0,2,162,255,255,255,206,19,0,0,0,0,0,0,98,228,131,80,94,179,207,29,0,0,0,0,0,0,0,98,228,131,80,94,179,207,29,0,0,0,0,0,64,255,148,0,4,255,204,0,0,0,0,0,31,107,246,36,0,0,0,193,98,0,0,0,0,0,0,0,31,107,246,36,0,0,3,210,78,0,0,0,0,0,0,100,224,194,219,3,0,0,85,201,1,0,0,0,0,0,0,0,0,24,255,216,0,0,0,0,0,0,0,0,32,217,255,255,255,255,225,218,65,0,0,0,0,0,147,255,255,255,253,95,0,0,0,0,0,0,0,50,228,12,0,0,0,0,0,0,0,0,6,223,61,0,0,0,0,0,0,0,36,210,37,213,50,0,0,0,0,0,0,159,121,158,221,102,0,0,0,0,0,0,92,236,7,228,106,0,0,0,0,0,0,79,228,255,253,169,7,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,42,251,233,115,180,255,255,20,0,0,0,0,89,255,149,0,78,255,120,0,0,0,0,31,224,182,0,0,0,0,0,74,228,255,254,167,7,0,0,0,0,88,255,180,44,130,255,138,0,0,0,0,0,73,221,29,94,169,152,37,111,212,7,0,0,0,0,0,73,221,103,148,148,145,78,111,212,7,0,0,0,0,64,255,148,0,4,255,204,0,0,0,0,0,67,150,255,36,0,0,85,205,2,0,0,0,0,0,0,0,67,150,255,36,0,0,105,187,0,0,0,0,0,0,0,98,67,60,248,11,0,8,222,56,0,0,0,0,0,0,0,0,0,21,224,189,0,0,0,0,0,0,0,1,204,255,153,29,23,141,255,221,5,0,0,0,0,12,252,215,14,44,250,220,0,0,0,0,0,0,0,10,51,20,0,0,0,0,0,0,0,0,15,53,13,0,0,0,0,0,0,0,13,24,32,26,15,0,0,0,0,0,0,0,10,32,13,0,0,0,0,0,0,0,0,10,32,13,0,0,0,0,0,0,31,247,227,98,160,255,126,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,131,255,100,0,6,235,255,20,0,0,0,0,10,242,225,0,151,255,32,0,0,0,0,0,51,25,0,0,0,0,26,246,230,196,163,255,122,0,0,0,0,121,255,99,0,2,175,133,0,0,0,0,0,212,67,106,236,117,176,224,5,177,104,0,0,0,0,0,212,67,128,222,120,156,252,21,177,104,0,0,0,0,64,255,148,0,4,255,204,0,0,0,0,0,0,24,255,36,0,8,223,60,0,0,0,0,0,0,0,0,0,24,255,36,0,16,231,43,0,0,0,0,0,0,0,0,54,241,193,3,0,124,163,0,0,0,0,0,0,0,0,0,0,0,93,74,0,0,0,0,0,0,0,66,255,208,1,0,8,193,223,255,82,0,0,0,0,31,255,176,0,16,246,207,0,0,0,0,0,2,152,251,255,253,171,5,0,0,0,0,2,152,251,255,253,171,5,0,0,0,0,2,152,251,255,253,171,5,0,0,0,0,2,152,251,255,253,171,5,0,0,0,0,2,152,251,255,253,171,5,0,0,0,0,111,255,104,0,8,155,113,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,159,255,53,0,0,197,255,20,0,0,0,0,0,161,255,48,224,198,0,0,0,0,0,0,181,99,0,0,0,0,103,255,110,148,8,155,112,0,0,0,0,44,254,194,0,0,0,0,0,0,0,0,26,235,0,200,113,0,8,100,13,90,174,0,0,0,0,26,235,0,128,200,32,73,247,17,90,174,0,0,0,0,64,255,148,0,4,255,204,0,0,0,0,0,0,24,255,36,0,123,168,0,18,135,61,0,0,0,0,0,0,24,255,36,0,143,148,39,147,148,46,0,0,0,0,76,40,17,252,60,26,233,27,18,135,61,0,0,0,0,0,0,0,38,250,154,0,0,0,0,0,0,0,122,255,129,0,3,175,127,104,255,138,0,0,0,0,32,255,176,58,232,250,72,0,0,0,0,0,79,255,183,89,184,255,80,0,0,0,0,79,255,183,89,184,255,80,0,0,0,0,79,255,183,89,184,255,80,0,0,0,0,79,255,183,89,184,255,80,0,0,0,0,79,255,183,89,184,255,80,0,0,0,0,138,255,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,141,255,81,0,1,226,255,20,0,0,0,0,0,69,255,167,255,108,0,0,0,0,0,0,216,133,0,0,0,0,129,255,77,148,0,0,0,0,0,0,0,109,233,255,193,161,0,0,0,0,0,0,42,218,0,216,85,0,0,0,0,71,190,0,0,0,0,42,218,0,128,252,240,253,155,0,71,190,0,0,0,0,64,255,154,0,11,255,204,0,0,0,0,0,0,24,255,36,26,234,30,0,160,247,116,0,0,0,0,0,0,24,255,36,39,233,19,217,148,153,224,0,0,0,0,149,216,167,243,25,162,125,0,160,247,116,0,0,0,0,0,0,69,238,238,37,0,0,0,0,0,0,0,134,255,110,0,154,152,0,88,255,154,0,0,0,0,32,255,176,35,147,247,237,28,0,0,0,0,35,76,32,52,176,255,99,0,0,0,0,35,76,32,52,176,255,99,0,0,0,0,35,76,32,52,176,255,99,0,0,0,0,35,76,32,52,176,255,99,0,0,0,0,35,76,32,52,176,255,99,0,0,0,0,123,255,95,0,2,110,82,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,64,255,213,68,135,255,255,20,0,0,0,0,0,2,229,255,252,23,0,0,0,0,0,2,249,167,0,0,0,0,113,255,99,148,3,111,82,0,0,0,0,0,67,255,111,0,0,0,0,0,0,0,9,242,12,174,149,0,29,220,28,111,155,0,0,0,0,9,242,12,128,192,0,85,241,0,111,155,0,0,0,0,64,255,229,78,152,255,216,2,0,0,0,0,0,7,80,11,162,130,0,68,176,200,116,0,0,0,0,0,0,7,80,11,182,110,0,114,23,86,236,0,0,0,0,6,95,114,36,55,223,9,68,176,200,116,0,0,0,0,0,24,245,237,43,0,0,0,0,0,0,0,0,107,255,140,131,174,3,0,124,255,128,0,0,0,0,32,255,176,0,0,120,255,108,0,0,0,0,19,180,251,245,222,255,100,0,0,0,0,19,180,251,245,222,255,100,0,0,0,0,19,180,251,245,222,255,100,0,0,0,0,19,180,251,245,222,255,100,0,0,0,0,19,180,251,245,222,255,100,0,0,0,0,48,255,214,60,129,255,138,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,144,255,255,226,214,255,20,0,0,0,0,0,0,140,255,186,0,0,0,0,0,0,28,255,199,0,0,0,0,42,254,213,180,131,255,137,0,0,0,0,0,70,255,60,0,0,0,0,0,0,0,0,165,126,50,241,206,234,172,11,220,64,0,0,0,0,0,165,126,128,192,0,61,254,24,220,64,0,0,0,0,64,255,248,255,252,219,255,116,0,0,0,0,0,0,0,54,226,10,7,215,74,210,142,2,0,0,0,0,0,0,0,73,214,4,0,0,91,229,84,0,0,0,0,0,0,0,1,200,86,7,215,74,210,142,2,0,0,0,0,78,255,144,0,0,140,196,9,0,0,0,0,34,253,243,194,8,0,13,224,255,54,0,0,0,0,32,255,176,0,0,109,255,106,0,0,0,0,135,255,109,2,110,255,100,0,0,0,0,135,255,109,2,110,255,100,0,0,0,0,135,255,109,2,110,255,100,0,0,0,0,135,255,109,2,110,255,100,0,0,0,0,135,255,109,2,110,255,100,0,0,0,0,0,121,251,255,255,197,15,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,44,71,13,192,255,20,0,0,0,0,0,0,83,255,97,0,0,0,0,0,0,36,255,208,0,0,0,0,0,119,252,255,255,193,14,0,0,0,0,40,221,193,143,104,102,94,0,0,0,0,0,25,222,109,23,79,58,26,189,148,0,0,0,0,0,0,25,222,133,38,0,5,73,200,148,0,0,0,0,0,64,255,131,62,38,9,66,18,0,0,0,0,0,0,1,199,91,0,22,204,204,244,227,9,0,0,0,0,0,0,4,215,71,0,0,125,227,53,11,0,0,0,0,0,0,0,92,195,0,22,204,204,244,227,9,0,0,0,0,51,255,199,7,29,240,230,0,0,0,0,0,0,172,255,212,109,108,210,255,167,0,0,0,0,0,32,255,176,24,106,233,254,43,0,0,0,0,152,255,123,60,213,255,100,0,0,0,0,152,255,123,60,213,255,100,0,0,0,0,152,255,123,60,213,255,100,0,0,0,0,152,255,123,60,213,255,100,0,0,0,0,152,255,123,60,213,255,100,0,0,0,0,0,0,28,203,95,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,192,255,20,0,0,0,0,0,114,218,246,15,0,0,0,0,0,0,36,255,208,0,0,0,0,0,0,25,175,49,0,0,0,0,0,0,76,255,235,251,255,255,207,0,0,0,0,0,0,27,181,224,175,190,231,118,1,0,0,0,0,0,0,0,27,181,224,175,190,231,118,1,0,0,0,0,0,64,255,128,0,0,0,0,0,0,0,0,0,0,0,91,199,1,0,0,0,0,200,116,0,0,0,0,0,0,0,111,180,0,0,3,245,255,255,248,0,0,0,0,0,0,11,226,50,0,0,0,0,200,116,0,0,0,0,0,0,174,255,241,248,255,111,0,0,0,0,0,63,217,150,250,255,255,252,151,7,0,0,0,0,0,32,255,176,76,255,252,122,0,0,0,0,0,56,247,255,248,173,255,155,0,0,0,0,56,247,255,248,173,255,155,0,0,0,0,56,247,255,248,173,255,155,0,0,0,0,56,247,255,248,173,255,155,0,0,0,0,56,247,255,248,173,255,155,0,0,0,0,0,6,24,84,252,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,159,212,16,0,0,0,0,0,185,194,78,0,0,0,0,0,0,0,15,108,87,0,0,0,0,0,0,0,90,0,0,0,0,0,0,0,0,28,0,8,56,64,8,0,0,0,0,0,0,0,0,27,65,52,6,0,0,0,0,0,0,0,0,0,0,0,27,65,52,6,0,0,0,0,0,0,0,55,220,110,0,0,0,0,0,0,0,0,0,0,0,49,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,23,0,0,0,0,0,0,0,0,0,0,0,0,0,20,56,0,0,0,0,0,0,0,0,0,0,0,0,0,4,97,158,153,76,0,0,0,0,0,0,28,36,0,18,65,65,20,0,0,0,0,0,0,0,0,0,0,12,51,22,0,0,0,0,0,0,0,25,69,24,0,0,0,0,0,0,0,0,25,69,24,0,0,0,0,0,0,0,0,25,69,24,0,0,0,0,0,0,0,0,25,69,24,0,0,0,0,0,0,0,0,25,69,24,0,0,0,0,0,0,0,0,41,170,184,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,10,186,123,0,0,0,0,0,0,0,0,0,0,83,205,31,0,0,0,0,0,0,0,69,208,142,0,0,0,0,0,0,0,47,168,23,144,94,0,0,0,0,0,0,14,126,43,102,56,0,0,0,0,0,0,0,0,109,202,8,0,0,0,0,0,0,0,0,0,0,24,213,81,0,0,0,0,0,0,0,0,25,203,198,10,0,0,0,0,0,0,0,3,142,138,54,132,39,0,0,0,0,0,0,0,168,70,97,141,0,0,0,0,0,0,0,0,116,198,5,0,0,0,0,0,0,0,0,0,0,27,214,78,0,0,0,0,0,0,0,0,24,198,189,7,0,0,0,0,0,0,0,7,168,63,105,133,0,0,0,0,0,0,61,112,45,0,0,0,0,0,0,0,19,50,0,0,0,0,0,2,63,97,70,5,0,0,0,0,0,0,0,0,22,56,46,0,0,0,0,0,35,56,56,56,56,56,48,0,0,0,0,104,196,82,0,0,0,0,0,1,91,161,158,90,1,0,0,0,0,0,0,0,0,47,124,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,47,228,14,0,0,0,0,0,0,0,0,0,206,84,0,0,0,0,0,0,0,20,211,42,199,73,0,0,0,0,0,0,66,236,33,202,132,0,0,0,0,0,0,7,161,255,217,12,0,0,0,0,0,0,0,0,3,184,103,0,0,0,0,0,0,0,0,0,0,136,154,0,0,0,0,0,0,0,0,1,186,78,134,147,0,0,0,0,0,0,0,59,180,121,206,190,6,0,0,0,0,0,0,0,236,99,136,199,0,0,0,0,0,0,0,0,5,190,95,0,0,0,0,0,0,0,0,0,0,140,150,0,0,0,0,0,0,0,0,1,184,80,144,137,0,0,0,0,0,0,0,11,236,88,147,188,0,0,0,0,0,0,140,255,104,0,0,0,0,0,0,3,177,232,0,0,0,0,4,183,255,255,255,210,18,0,0,0,0,0,0,0,193,255,212,0,0,0,0,0,160,255,255,255,255,255,220,0,0,0,0,136,255,108,0,0,0,0,0,138,255,243,241,255,153,0,0,0,0,0,0,0,0,165,255,255,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,6,49,14,0,0,0,0,0,0,0,0,8,54,7,0,0,0,0,0,0,0,10,23,30,17,18,0,0,0,0,0,0,0,6,30,7,0,0,0,0,0,0,0,2,120,62,226,193,8,0,0,0,0,0,0,0,0,34,38,0,0,0,0,0,0,0,0,0,0,49,23,0,0,0,0,0,0,0,0,2,18,27,21,18,0,0,0,0,0,0,0,0,0,27,19,0,0,0,0,0,0,0,0,0,0,27,19,0,0,0,0,0,0,0,1,4,2,8,17,3,4,0,0,0,0,0,1,4,2,22,3,3,4,0,0,0,0,0,1,7,26,0,3,28,4,0,0,0,0,0,1,4,2,0,0,3,4,0,0,0,0,0,140,255,104,0,0,0,0,15,158,220,255,232,0,0,0,0,80,255,169,25,135,255,127,0,0,0,0,0,0,90,237,255,212,0,0,0,0,0,65,104,104,104,145,255,160,0,0,0,0,19,36,15,0,0,0,0,8,247,225,16,12,215,254,29,0,0,0,0,0,0,11,244,251,255,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,104,242,255,245,122,0,0,0,0,0,0,104,242,255,245,122,0,0,0,0,0,0,104,242,255,245,122,0,0,0,0,0,0,104,242,255,245,122,0,0,0,0,0,0,48,189,233,230,255,146,0,0,0,0,0,0,65,222,255,255,206,44,0,0,0,0,0,0,65,222,255,255,206,44,0,0,0,0,0,0,65,222,255,255,206,44,0,0,0,0,0,0,65,222,255,255,206,44,0,0,0,0,0,0,65,222,255,255,206,44,0,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,131,255,95,0,0,0,0,17,164,164,247,232,0,0,0,0,122,255,73,0,39,255,167,0,0,0,0,0,13,229,101,255,212,0,0,0,0,0,0,0,0,8,214,217,11,0,0,0,0,0,0,0,0,0,0,0,28,192,119,0,0,169,255,53,0,0,0,0,0,0,91,255,140,246,226,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,59,255,190,74,178,255,82,0,0,0,0,59,255,190,74,178,255,82,0,0,0,0,59,255,190,74,178,255,82,0,0,0,0,59,255,190,74,178,255,82,0,0,0,0,20,237,247,132,148,254,249,20,0,0,0,0,25,243,242,110,126,251,222,3,0,0,0,0,25,243,242,110,126,251,222,3,0,0,0,0,25,243,242,110,126,251,222,3,0,0,0,0,25,243,242,110,126,251,222,3,0,0,0,0,25,243,242,110,126,251,222,3,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,100,255,61,0,0,0,0,0,0,0,232,232,0,0,0,0,0,0,0,0,97,255,125,0,0,0,0,0,139,199,1,255,212,0,0,0,0,0,0,0,0,134,255,65,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,247,234,9,0,0,0,0,0,0,181,255,43,172,255,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,150,255,85,36,71,255,176,0,0,0,0,150,255,85,36,71,255,176,0,0,0,0,150,255,85,36,71,255,176,0,0,0,0,150,255,85,36,71,255,176,0,0,0,0,105,255,129,0,0,166,255,79,0,0,0,0,107,255,123,0,0,157,255,63,0,0,0,0,107,255,123,0,0,157,255,63,0,0,0,0,107,255,123,0,0,157,255,63,0,0,0,0,107,255,123,0,0,157,255,63,0,0,0,0,107,255,123,0,0,157,255,63,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,66,255,26,0,0,0,0,0,0,0,232,232,0,0,0,0,0,0,0,82,245,216,14,0,0,0,0,41,247,48,0,255,212,0,0,0,0,0,0,0,25,247,183,0,0,0,0,0,0,121,228,96,0,0,0,0,0,0,0,56,247,228,51,0,0,0,0,0,0,21,251,214,0,87,255,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,178,255,255,255,255,255,207,0,0,0,0,178,255,255,255,255,255,207,0,0,0,0,178,255,255,255,255,255,207,0,0,0,0,178,255,255,255,255,255,207,0,0,0,0,135,255,77,0,0,117,255,96,0,0,0,0,135,255,77,0,0,114,255,92,0,0,0,0,135,255,77,0,0,114,255,92,0,0,0,0,135,255,77,0,0,114,255,92,0,0,0,0,135,255,77,0,0,114,255,92,0,0,0,0,135,255,77,0,0,114,255,92,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,32,246,1,0,0,0,0,0,0,0,232,232,0,0,0,0,0,5,145,255,180,21,0,0,0,0,0,162,224,140,140,255,236,109,0,0,0,0,0,0,123,255,71,0,0,0,0,0,0,136,255,107,0,0,0,0,0,0,0,180,237,23,0,0,0,0,0,0,0,107,255,207,136,147,255,233,3,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,165,255,55,16,16,16,13,0,0,0,0,165,255,55,16,16,16,13,0,0,0,0,165,255,55,16,16,16,13,0,0,0,0,165,255,55,16,16,16,13,0,0,0,0,117,255,104,0,0,145,255,72,0,0,0,0,117,255,106,0,0,147,255,75,0,0,0,0,117,255,106,0,0,147,255,75,0,0,0,0,117,255,106,0,0,147,255,75,0,0,0,0,117,255,106,0,0,147,255,75,0,0,0,0,117,255,106,0,0,147,255,75,0,0,0,0,63,255,152,0,0,208,255,8,0,0,0,0,63,255,152,0,0,208,255,8,0,0,0,0,63,255,152,0,0,208,255,8,0,0,0,0,63,255,152,0,0,208,255,8,0,0,0,0,2,70,0,0,0,0,0,0,0,0,232,232,0,0,0,0,2,180,255,125,0,0,0,0,0,0,0,167,244,244,244,255,253,190,0,0,0,0,0,0,201,240,4,0,0,0,0,0,0,0,123,92,0,0,0,0,0,0,0,80,80,0,0,0,0,0,0,0,0,197,255,255,255,255,255,255,70,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,91,255,151,30,116,248,132,0,0,0,0,91,255,151,30,116,248,132,0,0,0,0,91,255,151,30,116,248,132,0,0,0,0,91,255,151,30,116,248,132,0,0,0,0,40,252,227,71,83,243,237,11,0,0,0,0,38,251,227,69,85,244,237,13,0,0,0,0,38,251,227,69,85,244,237,13,0,0,0,0,38,251,227,69,85,244,237,13,0,0,0,0,38,251,227,69,85,244,237,13,0,0,0,0,38,251,227,69,85,244,237,13,0,0,0,0,44,255,226,79,118,254,255,8,0,0,0,0,44,255,226,79,118,254,255,8,0,0,0,0,44,255,226,79,118,254,255,8,0,0,0,0,44,255,226,79,118,254,255,8,0,0,0,0,124,228,92,0,0,0,0,0,0,0,232,232,0,0,0,0,79,255,243,160,160,160,105,0,0,0,0,0,0,0,0,255,212,0,0,0,0,0,0,9,251,189,0,0,0,0,0,0,0,76,207,18,0,0,0,0,0,0,0,213,228,0,0,0,0,0,0,0,33,255,213,24,24,24,101,255,158,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,1,159,255,255,255,176,10,0,0,0,0,1,159,255,255,255,176,10,0,0,0,0,1,159,255,255,255,176,10,0,0,0,0,1,159,255,255,255,176,10,0,0,0,0,0,99,247,255,255,237,70,0,0,0,0,0,0,98,247,255,255,236,68,0,0,0,0,0,0,98,247,255,255,236,68,0,0,0,0,0,0,98,247,255,255,236,68,0,0,0,0,0,0,98,247,255,255,236,68,0,0,0,0,0,0,98,247,255,255,236,68,0,0,0,0,0,0,181,255,255,213,217,255,8,0,0,0,0,0,181,255,255,213,217,255,8,0,0,0,0,0,181,255,255,213,217,255,8,0,0,0,0,0,181,255,255,213,217,255,8,0,0,0,0,140,255,104,0,0,0,0,0,0,0,232,232,0,0,0,0,141,255,255,255,255,255,168,0,0,0,0,0,0,0,0,255,212,0,0,0,0,0,0,49,255,157,0,0,0,0,0,0,0,27,7,0,0,0,0,0,0,0,0,240,255,0,0,0,0,0,0,0,123,255,127,0,0,0,13,248,240,7,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,36,69,36,0,0,0,0,0,0,0,0,36,69,36,0,0,0,0,0,0,0,0,36,69,36,0,0,0,0,0,0,0,0,36,69,36,0,0,0,0,0,0,0,0,16,65,59,8,0,0,0,0,0,0,0,0,16,65,62,9,0,0,0,0,0,0,0,0,16,65,62,9,0,0,0,0,0,0,0,0,16,65,62,9,0,0,0,0,0,0,0,0,16,65,62,9,0,0,0,0,0,0,0,0,16,65,62,9,0,0,0,0,0,0,0,1,54,64,6,0,0,0,0,0,0,0,0,1,54,64,6,0,0,0,0,0,0,0,0,1,54,64,6,0,0,0,0,0,0,0,0,1,54,64,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,116,124,124,124,118,78,4,0,0,0,0,0,124,124,124,123,106,46,0,0,0,0,0,0,120,124,124,124,124,124,108,0,0,0,0,0,3,124,124,124,124,124,124,77,0,0,0,0,13,124,102,0,0,0,52,124,67,0,0,0,0,23,124,94,0,0,0,0,3,124,112,0,0,0,75,124,86,0,0,0,0,0,118,122,0,0,0,0,0,0,0,0,0,17,124,124,101,0,0,0,111,124,124,11,0,0,0,0,13,124,121,6,0,0,44,124,73,0,0,0,0,1,124,124,124,124,114,63,0,0,0,0,0,0,118,124,124,124,124,112,39,0,0,0,0,0,100,124,124,124,124,124,124,96,0,0,0,0,75,124,43,0,0,0,76,124,39,0,0,0,0,94,124,35,0,0,108,124,17,0,1,122,123,5,0,0,0,0,57,124,103,0,0,5,121,124,27,0,0,0,0,65,124,77,0,0,0,104,124,40,0,0,0,0,75,124,124,124,124,124,124,63,0,0,0,0,0,14,104,119,0,0,0,0,0,15,124,85,0,0,0,0,0,0,0,0,0,15,124,85,0,0,0,0 - ,0,0,240,255,255,255,255,255,190,4,0,0,0,0,255,255,255,255,255,255,138,0,0,0,0,0,248,255,255,255,255,255,224,0,0,0,0,0,8,255,255,255,255,255,255,160,0,0,0,0,28,255,212,0,0,0,108,255,140,0,0,0,0,48,255,196,0,0,0,0,8,255,232,0,0,72,251,228,31,0,0,0,0,0,244,252,0,0,0,0,0,0,0,0,0,36,255,255,247,5,0,17,254,255,255,24,0,0,0,0,28,255,255,118,0,0,92,255,152,0,0,0,0,4,255,255,255,255,255,255,146,0,0,0,0,0,244,255,255,255,255,255,247,50,0,0,0,0,208,255,255,255,255,255,255,200,0,0,0,0,91,255,145,0,0,0,214,251,21,0,0,0,0,141,255,111,0,11,252,255,77,0,38,255,213,0,0,0,0,0,21,237,255,58,0,112,255,191,0,0,0,0,0,39,252,236,10,0,42,255,234,10,0,0,0,0,156,255,255,255,255,255,255,132,0,0,0,0,0,167,255,236,0,0,0,0,0,32,255,176,0,0,0,0,0,0,0,0,0,32,255,176,0,0,0,0 - ,0,0,240,255,39,36,49,200,255,75,0,0,0,0,255,245,36,37,78,231,255,64,0,0,0,0,248,252,36,36,36,36,31,0,0,0,0,0,8,255,235,36,36,36,36,22,0,0,0,0,28,255,212,0,0,0,108,255,140,0,0,0,0,48,255,196,0,0,0,0,8,255,232,0,51,243,236,42,0,0,0,0,0,0,244,252,0,0,0,0,0,0,0,0,0,36,255,251,255,55,0,73,255,251,255,24,0,0,0,0,28,255,255,242,24,0,92,255,152,0,0,0,0,4,255,242,36,36,80,246,254,27,0,0,0,0,244,252,36,36,40,160,255,151,0,0,0,0,29,36,36,242,255,36,36,28,0,0,0,0,13,247,220,0,0,32,255,185,0,0,0,0,0,69,255,164,0,61,255,247,132,0,89,255,142,0,0,0,0,0,0,101,255,195,16,237,248,39,0,0,0,0,0,0,156,255,110,0,152,255,116,0,0,0,0,0,21,36,36,36,66,246,252,62,0,0,0,0,0,210,253,3,0,0,0,0,0,32,255,176,0,25,11,0,0,0,0,0,0,5,40,27,0,0,0,0 - ,0,0,240,255,4,0,0,152,255,75,0,0,0,0,255,244,0,0,0,96,255,160,0,0,0,0,248,252,0,0,0,0,0,0,0,0,0,0,8,255,232,0,0,0,0,0,0,0,0,0,28,255,212,0,0,0,108,255,140,0,0,0,0,48,255,196,0,0,0,0,8,255,232,33,232,243,54,0,0,0,0,0,0,0,244,252,0,0,0,0,0,0,0,0,0,36,255,213,246,113,0,129,238,221,255,24,0,0,0,0,28,255,238,251,159,0,92,255,152,0,0,0,0,4,255,240,0,0,0,192,255,54,0,0,0,0,244,252,0,0,0,80,255,157,0,0,0,0,0,0,0,240,255,0,0,0,0,0,0,0,0,174,255,39,0,107,255,98,0,0,0,0,0,7,245,217,0,114,244,170,187,0,141,255,72,0,0,0,0,0,0,1,198,255,198,255,126,0,0,0,0,0,0,0,28,247,224,22,245,233,10,0,0,0,0,0,0,0,0,7,203,255,117,0,0,0,0,0,182,250,255,224,14,0,0,0,0,32,255,191,195,255,248,96,0,0,0,0,0,32,255,176,0,0,0,0 - ,0,0,240,255,181,180,199,255,165,2,0,0,0,0,255,244,0,0,0,37,255,205,0,0,0,0,248,254,180,180,180,180,92,0,0,0,0,0,8,255,248,180,180,180,180,11,0,0,0,0,28,255,252,236,236,236,244,255,140,0,0,0,0,48,255,196,0,0,0,0,8,255,240,217,255,94,0,0,0,0,0,0,0,0,244,252,0,0,0,0,0,0,0,0,0,36,255,208,192,172,0,186,182,220,255,24,0,0,0,0,28,255,212,144,254,54,92,255,152,0,0,0,0,4,255,240,0,0,43,239,254,24,0,0,0,0,244,253,96,96,100,198,251,62,0,0,0,0,0,0,0,240,255,0,0,0,0,0,0,0,0,88,255,114,0,181,249,16,0,0,0,0,0,0,181,254,15,167,194,113,240,1,192,247,9,0,0,0,0,0,0,0,47,252,255,215,6,0,0,0,0,0,0,0,0,141,255,199,255,114,0,0,0,0,0,0,0,0,0,153,255,173,0,0,0,0,0,0,68,226,253,84,5,0,0,0,0,32,255,255,143,133,254,232,0,0,0,0,0,32,255,176,0,0,0,0 - ,0,0,240,255,236,236,242,255,182,9,0,0,0,0,255,244,0,0,0,27,255,214,0,0,0,0,248,255,236,236,236,236,121,0,0,0,0,0,8,255,254,236,236,236,236,14,0,0,0,0,28,255,242,180,180,180,210,255,140,0,0,0,0,48,255,196,0,0,0,0,8,255,255,248,255,204,7,0,0,0,0,0,0,0,244,252,0,0,0,0,0,0,0,0,0,36,255,208,133,229,2,241,124,220,255,24,0,0,0,0,28,255,212,16,235,199,93,255,152,0,0,0,0,4,255,255,255,255,255,255,158,0,0,0,0,0,244,255,255,255,255,255,139,0,0,0,0,0,0,0,0,240,255,0,0,0,0,0,0,0,0,11,245,189,9,246,178,0,0,0,0,0,0,0,109,255,67,220,140,58,255,43,241,186,0,0,0,0,0,0,0,0,8,227,255,174,0,0,0,0,0,0,0,0,0,19,241,255,232,9,0,0,0,0,0,0,0,0,96,255,217,14,0,0,0,0,0,0,0,212,252,0,0,0,0,0,0,32,255,191,0,0,208,255,6,0,0,0,0,32,255,176,0,0,0,0 - ,0,0,240,255,4,0,0,118,255,121,0,0,0,0,255,244,0,0,0,57,255,189,0,0,0,0,248,252,0,0,0,0,0,0,0,0,0,0,8,255,232,0,0,0,0,0,0,0,0,0,28,255,212,0,0,0,104,255,140,0,0,0,0,48,255,196,0,0,0,0,8,255,250,66,154,255,155,0,0,0,0,0,0,0,244,252,0,0,0,0,0,0,0,0,0,36,255,208,74,255,76,255,66,220,255,24,0,0,0,0,28,255,212,0,102,255,185,255,152,0,0,0,0,4,255,250,160,160,156,100,3,0,0,0,0,0,244,253,64,64,73,218,255,49,0,0,0,0,0,0,0,240,255,0,0,0,0,0,0,0,0,0,171,250,88,255,90,0,0,0,0,0,0,0,37,255,137,255,87,8,250,135,255,115,0,0,0,0,0,0,0,0,132,255,244,255,75,0,0,0,0,0,0,0,0,0,143,255,131,0,0,0,0,0,0,0,0,48,246,244,43,0,0,0,0,0,0,0,0,212,252,0,0,0,0,0,0,32,255,176,0,0,200,255,8,0,0,0,0,32,255,176,0,0,0,0 - ,0,0,240,255,4,0,0,79,255,159,0,0,0,0,255,244,0,0,0,159,255,122,0,0,0,0,248,252,0,0,0,0,0,0,0,0,0,0,8,255,232,0,0,0,0,0,0,0,0,0,28,255,212,0,0,0,104,255,140,0,0,0,0,48,255,196,0,0,0,0,8,255,232,0,9,210,255,98,0,0,0,0,0,0,244,252,0,0,0,0,0,0,0,0,0,36,255,208,17,254,191,252,11,220,255,24,0,0,0,0,28,255,212,0,2,207,255,255,152,0,0,0,0,4,255,240,0,0,0,0,0,0,0,0,0,0,244,252,0,0,0,147,255,87,0,0,0,0,0,0,0,240,255,0,0,0,0,0,0,0,0,0,84,255,223,246,12,0,0,0,0,0,0,0,0,221,235,255,33,0,205,234,255,44,0,0,0,0,0,0,0,43,250,227,64,255,224,10,0,0,0,0,0,0,0,0,128,255,116,0,0,0,0,0,0,0,16,221,255,90,0,0,0,0,0,0,0,0,0,212,252,0,0,0,0,0,0,32,255,176,0,0,200,255,8,0,0,0,0,32,255,176,0,0,0,0 - ,0,0,240,255,161,160,166,236,255,89,0,0,0,0,255,251,160,160,201,255,229,17,0,0,0,0,248,254,160,160,160,160,160,17,0,0,0,0,8,255,232,0,0,0,0,0,0,0,0,0,28,255,212,0,0,0,104,255,140,0,0,0,0,48,255,196,0,0,0,0,8,255,232,0,0,41,244,247,49,0,0,0,0,0,244,254,160,160,160,160,85,0,0,0,0,36,255,208,0,212,255,206,0,220,255,24,0,0,0,0,28,255,212,0,0,61,255,255,152,0,0,0,0,4,255,240,0,0,0,0,0,0,0,0,0,0,244,252,0,0,0,150,255,98,0,0,0,0,0,0,0,240,255,0,0,0,0,0,0,0,0,0,9,244,255,171,0,0,0,0,0,0,0,0,0,149,255,235,0,0,150,255,228,0,0,0,0,0,0,0,1,196,255,95,0,168,255,139,0,0,0,0,0,0,0,0,128,255,116,0,0,0,0,0,0,0,142,255,238,160,160,160,160,82,0,0,0,0,0,212,252,0,0,0,0,0,0,32,255,176,0,0,200,255,8,0,0,0,0,32,255,176,0,0,0,0 - ,0,0,240,255,255,255,252,219,111,0,0,0,0,0,255,255,255,255,242,179,39,0,0,0,0,0,248,255,255,255,255,255,255,28,0,0,0,0,8,255,232,0,0,0,0,0,0,0,0,0,28,255,212,0,0,0,104,255,140,0,0,0,0,48,255,196,0,0,0,0,8,255,232,0,0,0,95,255,222,17,0,0,0,0,244,255,255,255,255,255,136,0,0,0,0,36,255,208,0,153,255,148,0,220,255,24,0,0,0,0,28,255,212,0,0,0,167,255,152,0,0,0,0,4,255,240,0,0,0,0,0,0,0,0,0,0,244,252,0,0,0,117,255,161,0,0,0,0,0,0,0,240,255,0,0,0,0,0,0,0,0,0,0,167,255,83,0,0,0,0,0,0,0,0,0,76,255,182,0,0,95,255,159,0,0,0,0,0,0,0,103,255,208,2,0,33,249,251,47,0,0,0,0,0,0,0,128,255,116,0,0,0,0,0,0,0,156,255,255,255,255,255,255,132,0,0,0,0,0,212,252,0,0,0,0,0,0,32,255,176,0,0,200,255,8,0,0,0,0,32,255,176,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,29,124,73,0,0,0,0,0,0,0,0,0,15,124,85,0,0,0,0,0,180,177,0,0,0,0,0,35,36,0,0,0,24,40,5,0,0,0,0,0,0,0,80,124,124,124,124,124,124,124,124,36,0,0,0,0,0,124,124,124,123,108,52,0,0,0,0,0,0,1,124,116,0,0,0,0,0,0,0,0,0,0,2,164,153,0,0,0,0,0,0,17,210,91,0,0,0,0,0,33,203,179,3,0,0,0,0,18,168,52,115,123,0,0,0,0,0,6,148,135,51,140,30,0,0,0,0,0,0,0,10,32,13,0,0,0,0,0,0,0,0,2,26,14,0,0,0,0,0,0,0,0,6,30,7,0,0,0,0,0,0,0,0,0,27,19,0,0,0,0,0,0,0,0,0,8,29,10,0,0,0,0,0,0,1,4,2,0,0,3,4,0,0,0,0,0,0,0,0,228,130,0,0,0,0,0,0,0,0,11,32,12,0,1,28,16,0,0,0,0,0,0,0,0,0,0,26,22,0,0,14,0,0,0,0,0,0,0,39,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,60,255,152,0,0,0,0,0,0,0,0,0,32,255,176,0,0,0,0,0,236,232,0,0,0,0,0,144,255,58,0,8,228,206,1,0,0,0,0,0,0,3,231,255,255,255,255,255,255,255,255,76,0,0,0,0,0,255,255,255,255,255,255,144,0,0,0,0,0,4,255,240,0,0,0,0,0,0,0,0,0,0,0,26,226,37,0,0,0,0,0,124,165,0,0,0,0,0,4,195,67,159,121,0,0,0,0,25,236,73,162,173,0,0,0,0,0,70,173,124,208,182,2,0,0,0,0,0,2,152,251,255,253,171,5,0,0,0,0,0,79,228,255,253,169,7,0,0,0,0,0,104,242,255,245,122,0,0,0,0,0,0,65,222,255,255,206,44,0,0,0,0,0,0,135,246,255,251,160,5,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,0,0,0,252,144,0,0,0,0,0,0,3,158,252,255,253,176,222,255,254,179,15,0,0,0,0,0,0,62,220,255,255,208,152,124,0,0,0,0,0,0,0,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,60,255,152,0,0,4,3,0,0,0,0,0,32,255,176,0,0,0,0,182,253,253,203,0,0,0,0,16,235,197,0,116,255,70,0,0,0,0,0,0,0,72,255,161,125,255,156,36,36,36,36,10,0,0,0,0,0,255,245,36,36,72,223,255,63,0,0,0,0,4,255,254,236,236,229,181,44,0,0,0,0,0,0,0,18,13,0,0,0,0,0,24,7,0,0,0,0,0,5,22,4,7,23,0,0,0,0,0,0,4,2,0,0,0,0,0,0,4,2,0,27,12,0,0,0,0,0,0,79,255,183,89,184,255,80,0,0,0,0,31,247,227,97,160,255,126,0,0,0,0,59,255,190,74,178,255,82,0,0,0,0,25,243,242,110,126,251,222,3,0,0,0,0,62,255,187,82,165,255,104,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,41,156,156,254,212,156,131,0,0,0,0,78,255,182,89,185,255,230,84,124,255,163,0,0,0,0,0,23,241,243,107,125,253,246,13,0,0,0,0,0,0,0,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,60,255,152,0,140,255,124,0,0,0,0,0,32,255,176,0,0,0,0,68,242,239,76,0,0,0,0,0,105,255,95,236,188,0,0,0,0,0,0,0,0,164,255,62,104,255,140,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,77,255,158,0,0,0,0,4,255,251,180,180,220,255,226,3,0,0,0,0,0,32,255,176,0,0,0,0,32,255,176,0,0,0,0,0,0,32,255,176,0,0,0,0,0,0,32,255,176,0,0,0,0,0,48,255,183,201,255,249,109,0,0,0,0,0,35,76,32,52,176,255,99,0,0,0,0,111,255,104,0,8,155,113,0,0,0,0,150,255,85,36,71,255,176,0,0,0,0,107,255,123,0,0,157,255,63,0,0,0,0,83,255,210,99,38,60,32,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,63,240,240,255,249,240,202,0,0,0,0,32,76,40,65,182,255,150,36,36,222,249,6,0,0,0,0,102,255,125,0,117,233,255,84,0,0,0,0,68,200,200,255,231,200,184,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,60,255,152,99,255,147,0,0,0,0,0,0,32,255,176,0,0,0,0,0,236,232,0,0,0,0,0,0,3,211,252,254,51,0,0,0,0,0,0,0,11,244,227,1,104,255,221,180,180,180,171,0,0,0,0,0,116,255,249,116,105,0,17,255,205,0,0,0,0,4,255,240,0,0,4,220,255,47,0,0,0,0,0,32,255,176,0,0,0,0,32,255,176,0,0,0,0,0,0,32,255,176,0,0,0,0,0,0,32,255,176,0,0,0,0,0,48,255,253,139,129,251,247,5,0,0,0,0,19,180,251,245,222,255,100,0,0,0,0,138,255,70,0,0,0,0,0,0,0,0,178,255,255,255,255,255,207,0,0,0,0,135,255,77,0,0,114,255,92,0,0,0,0,8,168,250,255,255,199,43,0,0,0,0,64,255,148,0,0,200,255,8,0,0,0,0,0,0,0,252,144,0,0,0,0,0,0,21,184,254,249,227,255,255,255,255,255,255,31,0,0,0,0,130,255,77,113,154,103,255,111,0,0,0,0,67,196,196,255,229,196,180,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,60,255,207,250,197,2,0,0,0,0,0,0,32,255,176,0,0,0,0,0,236,232,0,0,0,0,0,13,144,191,255,234,144,67,0,0,0,0,0,0,93,255,140,0,104,255,246,236,236,236,224,0,0,0,0,0,152,255,251,152,137,0,7,255,214,0,0,0,0,4,255,240,0,0,0,202,255,48,0,0,0,0,0,32,255,176,0,0,0,0,32,255,176,0,0,0,0,0,0,32,255,176,0,0,0,0,0,0,32,255,176,0,0,0,0,0,48,255,179,0,0,192,255,23,0,0,0,0,135,255,109,2,110,255,100,0,0,0,0,120,255,94,0,3,111,82,0,0,0,0,165,255,55,16,16,16,13,0,0,0,0,117,255,106,0,0,147,255,75,0,0,0,0,7,12,18,91,183,255,175,0,0,0,0,63,255,152,0,0,208,255,8,0,0,0,0,0,0,0,252,144,0,0,0,0,0,0,136,255,108,4,110,255,130,16,16,16,16,2,0,0,0,0,112,255,196,157,1,134,255,89,0,0,0,0,0,0,0,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,60,255,255,254,245,29,0,0,0,0,0,0,32,255,176,0,0,0,0,0,236,232,0,0,0,0,0,7,80,115,255,187,80,37,0,0,0,0,0,0,185,255,183,152,194,255,140,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,36,255,187,0,0,0,0,4,255,247,112,112,155,255,236,6,0,0,0,0,0,32,255,176,0,0,0,0,32,255,176,0,0,0,0,0,0,32,255,176,0,0,0,0,0,0,32,255,176,0,0,0,0,0,48,255,164,0,0,184,255,24,0,0,0,0,152,255,123,60,213,255,100,0,0,0,0,46,254,214,60,129,255,136,0,0,0,0,91,255,151,30,116,248,132,0,0,0,0,38,251,227,69,85,244,237,13,0,0,0,0,135,255,133,36,91,255,171,0,0,0,0,44,255,226,79,118,254,255,8,0,0,0,0,23,88,88,143,119,88,74,0,0,0,0,155,255,119,57,211,255,216,46,62,232,205,0,0,0,0,0,35,251,250,78,80,240,243,21,0,0,0,0,0,0,0,252,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,60,255,201,101,255,169,0,0,0,0,0,0,32,255,176,0,0,0,0,0,233,244,26,0,0,0,0,15,168,185,255,221,168,78,0,0,0,0,0,24,252,255,255,255,255,255,140,0,0,0,0,0,0,0,0,0,0,255,244,0,0,0,143,255,117,0,0,0,0,4,255,255,255,255,255,235,72,0,0,0,0,0,0,32,255,176,0,0,0,0,32,255,176,0,0,0,0,0,0,32,255,176,0,0,0,0,0,0,32,255,176,0,0,0,0,0,48,255,164,0,0,184,255,24,0,0,0,0,56,247,255,248,173,255,155,0,0,0,0,0,121,252,255,255,197,15,0,0,0,0,1,159,255,255,255,176,10,0,0,0,0,0,98,247,255,255,236,68,0,0,0,0,0,26,212,255,255,255,227,43,0,0,0,0,0,181,255,255,213,217,255,8,0,0,0,0,68,255,255,255,255,255,216,0,0,0,0,59,248,255,254,151,88,246,255,255,220,45,0,0,0,0,0,102,200,247,255,255,241,79,0,0,0,0,0,0,0,0,31,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,60,255,152,2,209,255,63,0,0,0,0,0,32,255,176,0,0,0,0,0,175,255,232,0,0,0,0,0,0,52,255,156,0,0,0,0,0,0,0,114,255,136,8,8,108,255,212,160,160,160,160,90,0,0,0,0,0,255,251,160,161,200,255,230,14,0,0,0,0,4,255,243,48,48,41,7,0,0,0,0,0,0,0,32,255,176,0,0,0,0,32,255,176,0,0,0,0,0,0,32,255,176,0,0,0,0,0,0,32,255,176,0,0,0,0,0,48,255,164,0,0,184,255,24,0,0,0,0,0,25,69,24,0,0,0,0,0,0,0,0,0,25,68,47,0,0,0,0,0,0,0,0,36,69,36,0,0,0,0,0,0,0,0,16,65,62,9,0,0,0,0,0,0,0,2,47,73,58,6,0,0,0,0,0,0,1,54,64,6,0,0,0,0,0,0,0,13,52,52,52,52,52,43,0,0,0,0,0,28,74,34,0,0,18,67,54,3,0,0,0,0,0,0,60,4,17,66,64,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,60,255,152,0,73,255,209,3,0,0,0,0,32,255,176,0,0,0,0,0,5,63,55,0,0,0,0,0,0,52,255,156,0,0,0,0,0,0,0,206,255,44,0,0,104,255,255,255,255,255,255,144,0,0,0,0,0,255,255,255,255,243,182,40,0,0,0,0,0,4,255,240,0,0,0,0,0,0,0,0,0,0,0,32,255,176,0,0,0,0,32,255,176,0,0,0,0,0,0,32,255,176,0,0,0,0,0,0,32,255,176,0,0,0,0,0,48,255,164,0,0,184,255,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,8,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,4,2,3,30,4,0,2,27,4,0,0,0,0,0,0,4,2,0,27,12,0,0,0,0,0,0,0,4,2,0,23,0,0,0,0,3,4,0,0,0,3,3,0,0,0,0,3,3,0,0,3,3,0,0,3,3,0,0,0,0,2,4,1,0,1,4,3,0,0,0,0,2,4,4,4,4,3,0,0,0,0,0,0,0,0,40,24,0,0,0,0,0,0,104,196,82,0,0,0,0,0,0,0,8,4,0,0,0,0,0,0,50,136,10,54,24,84,84,0,0,0,0,1,85,115,45,0,0,0,0,0,0,0,9,0,4,4,0,0,0,0,0,50,76,20,0,0,0,0,0,0,48,74,14,0,0,0,0,0,0,0,41,7,0,0,0,0,0,71,116,48,0,0,0,0,0,9,0,7,1,0,0,0,0,0,30,88,88,88,88,88,82,0,0,0,0,52,97,0,11,132,7,0,0,0,0,0,0,116,0,0,0,0,0,0,39,228,178,0,0,0,0,0,71,204,202,51,0,0,0,0 - ,0,0,0,0,0,3,72,166,214,0,0,0,0,123,201,106,18,0,0,0,0,0,0,0,56,255,190,222,255,230,96,224,255,233,49,0,0,0,0,48,255,183,201,255,249,109,0,0,0,0,0,48,255,170,187,208,0,0,0,0,162,255,66,0,26,255,202,0,0,0,0,203,254,18,4,245,254,16,12,252,206,0,0,0,0,102,255,184,0,143,255,144,0,0,0,0,128,255,255,255,255,248,0,0,0,0,0,0,0,4,255,156,0,0,0,0,0,0,136,255,108,0,0,0,0,0,0,69,255,198,0,0,0,0,0,0,61,244,245,255,251,251,119,0,0,0,0,86,205,126,237,0,0,0,0,0,0,134,79,11,183,20,0,0,0,0,110,232,185,235,17,0,0,0,0,100,224,194,219,3,0,0,0,0,31,107,246,36,0,0,0,0,96,218,121,239,41,0,0,0,0,183,36,44,168,7,0,0,0,0,88,255,255,255,255,255,240,0,0,0,0,176,254,110,192,254,72,0,0,0,0,47,34,240,39,42,0,0,0,0,44,255,199,0,0,0,0,0,215,18,36,196,0,0,0,0 - ,0,0,0,44,139,230,252,187,90,0,0,0,0,45,159,239,249,172,77,4,0,0,0,0,56,255,246,124,170,255,250,130,163,255,164,0,0,0,0,48,255,253,139,129,251,247,5,0,0,0,0,48,255,247,214,143,0,0,0,0,73,255,142,0,96,255,113,0,0,0,0,131,255,75,50,255,255,70,66,255,134,0,0,0,0,0,189,255,98,248,220,10,0,0,0,0,58,116,116,183,255,215,0,0,0,0,0,0,0,1,112,68,0,0,0,0,0,0,19,36,15,0,0,0,0,0,0,168,239,255,45,0,0,0,0,0,0,210,161,15,103,253,23,0,0,0,0,24,146,194,255,4,0,0,0,0,152,225,40,203,191,6,0,0,0,0,139,95,5,253,60,0,0,0,0,98,67,60,248,11,0,0,0,0,67,150,255,36,0,0,0,0,172,109,0,174,108,0,0,0,0,135,235,53,201,195,0,0,0,0,17,52,52,52,52,52,48,0,0,0,0,11,192,255,254,100,0,0,0,0,0,94,220,255,216,84,0,0,0,0,0,31,184,0,0,0,0,1,210,8,23,206,0,0,0,0 - ,0,0,111,255,199,110,23,0,0,0,0,0,0,0,0,6,78,166,243,209,0,0,0,0,56,255,163,0,41,255,179,0,29,255,183,0,0,0,0,48,255,179,0,0,192,255,23,0,0,0,0,48,255,209,2,0,0,0,0,0,4,235,218,0,167,253,27,0,0,0,0,58,255,133,106,236,224,125,122,255,61,0,0,0,0,0,34,245,254,254,64,0,0,0,0,0,0,0,49,244,238,38,0,0,0,0,0,68,200,200,200,200,200,187,0,0,0,0,0,0,0,0,0,0,0,0,19,248,104,225,148,0,0,0,0,0,0,250,69,0,6,255,58,0,0,0,0,139,161,39,255,4,0,0,0,0,220,74,24,243,26,0,0,0,0,0,0,7,149,209,7,0,0,0,0,0,54,241,193,3,0,0,0,0,0,24,255,36,0,0,0,0,150,148,4,208,87,0,0,0,0,6,209,80,44,251,0,0,0,0,19,56,56,56,56,56,52,0,0,0,0,11,192,255,254,99,0,0,0,0,0,0,176,207,160,0,0,0,0,0,21,197,82,0,0,0,0,0,91,215,208,69,0,0,0,0 - ,0,0,106,254,207,119,32,0,0,0,0,0,0,0,0,8,82,171,247,207,0,0,0,0,56,255,152,0,40,255,168,0,28,255,184,0,0,0,0,48,255,164,0,0,184,255,24,0,0,0,0,48,255,165,0,0,0,0,0,0,0,150,255,40,236,193,0,0,0,0,0,3,238,191,162,179,170,179,178,240,4,0,0,0,0,0,0,158,255,198,0,0,0,0,0,0,0,27,228,250,65,0,0,0,0,0,0,67,196,196,196,196,196,183,0,0,0,0,0,0,0,0,0,0,0,0,111,245,14,124,240,10,0,0,0,0,0,199,189,59,144,250,15,0,0,0,0,79,238,176,202,24,0,0,0,0,120,241,49,174,218,9,0,0,0,0,25,211,162,12,0,0,0,0,0,76,40,17,252,60,0,0,0,0,0,24,255,36,0,0,0,0,31,203,231,165,5,0,0,0,0,176,206,45,233,149,0,0,0,0,88,255,255,255,255,255,240,0,0,0,0,174,254,109,194,254,70,0,0,0,0,6,117,6,119,2,0,0,0,0,10,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,35,129,222,255,200,103,0,0,0,0,45,159,241,247,168,74,3,0,0,0,0,56,255,152,0,40,255,168,0,28,255,184,0,0,0,0,48,255,164,0,0,184,255,24,0,0,0,0,48,255,164,0,0,0,0,0,0,0,60,255,167,255,104,0,0,0,0,0,0,169,244,221,121,116,234,233,172,0,0,0,0,0,0,43,248,251,255,75,0,0,0,0,0,11,206,255,99,0,0,0,0,0,0,0,0,0,1,116,70,0,0,0,0,0,0,121,228,96,0,0,0,0,0,210,160,0,25,251,98,0,0,0,0,79,252,217,255,231,243,141,0,0,0,0,55,108,108,108,18,0,0,0,0,0,92,73,2,144,20,0,0,0,0,158,251,192,192,45,0,0,0,0,149,216,167,243,25,0,0,0,0,0,24,255,36,0,0,0,0,62,108,108,108,37,0,0,0,0,149,13,42,120,0,0,0,0,0,28,84,84,84,84,84,78,0,0,0,0,49,94,0,12,131,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,1,63,158,210,0,0,0,0,123,195,101,15,0,0,0,0,0,0,0,56,255,152,0,40,255,168,0,28,255,184,0,0,0,0,48,255,164,0,0,184,255,24,0,0,0,0,48,255,164,0,0,0,0,0,0,0,1,225,255,251,20,0,0,0,0,0,0,97,255,255,63,62,255,255,100,0,0,0,0,0,3,202,255,78,243,228,16,0,0,0,0,157,255,220,120,120,120,9,0,0,0,0,0,0,4,255,156,0,0,0,0,0,0,136,255,108,0,0,0,0,13,124,42,0,0,97,84,0,0,0,0,25,100,0,15,2,58,58,0,0,0,0,78,152,152,152,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,62,80,80,80,18,0,0,0,0,6,95,114,36,0,0,0,0,0,0,7,80,11,0,0,0,0,87,152,152,152,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,5,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,56,255,152,0,40,255,168,0,28,255,184,0,0,0,0,48,255,164,0,0,184,255,24,0,0,0,0,48,255,164,0,0,0,0,0,0,0,0,137,255,184,0,0,0,0,0,0,0,25,255,251,10,11,252,255,28,0,0,0,0,0,119,255,170,0,129,255,159,0,0,0,0,188,255,255,255,255,255,20,0,0,0,0,0,0,0,36,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,42,124,54,34,124,63,0,0,0,0,42,124,54,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,108,224,224,224,224,224,224,17,0,0,0,0,76,116,116,101,0,0,0,0,92,210,17,0,0,0,0,76,116,116,101,0,0,0,0,0,153,163,2,0,0,0,0,0,40,153,24,0,0,0,0,39,228,178,0,0,0,0,31,112,112,112,112,112,112,112,57,0,0,0,0,128,110,57,168,13,0,0,0,0,70,88,88,88,8,0,0,0,0,35,204,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,88,255,112,72,255,132,0,0,0,0,88,255,112,0,0,0,0,2,189,253,187,30,65,130,0,0,0,0,15,32,32,32,32,32,238,20,0,0,0,0,168,255,255,224,0,0,0,0,0,166,123,0,0,0,0,168,255,255,224,0,0,0,0,38,226,26,0,0,0,0,0,13,34,138,195,0,0,0,0,44,255,200,0,0,0,0,32,116,116,116,116,116,116,116,59,0,0,0,0,180,154,81,236,18,0,0,0,0,140,176,176,176,16,0,0,0,0,35,204,89,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,64,255,86,48,255,106,0,0,0,0,64,255,86,0,0,0,0,31,179,6,111,240,245,86,0,0,0,0,0,0,0,0,0,0,236,20,0,0,0,0,52,80,80,70,0,0,0,0,0,5,20,0,0,0,0,52,80,80,70,0,0,0,0,11,14,0,0,0,0,0,0,87,171,193,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,4,211,12,0,205,26,0,0,0,0,4,211,12,0,0,0,0,0,0,0,0,14,20,0,0,0,0,0,0,0,0,0,0,0,206,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 - ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -}; diff --git a/scene/resources/default_theme/default_theme.cpp b/scene/resources/default_theme/default_theme.cpp index 9ebb7e7561..db45a998c3 100644 --- a/scene/resources/default_theme/default_theme.cpp +++ b/scene/resources/default_theme/default_theme.cpp @@ -1,13 +1,31 @@ -/*************************************************/ -/* default_theme.cpp */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ +/*************************************************************************/ +/* default_theme.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "default_theme.h" @@ -16,14 +34,8 @@ #include "theme_data.h" #include "os/os.h" - -#include "normal_font.inc" -#include "bold_font.inc" -#include "mono_font.inc" - -#include "font_normal.inc" -#include "font_source.inc" -#include "font_large.inc" +#include "font_lodpi.inc" +#include "font_hidpi.inc" typedef Map<const void*,Ref<ImageTexture> > TexCacheMap; @@ -124,21 +136,14 @@ static Ref<BitmapFont> make_font(int p_height,int p_ascent, int p_valign, int p_ return font; } + + static Ref<BitmapFont> make_font2(int p_height,int p_ascent, int p_charcount, const int *p_char_rects,int p_kerning_count,const int *p_kernings,int p_w, int p_h, const unsigned char *p_img) { Ref<BitmapFont> font( memnew( BitmapFont ) ); - DVector<uint8_t> img; - img.resize(p_w*p_h*2); - { - DVector<uint8_t>::Write w = img.write(); - for(int i=0;i<(p_w*p_h*2);i++) { - w[i]=p_img[i]; - } - } - - Image image(p_w,p_h,0,Image::FORMAT_GRAYSCALE_ALPHA,img); + Image image(p_img); Ref<ImageTexture> tex = memnew( ImageTexture ); tex->create_from_image(image); @@ -465,7 +470,6 @@ void fill_default_theme(Ref<Theme>& t,const Ref<Font> & default_font,const Ref<F t->set_font("font","TextEdit", default_font ); t->set_color("completion_scroll_color","TextEdit", control_font_color_pressed ); - t->set_color("completion_existing","TextEdit", control_font_color ); t->set_color("font_color","TextEdit", control_font_color ); t->set_color("font_color_selected","TextEdit", Color(0,0,0) ); t->set_color("selection_color","TextEdit", font_color_selection ); @@ -661,12 +665,14 @@ void fill_default_theme(Ref<Theme>& t,const Ref<Font> & default_font,const Ref<F t->set_color("cursor_color","Tree", Color(0,0,0) ); t->set_color("guide_color","Tree", Color(0,0,0,0.1) ); t->set_color("drop_position_color","Tree", Color(1,0.3,0.2) ); + t->set_color("relationship_line_color", "Tree", Color::html("464646") ); t->set_constant("hseparation","Tree",4 *scale); t->set_constant("vseparation","Tree",4 *scale); t->set_constant("guide_width","Tree",2 *scale); t->set_constant("item_margin","Tree",12 *scale); t->set_constant("button_margin","Tree",4 *scale); + t->set_constant("draw_relationship_lines", "Tree", 0); // ItemList @@ -689,12 +695,6 @@ void fill_default_theme(Ref<Theme>& t,const Ref<Font> & default_font,const Ref<F t->set_stylebox("cursor_unfocused","ItemList", focus ); - // TextEdit - - t->set_stylebox("completion_selected","TextEdit", tree_selected ); - - - // TabContainer Ref<StyleBoxTexture> tc_sb = sb_expand( make_stylebox( tab_container_bg_png,4,4,4,4,4,4,4,4),3,3,3,3); @@ -924,16 +924,23 @@ void fill_default_theme(Ref<Theme>& t,const Ref<Font> & default_font,const Ref<F } -void make_default_theme() { +void make_default_theme(bool p_hidpi,Ref<Font> p_font) { Ref<Theme> t; t.instance(); Ref<StyleBox> default_style; Ref<Texture> default_icon; - Ref<BitmapFont> default_font=make_font2(_builtin_normal_font_height,_builtin_normal_font_ascent,_builtin_normal_font_charcount,&_builtin_normal_font_charrects[0][0],_builtin_normal_font_kerning_pair_count,&_builtin_normal_font_kerning_pairs[0][0],_builtin_normal_font_img_width,_builtin_normal_font_img_height,_builtin_normal_font_img_data); - Ref<BitmapFont> large_font=make_font2(_builtin_large_font_height,_builtin_large_font_ascent,_builtin_large_font_charcount,&_builtin_large_font_charrects[0][0],_builtin_large_font_kerning_pair_count,&_builtin_large_font_kerning_pairs[0][0],_builtin_large_font_img_width,_builtin_large_font_img_height,_builtin_large_font_img_data); - fill_default_theme(t,default_font,large_font,default_icon,default_style,false); + Ref<BitmapFont> default_font; + if (p_font.is_valid()) { + default_font=p_font; + } if (p_hidpi) { + default_font=make_font2(_hidpi_font_height,_hidpi_font_ascent,_hidpi_font_charcount,&_hidpi_font_charrects[0][0],_hidpi_font_kerning_pair_count,&_hidpi_font_kerning_pairs[0][0],_hidpi_font_img_width,_hidpi_font_img_height,_hidpi_font_img_data); + } else { + default_font=make_font2(_lodpi_font_height,_lodpi_font_ascent,_lodpi_font_charcount,&_lodpi_font_charrects[0][0],_lodpi_font_kerning_pair_count,&_lodpi_font_kerning_pairs[0][0],_lodpi_font_img_width,_lodpi_font_img_height,_lodpi_font_img_data); + } + Ref<BitmapFont> large_font=default_font; + fill_default_theme(t,default_font,large_font,default_icon,default_style,p_hidpi); Theme::set_default( t ); Theme::set_default_icon( default_icon ); @@ -950,6 +957,3 @@ void clear_default_theme() { Theme::set_default_font( Ref< Font >() ); } - - - diff --git a/scene/resources/default_theme/default_theme.h b/scene/resources/default_theme/default_theme.h index 1e3b4b4081..a2a45ac004 100644 --- a/scene/resources/default_theme/default_theme.h +++ b/scene/resources/default_theme/default_theme.h @@ -1,13 +1,31 @@ -/*************************************************/ -/* default_theme.h */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ +/*************************************************************************/ +/* default_theme.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef DEFAULT_THEME_H #define DEFAULT_THEME_H @@ -18,7 +36,7 @@ */ void fill_default_theme(Ref<Theme>& theme,const Ref<Font> & default_font,const Ref<Font> & large_font,Ref<Texture>& default_icon, Ref<StyleBox>& default_style,bool p_hidpi); -void make_default_theme(); +void make_default_theme(bool p_hidpi, Ref<Font> p_font); void clear_default_theme(); #endif diff --git a/scene/resources/default_theme/font_bold.png b/scene/resources/default_theme/font_bold.png Binary files differdeleted file mode 100644 index bc2704e193..0000000000 --- a/scene/resources/default_theme/font_bold.png +++ /dev/null diff --git a/scene/resources/default_theme/font_hidpi.inc b/scene/resources/default_theme/font_hidpi.inc new file mode 100644 index 0000000000..2fc0f56c3f --- /dev/null +++ b/scene/resources/default_theme/font_hidpi.inc @@ -0,0 +1,25461 @@ +static const int _hidpi_font_height=25; +static const int _hidpi_font_ascent=19; +static const int _hidpi_font_charcount=191; +static const int _hidpi_font_charrects[191][8]={ +/* charidx , ofs_x, ofs_y, size_x, size_y, valign, halign, advance */ +{192,63,23,16,23,-4,-1,15}, +{224,184,182,10,19,0,1,13}, +{64,98,2,18,19,2,1,21}, +{96,159,234,5,4,0,5,14}, +{160,0,0,0,0,19,0,6}, +{32,0,0,0,0,19,0,6}, +{33,2,249,3,17,2,2,6}, +{193,83,25,16,23,-4,-1,15}, +{225,92,160,10,19,0,1,13}, +{65,163,23,16,17,2,-1,15}, +{161,246,236,3,17,6,2,6}, +{97,142,190,10,13,6,1,13}, +{162,67,214,9,17,2,2,13}, +{98,242,136,11,18,1,2,14}, +{194,103,25,16,23,-4,-1,15}, +{226,106,160,10,19,0,1,13}, +{66,122,146,11,17,2,2,15}, +{34,226,203,8,6,2,1,10}, +{35,189,44,14,17,2,1,16}, +{163,62,166,11,17,2,1,13}, +{195,123,23,16,23,-4,-1,15}, +{227,134,167,10,19,0,1,13}, +{67,209,65,12,17,2,1,14}, +{99,225,186,9,13,6,1,11}, +{228,170,182,10,18,1,1,13}, +{100,227,143,11,18,1,1,14}, +{196,23,23,16,22,-3,-1,15}, +{36,2,179,10,20,1,2,13}, +{68,193,65,12,17,2,2,16}, +{164,176,65,13,12,5,0,13}, +{37,120,2,18,17,2,1,20}, +{69,41,222,9,17,2,2,13}, +{165,98,99,12,17,2,1,13}, +{197,43,23,16,21,-2,-1,15}, +{229,16,179,10,20,-1,1,13}, +{101,189,109,11,13,6,1,13}, +{38,183,23,16,17,2,1,17}, +{70,54,222,9,17,2,2,12}, +{198,75,2,19,17,2,-1,20}, +{102,202,212,8,18,1,1,8}, +{166,44,268,2,24,1,6,13}, +{230,142,2,18,13,6,1,20}, +{71,2,71,14,17,2,1,17}, +{167,176,160,10,18,1,0,12}, +{199,146,94,12,23,2,1,14}, +{103,159,67,13,19,6,0,13}, +{231,212,189,9,19,6,1,11}, +{39,30,271,3,6,2,1,5}, +{72,130,99,12,17,2,2,17}, +{104,162,160,10,18,1,2,14}, +{200,238,186,9,23,-4,2,13}, +{40,46,243,7,21,2,1,7}, +{232,2,156,11,19,0,1,13}, +{168,68,235,7,3,1,4,14}, +{73,106,209,8,17,2,0,9}, +{169,230,2,17,17,2,1,20}, +{105,222,232,4,18,1,1,6}, +{201,28,222,9,23,-4,2,13}, +{41,130,238,6,21,2,0,7}, +{233,197,126,11,19,0,1,13}, +{202,93,209,9,23,-4,2,13}, +{74,13,225,7,22,2,-2,7}, +{234,167,137,11,19,0,1,13}, +{42,82,120,12,11,1,0,13}, +{170,100,236,6,8,2,1,8}, +{106,110,237,6,24,1,-1,6}, +{171,144,121,11,10,8,0,12}, +{43,2,119,12,12,5,1,13}, +{203,80,209,9,22,-3,2,13}, +{107,32,177,11,18,1,2,12}, +{235,77,166,11,18,1,1,13}, +{75,74,77,13,17,2,2,14}, +{44,230,213,4,6,16,1,6}, +{172,204,109,11,7,10,1,13}, +{236,204,234,5,19,0,0,6}, +{204,130,211,8,23,-4,0,9}, +{108,23,271,3,18,1,2,6}, +{76,86,188,10,17,2,2,12}, +{173,140,238,6,2,12,1,8}, +{45,120,237,6,2,12,1,8}, +{109,208,2,18,13,6,2,22}, +{205,178,205,8,23,-4,0,9}, +{237,213,234,5,19,0,2,6}, +{77,143,19,16,17,2,2,21}, +{46,9,251,3,3,16,2,6}, +{110,100,183,10,13,6,2,14}, +{206,154,207,8,23,-4,0,9}, +{238,238,213,8,19,0,-1,6}, +{174,2,23,17,17,2,1,20}, +{78,91,78,13,17,2,2,18}, +{175,18,125,12,2,-1,0,12}, +{111,162,90,12,13,6,1,14}, +{207,118,211,8,22,-3,0,9}, +{239,24,249,7,18,1,0,6}, +{79,203,23,15,17,2,1,18}, +{47,120,167,10,17,2,-1,9}, +{176,166,207,8,8,2,1,10}, +{112,212,143,11,19,6,2,14}, +{240,18,103,12,18,1,1,14}, +{208,171,44,14,17,2,0,16}, +{80,128,190,10,17,2,2,14}, +{48,234,115,11,17,2,1,13}, +{177,66,127,12,14,5,1,13}, +{113,182,126,11,19,6,1,14}, +{241,30,199,10,19,0,2,14}, +{81,97,52,15,22,2,1,18}, +{209,142,67,13,23,-4,2,18}, +{49,57,243,7,17,2,2,13}, +{178,190,206,8,10,2,0,8}, +{114,142,207,8,13,6,2,10}, +{242,242,87,12,19,0,1,14}, +{210,59,50,15,23,-4,1,18}, +{82,82,99,12,17,2,2,14}, +{50,2,135,11,17,2,1,13}, +{179,35,249,7,10,2,0,8}, +{115,72,188,10,13,6,0,11}, +{243,226,92,12,19,0,1,14}, +{211,40,49,15,23,-4,1,18}, +{83,129,125,11,17,2,0,13}, +{51,17,135,11,17,2,1,13}, +{180,168,219,5,4,0,5,14}, +{116,214,212,8,16,3,0,8}, +{244,194,86,12,19,0,1,14}, +{212,21,49,15,23,-4,1,18}, +{84,66,106,12,17,2,0,13}, +{52,125,78,13,17,2,0,13}, +{53,32,156,11,17,2,1,13}, +{85,50,106,12,17,2,2,17}, +{181,204,166,10,19,6,2,14}, +{117,198,189,10,13,6,2,14}, +{245,178,86,12,19,0,1,14}, +{213,2,44,15,23,-4,1,18}, +{54,47,156,11,17,2,1,13}, +{86,222,23,15,17,2,-1,14}, +{246,241,65,12,18,1,1,14}, +{214,116,52,15,22,-3,1,18}, +{182,34,131,12,21,1,1,16}, +{118,135,50,14,13,6,-1,12}, +{55,62,145,11,17,2,1,13}, +{87,2,2,22,17,2,-1,21}, +{119,28,2,20,13,6,-1,18}, +{215,114,125,11,11,5,1,13}, +{247,210,92,12,10,6,0,13}, +{183,16,251,3,3,9,2,6}, +{56,77,145,11,17,2,1,13}, +{88,225,44,14,17,2,-1,13}, +{216,78,52,15,19,1,1,18}, +{248,98,120,12,15,5,1,14}, +{120,50,127,12,13,6,0,12}, +{184,150,234,5,6,19,0,5}, +{89,207,44,14,17,2,-1,13}, +{121,153,44,14,19,6,-1,12}, +{217,225,65,12,23,-4,2,17}, +{249,44,199,10,19,0,2,14}, +{57,92,139,11,17,2,1,13}, +{185,177,232,5,10,2,0,8}, +{218,2,92,12,23,-4,2,17}, +{250,156,184,10,19,0,2,14}, +{90,232,165,10,17,2,1,13}, +{122,148,167,10,13,6,1,11}, +{58,37,263,3,13,6,2,6}, +{186,90,236,6,8,2,1,8}, +{219,34,104,12,23,-4,2,17}, +{123,2,224,7,21,2,1,9}, +{91,186,232,5,21,2,2,7}, +{251,58,191,10,19,0,2,14}, +{59,238,236,4,16,6,1,6}, +{187,47,177,11,10,8,1,12}, +{188,164,2,18,17,2,0,18}, +{252,190,149,10,18,1,2,14}, +{124,50,268,2,24,1,6,13}, +{220,114,99,12,22,-3,2,17}, +{92,137,146,11,17,2,-1,9}, +{60,159,121,11,12,5,1,13}, +{189,186,2,18,17,2,0,18}, +{253,56,77,14,25,0,-1,12}, +{221,20,76,14,23,-4,-1,13}, +{125,79,235,7,21,2,1,9}, +{93,195,234,5,21,2,0,7}, +{61,152,137,11,6,8,1,13}, +{190,52,2,19,17,2,0,18}, +{222,114,188,10,17,2,2,14}, +{254,219,115,11,24,1,2,14}, +{62,174,109,11,12,5,1,13}, +{94,108,78,13,11,2,0,13}, +{126,107,140,11,5,8,1,13}, +{223,17,156,11,18,1,2,14}, +{191,15,203,9,18,6,0,10}, +{255,38,76,14,24,1,-1,12}, +{63,2,203,9,17,2,0,10}, +{95,218,166,10,2,21,0,10}, +}; +static const int _hidpi_font_kerning_pair_count=0; +static const int _hidpi_font_kerning_pairs[1][3]={ +{0,0,0} +}; +static const int _hidpi_font_img_width=256; +static const int _hidpi_font_img_height=512; +static const int _hidpi_font_img_data_size=25255; +static const unsigned char _hidpi_font_img_data[25255]={ +137, +80, +78, +71, +13, +10, +26, +10, +0, +0, +0, +13, +73, +72, +68, +82, +0, +0, +1, +0, +0, +0, +2, +0, +8, +6, +0, +0, +0, +109, +154, +178, +251, +0, +0, +32, +0, +73, +68, +65, +84, +120, +156, +236, +157, +119, +184, +38, +53, +245, +199, +51, +84, +165, +55, +1, +21, +16, +41, +34, +42, +130, +98, +23, +1, +21, +20, +84, +108, +40, +138, +138, +10, +34, +40, +86, +148, +159, +216, +11, +34, +138, +130, +162, +40, +32, +160, +128, +160, +2, +162, +32, +162, +34, +34, +29, +145, +142, +235, +210, +219, +210, +151, +14, +219, +251, +231, +247, +199, +57, +97, +114, +231, +205, +204, +100, +102, +50, +239, +189, +119, +111, +190, +207, +179, +207, +221, +55, +57, +57, +147, +153, +73, +206, +36, +39, +167, +24, +147, +144, +144, +144, +144, +144, +144, +48, +129, +1, +172, +75, +142, +45, +74, +104, +158, +231, +208, +188, +176, +132, +230, +85, +14, +205, +58, +158, +250, +245, +156, +250, +103, +121, +234, +95, +237, +212, +239, +225, +169, +95, +25, +88, +160, +245, +235, +122, +234, +55, +5, +78, +0, +238, +5, +230, +2, +83, +128, +95, +2, +107, +149, +244, +119, +105, +224, +22, +224, +65, +96, +37, +31, +77, +8, +128, +143, +211, +0, +129, +60, +215, +1, +190, +8, +156, +15, +220, +13, +204, +1, +30, +7, +38, +1, +63, +3, +182, +12, +228, +243, +33, +224, +102, +109, +255, +63, +224, +109, +21, +180, +235, +3, +179, +244, +249, +173, +88, +195, +119, +109, +224, +43, +192, +101, +192, +19, +250, +188, +239, +5, +126, +3, +108, +160, +52, +27, +0, +191, +7, +30, +86, +190, +215, +0, +159, +0, +150, +168, +224, +187, +42, +112, +172, +62, +170, +211, +42, +232, +26, +189, +187, +62, +248, +42, +175, +235, +244, +255, +239, +211, +103, +49, +67, +223, +211, +133, +246, +89, +3, +75, +0, +159, +5, +174, +211, +231, +240, +36, +240, +79, +224, +117, +117, +253, +214, +246, +43, +105, +251, +127, +1, +143, +0, +243, +245, +239, +185, +192, +103, +234, +222, +85, +16, +128, +27, +244, +134, +246, +45, +169, +255, +164, +51, +134, +247, +41, +161, +249, +138, +214, +79, +174, +184, +206, +205, +74, +243, +126, +79, +221, +33, +206, +53, +78, +247, +212, +239, +164, +117, +55, +150, +240, +254, +43, +48, +93, +7, +225, +87, +129, +95, +1, +139, +128, +127, +149, +208, +127, +65, +249, +125, +188, +172, +191, +33, +0, +174, +5, +22, +2, +151, +56, +253, +191, +86, +127, +15, +252, +171, +225, +245, +52, +224, +251, +192, +108, +229, +115, +43, +112, +6, +112, +52, +112, +18, +112, +149, +94, +11, +224, +52, +96, +149, +10, +94, +175, +215, +251, +183, +130, +240, +126, +29, +60, +94, +225, +1, +156, +165, +124, +119, +14, +184, +231, +43, +149, +118, +1, +112, +35, +112, +5, +50, +209, +1, +30, +211, +107, +63, +166, +191, +239, +214, +241, +101, +251, +125, +98, +9, +207, +247, +2, +83, +129, +187, +128, +153, +84, +79, +212, +224, +119, +215, +35, +95, +144, +9, +253, +85, +253, +255, +125, +250, +126, +158, +212, +223, +139, +128, +157, +245, +61, +161, +215, +191, +70, +251, +128, +190, +139, +87, +215, +92, +99, +39, +224, +81, +100, +194, +31, +13, +236, +14, +188, +93, +255, +30, +173, +229, +143, +80, +33, +216, +131, +0, +28, +166, +157, +250, +75, +73, +253, +105, +136, +148, +159, +11, +156, +82, +66, +115, +142, +242, +56, +164, +226, +58, +63, +87, +154, +35, +60, +117, +183, +235, +96, +189, +18, +145, +164, +79, +43, +212, +31, +170, +109, +127, +90, +194, +123, +85, +96, +181, +66, +217, +121, +192, +116, +15, +237, +26, +136, +164, +254, +47, +21, +95, +164, +58, +0, +175, +209, +62, +253, +85, +127, +91, +120, +87, +82, +53, +188, +214, +0, +254, +173, +237, +79, +1, +94, +80, +66, +183, +46, +240, +107, +165, +187, +17, +88, +181, +132, +238, +79, +74, +179, +137, +254, +126, +169, +254, +62, +201, +67, +251, +110, +247, +62, +2, +250, +250, +38, +224, +115, +238, +243, +70, +190, +158, +71, +58, +131, +127, +33, +176, +139, +83, +255, +34, +100, +34, +2, +188, +215, +195, +243, +64, +224, +183, +192, +234, +84, +76, +212, +166, +239, +174, +71, +190, +22, +243, +129, +15, +58, +229, +203, +33, +31, +35, +128, +121, +200, +234, +235, +237, +133, +235, +92, +163, +245, +103, +84, +240, +255, +178, +62, +195, +31, +0, +43, +148, +208, +172, +0, +28, +172, +116, +95, +174, +235, +115, +213, +205, +236, +168, +29, +122, +18, +88, +178, +80, +183, +4, +34, +133, +174, +212, +127, +15, +120, +218, +47, +67, +46, +217, +182, +171, +184, +206, +59, +148, +102, +114, +161, +124, +11, +45, +63, +94, +111, +24, +224, +45, +5, +154, +171, +181, +188, +86, +218, +33, +95, +210, +215, +35, +203, +211, +223, +122, +234, +127, +161, +188, +222, +80, +199, +171, +230, +58, +191, +85, +62, +239, +208, +223, +22, +141, +4, +0, +176, +20, +178, +66, +152, +15, +236, +22, +216, +102, +95, +189, +214, +159, +75, +234, +239, +5, +110, +45, +148, +221, +9, +220, +89, +40, +91, +1, +184, +7, +249, +154, +61, +183, +73, +191, +61, +215, +92, +203, +121, +6, +199, +121, +234, +247, +215, +186, +127, +212, +240, +129, +242, +137, +218, +250, +221, +197, +228, +235, +220, +231, +209, +158, +186, +45, +156, +250, +67, +61, +245, +239, +209, +186, +7, +75, +120, +239, +132, +76, +234, +93, +245, +247, +18, +192, +222, +200, +252, +155, +137, +204, +199, +75, +128, +79, +107, +253, +110, +74, +223, +110, +37, +128, +72, +173, +57, +218, +169, +87, +20, +234, +236, +151, +227, +112, +231, +33, +109, +82, +160, +217, +74, +203, +103, +0, +203, +86, +92, +103, +37, +29, +228, +139, +128, +213, +157, +242, +3, +180, +253, +135, +145, +175, +11, +192, +145, +78, +253, +202, +122, +131, +243, +40, +145, +134, +14, +173, +139, +127, +22, +251, +3, +188, +0, +89, +186, +122, +39, +78, +40, +128, +103, +32, +43, +162, +251, +80, +161, +233, +92, +183, +169, +0, +248, +134, +182, +251, +124, +195, +118, +118, +121, +249, +90, +79, +221, +60, +224, +226, +66, +217, +165, +192, +220, +66, +217, +143, +149, +199, +87, +155, +92, +187, +162, +79, +115, +149, +223, +174, +158, +186, +55, +106, +221, +35, +53, +60, +192, +51, +81, +187, +190, +187, +152, +124, +157, +119, +61, +48, +233, +128, +167, +59, +245, +59, +120, +234, +55, +211, +186, +5, +37, +109, +31, +6, +14, +114, +202, +78, +82, +250, +169, +250, +255, +211, +149, +230, +215, +14, +205, +193, +200, +118, +160, +157, +78, +0, +81, +42, +0, +236, +95, +40, +255, +63, +251, +66, +129, +15, +234, +255, +247, +46, +208, +216, +1, +124, +86, +192, +117, +46, +85, +218, +119, +56, +101, +215, +35, +66, +97, +45, +125, +0, +179, +129, +123, +157, +122, +187, +255, +191, +48, +128, +255, +14, +200, +222, +235, +8, +109, +115, +80, +161, +254, +108, +100, +114, +108, +92, +199, +171, +230, +58, +86, +231, +241, +93, +167, +204, +34, +88, +0, +32, +66, +241, +9, +100, +133, +147, +57, +229, +203, +34, +203, +192, +201, +136, +112, +158, +141, +124, +193, +207, +36, +95, +214, +219, +47, +141, +111, +75, +53, +157, +130, +206, +1, +217, +98, +76, +115, +126, +111, +142, +12, +252, +27, +128, +165, +27, +244, +121, +73, +68, +241, +117, +18, +162, +220, +186, +31, +152, +166, +207, +53, +4, +11, +107, +248, +131, +127, +162, +118, +122, +119, +49, +249, +58, +247, +178, +89, +77, +253, +139, +61, +117, +27, +217, +74, +79, +221, +199, +16, +37, +228, +242, +250, +251, +189, +74, +122, +5, +35, +63, +154, +203, +0, +43, +59, +191, +87, +64, +4, +192, +103, +66, +239, +161, +120, +97, +59, +209, +255, +81, +40, +63, +91, +203, +159, +173, +255, +0, +126, +87, +160, +57, +79, +203, +63, +29, +112, +157, +111, +43, +237, +161, +250, +219, +158, +48, +92, +234, +208, +252, +93, +203, +94, +170, +191, +237, +254, +255, +107, +13, +239, +233, +66, +224, +9, +231, +183, +221, +234, +252, +184, +9, +31, +15, +223, +37, +16, +125, +197, +66, +224, +57, +78, +185, +69, +19, +1, +176, +151, +182, +249, +136, +83, +182, +52, +114, +2, +0, +162, +80, +60, +4, +89, +129, +221, +173, +101, +175, +117, +104, +239, +3, +174, +247, +240, +189, +137, +193, +45, +192, +20, +84, +137, +10, +100, +228, +58, +135, +109, +27, +244, +119, +13, +70, +42, +1, +255, +131, +40, +94, +127, +10, +28, +228, +60, +131, +235, +40, +81, +132, +82, +175, +12, +133, +194, +68, +141, +241, +238, +98, +242, +117, +238, +115, +163, +166, +245, +84, +11, +128, +243, +25, +185, +250, +253, +135, +146, +110, +19, +208, +167, +163, +129, +115, +155, +220, +135, +219, +120, +115, +189, +208, +12, +244, +107, +64, +190, +183, +191, +201, +161, +187, +13, +184, +207, +249, +189, +44, +185, +214, +218, +251, +48, +10, +215, +121, +173, +210, +94, +166, +191, +191, +172, +191, +247, +115, +104, +62, +165, +101, +223, +208, +223, +118, +192, +189, +162, +130, +239, +42, +133, +223, +75, +34, +95, +182, +71, +244, +247, +82, +246, +183, +75, +11, +124, +196, +55, +48, +106, +238, +225, +237, +218, +230, +239, +133, +242, +90, +120, +120, +157, +170, +85, +207, +112, +202, +172, +48, +62, +13, +88, +202, +41, +63, +89, +203, +95, +228, +148, +93, +12, +60, +238, +225, +251, +59, +165, +45, +42, +1, +79, +214, +223, +123, +235, +239, +19, +244, +119, +208, +145, +33, +162, +167, +1, +81, +150, +61, +167, +80, +151, +57, +183, +218, +90, +191, +82, +124, +31, +177, +222, +93, +13, +223, +117, +17, +1, +118, +135, +62, +131, +59, +145, +15, +79, +153, +2, +206, +34, +182, +0, +120, +20, +248, +168, +243, +219, +30, +253, +45, +89, +164, +245, +180, +221, +157, +154, +237, +85, +85, +227, +12, +120, +64, +251, +181, +149, +150, +109, +173, +191, +143, +112, +232, +236, +121, +234, +70, +250, +123, +91, +253, +125, +91, +224, +117, +150, +66, +148, +141, +115, +144, +47, +157, +61, +62, +219, +208, +161, +89, +95, +203, +46, +66, +20, +122, +243, +245, +193, +84, +157, +33, +207, +65, +142, +204, +190, +11, +124, +29, +153, +24, +0, +7, +107, +253, +167, +245, +247, +167, +156, +54, +175, +64, +246, +85, +115, +66, +7, +145, +182, +179, +171, +162, +119, +21, +202, +45, +130, +143, +1, +145, +163, +190, +187, +10, +101, +147, +148, +207, +250, +37, +215, +93, +199, +41, +59, +135, +194, +190, +94, +203, +95, +137, +124, +161, +167, +144, +31, +3, +46, +68, +236, +45, +158, +129, +28, +211, +61, +166, +255, +15, +62, +50, +212, +247, +0, +126, +77, +254, +218, +206, +51, +104, +183, +20, +53, +222, +137, +26, +229, +221, +85, +241, +5, +254, +172, +207, +224, +12, +228, +163, +100, +79, +90, +6, +148, +200, +14, +47, +136, +47, +0, +22, +48, +242, +212, +96, +62, +30, +197, +123, +201, +53, +223, +14, +204, +15, +161, +45, +99, +240, +27, +237, +151, +253, +242, +126, +71, +127, +191, +199, +161, +249, +144, +150, +125, +76, +127, +219, +37, +253, +207, +27, +92, +231, +207, +218, +230, +213, +200, +222, +107, +146, +135, +102, +178, +214, +109, +163, +180, +127, +168, +225, +121, +16, +114, +44, +54, +83, +7, +197, +100, +196, +152, +102, +73, +228, +136, +240, +17, +68, +215, +176, +148, +210, +175, +141, +104, +202, +247, +68, +20, +87, +161, +131, +104, +35, +29, +40, +247, +227, +124, +157, +181, +206, +162, +201, +22, +224, +73, +224, +170, +66, +217, +108, +224, +81, +15, +237, +85, +202, +127, +69, +167, +236, +106, +28, +125, +73, +129, +254, +29, +200, +23, +110, +174, +254, +221, +89, +203, +237, +123, +222, +75, +127, +255, +81, +127, +23, +87, +11, +3, +103, +246, +228, +202, +226, +55, +122, +234, +236, +106, +14, +224, +114, +28, +157, +70, +19, +104, +251, +211, +244, +255, +49, +223, +93, +41, +95, +96, +53, +224, +85, +5, +250, +243, +128, +89, +21, +188, +160, +255, +21, +192, +195, +200, +60, +8, +57, +154, +108, +191, +2, +80, +6, +86, +201, +247, +47, +253, +125, +1, +131, +26, +251, +117, +148, +230, +4, +135, +6, +26, +28, +65, +144, +75, +222, +163, +245, +239, +119, +60, +52, +7, +219, +235, +232, +223, +214, +6, +59, +192, +79, +148, +199, +14, +250, +123, +25, +68, +25, +249, +91, +253, +253, +212, +192, +8, +224, +101, +245, +17, +85, +104, +34, +0, +230, +1, +255, +46, +148, +61, +12, +60, +89, +40, +179, +43, +39, +236, +96, +32, +63, +189, +105, +162, +189, +182, +43, +182, +127, +163, +19, +20, +255, +145, +225, +20, +10, +71, +134, +90, +110, +183, +99, +167, +0, +203, +104, +89, +134, +28, +69, +205, +70, +116, +2, +183, +43, +205, +177, +192, +154, +78, +219, +117, +16, +163, +178, +183, +54, +232, +111, +180, +119, +87, +197, +183, +132, +230, +122, +60, +31, +39, +231, +186, +16, +95, +0, +92, +200, +72, +29, +128, +213, +135, +189, +38, +224, +158, +142, +166, +196, +240, +45, +8, +192, +154, +200, +132, +159, +142, +44, +207, +103, +162, +230, +142, +5, +186, +219, +144, +189, +210, +82, +250, +210, +231, +160, +90, +203, +192, +235, +108, +162, +55, +53, +189, +108, +194, +0, +175, +211, +186, +25, +250, +119, +253, +150, +247, +180, +49, +50, +201, +254, +238, +148, +253, +18, +217, +195, +46, +167, +191, +131, +6, +17, +114, +66, +241, +168, +62, +35, +223, +18, +223, +162, +137, +0, +152, +138, +163, +99, +209, +178, +127, +41, +159, +173, +156, +178, +143, +146, +91, +211, +109, +168, +101, +86, +87, +50, +112, +228, +86, +114, +173, +101, +144, +85, +210, +124, +28, +237, +180, +62, +31, +223, +137, +129, +111, +107, +177, +141, +211, +143, +135, +145, +21, +136, +181, +250, +187, +9, +153, +228, +47, +39, +223, +42, +44, +210, +255, +91, +59, +17, +8, +80, +22, +235, +181, +162, +189, +187, +58, +190, +30, +154, +207, +107, +223, +119, +42, +169, +183, +136, +45, +0, +246, +98, +228, +41, +128, +181, +25, +248, +15, +176, +70, +129, +118, +25, +231, +255, +246, +20, +224, +115, +229, +119, +30, +0, +114, +43, +165, +119, +234, +95, +159, +33, +131, +213, +3, +216, +115, +221, +198, +154, +71, +114, +141, +246, +192, +87, +70, +235, +151, +116, +6, +214, +45, +109, +238, +69, +249, +156, +137, +12, +248, +23, +232, +239, +79, +40, +223, +13, +28, +154, +160, +65, +4, +236, +81, +117, +191, +206, +75, +111, +34, +0, +46, +213, +254, +173, +224, +148, +189, +81, +7, +223, +147, +136, +117, +221, +73, +58, +96, +63, +141, +28, +25, +94, +139, +216, +100, +204, +210, +246, +75, +85, +93, +195, +225, +251, +53, +223, +59, +37, +224, +200, +176, +80, +183, +53, +114, +108, +252, +48, +50, +177, +111, +68, +108, +57, +220, +99, +169, +231, +32, +71, +177, +119, +34, +203, +244, +25, +218, +239, +131, +128, +181, +3, +251, +27, +237, +221, +85, +241, +245, +212, +127, +82, +235, +247, +172, +224, +97, +17, +91, +0, +44, +135, +8, +204, +239, +57, +101, +118, +203, +246, +16, +162, +8, +62, +22, +177, +113, +113, +143, +116, +127, +160, +207, +102, +229, +34, +207, +70, +64, +108, +209, +33, +215, +56, +15, +44, +215, +200, +245, +0, +182, +99, +251, +249, +120, +141, +54, +200, +5, +212, +207, +157, +178, +186, +179, +234, +245, +43, +248, +217, +229, +239, +46, +37, +245, +22, +77, +4, +192, +129, +218, +230, +125, +133, +242, +183, +34, +75, +208, +185, +136, +118, +126, +119, +45, +223, +17, +89, +98, +63, +170, +207, +127, +117, +63, +231, +129, +235, +108, +128, +8, +140, +187, +41, +104, +182, +41, +63, +50, +108, +45, +120, +187, +34, +246, +187, +171, +226, +91, +168, +255, +54, +34, +120, +223, +226, +171, +31, +6, +128, +119, +225, +152, +82, +35, +91, +172, +61, +80, +161, +140, +163, +220, +213, +250, +15, +40, +253, +59, +99, +92, +252, +245, +250, +128, +158, +64, +164, +224, +128, +101, +17, +185, +30, +224, +113, +253, +251, +34, +31, +175, +209, +4, +178, +130, +248, +175, +246, +209, +213, +97, +124, +222, +243, +15, +228, +220, +250, +243, +148, +120, +129, +33, +90, +103, +144, +229, +153, +215, +104, +198, +25, +136, +77, +4, +192, +198, +250, +66, +175, +43, +227, +27, +3, +192, +223, +180, +111, +239, +242, +212, +149, +29, +25, +54, +222, +91, +199, +64, +236, +119, +87, +199, +215, +169, +251, +37, +34, +12, +159, +223, +215, +189, +133, +2, +57, +201, +90, +8, +124, +143, +146, +237, +53, +176, +60, +242, +193, +94, +8, +124, +61, +214, +133, +151, +33, +223, +119, +95, +86, +65, +119, +155, +210, +220, +19, +229, +194, +145, +65, +110, +96, +227, +245, +112, +44, +208, +214, +14, +118, +114, +101, +228, +193, +53, +124, +160, +161, +55, +32, +185, +213, +226, +81, +116, +112, +78, +170, +232, +151, +221, +71, +122, +45, +53, +41, +63, +50, +12, +114, +89, +141, +141, +216, +239, +46, +132, +47, +114, +252, +55, +19, +248, +166, +71, +200, +120, +173, +253, +250, +6, +178, +18, +120, +28, +249, +232, +28, +137, +232, +129, +222, +174, +127, +143, +212, +242, +199, +136, +241, +229, +47, +92, +248, +47, +250, +160, +190, +87, +65, +99, +245, +0, +199, +70, +189, +120, +4, +32, +230, +181, +15, +34, +190, +221, +181, +95, +213, +186, +65, +132, +120, +146, +205, +70, +246, +229, +165, +198, +78, +4, +160, +164, +221, +178, +228, +74, +196, +243, +241, +216, +246, +59, +180, +27, +0, +95, +168, +187, +39, +135, +126, +69, +68, +203, +63, +139, +234, +237, +205, +187, +144, +189, +252, +92, +253, +235, +221, +230, +244, +141, +216, +239, +46, +148, +111, +205, +107, +251, +68, +219, +251, +233, +10, +96, +21, +228, +56, +251, +2, +100, +219, +183, +64, +255, +94, +128, +184, +47, +119, +219, +243, +39, +140, +13, +168, +16, +248, +57, +178, +237, +2, +57, +29, +248, +27, +112, +34, +162, +4, +252, +7, +98, +246, +91, +42, +72, +134, +216, +87, +23, +63, +11, +160, +255, +180, +219, +96, +24, +125, +76, +72, +24, +151, +0, +158, +139, +24, +96, +93, +128, +44, +197, +231, +32, +202, +175, +135, +16, +37, +208, +143, +40, +24, +172, +140, +66, +31, +93, +220, +75, +141, +193, +15, +35, +143, +72, +147, +0, +72, +72, +24, +207, +208, +121, +188, +8, +177, +182, +132, +10, +35, +21, +68, +97, +188, +8, +81, +212, +37, +1, +48, +70, +16, +93, +209, +148, +48, +225, +144, +25, +99, +206, +214, +255, +191, +167, +130, +238, +125, +74, +219, +41, +254, +66, +194, +144, +64, +79, +65, +8, +17, +207, +182, +219, +172, +210, +2, +177, +197, +190, +3, +245, +78, +107, +201, +115, +51, +196, +230, +124, +134, +46, +153, +91, +251, +248, +147, +219, +217, +79, +199, +241, +204, +155, +104, +32, +204, +235, +204, +194, +6, +111, +185, +171, +130, +246, +74, +29, +67, +79, +5, +141, +109, +208, +151, +23, +58, +215, +218, +60, +180, +93, +129, +199, +43, +16, +95, +135, +169, +228, +78, +101, +127, +35, +192, +189, +182, +132, +223, +106, +72, +28, +192, +75, +17, +165, +226, +60, +253, +123, +9, +240, +37, +234, +143, +34, +215, +38, +183, +164, +172, +220, +202, +57, +207, +108, +33, +129, +198, +83, +157, +64, +143, +65, +8, +201, +157, +72, +94, +171, +191, +109, +20, +161, +217, +29, +250, +123, +57, +162, +28, +219, +6, +241, +138, +187, +168, +3, +175, +231, +234, +139, +4, +79, +128, +141, +197, +9, +58, +8, +207, +67, +142, +152, +78, +67, +237, +22, +16, +123, +254, +251, +2, +218, +91, +108, +130, +24, +43, +129, +199, +85, +27, +57, +177, +0, +241, +98, +124, +81, +11, +1, +240, +67, +231, +90, +3, +22, +169, +1, +237, +183, +39, +87, +170, +62, +138, +152, +45, +91, +19, +229, +133, +148, +152, +249, +86, +240, +123, +55, +185, +237, +11, +136, +149, +227, +21, +228, +71, +226, +232, +24, +26, +112, +148, +42, +240, +185, +64, +105, +75, +143, +148, +149, +206, +250, +195, +92, +208, +164, +159, +173, +64, +207, +65, +8, +25, +92, +1, +172, +130, +172, +0, +188, +65, +70, +3, +121, +206, +68, +221, +82, +129, +93, +240, +4, +0, +109, +200, +111, +75, +196, +0, +106, +33, +240, +242, +46, +188, +10, +124, +215, +36, +183, +173, +184, +162, +3, +31, +87, +155, +30, +100, +79, +95, +194, +231, +56, +228, +88, +112, +50, +178, +63, +183, +251, +249, +89, +192, +49, +1, +237, +45, +54, +35, +247, +24, +253, +145, +135, +206, +70, +204, +253, +8, +121, +188, +137, +208, +208, +232, +75, +34, +167, +30, +211, +244, +223, +3, +4, +172, +78, +10, +60, +236, +170, +238, +120, +52, +52, +28, +114, +218, +98, +45, +88, +7, +252, +92, +42, +120, +237, +72, +30, +150, +254, +116, +10, +199, +193, +136, +233, +243, +239, +181, +126, +14, +21, +95, +119, +114, +31, +142, +74, +75, +75, +228, +200, +18, +28, +55, +232, +94, +192, +96, +16, +66, +23, +179, +16, +5, +206, +103, +28, +250, +110, +65, +8, +35, +1, +89, +94, +158, +133, +216, +166, +159, +67, +64, +200, +176, +0, +158, +91, +234, +96, +187, +33, +70, +31, +149, +231, +81, +250, +44, +31, +160, +16, +68, +163, +1, +143, +23, +33, +66, +196, +78, +136, +25, +148, +216, +178, +7, +240, +154, +10, +124, +64, +255, +255, +98, +68, +56, +63, +137, +172, +10, +188, +121, +20, +10, +237, +45, +182, +32, +143, +111, +119, +135, +135, +110, +146, +78, +134, +149, +112, +2, +101, +6, +246, +241, +205, +74, +126, +166, +254, +3, +216, +177, +225, +125, +218, +85, +231, +75, +10, +229, +91, +218, +137, +26, +200, +231, +105, +200, +105, +7, +72, +0, +151, +210, +83, +15, +228, +216, +22, +196, +124, +219, +43, +176, +24, +185, +13, +240, +90, +209, +146, +111, +127, +250, +93, +254, +227, +15, +66, +8, +178, +23, +62, +10, +248, +3, +185, +27, +234, +199, +28, +154, +110, +65, +8, +35, +0, +177, +129, +182, +152, +6, +60, +111, +180, +250, +82, +6, +196, +51, +110, +33, +178, +116, +108, +28, +46, +92, +121, +172, +133, +44, +55, +167, +33, +49, +20, +94, +167, +2, +224, +142, +144, +9, +235, +225, +23, +228, +60, +84, +209, +254, +41, +1, +160, +191, +109, +190, +135, +45, +29, +154, +77, +181, +236, +116, +253, +221, +84, +0, +216, +136, +203, +123, +34, +113, +242, +0, +126, +223, +176, +159, +214, +225, +236, +205, +133, +114, +203, +47, +200, +215, +129, +220, +77, +126, +54, +142, +123, +115, +9, +173, +13, +63, +14, +78, +220, +75, +15, +221, +133, +74, +243, +141, +146, +250, +175, +107, +125, +231, +143, +90, +37, +40, +4, +33, +212, +50, +128, +41, +206, +239, +151, +105, +217, +121, +78, +89, +227, +32, +132, +68, +80, +234, +20, +248, +117, +218, +35, +14, +3, +136, +85, +221, +84, +2, +179, +249, +148, +240, +184, +10, +49, +211, +117, +93, +120, +95, +138, +36, +155, +184, +170, +170, +109, +31, +240, +8, +0, +235, +208, +244, +125, +135, +198, +110, +13, +172, +67, +75, +176, +0, +64, +172, +23, +103, +34, +75, +238, +103, +32, +138, +183, +121, +200, +106, +52, +56, +139, +19, +121, +20, +235, +243, +200, +99, +31, +108, +71, +190, +143, +31, +240, +139, +40, +225, +99, +151, +246, +65, +39, +25, +228, +1, +86, +142, +175, +160, +177, +219, +185, +107, +75, +234, +109, +24, +252, +214, +91, +189, +32, +80, +8, +66, +168, +101, +69, +1, +176, +162, +150, +253, +175, +64, +215, +40, +8, +97, +204, +9, +75, +132, +61, +162, +135, +103, +84, +1, +53, +214, +209, +246, +126, +61, +2, +192, +78, +238, +91, +28, +154, +155, +144, +85, +202, +114, +5, +154, +16, +1, +96, +221, +174, +255, +233, +148, +89, +103, +166, +143, +85, +181, +45, +240, +121, +22, +185, +75, +249, +49, +200, +170, +98, +17, +34, +76, +62, +217, +128, +143, +93, +225, +4, +133, +78, +39, +143, +140, +52, +16, +172, +213, +161, +113, +183, +1, +235, +23, +234, +108, +26, +189, +133, +192, +51, +67, +251, +217, +10, +20, +66, +16, +105, +217, +83, +2, +0, +241, +79, +182, +46, +194, +71, +20, +232, +130, +67, +16, +197, +158, +176, +68, +216, +35, +122, +120, +142, +249, +21, +69, +76, +180, +189, +223, +162, +0, +208, +178, +91, +181, +108, +115, +103, +178, +255, +214, +169, +111, +34, +0, +172, +150, +124, +79, +167, +236, +35, +90, +214, +104, +73, +76, +158, +245, +200, +226, +82, +52, +218, +116, +3, +30, +118, +11, +252, +161, +64, +250, +221, +148, +254, +177, +26, +58, +187, +13, +216, +183, +80, +254, +89, +45, +111, +125, +170, +21, +12, +10, +65, +8, +181, +12, +68, +82, +90, +205, +181, +125, +112, +69, +23, +202, +224, +32, +132, +68, +158, +176, +68, +216, +35, +22, +248, +141, +249, +21, +69, +76, +126, +93, +238, +215, +233, +131, +43, +0, +108, +70, +167, +3, +157, +255, +239, +228, +212, +7, +9, +0, +68, +155, +110, +191, +210, +110, +234, +177, +149, +17, +165, +222, +34, +2, +163, +67, +33, +43, +9, +155, +142, +204, +226, +7, +33, +109, +11, +124, +172, +246, +191, +54, +111, +162, +210, +239, +172, +244, +149, +115, +131, +124, +27, +80, +76, +224, +114, +190, +150, +183, +14, +172, +26, +12, +202, +87, +0, +51, +16, +39, +148, +187, +245, +1, +108, +224, +105, +219, +100, +5, +16, +109, +194, +18, +105, +143, +88, +224, +57, +230, +87, +20, +49, +249, +117, +185, +95, +167, +15, +174, +0, +176, +154, +245, +155, +17, +229, +228, +99, +140, +12, +89, +21, +42, +0, +108, +146, +153, +129, +112, +93, +136, +203, +46, +192, +55, +107, +120, +44, +137, +28, +117, +218, +113, +252, +85, +36, +145, +137, +205, +90, +244, +253, +2, +189, +53, +104, +242, +70, +182, +70, +142, +134, +33, +60, +109, +91, +232, +10, +224, +153, +200, +50, +127, +33, +170, +92, +68, +242, +46, +44, +64, +4, +221, +64, +22, +237, +232, +160, +16, +132, +80, +203, +32, +223, +2, +216, +24, +248, +190, +140, +42, +65, +65, +8, +137, +60, +97, +137, +180, +71, +44, +240, +28, +211, +43, +138, +30, +248, +181, +190, +95, +114, +108, +81, +40, +191, +195, +169, +59, +182, +80, +23, +42, +0, +110, +161, +30, +183, +214, +240, +176, +123, +240, +135, +113, +210, +217, +35, +81, +150, +236, +209, +160, +171, +176, +252, +165, +150, +121, +147, +131, +32, +138, +92, +8, +215, +1, +212, +102, +202, +118, +104, +47, +82, +218, +143, +235, +239, +143, +234, +239, +139, +235, +218, +70, +1, +133, +32, +132, +90, +6, +35, +149, +128, +231, +107, +217, +235, +157, +178, +224, +32, +132, +68, +158, +176, +68, +220, +35, +106, +219, +49, +191, +162, +136, +201, +175, +235, +253, +146, +163, +40, +0, +126, +228, +212, +109, +87, +168, +171, +21, +0, +200, +17, +39, +200, +87, +187, +44, +171, +144, +13, +36, +91, +229, +128, +100, +163, +18, +15, +164, +178, +71, +12, +122, +158, +18, +2, +72, +102, +170, +57, +136, +197, +160, +215, +148, +156, +60, +55, +95, +232, +41, +128, +205, +204, +60, +144, +32, +213, +67, +251, +25, +165, +61, +189, +208, +246, +179, +33, +215, +234, +12, +252, +65, +8, +97, +164, +0, +216, +18, +89, +146, +92, +75, +30, +146, +58, +56, +8, +33, +113, +149, +58, +207, +33, +210, +30, +209, +105, +59, +30, +86, +20, +49, +183, +80, +157, +238, +151, +28, +69, +1, +96, +195, +166, +77, +101, +48, +203, +116, +136, +0, +176, +6, +83, +135, +87, +208, +252, +76, +105, +142, +170, +160, +177, +177, +3, +183, +45, +169, +127, +51, +121, +54, +43, +123, +74, +240, +195, +10, +126, +239, +83, +154, +57, +52, +179, +3, +120, +123, +21, +173, +210, +219, +109, +192, +147, +200, +92, +156, +174, +99, +248, +217, +117, +109, +163, +129, +193, +32, +132, +224, +8, +0, +45, +179, +22, +78, +31, +163, +65, +16, +66, +34, +79, +88, +34, +236, +17, +61, +237, +198, +244, +138, +162, +7, +126, +81, +239, +55, +6, +16, +19, +93, +59, +25, +95, +89, +65, +103, +29, +100, +30, +163, +36, +19, +53, +146, +238, +28, +224, +43, +21, +124, +118, +37, +199, +29, +84, +68, +31, +210, +190, +221, +165, +180, +191, +43, +163, +83, +90, +107, +102, +124, +19, +225, +74, +85, +187, +13, +248, +162, +254, +173, +204, +157, +216, +11, +232, +41, +8, +97, +236, +9, +75, +132, +61, +98, +129, +223, +115, +24, +227, +43, +138, +152, +252, +250, +184, +223, +24, +32, +143, +91, +88, +107, +157, +71, +190, +196, +247, +186, +33, +147, +39, +253, +152, +173, +207, +206, +205, +175, +184, +30, +146, +123, +241, +225, +194, +152, +57, +160, +230, +154, +111, +34, +63, +13, +56, +133, +193, +188, +136, +235, +145, +7, +87, +157, +67, +133, +16, +243, +240, +182, +219, +128, +251, +245, +111, +183, +216, +254, +109, +65, +15, +65, +8, +137, +56, +97, +137, +180, +71, +44, +240, +28, +15, +43, +138, +152, +91, +168, +232, +247, +27, +3, +228, +113, +40, +107, +175, +77, +110, +121, +120, +102, +73, +253, +74, +136, +167, +168, +197, +124, +228, +52, +203, +245, +228, +91, +136, +108, +57, +118, +116, +198, +204, +64, +134, +170, +2, +223, +119, +21, +120, +220, +166, +215, +113, +189, +1, +167, +226, +232, +202, +2, +239, +253, +89, +136, +224, +69, +255, +174, +83, +223, +170, +39, +16, +49, +8, +33, +145, +39, +44, +145, +246, +136, +5, +250, +49, +189, +162, +232, +129, +95, +212, +251, +141, +1, +100, +91, +99, +221, +118, +7, +142, +155, +61, +244, +214, +207, +96, +30, +37, +177, +27, +144, +204, +86, +159, +68, +20, +216, +54, +174, +197, +99, +136, +99, +219, +161, +56, +161, +191, +145, +109, +133, +61, +234, +251, +118, +205, +181, +215, +64, +132, +232, +101, +72, +152, +54, +27, +174, +237, +98, +100, +101, +209, +54, +94, +134, +77, +102, +251, +239, +122, +234, +113, +2, +34, +78, +88, +34, +238, +17, +29, +218, +49, +191, +162, +136, +201, +175, +143, +251, +77, +72, +240, +34, +246, +132, +37, +226, +30, +209, +161, +27, +15, +43, +138, +152, +91, +168, +232, +247, +155, +144, +224, +69, +236, +9, +75, +196, +61, +162, +210, +140, +249, +21, +69, +76, +126, +125, +220, +111, +66, +66, +41, +98, +78, +88, +250, +217, +35, +142, +249, +21, +69, +76, +126, +125, +220, +111, +194, +4, +3, +225, +231, +154, +209, +39, +108, +108, +196, +20, +80, +74, +19, +123, +203, +19, +155, +95, +212, +251, +13, +1, +162, +48, +179, +86, +119, +165, +249, +246, +144, +252, +136, +32, +182, +250, +107, +84, +208, +21, +177, +16, +57, +206, +187, +4, +177, +247, +95, +181, +97, +255, +214, +82, +62, +39, +20, +202, +47, +3, +30, +172, +104, +183, +10, +185, +210, +240, +131, +21, +116, +239, +82, +154, +39, +129, +85, +60, +245, +43, +146, +219, +44, +236, +81, +193, +103, +71, +165, +185, +135, +190, +3, +240, +208, +49, +96, +228, +120, +0, +227, +96, +69, +17, +147, +95, +31, +247, +27, +10, +242, +179, +241, +42, +75, +187, +131, +148, +230, +212, +26, +94, +22, +54, +247, +226, +127, +200, +163, +254, +160, +99, +118, +32, +155, +117, +5, +191, +237, +181, +221, +23, +157, +178, +12, +217, +86, +253, +179, +166, +237, +183, +181, +109, +105, +92, +65, +114, +205, +254, +129, +21, +52, +86, +72, +60, +130, +39, +211, +51, +18, +142, +204, +190, +223, +119, +135, +222, +91, +107, +208, +49, +96, +228, +68, +5, +241, +87, +20, +67, +255, +98, +247, +1, +36, +98, +51, +136, +243, +210, +64, +40, +50, +96, +9, +242, +120, +123, +111, +170, +225, +101, +81, +52, +65, +222, +20, +248, +179, +214, +45, +160, +196, +4, +216, +195, +239, +11, +218, +102, +123, +167, +204, +70, +50, +174, +244, +182, +100, +228, +42, +224, +205, +158, +122, +27, +69, +107, +186, +111, +98, +23, +104, +109, +223, +127, +229, +169, +179, +130, +198, +155, +216, +53, +58, +232, +24, +48, +114, +34, +130, +200, +95, +216, +216, +252, +70, +27, +136, +89, +44, +120, +108, +227, +129, +29, +180, +110, +10, +53, +153, +145, +203, +4, +128, +214, +101, +192, +201, +90, +127, +23, +97, +137, +69, +143, +87, +250, +181, +157, +178, +119, +106, +217, +71, +3, +218, +219, +201, +57, +224, +17, +75, +190, +242, +25, +136, +150, +236, +161, +93, +151, +220, +7, +96, +43, +167, +124, +67, +196, +154, +113, +38, +195, +178, +206, +164, +99, +192, +200, +132, +132, +34, +200, +191, +180, +103, +120, +234, +78, +209, +186, +111, +5, +240, +41, +21, +0, +90, +191, +6, +185, +147, +207, +7, +2, +248, +93, +13, +60, +84, +40, +179, +118, +23, +181, +81, +131, +24, +185, +10, +112, +3, +162, +174, +163, +2, +124, +22, +129, +31, +77, +96, +95, +229, +243, +63, +59, +7, +201, +205, +189, +27, +133, +224, +31, +115, +32, +82, +60, +123, +135, +95, +148, +56, +251, +9, +195, +1, +226, +33, +103, +93, +110, +215, +116, +202, +87, +213, +242, +133, +192, +122, +1, +124, +42, +5, +128, +210, +216, +128, +156, +94, +167, +29, +90, +160, +166, +79, +118, +21, +112, +170, +83, +102, +19, +122, +252, +180, +238, +158, +156, +54, +75, +2, +215, +104, +187, +47, +145, +235, +6, +38, +19, +176, +154, +137, +2, +58, +166, +61, +42, +225, +25, +45, +158, +189, +195, +179, +83, +156, +125, +82, +26, +176, +74, +32, +91, +16, +235, +82, +91, +186, +5, +1, +54, +82, +154, +218, +173, +7, +185, +59, +243, +126, +78, +153, +77, +144, +113, +118, +85, +91, +135, +222, +162, +74, +0, +236, +175, +52, +94, +227, +40, +224, +88, +253, +119, +186, +210, +93, +227, +148, +29, +139, +172, +32, +30, +118, +203, +106, +250, +100, +87, +1, +11, +144, +37, +251, +242, +200, +137, +204, +28, +26, +186, +244, +34, +122, +131, +133, +58, +71, +238, +69, +182, +4, +175, +107, +194, +163, +53, +136, +148, +246, +168, +192, +51, +106, +60, +123, +229, +25, +35, +206, +254, +132, +73, +3, +214, +22, +228, +138, +169, +82, +37, +36, +240, +93, +165, +249, +99, +0, +191, +173, +149, +246, +122, +167, +204, +10, +226, +247, +214, +180, +173, +68, +129, +214, +134, +227, +122, +162, +134, +167, +141, +219, +183, +135, +83, +182, +188, +142, +173, +63, +212, +221, +79, +129, +151, +93, +5, +28, +65, +190, +218, +109, +101, +73, +73, +110, +215, +1, +240, +235, +54, +60, +218, +92, +52, +90, +218, +163, +66, +187, +232, +241, +236, +137, +16, +103, +95, +249, +244, +146, +6, +172, +112, +141, +12, +9, +38, +81, +171, +87, +33, +242, +234, +139, +142, +201, +88, +201, +163, +233, +122, +143, +33, +245, +222, +166, +40, +77, +80, +134, +40, +242, +208, +90, +47, +37, +87, +92, +62, +140, +19, +59, +176, +164, +157, +181, +122, +180, +184, +214, +41, +187, +164, +64, +107, +39, +246, +188, +26, +158, +7, +40, +157, +187, +119, +183, +1, +77, +188, +201, +58, +42, +120, +217, +85, +192, +44, +125, +38, +243, +105, +169, +180, +3, +246, +113, +238, +179, +113, +0, +211, +54, +23, +140, +154, +246, +104, +60, +129, +142, +105, +192, +60, +147, +118, +46, +98, +172, +113, +1, +226, +137, +182, +159, +62, +175, +223, +214, +240, +9, +89, +125, +61, +68, +33, +204, +86, +13, +207, +78, +201, +88, +129, +101, +144, +179, +105, +240, +8, +124, +224, +245, +90, +231, +61, +222, +43, +225, +249, +121, +109, +115, +32, +185, +178, +205, +27, +135, +175, +164, +189, +69, +213, +22, +224, +163, +74, +83, +25, +172, +22, +9, +171, +182, +0, +120, +154, +83, +182, +167, +182, +13, +118, +119, +119, +218, +126, +219, +233, +95, +171, +47, +55, +226, +225, +249, +48, +162, +245, +159, +133, +108, +71, +106, +117, +35, +157, +64, +15, +105, +143, +38, +2, +60, +147, +246, +14, +157, +180, +247, +144, +251, +118, +131, +124, +201, +189, +249, +223, +148, +79, +211, +213, +87, +168, +87, +98, +231, +100, +172, +192, +225, +122, +221, +95, +120, +234, +236, +17, +90, +169, +129, +143, +167, +205, +106, +58, +206, +46, +35, +95, +254, +7, +235, +131, +2, +5, +128, +205, +72, +52, +201, +83, +231, +238, +245, +31, +211, +177, +236, +150, +93, +171, +109, +255, +68, +192, +254, +191, +192, +123, +21, +167, +127, +175, +14, +109, +87, +224, +113, +168, +182, +255, +46, +121, +124, +197, +147, +218, +240, +106, +114, +209, +232, +105, +143, +148, +46, +218, +146, +54, +38, +175, +24, +40, +76, +218, +211, +128, +13, +11, +245, +27, +147, +235, +24, +230, +80, +72, +78, +233, +208, +181, +89, +125, +221, +194, +144, +142, +106, +201, +141, +89, +30, +193, +209, +68, +35, +123, +101, +235, +132, +84, +106, +226, +91, +194, +243, +68, +125, +127, +139, +128, +203, +26, +182, +181, +168, +18, +0, +231, +42, +205, +128, +209, +26, +45, +16, +187, +127, +21, +109, +55, +66, +86, +144, +15, +34, +38, +194, +107, +144, +219, +6, +116, +218, +238, +214, +93, +184, +143, +180, +71, +209, +20, +138, +49, +121, +41, +191, +78, +194, +132, +145, +147, +246, +119, +120, +38, +45, +240, +33, +173, +183, +198, +60, +215, +151, +208, +181, +93, +125, +5, +229, +180, +139, +1, +228, +24, +10, +156, +21, +31, +240, +97, +45, +107, +52, +129, +181, +173, +221, +138, +64, +243, +112, +102, +22, +101, +118, +0, +27, +147, +167, +219, +42, +53, +9, +38, +87, +72, +126, +163, +80, +254, +16, +112, +121, +147, +62, +53, +233, +95, +77, +91, +27, +219, +97, +31, +167, +236, +123, +90, +118, +126, +219, +62, +133, +92, +56, +106, +218, +35, +226, +230, +81, +143, +170, +156, +36, +130, +48, +33, +159, +180, +179, +240, +56, +174, +32, +146, +251, +97, +29, +136, +111, +35, +159, +180, +3, +138, +50, +198, +199, +234, +235, +255, +244, +154, +238, +57, +183, +253, +202, +238, +21, +202, +199, +105, +187, +190, +182, +157, +14, +172, +208, +176, +173, +133, +207, +18, +240, +233, +228, +138, +194, +201, +84, +175, +166, +62, +169, +116, +174, +80, +123, +166, +150, +5, +47, +251, +155, +244, +175, +166, +157, +213, +167, +220, +204, +200, +248, +133, +171, +146, +27, +26, +213, +70, +24, +110, +5, +34, +166, +61, +34, +162, +66, +49, +38, +47, +165, +137, +34, +76, +28, +26, +239, +209, +23, +121, +84, +216, +159, +233, +111, +27, +231, +221, +183, +36, +109, +187, +250, +42, +85, +90, +18, +127, +197, +244, +76, +125, +110, +51, +145, +176, +213, +107, +33, +194, +173, +109, +68, +98, +155, +246, +186, +241, +68, +115, +250, +239, +102, +36, +90, +2, +216, +22, +184, +82, +235, +102, +81, +51, +1, +129, +159, +43, +237, +115, +157, +50, +155, +29, +168, +117, +64, +78, +95, +255, +2, +218, +44, +129, +132, +41, +3, +143, +179, +15, +240, +45, +173, +187, +145, +62, +182, +126, +68, +76, +123, +68, +68, +133, +98, +100, +94, +49, +5, +147, +157, +180, +251, +123, +234, +172, +119, +217, +221, +232, +215, +141, +138, +44, +49, +180, +95, +125, +61, +94, +82, +223, +215, +113, +174, +53, +73, +221, +25, +216, +91, +255, +127, +98, +72, +219, +2, +159, +165, +16, +129, +4, +240, +178, +22, +237, +45, +236, +49, +224, +181, +228, +46, +211, +32, +199, +203, +175, +8, +224, +115, +62, +98, +155, +146, +57, +101, +246, +196, +230, +13, +77, +251, +229, +233, +95, +19, +1, +176, +151, +182, +185, +180, +164, +126, +37, +36, +38, +39, +120, +18, +157, +116, +6, +17, +211, +30, +17, +113, +73, +27, +153, +87, +76, +97, +226, +157, +180, +200, +215, +209, +166, +198, +122, +171, +83, +110, +245, +1, +143, +122, +120, +181, +93, +125, +45, +240, +212, +245, +118, +156, +75, +158, +24, +227, +120, +224, +239, +250, +255, +70, +19, +5, +57, +86, +180, +167, +10, +23, +52, +105, +235, +240, +40, +98, +54, +114, +234, +114, +38, +240, +113, +2, +35, +24, +33, +123, +253, +127, +23, +202, +78, +80, +158, +149, +227, +35, +176, +127, +65, +2, +0, +153, +220, +86, +89, +92, +149, +233, +200, +206, +185, +135, +136, +173, +240, +38, +98, +218, +35, +34, +42, +20, +35, +243, +138, +41, +76, +188, +147, +150, +252, +216, +230, +228, +66, +121, +213, +150, +169, +237, +234, +107, +154, +167, +174, +183, +227, +92, +68, +184, +216, +112, +241, +179, +144, +175, +120, +169, +128, +113, +218, +173, +132, +40, +64, +175, +32, +183, +41, +120, +130, +0, +15, +199, +132, +126, +225, +186, +93, +254, +69, +255, +190, +57, +100, +224, +24, +99, +172, +239, +243, +233, +30, +18, +235, +86, +121, +119, +96, +63, +108, +128, +145, +103, +246, +204, +203, +122, +118, +133, +106, +120, +175, +212, +191, +62, +11, +193, +233, +250, +247, +233, +182, +0, +241, +28, +219, +215, +24, +243, +152, +49, +166, +184, +135, +92, +174, +208, +206, +197, +3, +250, +119, +221, +192, +126, +217, +120, +241, +119, +121, +234, +172, +146, +241, +156, +44, +203, +30, +242, +212, +63, +133, +44, +203, +30, +53, +198, +88, +251, +251, +218, +19, +133, +44, +203, +230, +24, +99, +78, +49, +198, +172, +105, +228, +190, +79, +200, +178, +44, +228, +136, +108, +145, +49, +102, +101, +99, +204, +22, +198, +152, +101, +140, +140, +181, +151, +100, +89, +118, +71, +64, +219, +132, +30, +225, +10, +128, +51, +140, +76, +178, +101, +141, +49, +135, +213, +180, +251, +137, +145, +1, +125, +179, +49, +230, +175, +158, +122, +155, +81, +40, +200, +218, +204, +24, +51, +75, +255, +250, +194, +28, +197, +228, +21, +83, +152, +216, +201, +181, +142, +49, +198, +32, +75, +232, +99, +140, +49, +75, +26, +99, +246, +203, +178, +172, +24, +74, +202, +78, +218, +251, +61, +188, +174, +214, +191, +161, +89, +100, +172, +64, +242, +153, +81, +199, +20, +114, +3, +200, +178, +236, +19, +89, +142, +111, +7, +182, +153, +145, +101, +217, +58, +89, +150, +45, +147, +101, +217, +74, +89, +150, +189, +61, +203, +178, +59, +3, +251, +151, +208, +35, +158, +18, +0, +89, +150, +205, +53, +198, +124, +220, +24, +179, +208, +24, +179, +43, +21, +105, +143, +140, +49, +187, +25, +99, +230, +26, +99, +62, +146, +101, +217, +66, +15, +223, +25, +250, +119, +57, +79, +157, +15, +85, +95, +199, +152, +188, +98, +10, +19, +59, +249, +236, +196, +217, +215, +200, +228, +59, +47, +203, +50, +95, +54, +88, +75, +119, +165, +167, +174, +237, +234, +107, +192, +175, +222, +196, +21, +114, +9, +139, +57, +70, +68, +94, +201, +178, +236, +28, +99, +204, +123, +141, +49, +79, +24, +99, +118, +49, +198, +76, +193, +73, +123, +100, +100, +201, +185, +171, +49, +230, +65, +99, +204, +142, +89, +150, +149, +125, +101, +218, +46, +105, +125, +95, +199, +152, +188, +98, +10, +147, +127, +232, +223, +29, +16, +141, +243, +119, +140, +8, +150, +189, +139, +132, +1, +91, +166, +54, +171, +175, +27, +77, +46, +56, +92, +196, +20, +114, +227, +2, +136, +157, +197, +41, +148, +28, +143, +33, +217, +129, +254, +136, +39, +100, +151, +214, +23, +209, +58, +200, +40, +18, +196, +117, +111, +224, +31, +192, +125, +136, +237, +197, +52, +228, +136, +239, +135, +56, +14, +113, +37, +237, +59, +185, +168, +211, +209, +249, +203, +50, +233, +148, +246, +136, +184, +10, +197, +152, +188, +98, +158, +116, +44, +67, +158, +196, +209, +42, +210, +6, +142, +4, +149, +182, +54, +83, +44, +205, +146, +78, +206, +162, +228, +152, +139, +136, +199, +185, +227, +5, +58, +232, +209, +231, +252, +101, +224, +6, +125, +39, +147, +145, +99, +189, +83, +181, +222, +39, +48, +125, +199, +138, +173, +130, +140, +34, +169, +207, +111, +119, +218, +77, +69, +20, +159, +55, +146, +91, +38, +86, +230, +112, +164, +163, +139, +58, +29, +157, +191, +162, +128, +136, +121, +212, +35, +243, +138, +38, +76, +180, +126, +123, +231, +197, +78, +7, +54, +45, +212, +55, +202, +20, +75, +120, +210, +201, +109, +43, +120, +68, +19, +114, +49, +64, +216, +241, +226, +234, +192, +33, +136, +127, +195, +92, +202, +225, +245, +55, +64, +162, +232, +252, +202, +161, +187, +29, +17, +162, +147, +157, +178, +83, +40, +113, +55, +118, +104, +90, +7, +25, +5, +94, +64, +46, +124, +255, +11, +108, +83, +168, +95, +11, +137, +16, +84, +155, +48, +148, +14, +46, +234, +68, +112, +254, +234, +12, +34, +230, +81, +143, +204, +43, +154, +48, +81, +154, +103, +146, +219, +3, +128, +56, +108, +220, +197, +160, +197, +93, +112, +166, +88, +6, +87, +95, +11, +201, +133, +204, +69, +212, +251, +40, +68, +21, +114, +129, +60, +90, +135, +144, +215, +251, +181, +95, +205, +219, +129, +99, +128, +163, +129, +91, +157, +231, +119, +55, +226, +33, +87, +122, +239, +228, +246, +242, +199, +49, +210, +97, +201, +90, +28, +126, +161, +162, +173, +69, +171, +32, +163, +74, +99, +45, +16, +175, +37, +66, +204, +126, +58, +186, +168, +143, +58, +136, +152, +71, +61, +22, +47, +34, +10, +19, +165, +57, +70, +105, +14, +71, +246, +138, +255, +209, +151, +22, +37, +83, +172, +115, +29, +43, +184, +102, +2, +149, +186, +16, +34, +11, +185, +192, +254, +29, +71, +203, +16, +242, +192, +79, +245, +250, +255, +194, +49, +224, +65, +246, +237, +103, +107, +93, +109, +48, +76, +100, +245, +48, +3, +88, +190, +80, +158, +33, +1, +54, +7, +220, +130, +29, +26, +139, +86, +65, +70, +201, +45, +63, +33, +32, +136, +232, +132, +1, +17, +243, +168, +199, +226, +69, +92, +193, +180, +2, +146, +66, +189, +215, +220, +121, +200, +18, +215, +46, +103, +47, +5, +158, +94, +65, +27, +85, +200, +5, +246, +175, +117, +8, +121, +114, +147, +224, +29, +61, +117, +111, +214, +186, +255, +5, +244, +97, +54, +37, +201, +57, +144, +85, +209, +204, +138, +182, +22, +173, +130, +140, +34, +43, +22, +40, +49, +227, +29, +22, +144, +109, +198, +65, +136, +192, +155, +129, +8, +247, +255, +34, +65, +74, +26, +101, +75, +50, +192, +243, +145, +101, +213, +165, +200, +87, +109, +46, +98, +111, +125, +35, +98, +6, +250, +57, +28, +39, +138, +10, +62, +209, +242, +168, +199, +226, +69, +68, +193, +52, +44, +32, +49, +16, +173, +91, +241, +5, +84, +36, +153, +32, +162, +144, +11, +236, +91, +107, +231, +20, +242, +61, +255, +102, +158, +186, +205, +180, +110, +150, +175, +109, +129, +246, +118, +68, +219, +62, +32, +28, +17, +13, +252, +109, +21, +109, +67, +4, +64, +105, +144, +81, +157, +112, +0, +223, +173, +235, +103, +9, +239, +5, +250, +111, +243, +10, +154, +45, +108, +39, +75, +234, +95, +69, +110, +101, +57, +11, +9, +117, +126, +13, +249, +202, +229, +30, +42, +2, +210, +184, +140, +150, +71, +150, +116, +118, +223, +185, +0, +89, +94, +93, +142, +104, +87, +109, +148, +88, +232, +224, +49, +53, +218, +32, +162, +96, +26, +22, +16, +51, +95, +27, +101, +168, +50, +172, +58, +227, +68, +200, +145, +231, +196, +27, +176, +68, +36, +79, +206, +225, +59, +210, +45, +210, +218, +40, +58, +199, +48, +210, +149, +214, +78, +220, +210, +12, +63, +206, +243, +168, +18, +0, +165, +65, +70, +157, +231, +252, +209, +186, +126, +118, +184, +126, +169, +0, +64, +20, +125, +246, +68, +234, +199, +56, +66, +16, +153, +207, +214, +235, +241, +14, +10, +91, +164, +34, +163, +21, +201, +195, +33, +61, +12, +124, +134, +194, +210, +1, +89, +98, +110, +143, +68, +62, +45, +93, +138, +38, +244, +3, +96, +23, +2, +61, +240, +232, +81, +200, +21, +132, +72, +41, +159, +170, +129, +171, +245, +214, +49, +104, +50, +78, +0, +77, +36, +169, +198, +127, +237, +164, +174, +233, +75, +230, +240, +1, +249, +96, +157, +236, +180, +135, +138, +175, +115, +224, +4, +44, +13, +50, +74, +67, +103, +174, +150, +215, +175, +18, +0, +214, +255, +165, +204, +147, +48, +67, +20, +211, +0, +159, +173, +234, +136, +117, +150, +185, +135, +228, +168, +145, +80, +1, +70, +162, +42, +225, +103, +157, +0, +88, +93, +39, +44, +136, +128, +186, +65, +133, +129, +221, +26, +76, +193, +73, +217, +85, +194, +227, +56, +165, +253, +13, +162, +140, +189, +17, +89, +6, +223, +164, +191, +109, +236, +127, +239, +185, +122, +224, +4, +252, +168, +210, +12, +4, +25, +37, +63, +254, +251, +112, +85, +63, +43, +120, +119, +21, +0, +151, +106, +213, +167, +42, +218, +127, +86, +105, +46, +40, +35, +120, +137, +211, +145, +237, +189, +68, +9, +9, +10, +29, +39, +139, +16, +101, +211, +92, +10, +49, +7, +28, +186, +74, +1, +160, +52, +171, +146, +123, +125, +46, +64, +244, +18, +55, +35, +231, +230, +171, +5, +244, +229, +173, +192, +31, +40, +183, +4, +92, +22, +73, +178, +234, +141, +242, +27, +56, +1, +171, +130, +140, +90, +219, +139, +218, +4, +174, +29, +174, +95, +37, +0, +108, +44, +132, +82, +215, +108, +224, +141, +101, +2, +204, +18, +28, +166, +4, +215, +182, +185, +137, +16, +208, +33, +149, +23, +49, +76, +28, +19, +162, +193, +25, +180, +223, +210, +191, +139, +86, +90, +155, +0, +0, +32, +0, +73, +68, +65, +84, +222, +140, +196, +129, +2, +224, +215, +136, +206, +105, +167, +254, +122, +92, +142, +192, +9, +88, +21, +100, +212, +218, +94, +84, +166, +18, +239, +120, +253, +42, +1, +96, +149, +195, +85, +39, +86, +175, +84, +154, +1, +119, +116, +75, +96, +247, +254, +223, +111, +115, +19, +33, +160, +67, +42, +47, +122, +48, +113, +108, +34, +144, +234, +94, +18, +178, +207, +178, +3, +225, +34, +156, +56, +243, +139, +35, +156, +231, +241, +108, +242, +0, +40, +3, +105, +189, +3, +5, +192, +44, +228, +200, +106, +83, +106, +50, +3, +247, +129, +128, +119, +91, +25, +100, +20, +120, +175, +214, +45, +4, +158, +23, +251, +250, +74, +83, +37, +0, +108, +164, +160, +170, +24, +150, +219, +41, +205, +64, +64, +154, +34, +147, +221, +155, +222, +64, +8, +232, +152, +202, +139, +30, +76, +28, +105, +32, +144, +2, +6, +137, +53, +104, +249, +175, +237, +99, +5, +143, +78, +138, +51, +15, +253, +174, +74, +94, +155, +89, +55, +128, +215, +55, +156, +126, +174, +82, +65, +103, +177, +62, +185, +130, +236, +6, +10, +203, +240, +144, +123, +97, +164, +25, +175, +139, +25, +136, +113, +85, +109, +134, +223, +46, +168, +122, +183, +4, +4, +25, +69, +140, +150, +172, +53, +227, +165, +64, +168, +179, +89, +237, +245, +29, +154, +42, +1, +112, +145, +86, +149, +42, +248, +144, +99, +123, +128, +139, +203, +8, +236, +50, +194, +171, +201, +44, +121, +65, +193, +241, +210, +137, +148, +202, +43, +22, +104, +40, +144, +106, +6, +137, +53, +55, +189, +3, +40, +117, +171, +45, +60, +186, +214, +138, +179, +2, +173, +59, +248, +158, +164, +194, +62, +32, +128, +151, +107, +107, +0, +97, +2, +96, +83, +253, +125, +158, +254, +254, +92, +129, +174, +78, +9, +248, +2, +68, +121, +103, +147, +97, +62, +162, +255, +30, +103, +100, +98, +149, +248, +113, +240, +6, +239, +165, +117, +144, +81, +36, +196, +184, +85, +92, +94, +173, +109, +151, +40, +208, +108, +4, +236, +27, +114, +125, +15, +77, +149, +0, +176, +153, +150, +188, +222, +185, +140, +60, +5, +248, +82, +217, +5, +172, +34, +225, +35, +37, +245, +151, +56, +255, +174, +45, +235, +204, +120, +1, +13, +5, +82, +217, +75, +34, +15, +142, +249, +32, +37, +138, +176, +2, +143, +40, +138, +51, +135, +246, +51, +74, +106, +99, +244, +253, +40, +228, +126, +60, +124, +150, +67, +180, +230, +247, +146, +159, +41, +135, +8, +128, +23, +235, +239, +23, +35, +10, +188, +199, +113, +194, +164, +215, +12, +220, +237, +17, +205, +255, +21, +192, +11, +61, +245, +43, +146, +39, +30, +237, +197, +89, +169, +112, +47, +93, +131, +140, +190, +9, +57, +102, +181, +120, +20, +49, +198, +185, +66, +199, +90, +217, +115, +240, +142, +173, +2, +77, +213, +115, +92, +158, +252, +35, +240, +115, +156, +179, +126, +125, +175, +246, +136, +244, +94, +74, +86, +167, +6, +152, +164, +68, +7, +4, +220, +104, +163, +37, +106, +27, +32, +103, +216, +118, +223, +95, +154, +117, +6, +217, +159, +129, +76, +168, +129, +248, +252, +17, +251, +51, +240, +146, +144, +189, +223, +66, +228, +203, +235, +205, +250, +83, +194, +227, +91, +250, +183, +181, +226, +76, +233, +86, +68, +4, +207, +253, +200, +82, +245, +106, +228, +75, +245, +172, +22, +247, +247, +11, +189, +228, +62, +206, +96, +13, +17, +0, +238, +243, +56, +82, +203, +142, +114, +202, +170, +6, +174, +61, +254, +219, +164, +226, +58, +171, +42, +77, +111, +238, +172, +12, +162, +85, +144, +81, +229, +181, +18, +226, +130, +124, +62, +178, +181, +156, +175, +255, +30, +68, +44, +56, +7, +188, +52, +125, +207, +210, +67, +83, +183, +146, +122, +33, +185, +11, +243, +108, +68, +240, +216, +241, +128, +94, +191, +60, +2, +51, +249, +126, +216, +191, +71, +8, +236, +12, +121, +134, +84, +128, +15, +86, +240, +120, +151, +210, +60, +89, +54, +208, +200, +205, +85, +171, +150, +203, +7, +41, +205, +169, +101, +52, +49, +80, +124, +73, +136, +82, +101, +46, +34, +164, +182, +109, +200, +163, +179, +226, +76, +233, +236, +209, +212, +167, +244, +247, +219, +245, +247, +145, +13, +239, +109, +7, +109, +247, +111, +196, +239, +192, +42, +70, +155, +10, +128, +53, +144, +21, +192, +83, +102, +173, +53, +99, +197, +46, +153, +253, +95, +37, +243, +212, +22, +1, +96, +177, +141, +31, +232, +60, +239, +82, +171, +76, +224, +13, +74, +227, +11, +78, +99, +105, +86, +65, +236, +254, +255, +139, +40, +85, +103, +34, +102, +202, +223, +163, +238, +227, +232, +92, +0, +106, +150, +197, +117, +3, +148, +60, +67, +170, +215, +57, +67, +105, +46, +86, +154, +3, +43, +104, +182, +81, +26, +111, +230, +89, +100, +159, +102, +67, +96, +15, +76, +36, +165, +137, +178, +146, +112, +7, +60, +226, +170, +57, +29, +249, +250, +15, +36, +113, +168, +184, +134, +69, +12, +197, +217, +154, +218, +135, +187, +112, +252, +220, +17, +201, +63, +143, +64, +67, +46, +196, +16, +231, +126, +229, +181, +161, +150, +89, +115, +239, +70, +2, +64, +203, +173, +178, +233, +124, +253, +253, +162, +178, +123, +33, +223, +95, +123, +93, +117, +145, +252, +5, +151, +43, +205, +183, +67, +238, +103, +60, +130, +124, +245, +253, +241, +10, +26, +155, +197, +168, +116, +78, +197, +232, +200, +191, +157, +65, +89, +234, +74, +90, +55, +64, +25, +185, +10, +24, +8, +195, +68, +158, +108, +114, +58, +53, +74, +43, +100, +95, +10, +254, +0, +31, +246, +203, +53, +133, +138, +227, +35, +34, +172, +36, +156, +1, +191, +3, +185, +208, +241, +133, +247, +170, +186, +23, +139, +78, +138, +51, +165, +177, +246, +221, +123, +22, +202, +173, +253, +124, +80, +54, +89, +114, +47, +183, +61, +156, +50, +171, +124, +107, +35, +0, +150, +210, +241, +3, +240, +30, +36, +194, +141, +247, +94, +16, +197, +153, +93, +162, +254, +27, +217, +171, +254, +16, +248, +37, +162, +217, +182, +10, +201, +83, +41, +9, +230, +177, +56, +128, +60, +148, +252, +85, +248, +79, +25, +50, +242, +172, +65, +223, +235, +179, +35, +27, +146, +31, +7, +222, +141, +56, +64, +12, +228, +109, +67, +60, +143, +234, +6, +168, +93, +5, +252, +203, +83, +103, +39, +100, +173, +194, +10, +248, +130, +210, +14, +4, +192, +68, +60, +221, +160, +230, +248, +139, +56, +43, +9, +139, +251, +116, +130, +44, +212, +191, +193, +137, +49, +28, +30, +173, +21, +103, +90, +191, +33, +242, +149, +190, +181, +120, +63, +206, +96, +89, +72, +141, +247, +23, +185, +121, +235, +31, +11, +229, +22, +141, +5, +128, +214, +89, +55, +222, +41, +228, +57, +0, +203, +238, +101, +19, +100, +251, +121, +51, +34, +12, +22, +32, +219, +194, +73, +136, +99, +207, +152, +241, +200, +236, +11, +136, +223, +131, +13, +44, +115, +56, +206, +156, +67, +244, +60, +86, +183, +242, +8, +53, +102, +209, +49, +58, +243, +60, +242, +37, +9, +58, +208, +110, +38, +207, +229, +126, +47, +206, +241, +76, +5, +31, +119, +21, +176, +165, +83, +190, +14, +34, +217, +103, +81, +227, +43, +174, +244, +171, +35, +75, +248, +249, +56, +171, +18, +68, +57, +52, +71, +7, +250, +122, +1, +124, +58, +173, +36, +156, +231, +49, +21, +73, +189, +101, +87, +12, +247, +16, +232, +107, +237, +155, +52, +52, +84, +156, +105, +189, +141, +80, +227, +77, +37, +134, +228, +5, +4, +143, +208, +116, +104, +214, +215, +65, +119, +63, +133, +85, +152, +211, +207, +86, +2, +64, +235, +255, +162, +245, +7, +215, +141, +149, +97, +129, +6, +49, +15, +128, +79, +59, +247, +88, +233, +121, +25, +3, +58, +166, +108, +112, +22, +87, +137, +103, +221, +121, +31, +167, +16, +102, +172, +207, +206, +44, +1, +188, +31, +89, +122, +77, +33, +151, +204, +51, +144, +227, +134, +115, +244, +197, +122, +163, +172, +58, +124, +236, +42, +192, +205, +40, +107, +7, +196, +79, +27, +244, +231, +183, +218, +102, +63, +167, +236, +83, +90, +118, +118, +85, +91, +135, +190, +211, +74, +194, +25, +12, +175, +210, +223, +75, +147, +71, +112, +13, +50, +70, +242, +77, +26, +154, +43, +206, +182, +68, +4, +240, +13, +148, +11, +171, +140, +92, +136, +15, +28, +95, +233, +251, +189, +72, +249, +248, +148, +144, +22, +93, +4, +192, +198, +228, +74, +82, +239, +189, +244, +1, +58, +132, +39, +115, +120, +188, +72, +199, +250, +52, +253, +55, +3, +120, +65, +191, +61, +55, +6, +217, +46, +253, +28, +57, +29, +153, +173, +215, +189, +30, +217, +34, +4, +127, +249, +233, +24, +89, +56, +26, +200, +87, +1, +11, +144, +101, +235, +242, +200, +249, +234, +28, +224, +217, +13, +248, +216, +60, +238, +215, +59, +101, +246, +38, +223, +27, +200, +163, +211, +74, +162, +100, +242, +110, +66, +46, +181, +107, +61, +193, +202, +38, +13, +205, +20, +103, +255, +12, +185, +111, +100, +255, +13, +112, +174, +167, +206, +250, +200, +123, +67, +144, +59, +253, +108, +45, +0, +148, +230, +71, +14, +221, +176, +4, +192, +113, +180, +12, +79, +166, +237, +215, +66, +162, +20, +77, +3, +94, +13, +188, +14, +153, +136, +119, +16, +176, +98, +29, +11, +160, +99, +100, +225, +216, +157, +177, +171, +128, +35, +200, +151, +85, +71, +213, +183, +28, +224, +99, +61, +174, +94, +138, +216, +140, +131, +196, +44, +8, +86, +14, +209, +97, +37, +81, +54, +224, +201, +181, +179, +79, +226, +248, +179, +55, +228, +17, +172, +56, +139, +1, +242, +227, +183, +91, +116, +114, +20, +255, +89, +88, +215, +92, +95, +88, +116, +239, +189, +20, +104, +86, +162, +194, +0, +166, +15, +208, +33, +60, +153, +182, +185, +10, +89, +245, +190, +216, +41, +123, +41, +114, +218, +226, +203, +196, +52, +38, +65, +135, +200, +194, +177, +59, +98, +87, +1, +179, +244, +193, +206, +175, +155, +40, +37, +124, +172, +185, +227, +129, +228, +246, +234, +63, +110, +200, +163, +245, +74, +162, +106, +192, +3, +103, +105, +221, +37, +84, +236, +51, +107, +120, +4, +43, +206, +186, +130, +22, +232, +163, +31, +37, +125, +235, +20, +215, +142, +14, +225, +201, +22, +55, +48, +86, +34, +11, +147, +175, +2, +0, +126, +221, +146, +199, +106, +200, +190, +200, +42, +35, +161, +197, +190, +140, +150, +43, +137, +154, +201, +187, +38, +249, +146, +235, +235, +109, +120, +104, +253, +152, +80, +156, +57, +253, +44, +221, +2, +244, +116, +221, +56, +113, +237, +18, +226, +129, +14, +62, +252, +14, +143, +85, +156, +65, +245, +234, +14, +125, +57, +17, +57, +149, +88, +4, +92, +214, +146, +71, +171, +149, +68, +192, +228, +125, +155, +214, +207, +167, +100, +201, +21, +192, +99, +84, +20, +103, +158, +126, +12, +93, +0, +16, +41, +174, +29, +221, +87, +16, +209, +34, +235, +34, +167, +103, +181, +122, +135, +26, +30, +157, +231, +95, +39, +208, +193, +135, +191, +192, +167, +114, +240, +7, +242, +216, +202, +225, +243, +177, +150, +60, +90, +173, +36, +66, +250, +143, +232, +57, +64, +246, +214, +3, +131, +52, +144, +199, +208, +21, +103, +158, +62, +140, +134, +0, +232, +28, +215, +142, +142, +43, +136, +174, +237, +61, +252, +126, +5, +124, +38, +148, +190, +132, +71, +163, +249, +71, +228, +208, +224, +157, +124, +248, +11, +188, +106, +7, +127, +0, +15, +187, +55, +158, +142, +199, +64, +169, +1, +159, +206, +43, +137, +150, +215, +13, +17, +0, +67, +87, +156, +121, +250, +208, +73, +0, +208, +34, +65, +38, +29, +227, +218, +209, +113, +5, +209, +181, +125, +31, +104, +58, +255, +136, +189, +133, +34, +162, +15, +127, +36, +1, +96, +253, +238, +143, +237, +216, +151, +206, +43, +137, +4, +63, +104, +153, +32, +147, +142, +113, +237, +232, +184, +130, +232, +218, +190, +15, +52, +153, +127, +99, +81, +128, +21, +59, +216, +73, +0, +32, +71, +101, +119, +42, +143, +114, +183, +198, +48, +94, +81, +86, +18, +9, +35, +65, +135, +4, +153, +116, +140, +107, +71, +247, +21, +68, +140, +21, +72, +40, +46, +41, +187, +70, +91, +208, +82, +128, +141, +139, +35, +19, +68, +67, +127, +168, +49, +102, +125, +99, +204, +133, +89, +150, +117, +61, +143, +181, +38, +180, +167, +100, +89, +54, +163, +35, +175, +4, +35, +3, +204, +24, +115, +130, +49, +102, +101, +99, +204, +117, +198, +152, +173, +179, +44, +27, +225, +186, +154, +101, +217, +131, +198, +24, +111, +10, +117, +99, +204, +52, +99, +204, +106, +198, +152, +42, +129, +188, +162, +67, +91, +132, +205, +204, +124, +99, +69, +123, +123, +252, +235, +91, +6, +119, +109, +191, +192, +24, +19, +154, +26, +172, +52, +79, +97, +7, +216, +128, +170, +222, +116, +112, +89, +150, +129, +56, +136, +189, +220, +24, +243, +110, +99, +204, +207, +70, +16, +16, +33, +61, +81, +21, +28, +233, +23, +180, +2, +64, +246, +194, +215, +171, +212, +178, +251, +154, +39, +232, +152, +175, +128, +136, +43, +137, +132, +28, +116, +76, +144, +73, +199, +184, +118, +116, +95, +65, +116, +143, +172, +27, +1, +180, +84, +226, +209, +53, +52, +120, +200, +4, +237, +34, +0, +154, +2, +73, +188, +121, +47, +185, +2, +233, +76, +2, +114, +17, +214, +240, +92, +134, +60, +60, +210, +5, +145, +186, +106, +121, +23, +49, +23, +217, +147, +253, +3, +248, +24, +53, +6, +42, +228, +129, +39, +75, +51, +225, +146, +251, +51, +84, +126, +105, +104, +17, +66, +189, +235, +251, +167, +99, +130, +76, +58, +198, +181, +163, +99, +100, +220, +174, +237, +99, +128, +14, +74, +60, +186, +10, +176, +174, +3, +96, +172, +130, +158, +86, +18, +158, +235, +88, +216, +184, +114, +87, +58, +215, +3, +9, +128, +82, +26, +45, +150, +220, +142, +224, +94, +252, +57, +232, +151, +32, +87, +174, +13, +228, +209, +43, +208, +54, +14, +161, +222, +245, +253, +211, +61, +65, +102, +167, +184, +118, +116, +95, +65, +116, +143, +172, +59, +72, +255, +107, +2, +143, +1, +233, +126, +138, +209, +77, +128, +117, +29, +0, +99, +21, +244, +176, +146, +40, +185, +206, +192, +243, +67, +38, +237, +174, +228, +19, +242, +59, +21, +237, +109, +30, +123, +240, +231, +160, +183, +2, +226, +22, +106, +98, +231, +211, +34, +132, +122, +215, +247, +79, +199, +4, +153, +202, +163, +117, +92, +59, +186, +175, +32, +186, +71, +214, +29, +108, +115, +51, +112, +116, +32, +109, +215, +83, +140, +110, +2, +172, +235, +0, +152, +232, +168, +122, +126, +192, +207, +180, +174, +74, +193, +100, +128, +15, +41, +221, +149, +158, +186, +127, +104, +221, +39, +98, +246, +219, +225, +223, +233, +253, +211, +49, +65, +166, +195, +167, +85, +92, +59, +186, +175, +32, +186, +71, +214, +237, +118, +223, +93, +79, +33, +186, +9, +176, +174, +3, +192, +211, +153, +115, +129, +29, +156, +178, +231, +33, +174, +154, +222, +32, +22, +227, +29, +85, +207, +15, +137, +173, +0, +48, +167, +134, +135, +171, +160, +220, +202, +41, +223, +4, +49, +90, +122, +136, +158, +50, +50, +119, +125, +255, +116, +76, +144, +25, +3, +116, +140, +140, +219, +181, +125, +199, +190, +119, +181, +131, +232, +38, +192, +186, +14, +128, +2, +221, +1, +228, +246, +203, +23, +35, +89, +135, +23, +34, +231, +238, +223, +174, +106, +235, +240, +24, +106, +68, +150, +174, +168, +122, +126, +72, +104, +105, +0, +223, +241, +85, +145, +214, +222, +247, +31, +157, +50, +251, +242, +170, +2, +150, +116, +58, +197, +233, +250, +254, +233, +152, +32, +51, +22, +232, +18, +25, +55, +66, +251, +14, +253, +238, +124, +10, +65, +23, +1, +214, +117, +0, +120, +104, +119, +33, +247, +59, +7, +177, +189, +175, +205, +244, +170, +109, +71, +37, +34, +75, +23, +84, +61, +63, +36, +200, +37, +4, +68, +47, +66, +226, +251, +63, +132, +8, +204, +231, +34, +49, +225, +166, +233, +75, +172, +90, +2, +119, +157, +192, +93, +219, +119, +74, +144, +57, +209, +65, +164, +83, +8, +218, +10, +176, +88, +2, +0, +216, +131, +60, +28, +213, +125, +136, +115, +203, +44, +100, +9, +91, +27, +189, +135, +150, +17, +89, +136, +247, +5, +12, +66, +69, +251, +162, +18, +112, +119, +68, +186, +47, +162, +66, +186, +23, +120, +89, +147, +231, +159, +144, +103, +254, +169, +140, +236, +210, +245, +253, +69, +184, +255, +78, +9, +50, +39, +58, +232, +225, +20, +34, +4, +125, +88, +2, +46, +105, +140, +153, +103, +140, +217, +205, +136, +165, +221, +124, +36, +212, +213, +89, +198, +152, +223, +0, +87, +102, +89, +54, +165, +162, +253, +95, +141, +49, +153, +49, +102, +171, +44, +203, +38, +25, +99, +12, +176, +181, +49, +230, +116, +173, +43, +219, +131, +217, +64, +28, +3, +97, +149, +3, +225, +211, +190, +190, +86, +255, +94, +103, +140, +153, +25, +200, +231, +56, +96, +166, +49, +102, +89, +99, +204, +6, +70, +172, +219, +102, +24, +99, +246, +200, +178, +204, +171, +160, +241, +224, +23, +198, +152, +47, +25, +99, +62, +102, +140, +121, +208, +24, +179, +200, +24, +211, +40, +248, +73, +7, +84, +221, +235, +242, +198, +152, +50, +1, +115, +134, +49, +230, +14, +35, +247, +124, +28, +176, +125, +150, +101, +179, +122, +232, +223, +226, +138, +63, +25, +99, +94, +103, +140, +249, +160, +41, +90, +233, +25, +81, +226, +105, +157, +49, +198, +252, +37, +250, +213, +187, +126, +65, +2, +248, +31, +170, +77, +91, +103, +243, +173, +225, +31, +189, +255, +33, +60, +61, +180, +69, +60, +66, +96, +96, +70, +242, +48, +221, +85, +240, +234, +67, +186, +222, +127, +140, +231, +71, +135, +4, +153, +19, +29, +140, +242, +41, +132, +33, +82, +122, +162, +138, +182, +171, +144, +159, +21, +15, +229, +28, +222, +67, +51, +12, +1, +224, +110, +1, +206, +215, +178, +61, +170, +218, +58, +244, +59, +50, +50, +9, +171, +197, +181, +78, +153, +55, +19, +81, +215, +251, +143, +245, +252, +104, +153, +32, +179, +41, +144, +60, +123, +219, +118, +228, +241, +44, +228, +136, +246, +118, +196, +86, +227, +17, +36, +188, +155, +55, +55, +132, +182, +9, +70, +139, +254, +140, +218, +41, +132, +33, +82, +122, +34, +224, +53, +136, +214, +255, +110, +228, +107, +48, +93, +95, +254, +231, +145, +68, +15, +0, +159, +247, +180, +27, +85, +45, +118, +9, +125, +45, +207, +42, +90, +224, +37, +200, +158, +248, +65, +90, +72, +237, +174, +215, +247, +208, +12, +229, +249, +209, +34, +65, +102, +83, +144, +107, +205, +91, +9, +2, +196, +215, +222, +42, +222, +166, +33, +147, +237, +86, +231, +57, +120, +141, +182, +24, +41, +160, +203, +254, +61, +25, +58, +198, +60, +252, +71, +229, +20, +194, +16, +33, +61, +17, +240, +85, +242, +164, +33, +211, +148, +151, +43, +193, +30, +208, +191, +255, +240, +180, +29, +51, +3, +184, +9, +207, +58, +90, +36, +42, +12, +192, +192, +190, +206, +195, +99, +92, +111, +1, +74, +218, +188, +4, +249, +154, +109, +90, +79, +29, +14, +196, +165, +251, +23, +228, +99, +43, +88, +16, +32, +2, +234, +30, +109, +247, +45, +70, +230, +86, +220, +1, +249, +104, +65, +131, +172, +79, +5, +254, +151, +52, +121, +70, +99, +2, +116, +76, +79, +68, +126, +68, +177, +200, +243, +80, +159, +142, +8, +7, +139, +123, +60, +237, +199, +220, +0, +14, +225, +89, +71, +11, +60, +83, +7, +212, +2, +60, +145, +112, +10, +180, +227, +126, +11, +224, +105, +243, +7, +29, +19, +231, +19, +89, +8, +40, +255, +53, +17, +239, +57, +107, +136, +84, +43, +8, +128, +47, +42, +173, +55, +115, +18, +240, +93, +173, +255, +83, +203, +62, +141, +63, +1, +96, +204, +83, +3, +176, +85, +122, +34, +242, +208, +216, +165, +81, +127, +129, +19, +44, +111, +79, +221, +152, +27, +192, +33, +60, +67, +104, +129, +175, +105, +221, +69, +33, +215, +141, +125, +125, +135, +102, +52, +4, +192, +187, +17, +223, +4, +128, +107, +67, +219, +53, +5, +242, +85, +223, +159, +124, +149, +89, +42, +8, +128, +11, +149, +198, +107, +181, +136, +232, +49, +0, +166, +182, +236, +203, +248, +20, +0, +198, +24, +67, +203, +244, +68, +72, +104, +109, +128, +247, +87, +208, +188, +85, +105, +230, +122, +234, +198, +220, +0, +142, +53, +1, +145, +21, +208, +93, +90, +255, +65, +95, +251, +62, +175, +239, +208, +12, +93, +0, +56, +109, +47, +5, +158, +104, +218, +174, +197, +117, +150, +5, +62, +129, +56, +67, +129, +223, +110, +222, +245, +210, +172, +194, +194, +150, +125, +24, +55, +2, +96, +192, +14, +32, +203, +178, +59, +141, +49, +109, +76, +111, +173, +146, +235, +222, +10, +154, +39, +245, +239, +99, +45, +248, +143, +91, +100, +89, +54, +27, +241, +243, +255, +157, +49, +230, +71, +192, +153, +197, +104, +57, +17, +48, +211, +200, +57, +125, +85, +228, +87, +107, +137, +57, +148, +40, +72, +136, +99, +16, +70, +108, +7, +182, +52, +198, +252, +97, +24, +215, +213, +107, +90, +248, +140, +146, +236, +88, +253, +175, +233, +231, +89, +124, +222, +24, +51, +16, +80, +213, +17, +10, +27, +103, +89, +118, +91, +27, +198, +192, +134, +198, +152, +111, +24, +99, +182, +55, +198, +172, +110, +196, +78, +228, +76, +99, +204, +1, +89, +150, +61, +220, +174, +187, +17, +64, +190, +244, +218, +165, +130, +230, +195, +74, +243, +119, +79, +221, +152, +251, +130, +133, +240, +28, +43, +32, +210, +41, +78, +228, +62, +205, +64, +180, +245, +83, +144, +227, +182, +222, +130, +81, +34, +91, +128, +47, +57, +227, +112, +10, +176, +15, +176, +172, +135, +214, +58, +222, +148, +154, +221, +246, +212, +71, +139, +141, +90, +182, +127, +41, +185, +158, +110, +6, +146, +241, +218, +42, +65, +239, +35, +32, +75, +118, +111, +32, +79, +89, +253, +199, +10, +154, +191, +41, +205, +94, +158, +186, +174, +2, +32, +186, +29, +195, +56, +19, +0, +157, +79, +113, +198, +35, +16, +37, +224, +247, +200, +109, +76, +110, +70, +204, +175, +75, +173, +92, +201, +93, +111, +191, +48, +228, +190, +182, +22, +0, +136, +89, +185, +77, +113, +127, +2, +42, +76, +129, +149, +17, +69, +43, +104, +114, +217, +81, +1, +114, +220, +99, +207, +102, +191, +138, +35, +121, +145, +125, +217, +119, +156, +23, +52, +224, +210, +26, +65, +0, +68, +255, +2, +142, +51, +1, +208, +233, +20, +103, +188, +1, +57, +6, +252, +57, +249, +23, +112, +18, +226, +118, +93, +25, +44, +69, +219, +238, +167, +109, +174, +199, +19, +125, +169, +47, +116, +20, +0, +111, +215, +182, +247, +2, +79, +43, +212, +45, +79, +158, +154, +238, +85, +49, +59, +124, +24, +13, +98, +160, +3, +31, +32, +63, +49, +152, +129, +156, +32, +92, +77, +254, +117, +190, +7, +120, +97, +73, +219, +174, +2, +32, +250, +23, +112, +60, +9, +0, +99, +186, +157, +226, +140, +55, +144, +127, +108, +174, +4, +222, +233, +123, +231, +21, +109, +87, +64, +182, +8, +32, +17, +162, +54, +44, +212, +63, +7, +81, +36, +238, +80, +198, +163, +101, +159, +187, +8, +0, +43, +192, +189, +246, +36, +228, +89, +169, +126, +208, +189, +167, +57, +83, +104, +24, +195, +28, +9, +252, +113, +4, +249, +41, +130, +141, +106, +250, +29, +186, +231, +155, +175, +18, +0, +209, +191, +128, +93, +5, +0, +34, +248, +162, +41, +153, +144, +124, +134, +223, +167, +58, +55, +94, +171, +83, +156, +241, +6, +196, +123, +238, +205, +29, +218, +111, +70, +126, +50, +3, +242, +5, +157, +66, +110, +4, +4, +145, +227, +80, +56, +124, +159, +131, +28, +143, +90, +171, +65, +155, +190, +252, +45, +21, +109, +255, +163, +109, +119, +43, +169, +223, +93, +235, +207, +139, +221, +225, +232, +73, +12, +74, +174, +213, +121, +15, +79, +228, +47, +96, +4, +1, +112, +59, +208, +72, +219, +203, +96, +88, +232, +39, +245, +30, +190, +133, +44, +119, +103, +0, +207, +106, +211, +159, +190, +129, +68, +93, +62, +7, +103, +27, +230, +43, +107, +200, +115, +91, +34, +71, +112, +118, +120, +175, +12, +124, +5, +89, +69, +76, +67, +140, +181, +30, +211, +201, +246, +157, +216, +2, +211, +25, +79, +63, +212, +191, +247, +1, +151, +147, +7, +3, +5, +143, +153, +188, +182, +181, +202, +77, +239, +252, +32, +143, +22, +52, +96, +100, +215, +181, +195, +195, +18, +0, +177, +124, +17, +162, +125, +1, +35, +8, +128, +127, +211, +32, +76, +54, +254, +176, +208, +147, +28, +1, +6, +112, +112, +155, +190, +12, +3, +120, +150, +169, +190, +178, +64, +94, +219, +34, +198, +60, +208, +99, +28, +254, +97, +194, +121, +135, +115, +113, +98, +99, +32, +219, +83, +27, +247, +97, +30, +158, +120, +10, +228, +186, +14, +111, +206, +5, +224, +101, +90, +31, +239, +88, +115, +200, +2, +96, +92, +107, +177, +129, +53, +144, +200, +174, +155, +57, +101, +167, +227, +152, +147, +34, +169, +179, +190, +136, +39, +203, +43, +213, +97, +161, +63, +224, +12, +158, +41, +140, +193, +116, +102, +228, +71, +188, +215, +160, +10, +96, +95, +89, +0, +31, +119, +226, +207, +70, +236, +253, +215, +239, +181, +243, +67, +130, +243, +14, +189, +193, +93, +200, +79, +201, +14, +241, +212, +217, +188, +138, +155, +149, +180, +125, +177, +214, +183, +50, +94, +50, +192, +15, +8, +199, +59, +91, +93, +164, +250, +250, +227, +90, +139, +141, +248, +194, +91, +220, +141, +164, +117, +190, +88, +255, +29, +73, +174, +116, +2, +216, +201, +211, +222, +27, +22, +26, +241, +37, +176, +86, +150, +118, +25, +232, +93, +38, +142, +22, +128, +205, +145, +47, +212, +116, +244, +235, +229, +43, +171, +225, +225, +78, +252, +39, +16, +93, +199, +154, +253, +247, +126, +120, +112, +222, +255, +219, +74, +234, +109, +236, +200, +171, +61, +117, +118, +107, +91, +183, +2, +8, +13, +92, +51, +192, +224, +19, +12, +186, +53, +162, +147, +178, +88, +254, +186, +138, +155, +11, +66, +73, +31, +198, +173, +22, +27, +17, +0, +255, +208, +254, +22, +149, +73, +211, +181, +236, +106, +100, +63, +60, +224, +111, +142, +39, +44, +52, +178, +234, +177, +225, +192, +143, +5, +246, +213, +255, +15, +100, +215, +85, +250, +205, +41, +28, +17, +57, +117, +75, +81, +227, +75, +142, +104, +199, +191, +174, +207, +221, +26, +241, +60, +140, +8, +177, +239, +80, +208, +150, +107, +155, +149, +200, +205, +110, +63, +92, +86, +86, +113, +77, +119, +226, +79, +69, +4, +225, +74, +85, +109, +198, +43, +156, +241, +80, +246, +21, +127, +189, +214, +15, +152, +76, +35, +250, +2, +168, +215, +1, +60, +16, +187, +195, +65, +91, +0, +36, +40, +100, +240, +191, +10, +62, +139, +133, +22, +27, +145, +230, +243, +16, +79, +184, +218, +88, +254, +228, +214, +105, +175, +119, +202, +108, +172, +247, +91, +144, +179, +222, +29, +244, +183, +47, +44, +244, +11, +17, +69, +214, +63, +138, +66, +0, +88, +26, +217, +142, +204, +161, +228, +156, +24, +81, +62, +222, +172, +252, +23, +234, +4, +190, +18, +39, +136, +7, +254, +132, +26, +43, +147, +135, +50, +255, +112, +89, +89, +201, +53, +237, +196, +191, +3, +209, +239, +120, +133, +87, +23, +32, +31, +149, +243, +200, +181, +237, +23, +163, +43, +88, +116, +75, +217, +128, +215, +154, +228, +202, +234, +43, +90, +244, +197, +98, +227, +146, +250, +170, +220, +133, +54, +102, +96, +153, +3, +147, +61, +5, +184, +172, +105, +191, +234, +58, +60, +20, +29, +64, +87, +32, +57, +7, +64, +190, +164, +3, +86, +96, +200, +23, +208, +126, +101, +75, +61, +22, +11, +109, +26, +217, +65, +56, +237, +94, +128, +172, +100, +78, +1, +206, +70, +4, +153, +87, +234, +59, +109, +70, +132, +133, +70, +142, +169, +230, +32, +66, +228, +101, +90, +246, +170, +138, +1, +178, +52, +112, +134, +214, +63, +37, +4, +16, +45, +252, +153, +90, +126, +22, +37, +123, +113, +224, +120, +165, +185, +141, +66, +4, +102, +196, +200, +235, +8, +74, +162, +58, +35, +38, +170, +179, +25, +185, +5, +24, +40, +243, +180, +179, +58, +143, +219, +145, +21, +104, +84, +1, +64, +158, +72, +3, +100, +251, +228, +70, +37, +250, +50, +170, +88, +107, +192, +239, +40, +135, +215, +128, +30, +39, +160, +189, +133, +55, +232, +13, +249, +87, +252, +113, +79, +221, +33, +90, +119, +120, +73, +219, +95, +104, +125, +101, +240, +216, +54, +29, +30, +47, +2, +96, +57, +96, +178, +246, +249, +32, +79, +253, +247, +181, +110, +18, +129, +201, +53, +218, +220, +63, +226, +249, +103, +83, +124, +109, +79, +254, +213, +190, +145, +234, +243, +123, +27, +157, +230, +77, +192, +211, +28, +30, +95, +118, +104, +42, +195, +66, +35, +66, +224, +207, +74, +115, +54, +242, +37, +254, +171, +254, +46, +157, +252, +218, +214, +158, +62, +148, +250, +114, +212, +220, +183, +253, +2, +185, +74, +192, +129, +178, +66, +155, +101, +17, +123, +125, +171, +31, +153, +138, +184, +244, +118, +222, +2, +0, +27, +147, +199, +39, +252, +63, +84, +177, +140, +108, +171, +62, +70, +174, +84, +11, +245, +11, +121, +185, +182, +121, +156, +246, +167, +66, +22, +239, +40, +169, +255, +148, +214, +95, +229, +169, +179, +249, +29, +239, +163, +218, +18, +208, +171, +95, +104, +5, +101, +56, +46, +4, +128, +49, +198, +0, +155, +34, +75, +180, +69, +192, +118, +78, +249, +246, +90, +54, +29, +216, +164, +1, +191, +198, +247, +79, +158, +6, +236, +78, +29, +108, +25, +112, +131, +150, +253, +178, +162, +221, +83, +97, +161, +129, +159, +234, +255, +207, +199, +49, +109, +37, +32, +44, +52, +242, +197, +183, +66, +192, +218, +199, +87, +78, +126, +109, +103, +151, +182, +91, +85, +209, +213, +240, +176, +249, +15, +126, +86, +85, +230, +105, +183, +52, +34, +44, +236, +22, +228, +9, +196, +22, +162, +181, +18, +144, +60, +8, +173, +215, +48, +134, +60, +54, +69, +168, +0, +184, +17, +17, +80, +91, +118, +232, +147, +197, +175, +74, +234, +207, +211, +250, +31, +150, +212, +91, +189, +220, +111, +200, +125, +1, +86, +4, +78, +213, +242, +235, +9, +48, +133, +110, +210, +225, +237, +232, +43, +8, +97, +79, +0, +62, +168, +15, +99, +42, +178, +175, +93, +139, +124, +217, +87, +26, +171, +160, +132, +23, +52, +23, +0, +107, +35, +58, +140, +253, +157, +178, +143, +35, +91, +148, +117, +42, +218, +89, +5, +223, +221, +136, +176, +122, +12, +88, +215, +169, +15, +78, +78, +137, +40, +243, +236, +201, +193, +163, +192, +138, +1, +253, +182, +118, +24, +165, +9, +76, +3, +120, +44, +139, +40, +57, +247, +170, +42, +171, +104, +111, +147, +169, +218, +213, +207, +44, +125, +150, +235, +183, +232, +203, +53, +202, +99, +159, +146, +250, +157, +155, +8, +128, +24, +112, +4, +192, +2, +36, +252, +155, +187, +42, +249, +63, +173, +155, +75, +137, +169, +48, +162, +31, +179, +39, +65, +51, +16, +161, +100, +149, +230, +143, +83, +19, +113, +106, +204, +67, +7, +192, +62, +136, +1, +141, +61, +18, +244, +162, +134, +143, +205, +85, +127, +142, +254, +131, +22, +123, +35, +109, +55, +44, +59, +136, +21, +200, +21, +103, +224, +40, +123, +104, +16, +22, +154, +145, +219, +0, +43, +4, +254, +130, +19, +162, +173, +164, +157, +141, +90, +52, +15, +89, +138, +46, +89, +69, +223, +39, +116, +66, +188, +19, +81, +66, +66, +11, +67, +32, +242, +16, +97, +222, +184, +126, +136, +94, +163, +118, +44, +197, +132, +243, +110, +109, +170, +239, +7, +24, +180, +4, +172, +212, +57, +33, +31, +152, +35, +17, +191, +154, +185, +250, +247, +215, +140, +119, +91, +9, +125, +233, +127, +28, +152, +233, +57, +30, +66, +20, +84, +15, +213, +189, +52, +100, +15, +125, +157, +211, +246, +42, +234, +151, +192, +163, +106, +7, +161, +125, +248, +142, +115, +141, +89, +72, +44, +192, +38, +201, +45, +93, +69, +224, +25, +200, +222, +240, +116, +253, +93, +41, +4, +180, +173, +213, +23, +128, +8, +163, +175, +50, +202, +103, +241, +192, +155, +105, +24, +74, +77, +219, +217, +108, +197, +175, +40, +169, +223, +216, +222, +104, +5, +143, +198, +97, +195, +107, +250, +100, +241, +44, +100, +165, +243, +31, +100, +91, +58, +29, +9, +83, +22, +111, +255, +62, +222, +64, +158, +65, +183, +12, +159, +80, +186, +79, +84, +189, +52, +135, +159, +155, +92, +116, +239, +0, +250, +78, +118, +16, +93, +1, +60, +3, +249, +106, +205, +5, +14, +70, +150, +228, +51, +144, +37, +222, +36, +234, +211, +99, +219, +163, +62, +244, +239, +210, +78, +185, +141, +201, +119, +38, +213, +66, +96, +9, +125, +110, +246, +204, +25, +29, +248, +63, +165, +143, +100, +20, +61, +130, +124, +5, +89, +22, +195, +114, +51, +123, +131, +37, +245, +173, +194, +134, +215, +244, +201, +98, +192, +158, +98, +194, +131, +220, +12, +178, +12, +193, +2, +0, +241, +182, +122, +2, +209, +218, +46, +68, +246, +211, +165, +251, +239, +10, +62, +48, +188, +45, +192, +114, +58, +201, +127, +212, +178, +253, +243, +145, +125, +224, +83, +147, +223, +169, +91, +10, +9, +216, +50, +147, +18, +75, +50, +15, +253, +206, +228, +138, +73, +16, +5, +221, +184, +177, +204, +35, +95, +1, +238, +89, +82, +255, +182, +50, +1, +64, +79, +97, +195, +157, +103, +217, +42, +34, +80, +239, +64, +236, +217, +191, +133, +72, +187, +39, +145, +165, +231, +36, +36, +81, +65, +165, +253, +57, +34, +81, +15, +71, +52, +222, +51, +144, +51, +224, +155, +144, +4, +151, +181, +222, +107, +228, +202, +141, +78, +2, +0, +88, +18, +49, +246, +0, +49, +30, +178, +231, +167, +23, +208, +80, +67, +170, +237, +198, +211, +41, +200, +243, +139, +147, +223, +169, +91, +146, +22, +74, +34, +36, +144, +171, +221, +79, +7, +217, +79, +140, +5, +144, +159, +164, +120, +243, +232, +145, +155, +150, +251, +4, +64, +47, +97, +195, +199, +180, +0, +0, +62, +68, +190, +108, +90, +128, +236, +123, +220, +165, +224, +245, +128, +55, +224, +164, +78, +124, +155, +16, +100, +14, +98, +185, +118, +143, +83, +246, +48, +53, +199, +111, +140, +76, +37, +238, +67, +168, +0, +248, +166, +210, +79, +66, +52, +208, +203, +146, +107, +184, +191, +214, +240, +153, +192, +56, +18, +0, +125, +193, +62, +115, +224, +161, +209, +238, +75, +40, +16, +97, +104, +141, +171, +246, +41, +212, +189, +7, +81, +118, +226, +27, +75, +244, +20, +54, +220, +25, +203, +209, +5, +64, +103, +222, +58, +137, +231, +81, +56, +127, +5, +94, +65, +254, +117, +246, +102, +168, +37, +143, +199, +254, +49, +70, +122, +177, +61, +31, +57, +170, +128, +18, +73, +236, +208, +186, +46, +175, +173, +4, +0, +146, +78, +124, +1, +34, +76, +94, +236, +148, +111, +174, +101, +243, +9, +76, +209, +173, +237, +146, +0, +48, +198, +0, +175, +213, +103, +49, +16, +206, +61, +160, +109, +48, +2, +120, +185, +122, +157, +218, +96, +29, +228, +71, +171, +144, +251, +222, +219, +165, +189, +253, +138, +251, +4, +64, +47, +97, +195, +157, +118, +99, +82, +0, +44, +65, +121, +184, +174, +189, +148, +249, +93, +21, +109, +189, +91, +4, +224, +29, +218, +182, +210, +79, +153, +145, +222, +114, +62, +84, +10, +0, +100, +223, +118, +135, +210, +250, +108, +214, +247, +215, +186, +219, +9, +56, +23, +215, +54, +227, +206, +14, +162, +15, +56, +239, +255, +198, +22, +109, +67, +114, +233, +93, +66, +141, +160, +5, +94, +132, +108, +45, +167, +233, +191, +25, +20, +76, +150, +75, +218, +189, +13, +249, +162, +91, +109, +251, +127, +128, +247, +2, +235, +218, +129, +229, +105, +99, +87, +14, +215, +117, +233, +179, +135, +111, +183, +73, +58, +74, +188, +173, +70, +20, +96, +94, +139, +182, +219, +106, +219, +1, +251, +230, +2, +221, +239, +171, +231, +127, +173, +0, +56, +73, +233, +46, +194, +179, +215, +71, +132, +148, +85, +106, +157, +232, +169, +247, +157, +2, +148, +253, +235, +124, +10, +128, +8, +151, +179, +144, +175, +205, +28, +68, +195, +124, +8, +125, +38, +128, +44, +239, +203, +230, +200, +113, +215, +43, +139, +207, +14, +177, +162, +180, +95, +196, +74, +3, +164, +30, +251, +183, +22, +114, +44, +57, +13, +89, +229, +189, +14, +17, +0, +119, +0, +107, +181, +228, +185, +161, +29, +88, +158, +186, +81, +9, +27, +222, +5, +125, +11, +0, +187, +231, +169, +74, +250, +81, +214, +214, +58, +41, +84, +42, +144, +24, +233, +79, +223, +88, +0, +116, +5, +67, +180, +3, +32, +95, +141, +128, +124, +149, +110, +38, +215, +129, +220, +71, +3, +115, +229, +24, +32, +119, +50, +2, +153, +100, +215, +33, +138, +96, +55, +205, +247, +31, +168, +8, +181, +221, +115, +255, +174, +66, +86, +136, +238, +182, +238, +165, +72, +76, +191, +1, +187, +249, +64, +158, +27, +217, +27, +243, +212, +141, +74, +216, +240, +46, +112, +222, +211, +6, +125, +48, +183, +17, +71, +143, +9, +164, +95, +6, +217, +255, +255, +4, +81, +4, +94, +67, +137, +39, +89, +161, +221, +215, +201, +21, +135, +69, +244, +42, +0, +134, +5, +228, +43, +187, +72, +39, +252, +7, +200, +205, +65, +159, +129, +216, +254, +163, +19, +208, +231, +209, +248, +74, +224, +159, +200, +215, +111, +22, +98, +26, +252, +85, +224, +185, +14, +205, +218, +192, +111, +27, +246, +105, +69, +36, +54, +222, +121, +200, +22, +105, +58, +162, +15, +186, +15, +49, +40, +122, +87, +135, +251, +13, +70, +219, +107, +180, +236, +87, +149, +0, +24, +149, +176, +225, +93, +224, +60, +198, +117, +128, +93, +16, +33, +22, +20, +112, +180, +142, +241, +115, +144, +37, +234, +2, +2, +150, +23, +133, +119, +58, +9, +177, +121, +14, +126, +136, +136, +100, +63, +88, +7, +222, +223, +201, +221, +124, +23, +23, +1, +96, +183, +42, +62, +143, +197, +101, +201, +245, +24, +239, +241, +212, +91, +69, +230, +181, +140, +52, +74, +1, +81, +182, +94, +133, +76, +220, +57, +195, +185, +155, +122, +16, +73, +7, +208, +67, +191, +170, +4, +192, +168, +132, +13, +239, +2, +103, +28, +88, +147, +241, +224, +128, +163, +85, +76, +151, +6, +46, +211, +198, +65, +241, +198, +145, +175, +215, +36, +196, +1, +103, +33, +114, +58, +112, +8, +29, +44, +201, +22, +51, +1, +112, +183, +222, +207, +75, +74, +234, +109, +16, +144, +147, +61, +117, +39, +1, +207, +116, +126, +111, +4, +124, +67, +5, +194, +60, +196, +208, +231, +92, +26, +156, +116, +140, +7, +16, +217, +36, +87, +121, +150, +10, +0, +173, +111, +21, +54, +92, +203, +175, +211, +255, +55, +10, +253, +221, +165, +207, +78, +159, +230, +225, +56, +189, +17, +16, +112, +180, +234, +130, +191, +210, +134, +151, +208, +98, +255, +135, +44, +107, +191, +174, +23, +190, +159, +246, +57, +209, +22, +39, +1, +96, +207, +159, +159, +81, +82, +111, +143, +220, +90, +37, +143, +92, +220, +64, +15, +38, +185, +202, +183, +82, +0, +40, +77, +227, +176, +225, +202, +114, +22, +178, +53, +131, +24, +95, +226, +128, +62, +59, +188, +27, +7, +28, +45, +187, +216, +193, +218, +224, +150, +178, +193, +218, +160, +227, +214, +56, +231, +172, +150, +237, +163, +11, +0, +26, +160, +130, +199, +70, +136, +95, +249, +125, +200, +210, +252, +126, +196, +87, +187, +84, +202, +234, +64, +2, +120, +126, +73, +253, +139, +180, +62, +118, +246, +224, +113, +7, +122, +50, +201, +237, +19, +206, +176, +105, +28, +250, +59, +128, +119, +136, +0, +104, +28, +112, +212, +71, +252, +37, +37, +190, +31, +71, +193, +212, +22, +228, +199, +136, +173, +34, +150, +106, +219, +216, +2, +96, +114, +205, +191, +59, +170, +250, +140, +28, +157, +89, +203, +201, +153, +136, +38, +223, +250, +102, +79, +163, +124, +137, +111, +51, +188, +120, +29, +148, +200, +5, +111, +212, +88, +248, +248, +49, +27, +89, +214, +158, +137, +196, +81, +240, +154, +74, +3, +171, +43, +237, +28, +58, +126, +12, +26, +246, +185, +23, +147, +220, +62, +225, +60, +219, +56, +95, +226, +145, +109, +67, +4, +128, +215, +220, +155, +138, +128, +163, +69, +66, +43, +41, +30, +2, +54, +109, +218, +201, +18, +158, +219, +40, +207, +39, +91, +182, +135, +33, +111, +1, +16, +255, +7, +128, +95, +148, +212, +159, +171, +245, +167, +161, +70, +80, +136, +242, +200, +122, +222, +157, +91, +210, +110, +31, +173, +191, +31, +71, +72, +32, +118, +10, +159, +33, +15, +85, +85, +105, +55, +209, +226, +126, +44, +174, +37, +87, +188, +93, +67, +110, +231, +15, +162, +120, +245, +230, +216, +67, +124, +206, +1, +190, +26, +179, +95, +53, +125, +238, +197, +36, +183, +79, +56, +207, +178, +251, +151, +120, +176, +109, +136, +0, +40, +139, +191, +88, +26, +112, +212, +37, +218, +133, +220, +123, +46, +90, +66, +76, +242, +0, +8, +173, +242, +150, +105, +219, +161, +9, +0, +196, +51, +239, +17, +125, +22, +94, +215, +77, +114, +31, +253, +77, +10, +229, +207, +215, +242, +178, +149, +195, +146, +72, +188, +62, +144, +109, +195, +69, +200, +23, +248, +78, +189, +158, +77, +144, +50, +37, +242, +61, +89, +108, +81, +40, +95, +18, +216, +155, +252, +248, +213, +123, +228, +135, +156, +206, +128, +40, +49, +135, +18, +44, +132, +158, +76, +114, +251, +132, +211, +167, +198, +161, +191, +29, +154, +98, +36, +227, +75, +16, +235, +197, +245, +44, +243, +138, +235, +54, +10, +56, +234, +198, +155, +219, +193, +24, +115, +146, +49, +102, +166, +49, +102, +199, +44, +203, +130, +82, +104, +107, +219, +115, +145, +44, +48, +43, +23, +202, +215, +0, +14, +52, +198, +88, +103, +12, +175, +47, +193, +24, +196, +158, +198, +152, +213, +141, +49, +103, +100, +89, +118, +123, +9, +205, +52, +253, +187, +160, +80, +190, +72, +255, +122, +95, +112, +150, +101, +11, +141, +49, +59, +25, +99, +190, +96, +140, +153, +108, +140, +121, +153, +49, +102, +107, +99, +204, +29, +198, +152, +237, +140, +49, +147, +148, +244, +250, +86, +61, +111, +136, +44, +203, +22, +102, +89, +246, +75, +99, +204, +63, +181, +104, +235, +18, +186, +107, +140, +49, +151, +25, +99, +214, +53, +198, +120, +131, +90, +246, +0, +59, +158, +254, +107, +140, +185, +180, +226, +95, +235, +80, +216, +200, +138, +237, +54, +59, +118, +129, +85, +145, +237, +223, +192, +41, +76, +67, +148, +29, +197, +206, +210, +191, +222, +0, +177, +72, +68, +160, +191, +25, +99, +94, +175, +180, +55, +27, +99, +54, +50, +198, +156, +106, +140, +217, +55, +224, +186, +235, +151, +148, +91, +157, +147, +127, +60, +147, +239, +95, +167, +82, +189, +55, +30, +152, +196, +142, +244, +89, +132, +40, +109, +254, +135, +124, +209, +236, +87, +101, +1, +78, +116, +219, +166, +80, +30, +67, +89, +1, +32, +190, +240, +246, +248, +231, +213, +21, +116, +39, +42, +205, +247, +10, +229, +54, +241, +99, +144, +209, +148, +135, +175, +221, +215, +182, +142, +205, +87, +194, +215, +194, +187, +178, +67, +18, +143, +0, +28, +86, +193, +99, +87, +165, +137, +151, +129, +182, +2, +12, +193, +36, +23, +209, +107, +0, +188, +86, +127, +219, +232, +187, +179, +91, +242, +179, +104, +19, +250, +187, +117, +36, +99, +231, +186, +173, +2, +142, +54, +209, +138, +159, +230, +105, +187, +35, +162, +13, +159, +132, +156, +151, +206, +71, +20, +97, +147, +17, +43, +194, +78, +193, +10, +245, +186, +195, +18, +0, +187, +233, +245, +42, +147, +122, +34, +203, +49, +235, +37, +249, +83, +96, +3, +242, +173, +206, +245, +180, +8, +158, +161, +47, +218, +186, +46, +87, +230, +17, +104, +193, +219, +98, +64, +0, +32, +250, +7, +27, +64, +99, +192, +0, +201, +161, +91, +218, +185, +103, +175, +227, +88, +76, +48, +4, +147, +92, +6, +87, +0, +171, +32, +43, +128, +83, +90, +242, +179, +104, +19, +250, +187, +117, +36, +99, +231, +186, +173, +2, +142, +38, +152, +167, +30, +150, +141, +72, +91, +107, +254, +138, +72, +236, +171, +25, +137, +95, +2, +171, +180, +188, +190, +245, +186, +59, +191, +77, +251, +26, +222, +3, +2, +0, +49, +217, +222, +20, +56, +70, +235, +254, +76, +137, +18, +208, +105, +99, +227, +22, +30, +25, +187, +143, +158, +107, +141, +103, +147, +220, +198, +95, +98, +58, +68, +50, +214, +226, +7, +201, +117, +72, +141, +3, +142, +78, +120, +32, +209, +111, +64, +108, +31, +106, +163, +7, +233, +132, +189, +23, +145, +186, +214, +113, +230, +6, +26, +154, +136, +34, +193, +59, +191, +170, +124, +102, +81, +178, +124, +236, +2, +170, +113, +17, +162, +195, +169, +156, +252, +202, +231, +89, +200, +57, +246, +116, +122, +142, +19, +200, +248, +54, +201, +109, +252, +37, +166, +67, +36, +99, +45, +254, +147, +254, +63, +5, +28, +109, +3, +114, +119, +225, +79, +214, +208, +45, +1, +252, +86, +105, +47, +70, +52, +255, +203, +34, +73, +61, +158, +64, +116, +31, +7, +86, +180, +255, +53, +146, +190, +235, +207, +72, +8, +116, +27, +12, +229, +1, +122, +74, +126, +234, +12, +76, +247, +24, +240, +74, +36, +142, +224, +2, +189, +247, +215, +4, +242, +58, +89, +121, +125, +174, +143, +190, +22, +174, +213, +202, +36, +55, +128, +175, +133, +111, +34, +214, +90, +9, +6, +240, +109, +28, +250, +155, +8, +145, +140, +19, +90, +2, +241, +51, +7, +9, +95, +86, +153, +58, +140, +220, +162, +235, +66, +10, +81, +118, +145, +175, +210, +157, +90, +255, +145, +146, +246, +199, +32, +147, +126, +1, +114, +212, +117, +33, +98, +244, +210, +219, +23, +213, +25, +124, +190, +99, +192, +143, +146, +7, +80, +173, +253, +154, +146, +43, +202, +110, +33, +96, +213, +208, +21, +180, +48, +201, +13, +224, +217, +183, +0, +104, +28, +250, +155, +142, +145, +140, +163, +0, +241, +40, +67, +59, +28, +108, +245, +165, +15, +237, +24, +68, +241, +247, +184, +182, +191, +9, +113, +96, +241, +90, +197, +105, +187, +189, +169, +135, +215, +168, +166, +192, +103, +101, +100, +207, +120, +33, +50, +169, +230, +107, +31, +130, +246, +170, +228, +201, +52, +106, +181, +239, +228, +169, +175, +203, +94, +148, +205, +225, +55, +102, +236, +249, +157, +103, +89, +119, +10, +16, +116, +164, +134, +172, +36, +96, +12, +45, +191, +155, +192, +121, +30, +125, +9, +128, +198, +161, +191, +233, +16, +201, +56, +26, +144, +244, +67, +54, +209, +96, +80, +54, +29, +196, +44, +214, +218, +184, +207, +69, +20, +105, +215, +144, +47, +211, +230, +1, +59, +149, +180, +253, +134, +210, +84, +29, +63, +86, +30, +169, +33, +150, +134, +110, +84, +225, +7, +181, +221, +20, +224, +204, +128, +254, +111, +138, +44, +219, +103, +19, +32, +244, +200, +29, +122, +188, +209, +142, +129, +103, +107, +253, +88, +114, +203, +173, +19, +0, +31, +209, +250, +89, +190, +122, +15, +253, +158, +74, +223, +202, +191, +99, +180, +49, +4, +1, +208, +88, +219, +78, +135, +72, +198, +81, +1, +108, +73, +30, +87, +255, +229, +1, +244, +103, +105, +191, +46, +99, +100, +64, +209, +229, +200, +143, +46, +38, +151, +180, +181, +254, +203, +94, +205, +103, +192, +181, +55, +35, +183, +202, +251, +13, +133, +227, +41, +2, +180, +199, +228, +49, +7, +74, +147, +119, +22, +232, +173, +75, +175, +247, +235, +135, +88, +84, +2, +220, +20, +118, +23, +253, +35, +64, +0, +216, +19, +136, +202, +216, +141, +14, +253, +211, +17, +47, +189, +133, +244, +17, +133, +166, +103, +140, +81, +1, +208, +58, +146, +113, +116, +168, +16, +120, +0, +184, +33, +128, +214, +106, +47, +7, +98, +229, +145, +155, +144, +122, +191, +134, +192, +41, +90, +223, +202, +186, +140, +252, +88, +165, +84, +233, +86, +211, +126, +29, +125, +176, +139, +8, +244, +208, +34, +63, +175, +189, +157, +130, +177, +16, +98, +19, +97, +87, +80, +251, +151, +241, +24, +54, +2, +4, +128, +117, +253, +190, +188, +1, +79, +123, +228, +116, +104, +188, +158, +14, +7, +99, +81, +0, +104, +251, +170, +72, +198, +95, +71, +21, +198, +109, +120, +247, +134, +154, +135, +121, +144, +214, +253, +179, +164, +237, +249, +90, +95, +187, +210, +240, +180, +125, +177, +182, +157, +66, +77, +242, +203, +10, +30, +118, +50, +255, +185, +65, +155, +21, +201, +189, +250, +64, +190, +132, +55, +50, +50, +161, +233, +25, +4, +158, +93, +3, +107, +146, +167, +231, +190, +34, +176, +77, +211, +16, +217, +22, +69, +37, +96, +6, +236, +65, +174, +129, +174, +205, +226, +235, +180, +125, +46, +185, +239, +200, +114, +161, +237, +106, +250, +215, +118, +226, +108, +139, +124, +76, +110, +211, +73, +50, +3, +49, +170, +58, +20, +143, +14, +170, +102, +204, +142, +154, +0, +80, +30, +222, +72, +198, +90, +119, +93, +155, +228, +11, +222, +105, +0, +0, +32, +0, +73, +68, +65, +84, +126, +245, +10, +223, +77, +35, +103, +184, +54, +55, +252, +109, +192, +179, +75, +218, +94, +175, +52, +222, +250, +154, +235, +30, +168, +109, +127, +210, +178, +223, +171, +146, +235, +41, +26, +69, +250, +69, +172, +226, +246, +65, +142, +207, +30, +211, +9, +244, +40, +18, +179, +239, +169, +88, +127, +129, +188, +142, +210, +62, +60, +0, +60, +39, +128, +190, +113, +136, +108, +231, +29, +185, +199, +128, +151, +147, +103, +16, +6, +57, +222, +107, +154, +61, +233, +47, +218, +246, +227, +77, +218, +85, +244, +175, +205, +210, +217, +21, +134, +183, +35, +177, +18, +239, +33, +55, +157, +29, +88, +29, +86, +93, +143, +252, +195, +50, +42, +2, +96, +84, +65, +139, +240, +75, +197, +155, +70, +190, +12, +54, +106, +203, +239, +168, +176, +140, +115, +6, +224, +13, +228, +122, +135, +25, +136, +34, +241, +48, +96, +227, +138, +182, +214, +183, +250, +3, +136, +34, +240, +92, +228, +4, +194, +102, +214, +221, +151, +81, +138, +100, +27, +10, +36, +86, +194, +66, +237, +119, +173, +7, +38, +45, +67, +100, +227, +199, +34, +114, +161, +181, +107, +203, +254, +91, +151, +220, +255, +182, +105, +239, +233, +95, +27, +1, +96, +141, +176, +182, +43, +148, +175, +130, +152, +118, +15, +40, +107, +201, +133, +195, +139, +60, +117, +54, +151, +197, +216, +250, +210, +246, +13, +90, +134, +95, +42, +190, +60, +242, +188, +238, +181, +54, +220, +192, +57, +74, +251, +24, +18, +84, +99, +50, +249, +30, +26, +68, +8, +121, +191, +46, +228, +86, +98, +135, +32, +95, +224, +123, +144, +47, +210, +69, +228, +10, +147, +191, +50, +138, +185, +238, +235, +128, +108, +29, +166, +2, +91, +6, +210, +71, +15, +145, +61, +22, +208, +81, +0, +216, +49, +251, +170, +6, +109, +236, +24, +123, +183, +167, +238, +232, +9, +39, +0, +232, +16, +126, +201, +35, +0, +172, +86, +62, +40, +35, +47, +158, +76, +61, +192, +243, +200, +45, +206, +22, +1, +219, +122, +104, +158, +112, +234, +191, +228, +78, +116, +196, +108, +210, +30, +13, +214, +166, +7, +79, +24, +93, +116, +20, +0, +214, +131, +114, +26, +18, +200, +165, +54, +89, +8, +185, +221, +199, +21, +56, +33, +235, +17, +109, +187, +213, +196, +79, +40, +1, +208, +58, +252, +146, +71, +0, +156, +161, +191, +255, +71, +71, +175, +54, +135, +215, +217, +158, +58, +171, +184, +250, +105, +73, +91, +107, +100, +84, +233, +217, +151, +48, +250, +112, +198, +208, +250, +72, +120, +178, +43, +244, +67, +242, +36, +178, +69, +169, +212, +209, +0, +7, +56, +60, +230, +35, +137, +76, +94, +91, +65, +255, +26, +103, +252, +204, +64, +156, +186, +172, +201, +241, +183, +24, +35, +218, +118, +2, +17, +227, +66, +173, +195, +47, +57, +253, +176, +2, +96, +53, +196, +198, +29, +100, +41, +254, +77, +90, +46, +195, +145, +99, +53, +240, +251, +79, +91, +205, +185, +55, +12, +54, +98, +224, +3, +53, +161, +200, +144, +213, +198, +137, +200, +82, +124, +62, +178, +31, +191, +4, +201, +224, +227, +205, +136, +172, +237, +90, +5, +147, +64, +146, +119, +124, +13, +81, +194, +77, +211, +107, +78, +69, +132, +221, +86, +177, +219, +141, +7, +56, +99, +200, +166, +115, +191, +27, +217, +130, +218, +119, +60, +159, +146, +248, +12, +192, +203, +144, +45, +228, +99, +200, +135, +234, +50, +135, +223, +241, +192, +178, +37, +237, +222, +128, +156, +66, +77, +67, +38, +252, +53, +168, +249, +54, +37, +218, +246, +226, +88, +47, +212, +133, +132, +236, +170, +132, +167, +93, +85, +46, +5, +107, +143, +210, +42, +212, +94, +241, +66, +173, +195, +47, +249, +30, +10, +162, +37, +255, +6, +121, +128, +131, +179, +129, +167, +181, +232, +151, +245, +128, +26, +8, +208, +128, +40, +42, +161, +160, +252, +113, +234, +159, +161, +245, +165, +89, +109, +17, +187, +118, +235, +140, +51, +23, +209, +67, +184, +105, +209, +75, +99, +236, +211, +50, +152, +4, +185, +185, +245, +124, +228, +20, +228, +42, +242, +237, +204, +2, +224, +245, +49, +219, +85, +244, +227, +45, +218, +54, +232, +232, +209, +211, +126, +64, +168, +35, +19, +174, +18, +37, +188, +44, +230, +3, +187, +56, +229, +171, +59, +247, +93, +182, +58, +181, +31, +155, +55, +59, +101, +219, +144, +7, +118, +245, +174, +16, +219, +192, +233, +103, +83, +1, +112, +82, +200, +191, +6, +253, +88, +146, +252, +4, +173, +117, +176, +29, +151, +97, +235, +140, +168, +53, +15, +101, +11, +114, +79, +168, +160, +228, +34, +133, +246, +239, +212, +182, +183, +122, +234, +172, +17, +145, +247, +1, +144, +11, +143, +187, +43, +248, +219, +243, +252, +75, +113, +204, +128, +17, +171, +172, +255, +171, +233, +91, +171, +96, +18, +136, +78, +229, +211, +56, +206, +63, +136, +213, +164, +221, +151, +150, +5, +20, +109, +213, +174, +162, +31, +246, +20, +197, +187, +234, +83, +154, +181, +17, +99, +171, +199, +245, +126, +183, +208, +242, +221, +128, +251, +60, +244, +239, +69, +242, +44, +22, +255, +253, +81, +175, +229, +181, +52, +116, +198, +208, +81, +158, +58, +235, +7, +255, +96, +73, +91, +43, +192, +87, +45, +148, +111, +169, +229, +211, +124, +237, +218, +160, +102, +172, +183, +182, +31, +104, +209, +15, +107, +185, +121, +55, +45, +62, +172, +62, +134, +173, +195, +47, +85, +61, +20, +173, +183, +166, +177, +222, +244, +226, +53, +188, +173, +153, +241, +64, +116, +94, +29, +108, +32, +202, +203, +1, +15, +62, +224, +251, +90, +95, +154, +43, +143, +124, +133, +210, +58, +99, +75, +44, +144, +123, +36, +54, +90, +210, +181, +105, +135, +100, +199, +93, +132, +28, +161, +121, +151, +200, +74, +119, +28, +178, +23, +159, +172, +244, +139, +244, +255, +179, +8, +207, +21, +185, +20, +249, +87, +220, +235, +106, +237, +140, +161, +1, +111, +57, +242, +92, +9, +197, +248, +139, +182, +222, +58, +103, +125, +177, +80, +190, +154, +150, +63, +28, +210, +207, +16, +140, +5, +1, +128, +196, +143, +176, +10, +238, +82, +225, +221, +148, +105, +235, +240, +75, +1, +2, +96, +11, +173, +247, +45, +227, +255, +12, +236, +4, +172, +84, +40, +127, +22, +185, +121, +234, +116, +96, +125, +79, +219, +165, +200, +61, +168, +46, +70, +181, +191, +136, +117, +219, +222, +200, +228, +94, +68, +197, +241, +144, +211, +247, +129, +243, +224, +97, +131, +138, +156, +245, +177, +219, +1, +63, +214, +38, +3, +57, +10, +11, +116, +83, +129, +15, +232, +255, +95, +140, +172, +2, +108, +154, +171, +160, +212, +220, +136, +82, +13, +224, +156, +10, +26, +139, +1, +165, +113, +221, +196, +66, +44, +231, +108, +252, +201, +19, +201, +117, +81, +54, +191, +197, +9, +33, +253, +12, +188, +151, +210, +177, +94, +215, +207, +136, +125, +248, +182, +94, +230, +26, +98, +185, +99, +211, +33, +252, +146, +251, +80, +244, +101, +63, +203, +169, +91, +154, +220, +34, +112, +96, +175, +233, +180, +93, +132, +68, +215, +185, +158, +145, +250, +136, +71, +41, +217, +227, +107, +251, +231, +147, +239, +217, +231, +33, +123, +120, +55, +88, +68, +229, +254, +200, +161, +107, +44, +0, +104, +153, +179, +14, +17, +92, +31, +68, +142, +57, +39, +33, +210, +124, +58, +185, +86, +186, +108, +160, +183, +106, +231, +225, +179, +28, +121, +32, +144, +245, +234, +250, +26, +194, +179, +162, +253, +75, +245, +189, +60, +65, +197, +177, +176, +59, +134, +60, +117, +33, +105, +188, +94, +67, +190, +202, +88, +132, +40, +74, +23, +33, +218, +253, +213, +187, +220, +67, +204, +126, +70, +184, +254, +51, +201, +21, +163, +241, +130, +165, +210, +33, +252, +146, +251, +80, +156, +23, +112, +51, +98, +16, +100, +39, +243, +130, +146, +182, +111, +67, +162, +235, +220, +138, +44, +43, +109, +176, +135, +203, +144, +211, +131, +218, +224, +154, +136, +178, +239, +80, +229, +49, +87, +219, +159, +77, +64, +242, +72, +167, +239, +141, +4, +0, +237, +141, +166, +214, +36, +247, +165, +183, +207, +197, +70, +82, +182, +171, +25, +159, +18, +169, +85, +187, +146, +62, +216, +253, +227, +233, +77, +238, +185, +41, +144, +152, +131, +54, +198, +226, +110, +53, +180, +79, +141, +33, +79, +93, +240, +196, +2, +94, +133, +172, +28, +109, +148, +235, +203, +112, +18, +170, +118, +69, +172, +126, +118, +184, +190, +141, +223, +248, +215, +62, +152, +119, +201, +136, +138, +62, +128, +189, +244, +161, +79, +67, +36, +255, +20, +100, +153, +223, +200, +214, +190, +111, +144, +107, +240, +189, +168, +105, +219, +197, +104, +234, +55, +90, +55, +21, +49, +58, +121, +186, +83, +87, +165, +69, +110, +213, +174, +164, +255, +255, +85, +242, +202, +47, +8, +29, +143, +29, +17, +229, +31, +4, +164, +238, +114, +199, +144, +167, +174, +241, +196, +66, +78, +15, +78, +213, +102, +165, +91, +143, +166, +168, +233, +103, +175, +17, +123, +128, +23, +34, +130, +127, +1, +125, +69, +101, +166, +135, +240, +75, +99, +17, +136, +143, +194, +105, +206, +11, +61, +71, +127, +159, +134, +39, +244, +121, +161, +109, +23, +163, +41, +187, +106, +24, +8, +23, +70, +158, +67, +209, +39, +0, +90, +181, +243, +208, +110, +173, +164, +33, +110, +222, +173, +143, +29, +17, +197, +164, +13, +150, +26, +178, +138, +171, +154, +88, +173, +190, +172, +136, +16, +128, +192, +32, +39, +129, +60, +45, +124, +62, +4, +189, +70, +236, +33, +63, +181, +57, +186, +15, +254, +19, +18, +85, +47, +180, +162, +77, +23, +163, +41, +123, +234, +176, +173, +167, +206, +38, +21, +241, +9, +128, +86, +237, +60, +180, +246, +171, +248, +169, +0, +218, +182, +199, +149, +79, +71, +182, +128, +224, +177, +181, +47, +105, +211, +74, +0, +32, +142, +103, +251, +81, +80, +18, +35, +129, +91, +191, +172, +205, +188, +193, +104, +218, +192, +233, +167, +207, +135, +224, +136, +190, +4, +0, +121, +66, +145, +25, +44, +38, +31, +225, +49, +129, +150, +2, +160, +139, +209, +148, +221, +175, +31, +135, +42, +216, +116, +176, +238, +69, +133, +50, +175, +109, +187, +2, +143, +103, +145, +39, +109, +25, +240, +191, +104, +112, +255, +149, +199, +142, +136, +98, +20, +224, +196, +6, +60, +45, +154, +10, +128, +45, +156, +182, +83, +145, +149, +235, +21, +228, +43, +166, +57, +56, +6, +66, +93, +225, +92, +171, +232, +67, +240, +46, +122, +138, +216, +163, +239, +217, +234, +127, +190, +21, +147, +247, +168, +163, +234, +197, +7, +180, +253, +56, +18, +94, +123, +153, +170, +178, +138, +246, +75, +59, +215, +127, +126, +29, +189, +211, +174, +139, +209, +212, +78, +133, +1, +123, +53, +185, +13, +198, +126, +168, +34, +54, +86, +187, +2, +15, +107, +47, +255, +243, +208, +123, +45, +225, +83, +122, +236, +136, +36, +191, +180, +39, +58, +193, +9, +82, +170, +198, +1, +213, +2, +96, +57, +224, +115, +250, +188, +109, +92, +134, +199, +16, +229, +227, +49, +68, +202, +112, +237, +233, +39, +228, +62, +4, +174, +242, +124, +126, +221, +123, +104, +113, +205, +143, +40, +255, +7, +0, +111, +78, +193, +113, +139, +170, +23, +31, +208, +214, +198, +19, +60, +162, +170, +172, +162, +253, +122, +206, +245, +87, +171, +163, +119, +218, +117, +202, +89, +135, +248, +155, +95, +142, +40, +11, +167, +33, +166, +172, +239, +214, +186, +147, +203, +6, +80, +219, +118, +90, +239, +166, +245, +10, +18, +118, +180, +56, +118, +116, +38, +195, +121, +248, +45, +2, +127, +0, +172, +27, +246, +164, +198, +30, +156, +241, +178, +23, +114, +234, +51, +15, +17, +118, +135, +33, +6, +58, +255, +139, +41, +0, +144, +237, +148, +85, +56, +119, +10, +186, +210, +244, +194, +0, +199, +55, +108, +179, +153, +14, +208, +25, +192, +5, +84, +4, +243, +40, +92, +167, +173, +0, +88, +150, +124, +105, +180, +91, +89, +89, +69, +123, +155, +171, +189, +209, +30, +145, +33, +228, +172, +139, +13, +36, +104, +10, +4, +154, +11, +211, +254, +184, +50, +4, +193, +126, +251, +99, +13, +206, +61, +84, +218, +79, +68, +188, +222, +87, +236, +24, +101, +152, +113, +45, +90, +10, +128, +203, +145, +229, +247, +54, +136, +86, +253, +162, +192, +235, +180, +18, +0, +218, +254, +121, +136, +192, +153, +137, +6, +201, +240, +149, +121, +218, +109, +133, +236, +229, +231, +18, +96, +47, +80, +104, +59, +30, +115, +214, +89, +135, +153, +218, +156, +135, +74, +31, +237, +216, +113, +113, +130, +51, +94, +135, +18, +9, +153, +60, +206, +228, +221, +52, +216, +106, +182, +189, +216, +26, +136, +59, +166, +53, +222, +88, +136, +44, +233, +206, +69, +114, +215, +85, +38, +59, +208, +9, +103, +131, +23, +238, +2, +76, +15, +184, +102, +39, +1, +160, +60, +62, +172, +60, +110, +69, +77, +138, +125, +101, +37, +215, +125, +130, +234, +116, +232, +3, +171, +3, +198, +89, +206, +58, +114, +167, +168, +187, +8, +252, +138, +16, +233, +216, +113, +113, +67, +140, +241, +218, +242, +122, +149, +136, +113, +161, +13, +200, +227, +243, +89, +239, +170, +39, +201, +205, +14, +161, +102, +201, +139, +104, +96, +207, +66, +206, +154, +207, +1, +46, +108, +112, +131, +27, +21, +202, +215, +118, +38, +217, +55, +107, +120, +216, +201, +126, +39, +185, +103, +222, +64, +89, +201, +117, +91, +61, +92, +122, +202, +89, +215, +7, +144, +92, +132, +0, +95, +105, +208, +38, +202, +177, +99, +108, +208, +62, +6, +67, +171, +140, +87, +30, +62, +222, +241, +58, +238, +1, +252, +93, +111, +236, +100, +228, +11, +7, +226, +219, +157, +33, +129, +53, +190, +10, +172, +80, +195, +99, +115, +228, +120, +100, +38, +226, +156, +83, +27, +103, +223, +247, +64, +245, +250, +54, +237, +118, +93, +86, +160, +231, +233, +75, +157, +141, +134, +127, +246, +149, +245, +1, +250, +203, +89, +119, +157, +254, +191, +113, +100, +28, +15, +191, +213, +180, +253, +156, +38, +3, +159, +8, +199, +142, +125, +128, +246, +49, +24, +26, +103, +188, +42, +225, +179, +216, +10, +0, +251, +213, +127, +174, +254, +134, +134, +58, +128, +150, +215, +29, +241, +64, +17, +205, +179, +21, +70, +103, +81, +177, +100, +101, +164, +194, +239, +163, +101, +101, +227, +9, +218, +239, +89, +136, +9, +46, +52, +136, +140, +19, +185, +31, +157, +143, +29, +27, +92, +43, +56, +47, +2, +45, +99, +48, +40, +109, +163, +140, +87, +37, +60, +22, +91, +1, +96, +131, +118, +188, +64, +127, +15, +91, +0, +172, +171, +191, +173, +179, +195, +21, +212, +156, +121, +146, +31, +249, +29, +85, +85, +54, +158, +224, +60, +143, +198, +145, +113, +122, +232, +75, +235, +99, +199, +134, +215, +105, +148, +23, +161, +227, +181, +130, +51, +94, +77, +40, +144, +107, +125, +207, +71, +210, +101, +5, +11, +0, +58, +56, +141, +56, +3, +126, +37, +242, +175, +222, +109, +132, +217, +143, +239, +133, +232, +26, +150, +169, +42, +27, +79, +112, +158, +71, +227, +200, +56, +227, +17, +52, +204, +139, +176, +56, +3, +120, +1, +146, +165, +249, +78, +68, +7, +243, +32, +178, +157, +252, +70, +9, +125, +20, +189, +134, +101, +182, +22, +185, +59, +171, +53, +105, +60, +139, +138, +104, +49, +158, +142, +180, +113, +26, +65, +7, +192, +251, +201, +131, +58, +116, +138, +36, +60, +158, +225, +8, +128, +198, +145, +113, +198, +35, +104, +144, +23, +161, +203, +135, +102, +172, +3, +9, +125, +103, +183, +225, +243, +17, +155, +11, +155, +113, +219, +235, +250, +75, +36, +189, +134, +203, +112, +5, +196, +189, +213, +77, +181, +253, +40, +146, +130, +107, +224, +40, +205, +105, +215, +58, +86, +157, +35, +0, +102, +59, +215, +236, +100, +170, +218, +7, +144, +147, +141, +63, +170, +144, +156, +141, +40, +58, +39, +35, +22, +96, +3, +251, +73, +231, +94, +26, +125, +213, +156, +118, +141, +34, +227, +180, +189, +222, +120, +2, +237, +131, +169, +142, +105, +193, +129, +164, +147, +183, +167, +71, +191, +64, +77, +168, +17, +5, +252, +22, +84, +40, +178, +137, +160, +215, +240, +49, +93, +74, +59, +243, +8, +249, +106, +224, +54, +26, +90, +63, +17, +16, +171, +206, +25, +184, +23, +0, +219, +59, +15, +98, +224, +11, +56, +90, +0, +118, +37, +95, +157, +216, +140, +173, +55, +145, +167, +151, +58, +204, +211, +166, +171, +0, +104, +27, +118, +122, +113, +22, +0, +109, +189, +19, +27, +11, +142, +182, +239, +193, +161, +9, +94, +206, +147, +39, +208, +253, +119, +248, +211, +24, +209, +62, +190, +94, +67, +59, +116, +60, +34, +157, +172, +251, +107, +35, +229, +19, +1, +177, +234, +138, +15, +26, +201, +84, +11, +226, +71, +62, +38, +220, +30, +201, +131, +78, +126, +169, +80, +190, +58, +240, +73, +60, +130, +177, +237, +132, +108, +59, +240, +34, +92, +207, +98, +158, +14, +166, +179, +245, +93, +84, +157, +194, +52, +254, +178, +182, +189, +191, +154, +123, +168, +243, +78, +108, +44, +56, +186, +244, +147, +134, +203, +121, +68, +225, +13, +99, +196, +110, +196, +24, +51, +242, +20, +0, +216, +68, +127, +151, +133, +116, +110, +29, +171, +206, +247, +160, +201, +67, +72, +159, +67, +172, +160, +135, +35, +175, +217, +52, +181, +182, +53, +138, +121, +69, +131, +107, +88, +12, +91, +0, +88, +204, +67, +38, +227, +57, +192, +158, +148, +196, +246, +115, +232, +109, +214, +224, +171, +16, +133, +156, +197, +69, +148, +164, +254, +102, +20, +190, +172, +37, +253, +104, +27, +76, +181, +84, +112, +116, +120, +15, +141, +151, +243, +228, +199, +171, +3, +17, +164, +70, +13, +218, +161, +227, +245, +255, +214, +231, +218, +151, +157, +167, +83, +172, +58, +223, +131, +70, +190, +172, +54, +208, +231, +126, +145, +239, +171, +77, +106, +109, +187, +2, +186, +140, +26, +115, +104, +167, +141, +197, +176, +5, +64, +217, +68, +190, +20, +207, +177, +170, +175, +159, +72, +210, +137, +221, +201, +183, +56, +7, +148, +244, +117, +216, +95, +214, +40, +65, +81, +29, +126, +85, +110, +205, +109, +223, +67, +227, +229, +60, +185, +123, +121, +155, +15, +76, +41, +66, +121, +89, +134, +199, +2, +219, +162, +199, +103, +202, +227, +120, +36, +20, +180, +205, +246, +251, +27, +79, +187, +78, +78, +35, +101, +15, +26, +209, +7, +44, +66, +190, +190, +47, +109, +116, +51, +229, +215, +106, +155, +90, +251, +185, +228, +89, +102, +108, +222, +185, +186, +120, +122, +22, +163, +182, +5, +96, +112, +34, +127, +183, +73, +63, +117, +76, +0, +220, +212, +240, +30, +250, +248, +178, +182, +254, +208, +208, +206, +173, +185, +109, +63, +27, +47, +231, +201, +87, +77, +219, +54, +104, +99, +97, +5, +126, +55, +7, +33, +135, +225, +28, +242, +227, +192, +69, +78, +249, +36, +60, +103, +243, +116, +116, +26, +169, +121, +208, +54, +118, +253, +77, +68, +8, +132, +64, +135, +212, +218, +200, +151, +237, +235, +140, +60, +33, +249, +95, +217, +75, +115, +104, +70, +93, +7, +64, +197, +68, +174, +105, +183, +187, +29, +19, +13, +239, +161, +143, +47, +107, +219, +96, +170, +93, +221, +154, +155, +246, +179, +241, +114, +30, +177, +244, +132, +6, +89, +172, +171, +222, +91, +43, +32, +190, +241, +127, +67, +150, +222, +118, +73, +50, +13, +56, +29, +217, +67, +150, +37, +88, +28, +147, +78, +35, +125, +1, +9, +172, +241, +254, +194, +160, +218, +217, +67, +215, +234, +5, +117, +24, +120, +165, +215, +163, +98, +34, +215, +180, +219, +77, +235, +158, +40, +233, +235, +48, +191, +172, +109, +131, +169, +182, +21, +28, +109, +251, +217, +102, +57, +127, +176, +182, +57, +191, +65, +155, +210, +247, +22, +5, +202, +252, +248, +0, +186, +49, +233, +52, +210, +55, +244, +30, +109, +16, +200, +41, +158, +250, +126, +95, +80, +131, +235, +81, +49, +145, +107, +218, +157, +160, +117, +255, +242, +212, +13, +251, +203, +218, +54, +152, +106, +91, +193, +81, +213, +207, +23, +87, +180, +107, +179, +156, +95, +151, +60, +143, +193, +33, +56, +241, +26, +145, +20, +110, +187, +86, +244, +111, +212, +5, +192, +208, +156, +70, +186, +160, +237, +192, +171, +225, +249, +82, +109, +214, +232, +203, +218, +7, +170, +174, +71, +245, +68, +30, +104, +135, +56, +84, +125, +158, +92, +119, +240, +78, +79, +187, +62, +190, +172, +85, +19, +171, +109, +48, +213, +182, +130, +195, +222, +187, +47, +252, +247, +59, +42, +218, +53, +94, +206, +107, +187, +247, +145, +219, +220, +204, +67, +156, +192, +102, +233, +239, +255, +120, +232, +75, +223, +119, +20, +40, +243, +227, +3, +105, +135, +226, +52, +210, +5, +53, +3, +175, +106, +192, +110, +128, +132, +151, +222, +160, +80, +254, +52, +114, +39, +150, +43, +43, +174, +55, +106, +2, +128, +176, +137, +108, +97, +149, +73, +215, +49, +50, +6, +196, +129, +37, +215, +107, +251, +101, +109, +59, +177, +218, +6, +83, +109, +43, +56, +172, +137, +173, +47, +252, +247, +209, +21, +237, +26, +47, +231, +157, +182, +155, +35, +185, +13, +239, +65, +182, +18, +51, +144, +147, +167, +15, +121, +104, +7, +222, +247, +98, +5, +106, +34, +215, +208, +208, +17, +194, +121, +96, +93, +194, +78, +63, +128, +104, +121, +175, +36, +15, +213, +52, +11, +216, +186, +226, +122, +195, +22, +0, +77, +39, +114, +17, +179, +144, +19, +143, +147, +80, +159, +251, +146, +118, +109, +191, +172, +173, +38, +150, +214, +55, +254, +208, +208, +94, +112, +216, +163, +204, +98, +248, +239, +247, +144, +239, +243, +125, +237, +26, +47, +231, +219, +192, +243, +222, +6, +16, +227, +58, +189, +130, +134, +185, +231, +11, +109, +27, +57, +66, +56, +207, +165, +75, +216, +233, +71, +145, +175, +198, +227, +136, +31, +192, +49, +192, +38, +53, +215, +27, +182, +0, +176, +8, +157, +200, +173, +250, +73, +251, +47, +107, +171, +137, +213, +5, +180, +19, +28, +175, +113, +238, +195, +134, +255, +182, +17, +160, +190, +133, +90, +250, +149, +92, +175, +209, +114, +190, +229, +61, +89, +196, +57, +6, +28, +13, +208, +49, +247, +60, +13, +28, +33, +156, +7, +54, +148, +164, +142, +109, +39, +214, +176, +175, +215, +161, +93, +219, +47, +107, +235, +137, +53, +108, +0, +111, +64, +220, +227, +167, +105, +191, +174, +65, +183, +60, +168, +0, +172, +104, +27, +188, +156, +111, +217, +183, +161, +142, +175, +94, +64, +156, +220, +243, +65, +142, +16, +73, +0, +196, +109, +167, +109, +219, +230, +55, +104, +61, +177, +198, +27, +144, +128, +172, +179, +233, +47, +65, +73, +52, +59, +128, +149, +129, +207, +34, +182, +223, +143, +35, +75, +151, +59, +145, +163, +174, +210, +188, +238, +5, +30, +63, +69, +246, +63, +191, +8, +164, +239, +148, +123, +190, +9, +70, +81, +0, +148, +46, +209, +208, +8, +202, +145, +175, +55, +52, +1, +144, +80, +15, +196, +106, +116, +145, +10, +188, +82, +33, +64, +190, +69, +216, +190, +170, +204, +169, +139, +46, +0, +174, +115, +152, +62, +142, +132, +8, +179, +150, +128, +15, +17, +96, +3, +79, +238, +241, +52, +51, +74, +167, +34, +162, +70, +0, +148, +30, +63, +69, +184, +94, +21, +62, +223, +195, +245, +146, +0, +24, +67, +0, +222, +77, +158, +133, +250, +218, +10, +186, +187, +138, +239, +193, +87, +230, +212, +69, +23, +0, +123, +0, +63, +193, +201, +59, +142, +36, +147, +188, +64, +47, +116, +106, +0, +143, +35, +145, +229, +78, +200, +254, +29, +90, +68, +191, +173, +153, +200, +85, +202, +188, +86, +199, +79, +139, +59, +22, +87, +1, +64, +131, +64, +163, +67, +234, +207, +165, +148, +88, +84, +106, +189, +61, +213, +90, +167, +170, +204, +169, +27, +206, +123, +3, +94, +168, +23, +122, +44, +50, +95, +104, +17, +253, +182, +131, +0, +104, +125, +252, +180, +56, +99, +49, +22, +0, +149, +129, +70, +145, +232, +87, +7, +33, +39, +37, +115, +144, +237, +238, +161, +212, +132, +190, +111, +216, +135, +157, +145, +21, +192, +1, +122, +141, +210, +108, +201, +72, +252, +5, +112, +76, +238, +125, +101, +78, +221, +208, +4, +192, +202, +118, +178, +70, +230, +107, +209, +40, +250, +109, +7, +1, +48, +244, +227, +167, +197, +25, +250, +184, +46, +215, +255, +175, +173, +19, +238, +110, +68, +195, +127, +123, +69, +187, +224, +88, +12, +200, +10, +244, +100, +100, +85, +248, +36, +240, +59, +2, +130, +196, +16, +16, +104, +84, +199, +195, +34, +36, +120, +201, +151, +201, +147, +167, +252, +182, +142, +127, +40, +144, +143, +217, +124, +228, +68, +228, +103, +84, +56, +180, +33, +39, +6, +211, +234, +202, +156, +58, +139, +126, +143, +1, +17, +141, +45, +212, +36, +208, +68, +206, +203, +33, +48, +96, +165, +115, +3, +141, +162, +223, +118, +16, +0, +227, +230, +248, +105, +60, +64, +159, +219, +61, +72, +26, +180, +41, +250, +123, +33, +162, +60, +190, +180, +164, +77, +112, +44, +6, +157, +252, +54, +83, +213, +249, +72, +128, +218, +121, +200, +74, +174, +82, +8, +16, +16, +104, +20, +73, +152, +242, +170, +66, +217, +121, +68, +254, +208, +133, +2, +241, +124, +189, +163, +174, +204, +169, +171, +69, +140, +78, +173, +64, +238, +240, +241, +165, +26, +218, +87, +148, +77, +218, +154, +27, +104, +20, +253, +214, +105, +215, +38, +160, +68, +47, +199, +79, +180, +76, +87, +165, +180, +65, +95, +68, +242, +56, +141, +62, +188, +172, +77, +191, +187, +64, +175, +59, +31, +17, +164, +255, +3, +222, +132, +38, +74, +197, +241, +11, +112, +232, +27, +197, +98, +64, +143, +17, +113, +50, +60, +35, +66, +124, +62, +112, +82, +79, +247, +116, +61, +48, +169, +15, +222, +227, +14, +72, +162, +208, +203, +245, +37, +92, +74, +69, +22, +92, +196, +2, +236, +159, +74, +91, +155, +161, +69, +219, +88, +180, +141, +126, +59, +148, +227, +188, +16, +208, +62, +93, +85, +163, +232, +68, +72, +172, +185, +67, +157, +103, +240, +123, +224, +67, +68, +136, +149, +208, +20, +78, +31, +30, +194, +217, +82, +85, +208, +55, +138, +197, +160, +207, +99, +96, +43, +1, +252, +133, +10, +101, +90, +91, +32, +62, +19, +139, +128, +157, +98, +243, +30, +119, +64, +210, +45, +93, +175, +47, +248, +106, +52, +174, +89, +5, +189, +85, +162, +205, +2, +158, +31, +120, +141, +86, +19, +121, +140, +10, +128, +198, +233, +170, +104, +25, +157, +72, +219, +90, +84, +42, +128, +60, +253, +170, +92, +153, +208, +192, +191, +194, +233, +195, +103, +171, +232, +218, +66, +251, +112, +139, +167, +252, +12, +60, +251, +98, +58, +172, +144, +144, +192, +174, +243, +129, +61, +99, +222, +195, +184, +5, +18, +204, +16, +224, +6, +106, +164, +59, +146, +4, +19, +100, +73, +61, +96, +176, +80, +209, +174, +15, +1, +16, +253, +60, +191, +47, +208, +45, +58, +81, +168, +0, +104, +180, +50, +161, +129, +127, +133, +211, +135, +94, +146, +175, +146, +7, +134, +117, +21, +196, +47, +71, +156, +144, +188, +71, +210, +180, +88, +33, +1, +223, +70, +20, +140, +111, +9, +236, +215, +146, +218, +230, +38, +196, +232, +237, +33, +42, +182, +122, +228, +130, +125, +131, +50, +154, +49, +7, +242, +176, +87, +219, +212, +208, +109, +133, +44, +155, +230, +1, +219, +53, +188, +70, +91, +1, +48, +225, +207, +243, +27, +8, +128, +54, +43, +147, +32, +255, +138, +170, +247, +87, +66, +223, +232, +11, +13, +172, +135, +248, +22, +44, +2, +206, +5, +206, +68, +4, +218, +163, +192, +179, +107, +174, +85, +251, +124, +116, +34, +255, +82, +39, +114, +208, +170, +85, +219, +125, +67, +121, +47, +66, +244, +70, +183, +0, +191, +175, +160, +183, +31, +211, +198, +201, +68, +201, +243, +100, +222, +83, +65, +211, +40, +194, +117, +232, +133, +237, +36, +27, +80, +230, +20, +232, +78, +87, +186, +111, +182, +184, +70, +233, +0, +98, +140, +156, +231, +59, +125, +44, +53, +89, +174, +24, +212, +79, +33, +70, +95, +74, +174, +217, +203, +25, +48, +1, +254, +21, +85, +239, +175, +162, +77, +163, +47, +52, +34, +4, +78, +35, +215, +145, +156, +74, +128, +89, +122, +200, +243, +65, +182, +18, +51, +129, +111, +34, +251, +127, +247, +95, +105, +106, +58, +242, +120, +153, +95, +112, +202, +202, +66, +174, +175, +134, +156, +70, +52, +122, +78, +78, +251, +255, +105, +91, +111, +162, +91, +90, +68, +184, +142, +10, +231, +230, +26, +101, +12, +210, +182, +165, +3, +136, +49, +114, +158, +239, +244, +177, +106, +9, +105, +17, +124, +30, +75, +0, +2, +251, +53, +106, +198, +59, +85, +239, +175, +65, +219, +190, +4, +88, +45, +255, +154, +199, +255, +137, +138, +118, +214, +205, +183, +46, +148, +252, +81, +228, +113, +1, +138, +152, +26, +112, +15, +171, +146, +155, +226, +15, +196, +23, +164, +131, +14, +201, +69, +87, +103, +28, +59, +1, +163, +90, +9, +214, +224, +96, +99, +204, +91, +141, +49, +47, +55, +198, +220, +13, +220, +108, +140, +89, +195, +24, +179, +158, +49, +230, +219, +198, +152, +47, +27, +99, +158, +214, +150, +57, +34, +205, +247, +51, +198, +236, +229, +20, +79, +7, +238, +50, +198, +252, +57, +203, +178, +50, +251, +253, +221, +179, +44, +187, +174, +225, +229, +174, +51, +198, +244, +226, +55, +161, +247, +49, +191, +164, +250, +229, +89, +150, +85, +234, +25, +22, +119, +100, +89, +214, +56, +225, +12, +146, +164, +198, +158, +134, +205, +171, +33, +127, +194, +24, +115, +184, +49, +102, +127, +253, +253, +75, +45, +51, +198, +152, +233, +1, +151, +219, +198, +24, +147, +25, +99, +174, +206, +178, +204, +103, +202, +252, +87, +173, +223, +42, +203, +178, +73, +218, +191, +173, +141, +49, +167, +107, +93, +187, +163, +97, +100, +95, +52, +27, +56, +60, +128, +246, +30, +149, +80, +3, +38, +187, +1, +109, +75, +191, +32, +140, +210, +121, +190, +182, +63, +217, +233, +219, +44, +196, +168, +228, +94, +253, +253, +231, +138, +251, +8, +254, +154, +181, +105, +211, +166, +61, +13, +150, +220, +52, +223, +163, +151, +190, +191, +88, +253, +111, +139, +62, +248, +35, +123, +255, +219, +125, +15, +39, +176, +47, +141, +158, +19, +98, +57, +8, +145, +34, +8, +53, +185, +176, +117, +65, +172, +61, +107, +69, +156, +127, +64, +38, +224, +250, +78, +249, +166, +136, +107, +240, +238, +189, +118, +54, +50, +144, +100, +36, +22, +135, +224, +164, +196, +2, +214, +199, +227, +206, +217, +102, +176, +117, +29, +160, +77, +219, +135, +210, +211, +76, +96, +180, +26, +216, +109, +250, +63, +22, +248, +3, +63, +208, +127, +22, +71, +217, +178, +192, +190, +52, +21, +0, +183, +234, +191, +202, +208, +120, +209, +65, +179, +21, +192, +218, +136, +253, +183, +197, +253, +228, +81, +97, +64, +189, +253, +198, +11, +200, +163, +231, +94, +220, +160, +77, +227, +193, +214, +117, +128, +54, +109, +223, +7, +253, +48, +5, +0, +13, +61, +251, +186, +62, +223, +64, +222, +161, +167, +31, +173, +159, +83, +95, +125, +114, +177, +68, +177, +32, +203, +178, +189, +179, +44, +123, +122, +150, +101, +159, +169, +107, +156, +101, +217, +84, +35, +123, +141, +195, +141, +49, +83, +140, +236, +197, +151, +48, +198, +92, +108, +140, +249, +156, +49, +102, +219, +166, +29, +26, +101, +88, +101, +75, +173, +9, +239, +68, +71, +150, +227, +182, +33, +92, +238, +0, +99, +204, +242, +198, +152, +169, +198, +152, +104, +65, +84, +18, +186, +43, +1, +77, +150, +101, +15, +25, +99, +62, +171, +255, +198, +59, +236, +17, +211, +141, +45, +218, +94, +75, +201, +118, +176, +141, +194, +41, +65, +128, +216, +34, +124, +220, +136, +2, +109, +199, +44, +203, +238, +26, +229, +46, +45, +86, +24, +90, +72, +174, +50, +32, +249, +6, +239, +48, +34, +225, +175, +204, +178, +204, +119, +228, +81, +171, +212, +43, +78, +178, +54, +109, +140, +49, +118, +207, +239, +77, +131, +94, +131, +54, +26, +253, +36, +52, +234, +241, +27, +99, +204, +195, +198, +152, +183, +182, +56, +101, +73, +168, +193, +168, +11, +0, +211, +108, +121, +215, +102, +146, +53, +105, +51, +199, +136, +16, +88, +174, +142, +208, +131, +49, +117, +12, +184, +184, +32, +203, +178, +168, +193, +52, +19, +2, +129, +132, +8, +251, +15, +240, +120, +143, +215, +168, +13, +220, +160, +116, +67, +81, +180, +33, +102, +179, +0, +123, +213, +83, +15, +183, +111, +218, +238, +29, +12, +106, +233, +63, +136, +115, +90, +17, +227, +122, +125, +42, +209, +198, +59, +255, +166, +10, +55, +52, +206, +4, +145, +82, +220, +199, +232, +147, +139, +1, +37, +160, +50, +220, +223, +24, +243, +43, +99, +204, +43, +141, +49, +247, +55, +232, +64, +211, +7, +110, +151, +119, +219, +141, +145, +229, +221, +213, +250, +119, +151, +74, +170, +81, +0, +98, +216, +115, +134, +49, +230, +11, +78, +241, +251, +141, +49, +39, +25, +99, +134, +103, +254, +153, +208, +20, +183, +234, +223, +49, +55, +166, +140, +41, +17, +0, +198, +152, +125, +245, +239, +39, +178, +44, +123, +97, +9, +77, +103, +100, +89, +182, +105, +150, +101, +107, +103, +89, +118, +117, +61, +245, +80, +96, +195, +65, +189, +17, +248, +46, +35, +227, +179, +173, +5, +188, +125, +148, +250, +101, +178, +44, +91, +144, +149, +99, +66, +91, +245, +89, +216, +21, +146, +83, +180, +127, +200, +10, +169, +103, +28, +235, +244, +229, +102, +196, +132, +189, +214, +20, +120, +84, +225, +124, +209, +155, +250, +246, +143, +153, +37, +93, +219, +62, +145, +59, +56, +129, +156, +61, +223, +64, +30, +154, +42, +74, +150, +214, +190, +159, +87, +215, +235, +141, +197, +247, +25, +192, +115, +40, +17, +147, +28, +158, +161, +91, +128, +12, +216, +95, +199, +209, +108, +196, +122, +213, +27, +50, +109, +88, +125, +114, +81, +167, +4, +12, +138, +239, +215, +4, +208, +74, +59, +63, +76, +236, +98, +140, +249, +146, +49, +102, +79, +99, +204, +250, +198, +24, +171, +132, +186, +195, +24, +83, +26, +213, +53, +161, +30, +192, +59, +140, +49, +110, +34, +213, +253, +129, +179, +140, +49, +167, +103, +89, +214, +41, +22, +95, +150, +101, +11, +140, +216, +198, +143, +41, +100, +89, +134, +17, +255, +149, +131, +71, +187, +47, +62, +140, +230, +41, +192, +176, +142, +205, +26, +181, +201, +178, +108, +190, +49, +230, +123, +198, +152, +239, +57, +194, +106, +165, +44, +203, +234, +28, +56, +142, +163, +36, +33, +74, +150, +101, +91, +213, +180, +93, +236, +65, +174, +195, +112, +241, +126, +253, +247, +114, +99, +76, +218, +198, +140, +2, +70, +83, +0, +12, +235, +216, +44, +198, +81, +91, +101, +108, +63, +69, +155, +229, +236, +132, +17, +26, +99, +245, +11, +221, +20, +139, +155, +125, +198, +128, +0, +96, +100, +18, +133, +97, +186, +249, +134, +160, +141, +208, +104, +211, +198, +24, +19, +246, +178, +59, +14, +136, +94, +117, +0, +125, +46, +185, +19, +22, +51, +0, +203, +3, +47, +3, +254, +165, +10, +133, +191, +53, +104, +27, +172, +212, +25, +150, +210, +172, +111, +69, +214, +88, +71, +27, +165, +24, +45, +237, +12, +198, +2, +144, +0, +26, +199, +106, +191, +79, +243, +212, +15, +96, +52, +250, +233, +244, +103, +105, +228, +68, +224, +78, +26, +4, +240, +232, +179, +67, +22, +55, +2, +95, +1, +130, +131, +106, +36, +1, +48, +254, +209, +70, +96, +140, +21, +0, +239, +69, +162, +83, +221, +133, +68, +225, +169, +18, +0, +87, +17, +51, +115, +78, +75, +0, +27, +58, +125, +26, +181, +227, +101, +215, +14, +224, +127, +70, +246, +202, +235, +25, +99, +94, +104, +196, +60, +55, +97, +130, +160, +15, +59, +3, +224, +37, +200, +209, +151, +215, +156, +151, +6, +97, +200, +107, +176, +185, +49, +230, +95, +198, +152, +16, +107, +187, +247, +103, +89, +182, +149, +79, +199, +226, +147, +124, +109, +251, +76, +189, +11, +243, +221, +198, +152, +43, +141, +49, +119, +26, +99, +46, +15, +232, +119, +255, +0, +86, +68, +242, +145, +1, +252, +179, +65, +187, +224, +175, +109, +197, +87, +166, +234, +161, +7, +243, +239, +210, +70, +219, +5, +199, +210, +71, +76, +152, +255, +3, +236, +209, +228, +26, +19, +5, +192, +31, +144, +184, +118, +231, +251, +132, +0, +13, +194, +144, +55, +184, +38, +84, +175, +0, +74, +207, +202, +201, +227, +56, +218, +73, +238, +27, +139, +65, +125, +166, +38, +57, +233, +152, +5, +176, +142, +243, +176, +86, +10, +108, +19, +60, +217, +28, +218, +54, +65, +52, +135, +33, +0, +130, +99, +233, +147, +39, +79, +1, +248, +98, +13, +223, +37, +144, +40, +67, +143, +35, +65, +83, +14, +68, +98, +204, +21, +233, +62, +15, +92, +134, +132, +230, +126, +20, +248, +59, +240, +188, +38, +247, +48, +86, +128, +100, +198, +61, +205, +190, +239, +18, +154, +160, +48, +228, +13, +174, +9, +45, +5, +128, +67, +91, +23, +146, +174, +178, +207, +4, +250, +184, +116, +5, +18, +54, +124, +54, +240, +75, +79, +221, +47, +144, +237, +208, +79, +219, +48, +182, +216, +176, +33, +125, +223, +58, +128, +94, +133, +134, +182, +107, +20, +75, +31, +201, +42, +3, +240, +64, +13, +223, +47, +34, +81, +139, +191, +160, +255, +230, +227, +137, +62, +139, +164, +146, +62, +20, +120, +63, +176, +59, +146, +120, +226, +162, +10, +190, +149, +202, +36, +74, +80, +255, +36, +226, +1, +73, +45, +87, +26, +98, +142, +128, +48, +228, +13, +174, +5, +61, +11, +128, +186, +62, +19, +144, +156, +180, +105, +159, +74, +218, +219, +240, +125, +3, +238, +235, +78, +221, +147, +109, +24, +55, +234, +88, +147, +201, +214, +132, +214, +211, +166, +20, +49, +174, +211, +6, +192, +243, +235, +6, +139, +210, +93, +11, +252, +213, +249, +253, +87, +60, +166, +197, +158, +118, +135, +81, +145, +177, +150, +26, +101, +18, +178, +162, +25, +248, +231, +161, +179, +193, +80, +127, +94, +211, +159, +208, +231, +191, +51, +178, +2, +56, +64, +175, +57, +20, +43, +74, +237, +78, +239, +2, +32, +6, +154, +244, +169, +164, +253, +145, +200, +10, +224, +23, +158, +58, +187, +58, +56, +178, +247, +142, +53, +153, +108, +195, +154, +152, +195, +66, +232, +96, +65, +210, +79, +29, +230, +252, +62, +12, +24, +176, +179, +64, +146, +178, +254, +12, +177, +29, +159, +129, +198, +134, +175, +224, +107, +87, +0, +141, +226, +193, +123, +248, +172, +6, +220, +167, +183, +242, +158, +10, +186, +80, +129, +50, +3, +89, +229, +76, +209, +251, +25, +138, +82, +121, +34, +9, +128, +24, +24, +11, +1, +65, +38, +10, +22, +153, +145, +150, +112, +101, +158, +152, +191, +49, +18, +19, +254, +48, +99, +204, +100, +99, +204, +206, +250, +207, +11, +53, +93, +30, +136, +162, +212, +20, +89, +150, +61, +134, +164, +150, +250, +147, +49, +230, +112, +224, +239, +89, +150, +13, +88, +41, +102, +89, +22, +116, +60, +156, +101, +217, +10, +93, +251, +52, +150, +225, +8, +135, +141, +139, +113, +17, +171, +234, +198, +26, +202, +6, +161, +117, +2, +170, +76, +13, +150, +208, +8, +183, +24, +99, +54, +113, +126, +63, +207, +228, +190, +226, +46, +182, +54, +198, +28, +159, +101, +217, +215, +178, +44, +251, +189, +49, +102, +152, +97, +161, +207, +48, +198, +220, +100, +140, +89, +219, +24, +19, +39, +207, +92, +194, +168, +0, +248, +152, +174, +46, +94, +92, +69, +87, +38, +0, +172, +212, +122, +83, +192, +133, +92, +30, +115, +3, +251, +183, +56, +225, +169, +136, +73, +192, +186, +21, +116, +71, +27, +99, +182, +3, +246, +3, +246, +51, +198, +108, +103, +114, +95, +113, +23, +119, +24, +99, +182, +69, +148, +128, +223, +51, +198, +188, +173, +174, +3, +177, +150, +146, +234, +185, +102, +253, +233, +247, +41, +188, +219, +113, +1, +181, +91, +40, +221, +194, +76, +32, +172, +84, +248, +27, +14, +196, +178, +202, +226, +250, +26, +218, +245, +148, +110, +33, +1, +199, +134, +14, +223, +96, +141, +126, +0, +207, +159, +43, +207, +63, +4, +208, +238, +66, +158, +179, +109, +149, +166, +215, +42, +225, +121, +182, +242, +59, +23, +209, +14, +15, +152, +206, +34, +126, +225, +223, +36, +63, +6, +252, +14, +254, +99, +192, +215, +144, +251, +142, +159, +13, +236, +90, +183, +23, +141, +185, +151, +68, +108, +65, +108, +142, +197, +215, +117, +229, +55, +86, +208, +228, +25, +17, +118, +10, +80, +202, +47, +244, +90, +49, +223, +155, +135, +247, +55, +149, +119, +80, +218, +115, +31, +131, +119, +2, +23, +227, +81, +84, +57, +52, +75, +3, +39, +233, +133, +74, +143, +170, +10, +109, +106, +209, +176, +159, +59, +107, +179, +251, +129, +213, +43, +232, +50, +68, +35, +237, +34, +150, +0, +120, +58, +98, +62, +125, +99, +155, +123, +136, +112, +253, +168, +3, +9, +248, +183, +242, +59, +48, +6, +191, +177, +128, +38, +207, +136, +197, +67, +0, +28, +162, +188, +223, +87, +69, +87, +170, +4, +204, +178, +236, +12, +51, +232, +191, +109, +153, +223, +103, +140, +185, +215, +136, +217, +240, +218, +70, +162, +233, +238, +23, +210, +177, +152, +238, +148, +72, +250, +114, +155, +193, +232, +179, +89, +150, +61, +90, +66, +183, +188, +145, +96, +30, +239, +50, +18, +247, +111, +99, +211, +102, +105, +84, +142, +21, +140, +49, +47, +50, +242, +60, +102, +26, +89, +198, +143, +103, +156, +103, +140, +121, +181, +49, +166, +242, +28, +59, +97, +76, +35, +104, +11, +208, +118, +143, +55, +199, +136, +221, +245, +211, +140, +49, +103, +25, +99, +94, +155, +249, +51, +152, +246, +141, +221, +141, +49, +207, +52, +198, +220, +108, +140, +249, +99, +5, +221, +95, +140, +76, +254, +11, +141, +236, +189, +99, +251, +116, +159, +98, +140, +249, +128, +17, +13, +250, +218, +89, +150, +85, +42, +94, +198, +1, +172, +0, +171, +210, +105, +36, +140, +50, +144, +179, +126, +128, +123, +60, +213, +43, +234, +223, +74, +1, +208, +234, +24, +48, +203, +178, +32, +11, +193, +62, +129, +36, +77, +180, +230, +183, +135, +168, +2, +171, +12, +63, +54, +198, +220, +99, +140, +249, +120, +150, +101, +243, +104, +224, +233, +24, +208, +143, +149, +141, +49, +175, +215, +159, +95, +201, +178, +172, +77, +82, +145, +177, +134, +135, +244, +239, +26, +163, +218, +139, +132, +58, +188, +74, +255, +254, +213, +83, +103, +39, +254, +138, +158, +186, +167, +48, +158, +237, +0, +94, +105, +140, +217, +192, +200, +145, +165, +215, +76, +215, +34, +203, +178, +179, +140, +172, +84, +44, +150, +46, +163, +109, +129, +167, +38, +73, +150, +101, +247, +70, +228, +59, +154, +120, +68, +255, +174, +54, +170, +189, +72, +40, +5, +176, +170, +17, +175, +93, +99, +140, +249, +181, +135, +164, +217, +22, +0, +152, +171, +203, +137, +168, +174, +137, +52, +243, +174, +219, +20, +201, +208, +123, +175, +246, +103, +10, +146, +173, +216, +103, +225, +182, +173, +254, +189, +34, +32, +94, +95, +159, +88, +172, +66, +68, +41, +150, +209, +191, +211, +70, +181, +23, +9, +85, +216, +198, +200, +216, +187, +186, +100, +251, +221, +120, +11, +48, +221, +24, +179, +186, +137, +255, +210, +223, +102, +140, +89, +214, +136, +146, +236, +82, +35, +82, +235, +185, +70, +246, +238, +69, +28, +98, +196, +16, +230, +116, +35, +6, +41, +27, +26, +73, +12, +185, +145, +49, +230, +141, +5, +218, +109, +244, +239, +121, +145, +251, +155, +144, +191, +155, +135, +71, +181, +23, +139, +57, +58, +42, +196, +223, +160, +127, +15, +45, +169, +111, +188, +5, +152, +102, +74, +4, +0, +226, +110, +248, +97, +99, +204, +113, +89, +150, +237, +19, +90, +167, +56, +203, +72, +236, +187, +201, +250, +123, +178, +145, +32, +8, +87, +122, +104, +63, +100, +228, +185, +60, +117, +244, +8, +60, +215, +248, +77, +93, +173, +143, +245, +120, +215, +184, +143, +69, +88, +247, +227, +74, +15, +199, +113, +138, +147, +81, +223, +133, +113, +30, +120, +117, +71, +35, +6, +123, +167, +150, +212, +55, +51, +4, +2, +174, +211, +45, +192, +241, +158, +186, +16, +183, +195, +168, +202, +47, +224, +105, +192, +235, +17, +191, +235, +223, +122, +234, +109, +178, +142, +183, +182, +224, +109, +209, +217, +14, +0, +216, +76, +121, +205, +235, +202, +171, +67, +31, +162, +158, +39, +3, +103, +41, +191, +178, +175, +203, +184, +3, +30, +84, +208, +14, +197, +14, +160, +79, +56, +91, +250, +202, +36, +36, +197, +45, +128, +49, +254, +45, +192, +137, +70, +190, +242, +191, +241, +212, +157, +96, +140, +249, +168, +254, +141, +130, +194, +131, +63, +215, +24, +227, +139, +184, +99, +39, +175, +247, +236, +127, +136, +216, +65, +255, +250, +236, +250, +199, +29, +144, +19, +146, +109, +245, +231, +57, +163, +216, +149, +168, +8, +89, +110, +147, +91, +161, +214, +158, +18, +85, +241, +27, +11, +161, +195, +179, +44, +91, +182, +158, +202, +1, +226, +159, +14, +61, +89, +127, +53, +145, +138, +192, +14, +136, +133, +223, +17, +218, +230, +32, +15, +205, +227, +90, +183, +181, +143, +71, +96, +95, +58, +173, +0, +16, +147, +93, +139, +82, +143, +189, +190, +17, +243, +139, +131, +248, +32, +128, +132, +189, +90, +166, +190, +197, +226, +131, +38, +171, +132, +197, +14, +72, +8, +104, +144, +204, +192, +125, +240, +111, +53, +72, +129, +11, +241, +68, +147, +1, +110, +85, +126, +141, +179, +174, +70, +20, +0, +143, +33, +230, +210, +239, +236, +194, +167, +43, +34, +11, +128, +75, +149, +215, +119, +99, +244, +45, +97, +108, +35, +116, +11, +48, +20, +0, +171, +100, +89, +246, +132, +243, +123, +73, +99, +204, +51, +140, +63, +71, +225, +253, +70, +78, +7, +188, +17, +103, +135, +129, +44, +203, +22, +171, +115, +114, +196, +113, +228, +53, +70, +18, +194, +44, +54, +251, +255, +132, +114, +184, +166, +192, +211, +10, +127, +71, +3, +83, +129, +51, +144, +212, +220, +95, +55, +198, +92, +96, +100, +130, +255, +202, +67, +107, +247, +107, +111, +240, +212, +77, +24, +48, +210, +243, +176, +52, +238, +94, +0, +159, +149, +141, +49, +71, +233, +207, +207, +186, +130, +56, +97, +2, +128, +220, +125, +176, +151, +36, +5, +33, +203, +84, +224, +32, +196, +163, +110, +38, +18, +106, +106, +50, +18, +76, +115, +32, +40, +6, +240, +70, +229, +55, +151, +134, +153, +107, +98, +109, +1, +198, +2, +128, +183, +235, +189, +60, +94, +79, +93, +201, +199, +134, +131, +111, +30, +67, +46, +97, +252, +3, +216, +87, +7, +192, +182, +61, +241, +143, +182, +79, +85, +126, +203, +34, +145, +87, +1, +118, +107, +217, +151, +113, +43, +0, +128, +187, +145, +248, +245, +243, +244, +94, +14, +24, +237, +62, +37, +140, +99, +144, +135, +16, +10, +201, +174, +210, +134, +127, +84, +1, +160, +60, +247, +87, +158, +147, +98, +241, +28, +47, +64, +148, +160, +243, +144, +64, +158, +95, +247, +173, +146, +18, +18, +198, +12, +122, +18, +0, +43, +34, +201, +51, +0, +106, +67, +103, +37, +36, +36, +140, +18, +250, +16, +0, +202, +247, +67, +202, +247, +238, +241, +188, +164, +79, +72, +24, +85, +32, +94, +119, +179, +129, +195, +235, +169, +91, +241, +15, +22, +0, +84, +164, +60, +42, +161, +63, +82, +121, +255, +174, +123, +79, +19, +18, +38, +32, +200, +109, +250, +123, +57, +254, +105, +40, +0, +122, +241, +47, +72, +72, +72, +24, +9, +215, +14, +224, +68, +35, +161, +190, +134, +146, +194, +169, +6, +39, +24, +233, +75, +52, +255, +130, +132, +132, +132, +81, +68, +95, +58, +128, +132, +132, +132, +132, +132, +132, +132, +137, +0, +93, +69, +148, +165, +3, +111, +156, +84, +36, +33, +97, +34, +99, +220, +165, +126, +74, +72, +72, +136, +135, +36, +0, +18, +18, +38, +48, +122, +21, +0, +85, +138, +63, +231, +168, +111, +251, +62, +251, +144, +144, +144, +80, +142, +209, +92, +1, +60, +92, +248, +155, +144, +144, +48, +100, +140, +5, +1, +240, +72, +177, +194, +177, +74, +60, +98, +200, +125, +74, +72, +152, +80, +24, +77, +1, +96, +39, +190, +111, +5, +176, +155, +145, +192, +140, +31, +30, +94, +119, +18, +18, +38, +30, +70, +123, +5, +48, +61, +203, +178, +185, +158, +58, +107, +149, +232, +139, +66, +156, +144, +144, +16, +9, +163, +153, +27, +240, +97, +227, +89, +254, +27, +99, +76, +150, +101, +123, +27, +99, +246, +30, +110, +119, +18, +18, +18, +162, +98, +152, +230, +191, +201, +16, +40, +33, +161, +57, +146, +29, +64, +66, +194, +4, +70, +18, +0, +9, +9, +19, +24, +73, +0, +36, +36, +76, +96, +36, +1, +144, +144, +48, +129, +145, +4, +64, +66, +194, +4, +198, +184, +19, +0, +73, +219, +159, +144, +16, +15, +227, +78, +0, +36, +36, +36, +196, +67, +18, +0, +9, +9, +19, +24, +73, +0, +36, +36, +76, +96, +36, +1, +144, +144, +48, +117, +14, +169, +49, +0, +0, +2, +74, +73, +68, +65, +84, +129, +145, +4, +64, +66, +194, +4, +70, +175, +206, +64, +89, +150, +101, +125, +242, +79, +72, +72, +232, +134, +180, +2, +72, +72, +152, +192, +72, +2, +32, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +33, +225, +255, +219, +131, +3, +2, +0, +0, +0, +0, +33, +253, +95, +221, +17, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +0, +208, +17, +112, +180, +144, +16, +164, +2, +78, +0, +0, +0, +0, +73, +69, +78, +68, +174, +66, +96, +130, +}; diff --git a/scene/resources/default_theme/font_large.inc b/scene/resources/default_theme/font_large.inc deleted file mode 100644 index e44d60d736..0000000000 --- a/scene/resources/default_theme/font_large.inc +++ /dev/null @@ -1,65741 +0,0 @@ -static const int _builtin_large_font_height=16; -static const int _builtin_large_font_ascent=13; -static const int _builtin_large_font_charcount=191; -static const int _builtin_large_font_charrects[191][8]={ -/* charidx , ofs_x, ofs_y, size_x, size_y, valign, halign, advance */ -{224,122,104,8,11,2,0,8}, -{192,173,2,10,14,-1,0,10}, -{64,38,17,13,13,3,0,13}, -{96,138,131,4,2,2,0,5}, -{160,0,0,0,0,13,0,4}, -{32,0,0,0,0,13,0,4}, -{33,8,126,2,11,2,1,4}, -{225,110,95,8,11,2,0,8}, -{161,251,122,2,11,5,1,4}, -{193,159,2,10,14,-1,0,10}, -{65,72,29,10,11,2,0,10}, -{97,218,79,8,8,5,0,8}, -{98,14,63,8,11,2,0,9}, -{66,26,68,8,11,2,1,10}, -{226,98,95,8,11,2,0,8}, -{194,145,2,10,14,-1,0,10}, -{162,14,78,8,12,3,0,8}, -{34,21,128,5,4,2,0,5}, -{35,158,38,9,11,2,0,9}, -{67,67,47,9,11,2,0,10}, -{163,198,34,9,11,2,0,9}, -{195,2,17,10,15,-2,0,10}, -{227,26,83,8,12,1,0,8}, -{99,230,76,8,8,5,0,8}, -{100,245,47,8,11,2,0,9}, -{68,145,53,9,11,2,1,10}, -{228,86,93,8,11,2,0,8}, -{36,26,99,8,15,0,0,9}, -{196,131,17,10,14,-1,0,10}, -{164,44,34,10,11,3,0,11}, -{37,87,17,11,11,2,0,11}, -{69,2,51,8,11,2,1,9}, -{197,16,29,10,15,-2,0,10}, -{229,38,83,8,12,1,0,8}, -{165,211,34,9,11,2,0,9}, -{101,242,77,8,8,5,0,8}, -{38,201,2,10,11,2,0,10}, -{70,2,66,8,11,2,1,9}, -{198,2,2,15,11,2,-1,14}, -{166,239,114,2,13,2,1,4}, -{102,206,103,6,12,1,0,5}, -{230,55,2,13,8,5,0,13}, -{71,229,17,10,11,2,0,10}, -{103,197,50,8,11,5,0,9}, -{199,80,50,9,15,2,0,10}, -{167,132,53,9,14,2,0,9}, -{231,50,83,8,12,5,0,8}, -{39,193,128,3,4,2,0,3}, -{72,41,53,9,11,2,1,11}, -{104,209,49,8,11,2,0,9}, -{232,74,95,8,11,2,0,8}, -{40,120,134,5,15,1,0,5}, -{200,158,68,8,14,-1,1,9}, -{168,12,112,6,2,2,1,8}, -{73,207,119,3,11,2,1,4}, -{233,62,96,8,11,2,0,8}, -{41,129,134,5,15,1,0,5}, -{201,170,68,8,14,-1,1,9}, -{105,245,122,2,12,1,1,4}, -{169,71,14,12,11,2,0,12}, -{234,50,99,8,11,2,0,8}, -{106,170,128,4,15,1,-1,4}, -{202,182,80,8,14,-1,1,9}, -{42,2,93,7,8,2,0,7}, -{170,216,106,6,6,2,0,7}, -{74,242,62,8,11,2,0,8}, -{171,57,114,7,7,5,0,7}, -{43,230,64,8,8,4,0,8}, -{203,194,80,8,14,-1,1,9}, -{235,38,99,8,11,2,0,8}, -{107,221,49,8,11,2,0,8}, -{75,171,38,9,11,2,1,10}, -{44,200,123,3,4,11,0,3}, -{172,206,80,8,4,7,0,8}, -{204,111,134,5,14,-1,-1,4}, -{236,178,128,4,11,2,-1,4}, -{108,2,123,2,11,2,1,4}, -{76,112,119,7,11,2,1,8}, -{173,39,129,5,2,8,0,5}, -{45,30,128,5,2,8,0,5}, -{109,21,17,13,8,5,0,13}, -{205,93,126,5,14,-1,0,4}, -{237,102,120,5,11,2,0,4}, -{77,87,2,11,11,2,1,13}, -{46,221,122,2,2,11,1,4}, -{110,86,69,8,8,5,0,9}, -{174,55,14,12,11,2,0,12}, -{206,2,105,6,14,-1,0,4}, -{238,186,113,6,11,2,-1,4}, -{78,184,50,9,11,2,1,11}, -{175,35,118,7,2,1,0,7}, -{111,62,68,8,8,5,0,9}, -{47,226,106,6,12,2,0,6}, -{207,246,104,6,14,-1,-1,4}, -{239,176,113,6,11,2,-1,4}, -{79,229,2,10,11,2,0,10}, -{176,12,118,5,4,2,0,6}, -{208,187,17,10,11,2,0,10}, -{240,106,50,9,11,2,0,9}, -{80,28,53,9,11,2,1,10}, -{48,206,65,8,11,2,0,9}, -{112,182,65,8,11,5,0,9}, -{177,98,65,8,10,3,0,8}, -{241,98,79,8,12,1,0,9}, -{81,215,2,10,13,2,0,10}, -{209,54,49,9,15,-2,1,11}, -{113,194,65,8,11,5,0,9}, -{49,75,129,5,11,2,1,9}, -{178,196,113,6,6,2,0,6}, -{114,156,110,6,8,5,0,5}, -{50,170,53,8,11,2,0,9}, -{210,58,29,10,14,-1,0,10}, -{242,170,86,8,11,2,0,9}, -{82,15,48,9,11,2,1,10}, -{179,166,101,6,7,2,0,6}, -{115,14,94,8,8,5,0,8}, -{51,158,53,8,11,2,0,9}, -{211,184,32,10,14,-1,0,10}, -{243,182,98,8,11,2,0,9}, -{83,2,36,9,11,2,0,9}, -{180,48,129,5,2,2,0,5}, -{116,66,129,5,10,3,0,5}, -{52,119,53,9,11,2,0,9}, -{212,170,20,10,14,-1,0,10}, -{244,194,98,8,11,2,0,9}, -{84,224,32,9,11,2,0,9}, -{85,187,2,10,11,2,0,10}, -{213,30,34,10,15,-2,0,10}, -{245,62,80,8,12,1,0,9}, -{117,2,81,8,8,5,0,9}, -{53,110,68,8,11,2,0,9}, -{181,123,119,7,11,5,1,9}, -{86,117,2,10,11,2,0,10}, -{246,206,88,8,11,2,0,9}, -{214,156,20,10,14,-1,0,10}, -{182,134,116,7,11,2,0,8}, -{54,93,50,9,11,2,0,9}, -{118,146,83,8,8,5,0,8}, -{87,21,2,13,11,2,0,13}, -{55,122,71,8,11,2,0,9}, -{247,134,104,8,8,4,0,9}, -{119,102,2,11,8,5,0,11}, -{215,233,47,8,7,4,0,8}, -{183,227,122,2,2,7,1,4}, -{88,243,17,10,11,2,0,10}, -{216,201,17,10,13,1,0,10}, -{56,134,71,8,11,2,0,9}, -{248,74,69,8,10,4,0,9}, -{120,110,83,8,8,5,0,8}, -{184,146,128,4,4,13,0,4}, -{121,218,64,8,11,5,0,8}, -{89,243,2,10,11,2,0,9}, -{249,50,68,8,11,2,0,9}, -{217,142,35,10,14,-1,0,10}, -{57,146,68,8,11,2,0,9}, -{185,186,128,3,6,2,0,4}, -{90,237,32,9,11,2,0,9}, -{250,38,68,8,11,2,0,9}, -{218,128,35,10,14,-1,0,10}, -{58,14,126,2,8,5,1,4}, -{122,86,81,8,8,5,0,8}, -{186,236,104,6,6,2,0,7}, -{123,57,125,5,15,1,0,5}, -{219,114,29,10,14,-1,0,10}, -{91,154,128,4,14,1,0,4}, -{251,218,91,8,11,2,0,9}, -{59,214,119,3,10,5,0,4}, -{187,79,110,7,7,5,0,7}, -{220,100,32,10,14,-1,0,10}, -{124,233,122,2,13,2,1,4}, -{92,90,110,7,12,2,0,6}, -{252,230,88,8,11,2,0,9}, -{188,131,2,10,11,2,1,11}, -{60,145,116,7,8,5,0,8}, -{125,84,126,5,15,1,0,5}, -{221,86,32,10,14,-1,0,9}, -{93,162,122,4,14,1,0,4}, -{253,122,86,8,14,2,0,8}, -{189,102,14,11,11,2,1,12}, -{61,24,118,7,6,5,1,9}, -{222,158,86,8,11,2,1,9}, -{254,68,111,7,14,2,1,9}, -{190,38,2,13,11,2,0,13}, -{62,74,83,8,8,5,0,8}, -{94,101,110,7,6,2,0,6}, -{126,117,17,10,4,7,0,10}, -{223,146,95,8,11,2,1,9}, -{255,134,86,8,14,2,0,8}, -{191,242,89,8,11,5,0,8}, -{63,46,114,7,11,2,0,7}, -{95,13,106,7,2,13,0,7}, -}; -static const int _builtin_large_font_kerning_pair_count=0; -static const int _builtin_large_font_kerning_pairs[1][3]={ -{0,0,0} -}; -static const int _builtin_large_font_img_width=256; -static const int _builtin_large_font_img_height=256; -static const unsigned char _builtin_large_font_img_data[131072]={ -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -255,151, -255,255, -255,36, -0,0, -0,0, -255,58, -255,255, -255,110, -0,0, -0,0, -0,0, -255,239, -255,202, -0,0, -0,0, -0,0, -0,0, -0,0, -255,134, -255,237, -255,244, -255,177, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,181, -255,238, -255,236, -255,175, -255,61, -255,173, -255,236, -255,231, -255,161, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,163, -0,0, -0,0, -0,0, -0,0, -0,0, -255,131, -255,255, -255,248, -0,0, -0,0, -0,0, -0,0, -255,153, -255,255, -255,21, -0,0, -255,50, -255,255, -255,93, -0,0, -0,0, -255,232, -255,197, -0,0, -0,0, -0,0, -0,0, -255,184, -255,255, -255,37, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,59, -0,0, -0,0, -0,0, -0,0, -255,77, -255,227, -255,238, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,243, -255,150, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,229, -255,186, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,212, -255,208, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,131, -255,230, -255,241, -255,170, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,49, -255,181, -255,242, -255,246, -255,196, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,49, -255,181, -255,242, -255,246, -255,196, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,255, -255,74, -0,0, -0,0, -0,0, -255,13, -255,241, -255,231, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,201, -255,203, -255,255, -255,196, -255,112, -255,112, -255,112, -255,112, -255,35, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,84, -0,0, -0,0, -255,119, -255,255, -255,171, -0,0, -0,0, -255,32, -255,255, -255,143, -0,0, -0,0, -0,0, -0,0, -255,14, -255,164, -255,80, -255,71, -255,255, -255,76, -0,0, -255,1, -255,180, -255,51, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,231, -255,246, -255,134, -255,133, -255,249, -255,255, -255,238, -255,129, -255,138, -255,248, -255,185, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,236, -255,241, -255,7, -0,0, -0,0, -0,0, -0,0, -255,217, -255,234, -255,248, -0,0, -0,0, -0,0, -0,0, -255,84, -255,255, -255,73, -0,0, -255,118, -255,249, -255,160, -0,0, -255,27, -255,255, -255,127, -0,0, -0,0, -0,0, -0,0, -255,96, -255,255, -255,112, -0,0, -0,0, -0,0, -255,2, -255,235, -255,225, -255,1, -0,0, -0,0, -0,0, -0,0, -255,24, -255,150, -255,248, -0,0, -0,0, -255,1, -255,180, -255,51, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,230, -255,60, -255,205, -255,172, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,193, -255,190, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,225, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,180, -255,132, -255,250, -255,153, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,246, -255,240, -255,149, -255,142, -255,226, -255,254, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,246, -255,240, -255,149, -255,142, -255,226, -255,254, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,252, -255,182, -0,0, -0,0, -0,0, -255,108, -255,255, -255,109, -0,0, -0,0, -0,0, -26,0, -0,0, -26,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,253, -255,73, -255,255, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,132, -0,0, -0,0, -255,180, -255,213, -255,232, -0,0, -0,0, -255,79, -255,255, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,255, -255,201, -255,3, -0,0, -255,100, -255,213, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,108, -255,79, -0,0, -0,0, -255,176, -255,255, -255,98, -0,0, -0,0, -255,158, -255,255, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,204, -255,213, -255,79, -0,0, -0,0, -0,0, -255,48, -255,237, -255,178, -255,248, -0,0, -0,0, -0,0, -0,0, -255,17, -255,253, -255,125, -0,0, -255,186, -255,147, -255,227, -0,0, -255,77, -255,255, -255,58, -0,0, -0,0, -0,0, -0,0, -255,15, -255,248, -255,188, -0,0, -0,0, -0,0, -255,56, -255,255, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,248, -0,0, -0,0, -255,100, -255,213, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,146, -255,255, -255,25, -0,0, -255,194, -255,191, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,210, -255,250, -255,44, -0,0, -0,0, -255,19, -255,227, -255,245, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -255,210, -255,250, -255,44, -0,0, -0,0, -255,19, -255,227, -255,245, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -255,158, -255,254, -255,37, -0,0, -255,1, -255,216, -255,226, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,223, -255,168, -255,25, -255,255, -255,166, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,231, -255,180, -0,0, -255,2, -255,239, -255,90, -255,254, -255,37, -0,0, -255,127, -255,255, -255,25, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,251, -255,89, -255,20, -255,236, -255,62, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,110, -255,213, -255,245, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,212, -255,129, -255,165, -0,0, -0,0, -0,0, -255,134, -255,158, -255,182, -255,248, -0,0, -0,0, -0,0, -0,0, -0,0, -255,201, -255,177, -255,7, -255,245, -255,28, -255,238, -255,39, -255,127, -255,240, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -255,175, -255,249, -255,13, -0,0, -0,0, -255,132, -255,255, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,248, -0,0, -255,20, -255,236, -255,62, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,227, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,227, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,227, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,255, -255,80, -255,71, -255,246, -255,87, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -255,119, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -255,119, -255,255, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -255,31, -255,249, -255,144, -0,0, -255,71, -255,255, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,118, -255,254, -255,45, -255,15, -255,255, -255,175, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,173, -255,229, -0,0, -255,46, -255,251, -255,12, -255,212, -255,99, -0,0, -255,174, -255,222, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,192, -255,74, -255,58, -255,251, -255,94, -255,159, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,188, -255,69, -255,56, -255,187, -255,255, -255,115, -255,64, -255,64, -255,64, -255,64, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,221, -255,45, -255,242, -255,8, -0,0, -0,0, -255,219, -255,74, -255,190, -255,248, -0,0, -0,0, -0,0, -0,0, -0,0, -255,131, -255,229, -255,66, -255,211, -0,0, -255,172, -255,107, -255,177, -255,175, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,87, -255,255, -255,83, -0,0, -0,0, -255,207, -255,217, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,248, -0,0, -255,159, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,240, -255,255, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,240, -255,255, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,240, -255,255, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,206, -255,241, -255,237, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,149, -255,240, -255,11, -255,181, -255,220, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,240, -255,177, -0,0, -255,6, -255,255, -255,255, -255,255, -255,255, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,114, -255,255, -255,21, -255,107, -255,202, -0,0, -255,149, -255,160, -0,0, -255,222, -255,163, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,143, -255,238, -255,241, -255,160, -255,67, -255,237, -255,21, -0,0, -255,1, -255,182, -255,255, -255,16, -0,0, -0,0, -0,0, -0,0, -255,148, -255,255, -255,52, -0,0, -0,0, -255,183, -255,255, -255,133, -0,0, -0,0, -0,0, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,229, -0,0, -255,216, -255,81, -0,0, -255,50, -255,239, -255,6, -255,198, -255,248, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,255, -255,159, -255,143, -0,0, -255,104, -255,174, -255,227, -255,105, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,244, -255,158, -0,0, -255,27, -255,255, -255,129, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,248, -255,61, -255,237, -255,21, -255,1, -255,182, -255,255, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,219, -255,144, -255,213, -255,153, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,219, -255,144, -255,213, -255,153, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,219, -255,144, -255,213, -255,153, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,248, -255,216, -255,235, -255,25, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -255,76, -255,255, -255,124, -0,0, -0,0, -0,0, -0,0, -255,64, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -255,76, -255,255, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,246, -255,141, -255,254, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,147, -255,255, -255,185, -255,148, -255,148, -255,255, -255,223, -255,112, -255,112, -255,112, -255,80, -0,0, -27,0, -0,0, -62,5, -0,0, -0,0, -255,56, -255,255, -255,69, -255,168, -255,140, -0,0, -255,86, -255,221, -255,14, -255,254, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,212, -255,102, -0,0, -0,0, -255,121, -255,246, -255,255, -255,16, -0,0, -0,0, -0,0, -0,0, -255,101, -255,255, -255,182, -255,100, -255,174, -255,255, -255,243, -255,252, -255,153, -255,114, -255,163, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,237, -0,0, -255,132, -255,167, -0,0, -255,136, -255,162, -0,0, -255,205, -255,248, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,243, -255,250, -255,74, -0,0, -255,35, -255,245, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,232, -255,1, -255,102, -255,255, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,212, -255,102, -0,0, -255,121, -255,246, -255,255, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,62, -255,132, -255,237, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,62, -255,132, -255,237, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,62, -255,132, -255,237, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,50, -255,253, -255,141, -255,24, -255,233, -255,185, -255,1, -255,152, -255,225, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,141, -255,255, -255,213, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,250, -255,255, -255,255, -255,255, -255,255, -255,255, -255,208, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,247, -255,117, -255,229, -255,77, -0,0, -255,24, -255,255, -255,87, -255,255, -255,45, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,118, -255,198, -255,1, -0,0, -255,62, -255,236, -255,119, -255,255, -255,16, -0,0, -0,0, -0,0, -0,0, -255,3, -255,142, -255,233, -255,247, -255,207, -255,94, -255,32, -255,170, -255,239, -255,249, -255,210, -255,111, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -255,48, -255,243, -255,9, -255,221, -255,78, -0,0, -255,208, -255,248, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,250, -255,11, -0,0, -0,0, -255,222, -255,222, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,78, -255,255, -255,53, -255,177, -255,209, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,118, -255,198, -255,1, -255,62, -255,236, -255,119, -255,255, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,233, -255,2, -255,51, -255,255, -255,77, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,233, -255,2, -255,51, -255,255, -255,77, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,233, -255,2, -255,51, -255,255, -255,77, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,253, -255,206, -0,0, -0,0, -0,0, -0,0, -255,143, -255,255, -255,61, -0,0, -0,0, -0,0, -0,0, -255,127, -255,255, -255,71, -0,0, -255,73, -255,254, -255,114, -255,219, -255,171, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -255,118, -255,255, -255,91, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -255,118, -255,255, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,255, -255,133, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,46, -0,0, -0,0, -0,0, -255,231, -255,219, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,195, -255,200, -255,253, -255,17, -0,0, -0,0, -255,217, -255,196, -255,240, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,241, -255,47, -0,0, -255,21, -255,229, -255,101, -255,98, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -255,219, -255,135, -255,242, -255,7, -0,0, -255,208, -255,248, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,239, -255,134, -255,244, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,241, -255,47, -255,21, -255,229, -255,101, -255,98, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,232, -255,154, -0,0, -0,0, -255,225, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,232, -255,154, -0,0, -0,0, -255,225, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,232, -255,154, -0,0, -0,0, -255,225, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,247, -255,29, -0,0, -0,0, -255,5, -255,212, -255,253, -255,22, -0,0, -0,0, -0,0, -0,0, -255,108, -255,255, -255,112, -0,0, -0,0, -255,146, -255,254, -255,249, -255,49, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,211, -255,250, -255,42, -0,0, -0,0, -255,16, -255,223, -255,244, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -255,211, -255,250, -255,42, -0,0, -0,0, -255,16, -255,223, -255,246, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,255, -255,186, -0,0, -0,0, -0,0, -0,0, -255,222, -255,240, -255,112, -255,112, -255,112, -255,112, -255,85, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,136, -255,255, -255,209, -0,0, -0,0, -0,0, -255,154, -255,255, -255,183, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,138, -0,0, -0,0, -255,101, -255,255, -255,255, -255,255, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -255,135, -255,252, -255,166, -0,0, -0,0, -255,208, -255,248, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,157, -255,238, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,138, -0,0, -255,101, -255,255, -255,255, -255,255, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,255, -255,171, -255,124, -255,124, -255,209, -255,245, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,255, -255,171, -255,124, -255,124, -255,209, -255,245, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,255, -255,171, -255,124, -255,124, -255,209, -255,245, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,255, -255,227, -255,131, -255,123, -255,206, -255,255, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,238, -255,245, -255,135, -255,133, -255,231, -255,236, -255,253, -255,64, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,247, -255,239, -255,145, -255,137, -255,223, -255,255, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,247, -255,239, -255,145, -255,137, -255,223, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,203, -255,255, -255,70, -0,0, -0,0, -0,0, -0,0, -255,213, -255,255, -255,255, -255,255, -255,255, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,77, -255,255, -255,147, -0,0, -0,0, -0,0, -255,91, -255,255, -255,125, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,88, -255,255, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -255,50, -255,255, -255,82, -0,0, -0,0, -255,208, -255,248, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,255, -255,200, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,88, -255,255, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,187, -255,235, -255,240, -255,202, -255,95, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,185, -255,239, -255,236, -255,147, -255,22, -255,236, -255,227, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,183, -255,243, -255,246, -255,203, -255,253, -255,213, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,183, -255,243, -255,246, -255,198, -255,78, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,243, -255,160, -0,0, -0,0, -0,0, -255,1, -255,234, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,243, -255,160, -0,0, -0,0, -0,0, -255,1, -255,234, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,243, -255,160, -0,0, -0,0, -0,0, -255,1, -255,234, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,251, -255,178, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,103, -255,205, -255,246, -255,239, -255,179, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,103, -255,205, -255,246, -255,239, -255,179, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,77, -255,227, -255,238, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,88, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -255,164, -255,251, -255,20, -0,0, -0,0, -0,0, -0,0, -255,88, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -255,164, -255,251, -255,20, -0,0, -0,0, -0,0, -0,0, -255,88, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -255,164, -255,251, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,176, -255,184, -255,58, -255,9, -255,18, -255,92, -255,223, -255,99, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,176, -255,184, -255,58, -255,9, -255,18, -255,92, -255,223, -255,99, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,150, -255,248, -0,0, -0,0, -255,1, -255,180, -255,51, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,253, -255,18, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,106, -0,0, -0,0, -0,0, -0,0, -255,179, -255,253, -255,18, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,106, -0,0, -0,0, -0,0, -0,0, -255,179, -255,253, -255,18, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -97,0, -0,0, -92,182, -72,0, -99,5, -0,0, -0,0, -255,132, -255,161, -255,85, -255,255, -255,254, -255,225, -255,92, -255,25, -255,220, -255,51, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,161, -255,10, -255,158, -255,240, -255,222, -255,84, -255,25, -255,220, -255,51, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,248, -0,0, -0,0, -255,100, -255,213, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -0,0, -0,0, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,169, -255,168, -255,234, -255,235, -255,113, -255,41, -255,199, -255,246, -255,196, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,133, -255,211, -255,245, -255,245, -255,212, -255,135, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,227, -255,12, -255,84, -255,200, -0,0, -255,50, -255,249, -255,6, -255,79, -255,173, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,227, -255,12, -255,124, -255,195, -255,18, -255,74, -255,245, -255,8, -255,79, -255,173, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,110, -255,234, -255,233, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,248, -0,0, -255,20, -255,236, -255,62, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,220, -255,242, -255,159, -255,18, -0,0, -255,35, -255,153, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,124, -0,0, -255,34, -255,128, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,255, -255,255, -255,240, -255,181, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,74, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,185, -255,243, -255,238, -255,197, -255,78, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,204, -255,1, -0,0, -0,0, -255,66, -255,255, -255,206, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,255, -255,172, -255,62, -255,240, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,255, -255,167, -255,132, -255,239, -255,254, -255,223, -255,140, -255,155, -255,255, -255,193, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,233, -255,172, -255,64, -255,19, -255,19, -255,59, -255,161, -255,228, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,165, -0,0, -255,84, -255,200, -0,0, -255,57, -255,243, -255,6, -255,5, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,165, -0,0, -255,193, -255,95, -0,0, -0,0, -255,117, -255,15, -255,5, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,254, -255,70, -255,78, -255,252, -255,27, -0,0, -255,158, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,248, -0,0, -255,159, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,228, -255,201, -255,148, -255,245, -255,228, -255,113, -255,187, -255,229, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,248, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,133, -255,109, -255,143, -255,238, -255,250, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,49, -255,181, -255,242, -255,240, -255,189, -255,133, -255,195, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,248, -255,237, -255,137, -255,125, -255,216, -255,255, -255,102, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,255, -255,90, -0,0, -255,2, -255,206, -255,254, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,243, -255,34, -255,118, -255,238, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,192, -0,0, -0,0, -255,126, -255,255, -255,130, -0,0, -0,0, -255,201, -255,253, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,235, -255,122, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,210, -255,2, -0,0, -0,0, -0,0, -0,0, -255,86, -255,141, -0,0, -255,84, -255,255, -255,255, -255,255, -255,145, -0,0, -0,0, -255,225, -255,2, -0,0, -0,0, -0,0, -0,0, -255,86, -255,141, -0,0, -255,211, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -255,225, -255,2, -0,0, -0,0, -0,0, -0,0, -255,66, -255,249, -0,0, -255,1, -255,255, -255,61, -255,68, -255,233, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,248, -255,61, -255,237, -255,21, -255,114, -255,232, -255,241, -255,147, -255,1, -0,0, -0,0, -0,0, -0,0, -255,14, -255,173, -255,35, -0,0, -255,39, -255,196, -255,254, -255,242, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,44, -0,0, -0,0, -255,34, -255,243, -255,230, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,246, -255,240, -255,149, -255,141, -255,229, -255,255, -255,123, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -255,250, -255,41, -0,0, -0,0, -255,16, -255,235, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,242, -255,223, -255,7, -255,95, -255,255, -255,155, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -255,97, -255,255, -255,104, -0,0, -0,0, -255,173, -255,255, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,190, -0,0, -0,0, -255,131, -255,239, -255,242, -255,167, -255,24, -255,3, -255,224, -255,74, -0,0, -0,0, -0,0, -0,0, -255,66, -255,166, -0,0, -255,84, -255,200, -0,0, -255,43, -255,250, -255,10, -255,5, -255,227, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,166, -0,0, -255,193, -255,95, -0,0, -0,0, -255,117, -255,13, -255,5, -255,227, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,252, -255,82, -255,87, -255,251, -255,33, -255,218, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,212, -255,102, -255,20, -255,219, -255,100, -255,90, -255,255, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,227, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,124, -0,0, -255,34, -255,128, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,243, -255,150, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,44, -0,0, -0,0, -0,0, -255,146, -255,255, -255,67, -0,0, -0,0, -0,0, -0,0, -0,0, -255,210, -255,250, -255,44, -0,0, -0,0, -255,124, -255,255, -255,244, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,255, -255,181, -0,0, -0,0, -0,0, -0,0, -255,73, -255,99, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,255, -255,125, -255,227, -255,236, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,227, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -255,96, -255,255, -255,104, -0,0, -0,0, -255,172, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,7, -255,244, -255,79, -0,0, -255,100, -255,246, -255,90, -255,61, -255,255, -255,58, -0,0, -255,151, -255,139, -0,0, -0,0, -0,0, -0,0, -255,11, -255,227, -255,12, -255,84, -255,200, -0,0, -255,1, -255,252, -255,34, -255,81, -255,170, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,227, -255,12, -255,126, -255,194, -255,18, -255,71, -255,245, -255,6, -255,81, -255,170, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,222, -255,222, -255,97, -255,127, -255,191, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,118, -255,198, -255,1, -0,0, -0,0, -0,0, -255,113, -255,248, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,240, -255,255, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,248, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,230, -255,60, -255,205, -255,172, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,44, -0,0, -0,0, -0,0, -255,104, -255,255, -255,98, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,176, -0,0, -0,0, -255,27, -255,227, -255,139, -255,255, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,255, -255,150, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,209, -255,255, -255,255, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,240, -255,255, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -255,96, -255,255, -255,104, -0,0, -0,0, -255,172, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,52, -255,255, -255,16, -0,0, -255,220, -255,153, -0,0, -255,42, -255,255, -255,34, -0,0, -255,120, -255,165, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,161, -255,1, -0,0, -0,0, -0,0, -0,0, -255,25, -255,220, -255,49, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,161, -255,11, -255,161, -255,241, -255,223, -255,86, -255,25, -255,220, -255,49, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,242, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,241, -255,47, -0,0, -0,0, -0,0, -255,118, -255,246, -255,78, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,219, -255,144, -255,213, -255,153, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,255, -255,255, -255,255, -255,16, -0,0, -255,96, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,140, -0,0, -0,0, -255,166, -255,110, -255,80, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,255, -255,245, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,219, -255,144, -255,213, -255,153, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -255,96, -255,255, -255,104, -0,0, -0,0, -255,172, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,78, -255,244, -0,0, -255,23, -255,255, -255,91, -0,0, -255,66, -255,255, -255,10, -0,0, -255,125, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,176, -255,184, -255,58, -255,8, -255,17, -255,91, -255,222, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,176, -255,184, -255,58, -255,8, -255,17, -255,91, -255,222, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,185, -255,134, -255,77, -255,218, -255,230, -255,123, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,138, -0,0, -0,0, -255,4, -255,155, -255,244, -255,78, -255,16, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,62, -255,132, -255,237, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,49, -255,181, -255,242, -255,246, -255,196, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,49, -255,181, -255,242, -255,246, -255,196, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,47, -255,181, -255,255, -255,97, -255,64, -255,4, -0,0, -255,104, -255,255, -255,99, -0,0, -0,0, -0,0, -0,0, -255,64, -255,255, -255,136, -0,0, -255,60, -255,211, -255,4, -255,76, -255,255, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,255, -255,150, -0,0, -0,0, -255,200, -255,255, -255,255, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,228, -255,212, -255,253, -255,130, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,62, -255,132, -255,237, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -255,96, -255,255, -255,104, -0,0, -0,0, -255,172, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,77, -255,243, -0,0, -255,45, -255,255, -255,73, -0,0, -255,89, -255,243, -0,0, -0,0, -255,180, -255,113, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,104, -255,206, -255,247, -255,240, -255,179, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,104, -255,206, -255,247, -255,240, -255,179, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,222, -255,16, -255,243, -255,107, -255,60, -255,249, -255,53, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,255, -255,255, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,233, -255,2, -255,51, -255,255, -255,77, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,246, -255,240, -255,149, -255,142, -255,226, -255,254, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,246, -255,240, -255,149, -255,142, -255,226, -255,254, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,44, -0,0, -0,0, -0,0, -255,146, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,60, -255,255, -255,139, -255,2, -255,206, -255,66, -0,0, -255,81, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,255, -255,185, -0,0, -0,0, -255,65, -255,84, -255,199, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,138, -255,255, -255,61, -255,167, -255,248, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,233, -255,2, -255,51, -255,255, -255,77, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,47, -255,255, -255,21, -255,17, -255,250, -255,162, -255,71, -255,198, -255,247, -255,19, -255,91, -255,236, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,229, -255,75, -255,33, -255,255, -255,25, -0,0, -255,221, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,232, -255,154, -0,0, -0,0, -255,225, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,210, -255,250, -255,44, -0,0, -0,0, -255,19, -255,227, -255,245, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -255,210, -255,250, -255,44, -0,0, -0,0, -255,19, -255,227, -255,245, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,44, -0,0, -0,0, -255,32, -255,242, -255,232, -255,8, -0,0, -0,0, -0,0, -0,0, -255,33, -255,255, -255,174, -255,104, -255,172, -0,0, -0,0, -255,118, -255,255, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,205, -255,252, -255,52, -0,0, -0,0, -0,0, -255,172, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,250, -255,188, -0,0, -255,41, -255,253, -255,185, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,232, -255,154, -0,0, -0,0, -255,225, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,231, -255,104, -0,0, -255,115, -255,240, -255,218, -255,67, -255,194, -255,248, -255,200, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,70, -255,164, -0,0, -255,8, -255,245, -255,100, -255,48, -255,248, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,255, -255,171, -255,124, -255,124, -255,209, -255,245, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -255,119, -255,255, -255,93, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -255,119, -255,255, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,133, -255,108, -255,141, -255,237, -255,250, -255,77, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,209, -255,250, -255,228, -255,31, -0,0, -255,16, -255,223, -255,246, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,55, -255,245, -255,244, -255,145, -255,113, -255,147, -255,242, -255,240, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -255,189, -255,255, -255,58, -0,0, -0,0, -255,165, -255,255, -255,86, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,255, -255,171, -255,124, -255,124, -255,209, -255,245, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,114, -255,234, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,227, -255,239, -255,134, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,255, -255,255, -255,241, -255,183, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,248, -255,240, -255,139, -255,137, -255,223, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,174, -255,239, -255,249, -255,226, -255,158, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -255,87, -255,255, -255,184, -0,0, -0,0, -0,0, -255,39, -255,252, -255,228, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,162, -255,235, -255,114, -255,41, -255,21, -255,44, -255,111, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,243, -255,160, -0,0, -0,0, -0,0, -255,1, -255,234, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -255,76, -255,255, -255,124, -0,0, -0,0, -0,0, -0,0, -255,64, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -255,76, -255,255, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,222, -255,179, -255,241, -255,246, -255,198, -255,78, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,243, -255,160, -0,0, -0,0, -0,0, -255,1, -255,234, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,116, -255,212, -255,113, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,184, -255,236, -255,249, -255,225, -255,167, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,212, -255,208, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,227, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,243, -255,150, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,88, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -255,164, -255,251, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,64, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,88, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -255,164, -255,251, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,230, -255,62, -255,230, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,225, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,240, -255,255, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,230, -255,60, -255,205, -255,172, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,253, -255,18, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -255,118, -255,255, -255,93, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -255,118, -255,255, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,253, -255,18, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,245, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,219, -255,144, -255,213, -255,153, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,211, -255,250, -255,42, -0,0, -0,0, -255,16, -255,223, -255,246, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -255,211, -255,250, -255,42, -0,0, -0,0, -255,16, -255,223, -255,246, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,49, -255,181, -255,242, -255,246, -255,196, -255,74, -0,0, -0,0, -72,0, -74,182, -72,0, -25,5, -0,0, -0,0, -255,54, -255,255, -255,62, -255,132, -255,237, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,229, -255,186, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,124, -0,0, -255,34, -255,128, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,247, -255,239, -255,145, -255,137, -255,223, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,247, -255,239, -255,145, -255,137, -255,223, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,229, -255,186, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,196, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,116, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,227, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,246, -255,240, -255,149, -255,142, -255,226, -255,254, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,233, -255,2, -255,51, -255,255, -255,77, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,193, -255,190, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,248, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,183, -255,243, -255,246, -255,198, -255,78, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,183, -255,243, -255,246, -255,198, -255,78, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,193, -255,190, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,82, -255,108, -255,108, -255,188, -255,255, -255,142, -255,108, -255,108, -255,48, -0,0, -0,0, -0,0, -0,0, -255,33, -255,108, -255,108, -255,108, -255,108, -255,135, -255,255, -255,214, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,240, -255,255, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -0,0, -0,0, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -255,210, -255,250, -255,44, -0,0, -0,0, -255,19, -255,227, -255,245, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,232, -255,154, -0,0, -0,0, -255,225, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,183, -255,241, -255,229, -255,148, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,146, -255,255, -255,110, -0,0, -0,0, -0,0, -255,87, -255,255, -255,166, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,175, -255,254, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,219, -255,144, -255,213, -255,153, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,255, -255,172, -255,62, -255,240, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,224, -255,121, -255,141, -255,222, -255,243, -255,199, -255,90, -255,195, -255,155, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -255,119, -255,255, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,255, -255,171, -255,124, -255,124, -255,209, -255,245, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,255, -255,74, -0,0, -0,0, -0,0, -255,13, -255,241, -255,231, -255,10, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,229, -255,186, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,212, -255,208, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,49, -255,181, -255,242, -255,246, -255,196, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,219, -255,246, -255,130, -255,165, -255,255, -255,151, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,249, -255,228, -255,7, -0,0, -255,1, -255,210, -255,254, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,153, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,99, -255,205, -255,243, -255,229, -255,170, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,62, -255,132, -255,237, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,243, -255,34, -255,118, -255,238, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,163, -255,255, -255,238, -255,134, -255,107, -255,173, -255,255, -255,251, -255,76, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,252, -255,182, -0,0, -0,0, -0,0, -255,108, -255,255, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,193, -255,190, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,225, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,246, -255,240, -255,149, -255,142, -255,226, -255,254, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,255, -255,144, -0,0, -0,0, -255,208, -255,211, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,255, -255,104, -0,0, -255,81, -255,255, -255,174, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,228, -255,231, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,137, -255,255, -255,194, -255,119, -255,138, -255,239, -255,240, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,233, -255,2, -255,51, -255,255, -255,77, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,238, -255,32, -0,0, -0,0, -0,0, -255,119, -255,254, -255,41, -0,0, -0,0, -0,0, -0,0, -255,64, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -255,76, -255,255, -255,124, -0,0, -0,0, -0,0, -0,0, -255,10, -255,243, -255,160, -0,0, -0,0, -0,0, -255,1, -255,234, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,158, -255,254, -255,37, -0,0, -255,1, -255,216, -255,226, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,210, -255,250, -255,44, -0,0, -0,0, -255,19, -255,227, -255,245, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,115, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,251, -255,224, -255,5, -255,205, -255,255, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,149, -255,255, -255,86, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,242, -255,225, -255,4, -0,0, -0,0, -255,71, -255,255, -255,142, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,232, -255,154, -0,0, -0,0, -255,225, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,49, -255,181, -255,242, -255,246, -255,196, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,234, -255,126, -0,0, -0,0, -0,0, -0,0, -255,2, -255,228, -255,129, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -255,88, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -255,164, -255,251, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -255,31, -255,249, -255,144, -0,0, -255,71, -255,255, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,136, -255,179, -0,0, -255,169, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,24, -255,237, -255,241, -255,32, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -255,119, -255,255, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -255,74, -255,255, -255,126, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,159, -255,255, -255,170, -255,255, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,253, -255,181, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,231, -255,234, -255,17, -0,0, -0,0, -255,5, -255,64, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,255, -255,171, -255,124, -255,124, -255,209, -255,245, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,246, -255,240, -255,149, -255,142, -255,226, -255,254, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,255, -255,87, -0,0, -0,0, -0,0, -0,0, -0,0, -255,191, -255,158, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -255,118, -255,255, -255,93, -0,0, -0,0, -0,0, -0,0, -255,179, -255,253, -255,18, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,149, -255,240, -255,11, -255,181, -255,220, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,1, -255,253, -255,206, -0,0, -0,0, -0,0, -0,0, -255,143, -255,255, -255,61, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,129, -0,0, -255,218, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,177, -255,255, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -255,104, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,252, -255,255, -255,255, -255,58, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,211, -255,244, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,117, -255,255, -255,230, -255,128, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,210, -255,250, -255,44, -0,0, -0,0, -255,19, -255,227, -255,245, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -255,235, -255,127, -0,0, -0,0, -0,0, -0,0, -255,2, -255,229, -255,130, -0,0, -0,0, -0,0, -0,0, -0,0, -255,211, -255,250, -255,42, -0,0, -0,0, -255,16, -255,223, -255,246, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,246, -255,141, -255,254, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,247, -255,29, -0,0, -0,0, -255,5, -255,212, -255,253, -255,22, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,80, -255,13, -255,254, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -255,92, -255,255, -255,173, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -255,76, -255,255, -255,124, -0,0, -0,0, -0,0, -0,0, -255,43, -255,139, -255,255, -255,193, -255,108, -255,108, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,123, -255,255, -255,114, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,87, -255,213, -255,255, -255,255, -255,200, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,243, -255,160, -0,0, -0,0, -0,0, -255,1, -255,234, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -255,119, -255,255, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -255,147, -255,237, -255,30, -0,0, -0,0, -0,0, -255,116, -255,254, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,247, -255,239, -255,145, -255,137, -255,223, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,141, -255,255, -255,213, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,255, -255,227, -255,131, -255,123, -255,206, -255,255, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,156, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -255,25, -255,238, -255,230, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -255,55, -255,255, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,108, -255,163, -255,255, -255,168, -255,108, -255,108, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,247, -255,244, -255,111, -255,108, -255,108, -255,108, -255,108, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,136, -255,243, -255,250, -255,51, -0,0, -0,0, -0,0, -0,0, -0,0, -255,88, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -255,164, -255,251, -255,20, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -255,11, -255,192, -255,255, -255,237, -255,132, -255,106, -255,171, -255,255, -255,255, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,183, -255,243, -255,246, -255,198, -255,78, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,255, -255,133, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,253, -255,206, -0,0, -0,0, -0,0, -0,0, -255,143, -255,255, -255,61, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,187, -255,235, -255,240, -255,202, -255,95, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,104, -255,242, -255,44, -255,133, -255,216, -255,44, -255,26, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -255,178, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -255,118, -255,255, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,255, -255,105, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,84, -255,39, -0,0, -0,0, -0,0, -255,66, -255,255, -255,154, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,253, -255,18, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,106, -0,0, -0,0, -0,0, -0,0, -255,64, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -255,76, -255,255, -255,124, -0,0, -0,0, -0,0, -0,0, -255,13, -255,190, -255,88, -255,142, -255,223, -255,243, -255,200, -255,87, -255,163, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,247, -255,29, -0,0, -0,0, -255,5, -255,212, -255,253, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,205, -0,0, -255,143, -255,173, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,183, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,211, -255,250, -255,42, -0,0, -0,0, -255,16, -255,223, -255,246, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -255,189, -255,255, -255,123, -255,108, -255,108, -255,108, -255,108, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,108, -255,163, -255,255, -255,168, -255,108, -255,108, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,172, -0,0, -0,0, -0,0, -255,45, -255,255, -255,170, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,255, -255,227, -255,131, -255,123, -255,206, -255,255, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,148, -255,167, -0,0, -255,181, -255,135, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,248, -255,136, -255,214, -255,252, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,247, -255,239, -255,145, -255,137, -255,223, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,96, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,177, -255,255, -255,180, -255,115, -255,125, -255,222, -255,254, -255,75, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -255,118, -255,255, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,187, -255,235, -255,240, -255,202, -255,95, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,253, -255,206, -0,0, -0,0, -0,0, -0,0, -255,143, -255,255, -255,61, -0,0, -0,0, -0,0, -0,0, -255,1, -255,253, -255,206, -0,0, -0,0, -0,0, -0,0, -255,143, -255,255, -255,61, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,16, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -255,38, -255,242, -255,232, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,183, -255,243, -255,246, -255,198, -255,78, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,103, -255,204, -255,242, -255,236, -255,188, -255,69, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,211, -255,250, -255,42, -0,0, -0,0, -255,16, -255,223, -255,246, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,247, -255,29, -0,0, -0,0, -255,5, -255,212, -255,253, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,247, -255,29, -0,0, -0,0, -255,5, -255,212, -255,253, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,40, -255,245, -255,99, -255,57, -255,255, -255,69, -255,40, -255,2, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -255,88, -255,255, -255,195, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,247, -255,239, -255,145, -255,137, -255,223, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,60, -255,191, -255,245, -255,234, -255,187, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,255, -255,227, -255,131, -255,123, -255,206, -255,255, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,255, -255,227, -255,131, -255,123, -255,206, -255,255, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,23, -255,66, -255,243, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,150, -255,255, -255,143, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,173, -255,43, -0,0, -0,0, -255,58, -255,165, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,243, -255,206, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,183, -255,243, -255,246, -255,198, -255,78, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,250, -255,232, -255,133, -255,131, -255,227, -255,254, -255,81, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,187, -255,235, -255,240, -255,202, -255,95, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,187, -255,235, -255,240, -255,202, -255,95, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,83, -255,229, -0,0, -255,115, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,7, -255,205, -255,255, -255,85, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,234, -255,232, -255,39, -255,55, -255,241, -255,225, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,120, -255,210, -255,255, -255,103, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -0,0, -0,0, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,250, -255,38, -0,0, -0,0, -255,29, -255,247, -255,206, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,237, -255,230, -255,240, -255,227, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,20, -255,253, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,255, -255,172, -255,62, -255,240, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -255,147, -255,170, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,60, -255,191, -255,245, -255,234, -255,187, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,182, -255,243, -255,240, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,163, -255,193, -255,103, -255,157, -255,141, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,53, -0,0, -0,0, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,181, -255,246, -255,219, -255,104, -255,251, -255,144, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,255, -255,255, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,185, -255,247, -255,216, -255,121, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,15, -255,252, -255,191, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,243, -255,34, -255,118, -255,238, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,255, -255,147, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,250, -255,232, -255,133, -255,131, -255,227, -255,254, -255,81, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,244, -255,243, -255,142, -255,128, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,117, -255,253, -255,255, -255,211, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,191, -0,0, -0,0, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -255,186, -255,255, -255,171, -255,137, -255,231, -255,255, -255,144, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,236, -255,232, -255,241, -255,227, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,190, -255,255, -255,168, -255,139, -255,235, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,108, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,120, -255,204, -255,244, -255,64, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,255, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,250, -255,38, -0,0, -0,0, -255,29, -255,247, -255,206, -0,0, -0,0, -0,0, -0,0, -0,0, -255,191, -255,255, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,201, -255,83, -255,174, -255,255, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,242, -255,207, -255,74, -0,0, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,183, -0,0, -0,0, -255,70, -255,255, -255,144, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,181, -255,132, -255,240, -255,229, -255,117, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -255,8, -255,216, -255,249, -255,52, -0,0, -0,0, -0,0, -0,0, -255,38, -255,234, -255,234, -255,42, -255,58, -255,243, -255,225, -255,27, -0,0, -0,0, -0,0, -0,0, -255,41, -255,255, -255,180, -0,0, -0,0, -255,79, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,167, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,246, -255,209, -255,100, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,53, -0,0, -0,0, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,53, -255,255, -255,147, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -255,147, -255,170, -0,0, -0,0, -0,0, -0,0, -255,13, -255,253, -255,207, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,200, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,88, -255,255, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,130, -255,218, -255,247, -255,226, -255,160, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,254, -255,232, -255,160, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,163, -255,232, -255,239, -255,186, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,154, -255,226, -255,242, -255,194, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -255,72, -255,210, -255,2, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,115, -0,0, -0,0, -255,56, -255,255, -255,144, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,251, -255,176, -255,128, -255,224, -255,255, -255,62, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -255,140, -255,255, -255,114, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,177, -255,45, -0,0, -0,0, -255,61, -255,168, -255,6, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,114, -0,0, -0,0, -255,64, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -255,11, -255,136, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,118, -255,202, -255,255, -255,115, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,191, -0,0, -0,0, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,30, -255,255, -255,181, -0,0, -0,0, -0,0, -0,0, -255,144, -255,163, -0,0, -0,0, -0,0, -0,0, -255,53, -255,255, -255,147, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,195, -255,170, -255,236, -255,227, -255,132, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,167, -255,231, -255,233, -255,148, -255,235, -255,253, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,231, -255,255, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,168, -255,255, -255,173, -255,116, -255,158, -255,253, -255,223, -255,9, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,112, -255,158, -255,251, -255,233, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,210, -255,250, -255,144, -255,127, -255,237, -255,235, -255,23, -0,0, -0,0, -0,0, -0,0, -255,4, -255,209, -255,251, -255,149, -255,126, -255,237, -255,242, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -255,192, -255,96, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,108, -0,0, -0,0, -255,56, -255,255, -255,144, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,190, -0,0, -0,0, -255,78, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -255,57, -255,253, -255,181, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,107, -0,0, -0,0, -255,64, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,5, -255,250, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,9, -255,231, -255,234, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,212, -255,242, -255,207, -255,74, -0,0, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,250, -255,39, -0,0, -0,0, -255,26, -255,246, -255,202, -0,0, -0,0, -0,0, -0,0, -255,56, -255,255, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,254, -255,161, -255,113, -255,192, -255,255, -255,122, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,220, -255,250, -255,141, -255,110, -255,163, -255,253, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,240, -255,252, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,249, -255,207, -0,0, -0,0, -0,0, -255,150, -255,255, -255,67, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,78, -255,255, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -255,45, -255,240, -255,140, -0,0, -0,0, -255,106, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,145, -0,0, -0,0, -255,97, -255,255, -255,111, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -255,56, -255,225, -255,8, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,165, -0,0, -0,0, -255,70, -255,255, -255,144, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -255,48, -255,255, -255,151, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,255, -255,255, -255,254, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,55, -255,255, -255,163, -0,0, -0,0, -255,79, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,156, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,236, -255,219, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,186, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -255,72, -255,210, -255,2, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,250, -255,234, -255,134, -255,127, -255,223, -255,254, -255,76, -0,0, -0,0, -0,0, -0,0, -255,53, -255,255, -255,147, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,167, -0,0, -0,0, -255,10, -255,238, -255,223, -0,0, -0,0, -0,0, -0,0, -0,0, -255,96, -255,255, -255,123, -0,0, -0,0, -0,0, -255,182, -255,255, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,55, -255,253, -255,107, -255,248, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,226, -255,242, -255,64, -0,0, -0,0, -255,16, -255,40, -255,12, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,202, -255,253, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,115, -0,0, -0,0, -0,0, -0,0, -255,36, -255,104, -255,41, -0,0, -0,0, -255,75, -255,255, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -255,175, -255,117, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,1, -255,205, -255,255, -255,162, -255,135, -255,230, -255,255, -255,144, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -255,48, -255,255, -255,152, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,214, -255,151, -255,255, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,208, -255,254, -255,159, -255,139, -255,235, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,227, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,7, -255,229, -255,234, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -255,192, -255,96, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,189, -255,244, -255,246, -255,195, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,255, -255,181, -0,0, -0,0, -0,0, -0,0, -255,144, -255,163, -0,0, -0,0, -0,0, -0,0, -255,23, -255,255, -255,177, -0,0, -0,0, -0,0, -255,205, -255,248, -0,0, -0,0, -0,0, -0,0, -0,0, -255,135, -255,255, -255,66, -0,0, -0,0, -0,0, -255,196, -255,254, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,208, -255,197, -255,1, -255,248, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,255, -255,255, -255,225, -255,146, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,160, -255,255, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,183, -255,247, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,173, -255,255, -255,52, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -255,41, -255,235, -255,89, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,189, -255,248, -255,222, -255,126, -255,255, -255,143, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -255,48, -255,255, -255,152, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -255,2, -255,196, -255,254, -255,64, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,193, -255,248, -255,222, -255,112, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,184, -255,255, -255,51, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,117, -255,198, -255,255, -255,118, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -255,56, -255,225, -255,8, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,250, -255,39, -0,0, -0,0, -255,26, -255,246, -255,202, -0,0, -0,0, -0,0, -0,0, -0,0, -255,221, -255,237, -255,14, -0,0, -255,15, -255,243, -255,211, -0,0, -0,0, -0,0, -0,0, -0,0, -255,105, -255,255, -255,124, -0,0, -0,0, -255,28, -255,247, -255,199, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,115, -255,249, -255,41, -0,0, -255,248, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,219, -255,234, -255,142, -255,210, -255,255, -255,255, -255,166, -255,3, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,152, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,255, -255,254, -255,85, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,101, -255,255, -255,153, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,158, -255,209, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,255, -255,113, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -255,48, -255,255, -255,152, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -255,38, -255,247, -255,222, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,247, -255,210, -255,103, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,149, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -255,175, -255,117, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,250, -255,234, -255,134, -255,127, -255,223, -255,254, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,207, -255,122, -255,200, -255,255, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,221, -255,251, -255,153, -255,124, -255,221, -255,251, -255,62, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,244, -255,126, -0,0, -0,0, -255,248, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,69, -255,255, -255,136, -0,0, -0,0, -255,43, -255,192, -255,255, -255,91, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,160, -255,255, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,104, -255,117, -255,216, -255,236, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,251, -255,197, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,29, -255,248, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,195, -255,144, -255,152, -255,240, -255,243, -255,33, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -255,48, -255,255, -255,152, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -255,116, -255,255, -255,153, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,108, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -255,41, -255,235, -255,89, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,189, -255,244, -255,246, -255,195, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,91, -255,214, -255,247, -255,213, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,21, -255,155, -255,226, -255,248, -255,197, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,215, -255,52, -0,0, -0,0, -255,79, -255,255, -255,125, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,202, -255,253, -255,15, -0,0, -0,0, -0,0, -0,0, -255,1, -255,4, -255,1, -0,0, -0,0, -255,57, -255,255, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,244, -255,215, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,195, -255,241, -255,237, -255,187, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,158, -255,209, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,255, -255,148, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,112, -255,112, -255,112, -255,112, -255,251, -255,226, -255,112, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,253, -255,255, -255,219, -255,142, -255,210, -255,245, -255,44, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,75, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,255, -255,124, -0,0, -0,0, -255,62, -255,255, -255,152, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,234, -255,226, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,29, -255,248, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,65, -255,255, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,135, -255,218, -255,255, -255,255, -255,152, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,112, -255,157, -255,251, -255,235, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,236, -255,245, -255,140, -255,123, -255,225, -255,253, -255,62, -0,0, -0,0, -0,0, -0,0, -255,17, -255,220, -255,255, -255,148, -255,108, -255,108, -255,108, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,120, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,72, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,220, -255,228, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,32, -255,14, -0,0, -0,0, -255,58, -255,223, -255,255, -255,33, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,254, -255,233, -255,161, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,173, -255,235, -255,240, -255,192, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -255,52, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,120, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,61, -255,8, -0,0, -0,0, -0,0, -89,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,154, -0,0, -0,0, -0,0, -255,152, -255,255, -255,53, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,255, -255,50, -0,0, -0,0, -255,158, -255,255, -255,73, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,174, -255,248, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,120, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,143, -255,185, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,221, -255,254, -255,163, -255,115, -255,149, -255,251, -255,223, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,155, -255,182, -255,241, -255,227, -255,102, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,185, -255,247, -255,218, -255,113, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,135, -255,231, -255,248, -255,196, -255,52, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,255, -255,119, -0,0, -0,0, -255,227, -255,231, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,180, -255,255, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,120, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,189, -255,152, -255,245, -255,229, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,147, -255,223, -255,248, -255,229, -255,164, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,255, -255,177, -255,134, -255,232, -255,255, -255,58, -0,0, -0,0, -0,0, -0,0, -0,0, -255,190, -255,255, -255,161, -255,131, -255,232, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -255,127, -255,255, -255,171, -255,125, -255,231, -255,238, -255,17, -0,0, -0,0, -0,0, -0,0, -255,8, -255,241, -255,189, -0,0, -255,40, -255,255, -255,142, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,180, -255,255, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,120, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,108, -255,38, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,255, -255,174, -255,130, -255,225, -255,255, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,196, -0,0, -0,0, -255,63, -255,255, -255,164, -0,0, -0,0, -0,0, -0,0, -255,41, -255,255, -255,178, -0,0, -0,0, -255,87, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -255,5, -255,242, -255,204, -0,0, -0,0, -255,73, -255,255, -255,122, -0,0, -0,0, -0,0, -0,0, -0,0, -255,158, -255,248, -255,9, -255,109, -255,255, -255,49, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,208, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,120, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,201, -0,0, -0,0, -255,52, -255,255, -255,169, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,254, -255,229, -255,171, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,229, -255,186, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,212, -255,208, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,148, -255,233, -255,248, -255,201, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,76, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -255,73, -255,255, -255,255, -255,255, -255,255, -255,255, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,152, -255,230, -255,244, -255,179, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,212, -255,208, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,229, -255,186, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -255,244, -255,204, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,114, -0,0, -0,0, -255,80, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -255,35, -255,255, -255,151, -0,0, -0,0, -255,17, -255,255, -255,165, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,72, -255,178, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,160, -255,160, -255,227, -255,255, -255,163, -255,160, -255,130, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,120, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -255,243, -255,208, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,109, -255,144, -255,246, -255,230, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,193, -255,190, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,225, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,165, -255,255, -255,164, -255,125, -255,227, -255,249, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,188, -255,17, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,159, -255,159, -255,243, -255,231, -255,129, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,116, -255,116, -255,212, -255,240, -255,116, -255,116, -255,47, -0,0, -0,0, -0,0, -0,0, -0,0, -255,99, -255,255, -255,161, -255,136, -255,136, -255,136, -255,53, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,190, -255,254, -255,154, -255,133, -255,243, -255,222, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,225, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,193, -255,190, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -255,237, -255,214, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,107, -0,0, -0,0, -255,80, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -255,58, -255,255, -255,140, -0,0, -0,0, -255,4, -255,255, -255,190, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,227, -255,144, -255,242, -255,119, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,180, -255,255, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,44, -255,9, -0,0, -0,0, -255,121, -255,255, -255,77, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -255,236, -255,218, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,122, -255,255, -255,87, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,177, -0,0, -0,0, -255,51, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,149, -255,234, -255,247, -255,223, -255,170, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,253, -255,180, -255,127, -255,221, -255,255, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,255, -255,159, -0,0, -0,0, -255,97, -255,255, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,192, -0,0, -0,0, -255,39, -255,255, -255,178, -0,0, -0,0, -0,0, -0,0, -255,55, -255,255, -255,162, -0,0, -0,0, -255,87, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -255,60, -255,255, -255,140, -0,0, -0,0, -255,4, -255,255, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,138, -255,239, -255,253, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,180, -255,255, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,255, -255,85, -0,0, -0,0, -255,165, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,201, -0,0, -0,0, -255,34, -255,255, -255,182, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,93, -255,255, -255,107, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,112, -0,0, -0,0, -0,0, -255,240, -255,206, -0,0, -0,0, -0,0, -0,0, -0,0, -255,165, -255,255, -255,165, -255,131, -255,255, -255,248, -255,48, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,193, -0,0, -0,0, -255,76, -255,255, -255,129, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,255, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,138, -255,226, -255,243, -255,195, -255,59, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,255, -255,104, -0,0, -0,0, -255,38, -255,255, -255,145, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,255, -255,163, -255,123, -255,219, -255,255, -255,76, -0,0, -0,0, -0,0, -0,0, -255,1, -255,208, -255,254, -255,152, -255,129, -255,231, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -255,58, -255,255, -255,140, -0,0, -0,0, -255,4, -255,255, -255,190, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,143, -255,204, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,246, -255,231, -255,125, -255,151, -255,253, -255,197, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,67, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,255, -255,174, -255,127, -255,216, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -255,30, -255,199, -255,244, -255,31, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,112, -0,0, -0,0, -0,0, -255,241, -255,206, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,178, -0,0, -255,115, -255,196, -255,255, -255,164, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -255,52, -255,255, -255,147, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,249, -255,187, -255,243, -255,215, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,108, -255,108, -255,108, -255,108, -255,119, -255,251, -255,190, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,255, -255,175, -255,126, -255,238, -255,243, -255,31, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,145, -0,0, -0,0, -255,39, -255,255, -255,170, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,108, -255,33, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,108, -255,33, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,195, -255,161, -255,239, -255,232, -255,118, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,193, -255,248, -255,213, -255,144, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -255,35, -255,255, -255,152, -0,0, -0,0, -255,17, -255,255, -255,166, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,69, -255,255, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,194, -255,241, -255,232, -255,160, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,153, -255,183, -255,241, -255,233, -255,122, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,254, -255,102, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,38, -255,255, -255,176, -0,0, -0,0, -255,51, -255,255, -255,161, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,112, -255,11, -255,227, -255,31, -255,239, -255,213, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,8, -255,112, -255,112, -255,112, -255,112, -255,112, -255,112, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -255,201, -255,255, -255,150, -255,126, -255,227, -255,255, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,155, -255,239, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,228, -255,2, -0,0, -255,103, -255,255, -255,106, -0,0, -0,0, -0,0, -0,0, -255,6, -255,218, -255,250, -255,137, -255,115, -255,219, -255,255, -255,172, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -255,5, -255,243, -255,205, -0,0, -0,0, -255,70, -255,255, -255,124, -0,0, -0,0, -0,0, -0,0, -255,15, -255,132, -255,233, -255,230, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,245, -255,84, -255,84, -255,91, -255,176, -255,253, -255,85, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,255, -255,163, -255,125, -255,227, -255,250, -255,41, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,110, -255,120, -255,150, -0,0, -255,241, -255,206, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -255,58, -255,69, -0,0, -0,0, -255,57, -255,255, -255,161, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,247, -255,207, -0,0, -0,0, -255,75, -255,255, -255,123, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,179, -255,238, -255,231, -255,129, -255,255, -255,171, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -255,130, -255,255, -255,171, -255,124, -255,228, -255,241, -255,19, -0,0, -0,0, -0,0, -0,0, -255,50, -255,247, -255,214, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,7, -255,246, -255,201, -0,0, -0,0, -0,0, -0,0, -255,22, -255,255, -255,173, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,22, -255,255, -255,173, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,151, -255,235, -255,249, -255,203, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,255, -255,184, -255,228, -255,27, -255,49, -255,255, -255,161, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,8, -0,0, -0,0, -255,8, -255,255, -255,189, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,199, -255,208, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,253, -255,72, -255,16, -255,180, -255,251, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,58, -255,255, -255,155, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,136, -255,232, -255,249, -255,199, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -255,10, -255,247, -255,200, -0,0, -0,0, -0,0, -0,0, -255,3, -255,251, -255,199, -0,0, -0,0, -255,67, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,3, -255,251, -255,199, -0,0, -0,0, -255,67, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,255, -255,214, -255,123, -255,226, -255,250, -255,41, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,239, -255,203, -0,0, -0,0, -255,51, -255,255, -255,158, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,255, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,201, -255,255, -255,255, -255,254, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,255, -255,97, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,156, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,156, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,156, -255,236, -255,242, -255,189, -255,47, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,117, -255,200, -255,255, -255,115, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,254, -255,151, -255,140, -255,229, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,254, -255,151, -255,140, -255,229, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,246, -255,235, -255,249, -255,203, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,157, -255,255, -255,166, -255,121, -255,221, -255,253, -255,52, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,255, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,252, -255,153, -255,120, -255,216, -255,232, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,147, -255,114, -255,163, -255,255, -255,213, -255,8, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,156, -255,125, -255,234, -255,233, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,142, -255,235, -255,240, -255,186, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,164, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,245, -255,211, -255,111, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,190, -255,246, -255,220, -255,87, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,190, -255,246, -255,220, -255,87, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,136, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,139, -255,226, -255,244, -255,203, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,229, -255,215, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,255, -255,157, -0,0, -0,0, -255,28, -255,255, -255,174, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,214, -255,248, -255,236, -255,159, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,255, -255,164, -0,0, -0,0, -255,92, -255,252, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,255, -255,155, -255,125, -255,234, -255,227, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,255, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -0,0, -0,0, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,170, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,255, -255,154, -0,0, -0,0, -255,25, -255,255, -255,187, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,163, -255,233, -255,242, -255,188, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,255, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,253, -255,175, -0,0, -0,0, -255,104, -255,255, -255,78, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,150, -255,241, -255,255, -255,212, -255,69, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -0,0, -0,0, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,255, -255,172, -255,62, -255,240, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,69, -255,255, -255,129, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,221, -255,251, -255,149, -255,119, -255,211, -255,255, -255,105, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,108, -255,38, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,108, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,243, -255,150, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,124, -0,0, -255,34, -255,128, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,197, -255,248, -255,129, -255,120, -255,237, -255,229, -255,7, -0,0, -0,0, -0,0, -0,0, -255,89, -255,255, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,255, -255,155, -255,110, -255,222, -255,248, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,255, -255,172, -255,62, -255,240, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,76, -255,255, -255,255, -255,255, -255,255, -255,255, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,243, -255,34, -255,118, -255,238, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,255, -255,99, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,167, -255,231, -255,246, -255,211, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,230, -255,60, -255,205, -255,172, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,248, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,64, -255,64, -255,64, -255,64, -255,145, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,68, -0,0, -0,0, -255,145, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -255,44, -255,255, -255,162, -0,0, -0,0, -255,69, -255,196, -255,62, -0,0, -0,0, -0,0, -0,0, -255,73, -255,255, -255,173, -255,76, -255,76, -255,76, -255,76, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,29, -255,254, -255,181, -0,0, -0,0, -255,68, -255,240, -255,97, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,243, -255,34, -255,118, -255,238, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,112, -255,112, -255,112, -255,196, -255,255, -255,150, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,108, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,193, -255,239, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,254, -255,155, -255,123, -255,229, -255,234, -255,21, -0,0, -0,0, -0,0, -0,0, -255,29, -255,254, -255,203, -0,0, -0,0, -0,0, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,71, -255,255, -255,126, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -0,0, -0,0, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,116, -255,212, -255,113, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,156, -255,236, -255,242, -255,189, -255,47, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,125, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,49, -255,248, -255,209, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,159, -255,159, -255,243, -255,231, -255,129, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,255, -255,149, -0,0, -255,15, -255,239, -255,231, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,255, -255,53, -0,0, -0,0, -255,141, -255,255, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,40, -255,1, -0,0, -0,0, -0,0, -0,0, -255,37, -255,249, -255,210, -255,55, -255,28, -255,152, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,158, -255,237, -255,243, -255,185, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,184, -255,118, -255,150, -255,221, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,71, -255,255, -255,125, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,255, -255,172, -255,62, -255,240, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,230, -255,62, -255,230, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,156, -255,125, -255,234, -255,233, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,148, -255,233, -255,248, -255,201, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,248, -255,160, -255,49, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,218, -255,244, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,253, -255,180, -255,127, -255,221, -255,255, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -255,189, -255,247, -255,24, -255,124, -255,255, -255,86, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,60, -255,255, -255,119, -0,0, -0,0, -255,206, -255,227, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,108, -255,33, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,108, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,107, -0,0, -0,0, -255,172, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,141, -255,230, -255,250, -255,222, -255,132, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,255, -255,173, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,30, -255,254, -255,178, -0,0, -0,0, -255,46, -255,180, -255,74, -0,0, -0,0, -0,0, -0,0, -255,3, -255,243, -255,34, -255,118, -255,238, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,245, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,255, -255,164, -0,0, -0,0, -255,92, -255,252, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -255,165, -255,255, -255,164, -255,125, -255,227, -255,249, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,151, -255,237, -255,255, -255,194, -255,84, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,165, -255,255, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,193, -0,0, -0,0, -255,76, -255,255, -255,129, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,247, -255,150, -255,236, -255,181, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,224, -255,185, -0,0, -255,17, -255,253, -255,139, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,52, -255,255, -255,215, -255,117, -255,176, -255,252, -255,255, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,251, -255,199, -0,0, -0,0, -255,67, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -255,172, -255,255, -255,149, -255,104, -255,213, -255,249, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,255, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,177, -0,0, -0,0, -255,51, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,87, -255,231, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -255,52, -255,255, -255,147, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,122, -255,255, -255,245, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,229, -255,186, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,124, -0,0, -255,34, -255,128, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,135, -255,245, -255,6, -255,80, -255,255, -255,49, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,220, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,212, -255,208, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,118, -255,230, -255,245, -255,170, -255,123, -255,255, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,254, -255,151, -255,140, -255,229, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,154, -255,242, -255,255, -255,209, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,163, -255,233, -255,242, -255,188, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,163, -255,233, -255,242, -255,188, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,255, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,112, -0,0, -0,0, -0,0, -255,240, -255,206, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,49, -255,144, -255,234, -255,255, -255,189, -255,31, -0,0, -0,0, -0,0, -0,0, -255,40, -255,246, -255,250, -255,119, -255,108, -255,108, -255,108, -255,6, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,137, -255,251, -255,249, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,193, -255,190, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,248, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,45, -255,255, -255,62, -255,145, -255,215, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,220, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,225, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,190, -255,246, -255,220, -255,87, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,255, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,197, -255,248, -255,129, -255,120, -255,237, -255,229, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -255,197, -255,248, -255,129, -255,120, -255,237, -255,229, -255,7, -0,0, -0,0, -0,0, -0,0, -255,44, -255,255, -255,162, -0,0, -0,0, -255,69, -255,196, -255,62, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,112, -0,0, -0,0, -0,0, -255,241, -255,206, -0,0, -0,0, -0,0, -0,0, -255,9, -255,209, -255,255, -255,245, -255,154, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,96, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,16, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,251, -255,123, -255,216, -255,196, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,210, -255,129, -255,210, -255,125, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,255, -255,255, -255,253, -255,223, -255,149, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,156, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,156, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,124, -0,0, -255,34, -255,128, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,124, -0,0, -255,34, -255,128, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,78, -255,180, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,68, -0,0, -0,0, -255,145, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,68, -0,0, -0,0, -255,145, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,254, -255,155, -255,123, -255,229, -255,234, -255,21, -0,0, -0,0, -0,0, -0,0, -255,38, -255,255, -255,176, -0,0, -0,0, -255,51, -255,255, -255,161, -0,0, -0,0, -0,0, -0,0, -255,16, -255,226, -255,119, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,3, -255,203, -255,240, -255,14, -255,96, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,255, -255,50, -0,0, -0,0, -255,158, -255,255, -255,73, -0,0, -0,0, -0,0, -0,0, -255,178, -255,255, -255,50, -0,0, -0,0, -255,158, -255,255, -255,73, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,120, -255,203, -255,254, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,235, -255,108, -255,110, -255,161, -255,255, -255,196, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,148, -255,233, -255,248, -255,201, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,248, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,248, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,255, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,193, -255,239, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,193, -255,239, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,158, -255,237, -255,243, -255,185, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,255, -255,163, -255,125, -255,227, -255,250, -255,41, -0,0, -0,0, -0,0, -0,0, -255,2, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,180, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,114, -255,255, -255,133, -0,0, -255,4, -255,224, -255,240, -255,25, -0,0, -0,0, -0,0, -0,0, -255,86, -255,255, -255,119, -0,0, -0,0, -255,227, -255,231, -255,3, -0,0, -0,0, -0,0, -0,0, -255,86, -255,255, -255,119, -0,0, -0,0, -255,227, -255,231, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,254, -255,201, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,220, -0,0, -0,0, -0,0, -255,157, -255,255, -255,62, -0,0, -0,0, -0,0, -0,0, -0,0, -255,165, -255,255, -255,164, -255,125, -255,227, -255,249, -255,39, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,143, -255,180, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,249, -255,210, -255,55, -255,28, -255,152, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -255,37, -255,249, -255,210, -255,55, -255,28, -255,152, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,255, -255,148, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,151, -255,235, -255,249, -255,203, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,241, -255,189, -0,0, -255,40, -255,255, -255,142, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,241, -255,189, -0,0, -255,40, -255,255, -255,142, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,220, -0,0, -0,0, -0,0, -255,102, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,177, -0,0, -0,0, -255,51, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,148, -255,233, -255,248, -255,201, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,243, -255,150, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,107, -0,0, -0,0, -255,172, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,107, -0,0, -0,0, -255,172, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,65, -255,255, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,158, -255,248, -255,9, -255,109, -255,255, -255,49, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,158, -255,248, -255,9, -255,109, -255,255, -255,49, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,220, -0,0, -0,0, -0,0, -255,155, -255,255, -255,62, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,112, -0,0, -0,0, -0,0, -255,240, -255,206, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,108, -255,38, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,108, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -255,165, -255,255, -255,164, -255,125, -255,227, -255,249, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,230, -255,60, -255,205, -255,172, -255,3, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,205, -255,249, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,235, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,52, -255,255, -255,215, -255,117, -255,176, -255,252, -255,255, -255,65, -0,0, -0,0, -0,0, -0,0, -255,52, -255,255, -255,215, -255,117, -255,176, -255,252, -255,255, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,220, -255,228, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,124, -0,0, -255,34, -255,128, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,72, -255,178, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,72, -255,178, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,235, -255,108, -255,110, -255,160, -255,254, -255,196, -255,2, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,112, -0,0, -0,0, -0,0, -255,241, -255,206, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,177, -0,0, -0,0, -255,51, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,65, -255,252, -255,187, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -0,0, -255,75, -255,225, -0,0, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,47, -255,187, -255,241, -255,234, -255,167, -255,25, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,118, -255,230, -255,245, -255,170, -255,123, -255,255, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -255,118, -255,230, -255,245, -255,170, -255,123, -255,255, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,61, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,248, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,227, -255,144, -255,242, -255,119, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,227, -255,144, -255,242, -255,119, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,255, -255,255, -255,254, -255,224, -255,150, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,255, -255,176, -0,0, -0,0, -255,51, -255,255, -255,161, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,112, -0,0, -0,0, -0,0, -255,240, -255,206, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,246, -255,214, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,192, -255,137, -255,223, -255,111, -255,221, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,234, -255,226, -255,99, -255,122, -255,251, -255,193, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,212, -255,208, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,243, -255,150, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,229, -255,186, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,138, -255,239, -255,253, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,138, -255,239, -255,253, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,128, -255,223, -255,244, -255,193, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,220, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,255, -255,163, -255,125, -255,227, -255,250, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,112, -0,0, -0,0, -0,0, -255,241, -255,206, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,22, -255,255, -255,173, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,5, -255,224, -255,238, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,70, -255,168, -255,245, -255,255, -255,231, -255,150, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,199, -255,28, -0,0, -255,101, -255,133, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,229, -255,186, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,225, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,163, -255,233, -255,242, -255,188, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,230, -255,60, -255,205, -255,172, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,193, -255,190, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,129, -255,255, -255,180, -255,130, -255,247, -255,226, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,220, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,151, -255,235, -255,249, -255,203, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,255, -255,176, -0,0, -0,0, -255,51, -255,255, -255,161, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,3, -255,251, -255,199, -0,0, -0,0, -255,67, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,58, -255,255, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,233, -255,255, -255,110, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,116, -255,245, -255,255, -255,221, -255,138, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,193, -255,190, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,197, -255,248, -255,129, -255,120, -255,237, -255,229, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,69, -255,255, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,69, -255,255, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,223, -255,233, -255,5, -0,0, -255,165, -255,255, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,255, -255,163, -255,125, -255,227, -255,250, -255,41, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,172, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,254, -255,151, -255,140, -255,229, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,53, -255,255, -255,151, -0,0, -0,0, -255,141, -255,208, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,217, -255,121, -255,244, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,80, -255,161, -255,253, -255,209, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,142, -255,235, -255,240, -255,186, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,68, -0,0, -0,0, -255,145, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,163, -255,233, -255,242, -255,188, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,163, -255,233, -255,242, -255,188, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,132, -255,233, -255,230, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,132, -255,233, -255,230, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,253, -255,198, -0,0, -255,6, -255,224, -255,225, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,229, -255,186, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,243, -255,150, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,151, -255,235, -255,249, -255,203, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,255, -255,173, -0,0, -0,0, -255,52, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,190, -255,246, -255,220, -255,87, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,7, -255,221, -255,249, -255,149, -255,155, -255,253, -255,207, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,163, -255,67, -255,4, -255,191, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,168, -255,65, -0,0, -0,0, -255,174, -255,255, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,17, -255,156, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,124, -0,0, -255,34, -255,128, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,243, -255,150, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,142, -255,235, -255,240, -255,186, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,255, -255,155, -255,125, -255,234, -255,227, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,193, -255,239, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -255,197, -255,248, -255,129, -255,120, -255,237, -255,229, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -255,197, -255,248, -255,129, -255,120, -255,237, -255,229, -255,7, -0,0, -0,0, -0,0, -0,0, -255,50, -255,247, -255,214, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,50, -255,247, -255,214, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,196, -0,0, -255,93, -255,255, -255,113, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,193, -255,190, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,230, -255,60, -255,205, -255,172, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,251, -255,199, -0,0, -0,0, -255,67, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,182, -255,239, -255,237, -255,171, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,239, -255,222, -255,103, -255,108, -255,238, -255,216, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,255, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,248, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,230, -255,60, -255,205, -255,172, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,255, -255,155, -255,125, -255,234, -255,227, -255,12, -0,0, -0,0, -0,0, -0,0, -255,27, -255,253, -255,175, -0,0, -0,0, -255,104, -255,255, -255,78, -0,0, -0,0, -0,0, -0,0, -255,37, -255,249, -255,210, -255,55, -255,28, -255,152, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,68, -0,0, -0,0, -255,145, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,68, -0,0, -0,0, -255,145, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,196, -0,0, -255,110, -255,255, -255,118, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,254, -255,151, -255,140, -255,229, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,52, -255,188, -255,240, -255,237, -255,175, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,127, -255,228, -255,255, -255,215, -255,86, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,253, -255,175, -0,0, -0,0, -255,104, -255,255, -255,78, -0,0, -0,0, -0,0, -0,0, -255,71, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,109, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,107, -0,0, -0,0, -255,172, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,193, -255,239, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,193, -255,239, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,196, -0,0, -255,14, -255,212, -255,252, -255,99, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,134, -255,237, -255,244, -255,177, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,148, -255,233, -255,248, -255,201, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,148, -255,233, -255,248, -255,201, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,190, -255,246, -255,220, -255,87, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,119, -255,255, -255,188, -255,124, -255,220, -255,254, -255,58, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,142, -255,235, -255,240, -255,186, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,142, -255,235, -255,240, -255,186, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,109, -0,0, -0,0, -0,0, -0,0, -255,73, -255,255, -255,173, -255,76, -255,76, -255,76, -255,76, -255,33, -0,0, -0,0, -0,0, -0,0, -255,52, -255,255, -255,215, -255,117, -255,176, -255,252, -255,255, -255,65, -0,0, -0,0, -0,0, -0,0, -255,37, -255,249, -255,210, -255,55, -255,28, -255,152, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -255,37, -255,249, -255,210, -255,55, -255,28, -255,152, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,196, -0,0, -0,0, -255,17, -255,198, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,164, -255,80, -255,71, -255,255, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,165, -255,255, -255,164, -255,125, -255,227, -255,249, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -255,165, -255,255, -255,164, -255,125, -255,227, -255,249, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,201, -255,249, -255,9, -0,0, -255,57, -255,255, -255,154, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,255, -255,155, -255,125, -255,234, -255,227, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,255, -255,155, -255,125, -255,234, -255,227, -255,12, -0,0, -0,0, -0,0, -0,0, -255,73, -255,255, -255,173, -255,76, -255,76, -255,76, -255,76, -255,33, -0,0, -0,0, -0,0, -0,0, -255,29, -255,254, -255,203, -0,0, -0,0, -0,0, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,118, -255,230, -255,245, -255,170, -255,123, -255,255, -255,98, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,107, -0,0, -0,0, -255,172, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,107, -0,0, -0,0, -255,172, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,196, -0,0, -0,0, -0,0, -255,53, -255,255, -255,152, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,255, -255,201, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,177, -0,0, -0,0, -255,51, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,177, -0,0, -0,0, -255,51, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,99, -255,223, -255,247, -255,64, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,197, -255,252, -255,22, -0,0, -255,8, -255,108, -255,76, -0,0, -0,0, -0,0, -0,0, -255,27, -255,253, -255,175, -0,0, -0,0, -255,104, -255,255, -255,78, -0,0, -0,0, -0,0, -0,0, -255,27, -255,253, -255,175, -0,0, -0,0, -255,104, -255,255, -255,78, -0,0, -0,0, -0,0, -0,0, -255,29, -255,254, -255,203, -0,0, -0,0, -0,0, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,184, -255,118, -255,150, -255,221, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,52, -255,255, -255,215, -255,117, -255,176, -255,252, -255,255, -255,65, -0,0, -0,0, -0,0, -0,0, -255,52, -255,255, -255,215, -255,117, -255,176, -255,252, -255,255, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,212, -255,208, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,110, -255,160, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,196, -255,61, -255,161, -255,116, -255,191, -255,255, -255,103, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,251, -255,89, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,112, -0,0, -0,0, -0,0, -255,240, -255,206, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,112, -0,0, -0,0, -0,0, -255,240, -255,206, -0,0, -0,0, -0,0, -0,0, -0,0, -255,45, -255,253, -255,219, -255,124, -255,25, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,207, -255,244, -255,187, -255,29, -0,0, -0,0, -0,0, -0,0, -255,102, -255,124, -0,0, -255,34, -255,128, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,243, -255,150, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,104, -255,255, -255,218, -255,91, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,109, -0,0, -0,0, -0,0, -0,0, -255,71, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,184, -255,118, -255,150, -255,221, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,141, -255,230, -255,250, -255,222, -255,132, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,118, -255,230, -255,245, -255,170, -255,123, -255,255, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -255,118, -255,230, -255,245, -255,170, -255,123, -255,255, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,225, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,196, -255,79, -255,224, -255,249, -255,227, -255,134, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,184, -255,66, -255,44, -255,250, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,112, -0,0, -0,0, -0,0, -255,241, -255,206, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,112, -0,0, -0,0, -0,0, -255,241, -255,206, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,225, -255,142, -255,32, -255,181, -255,180, -0,0, -0,0, -0,0, -0,0, -255,204, -255,248, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,230, -255,60, -255,205, -255,172, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,255, -255,255, -255,255, -255,255, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,104, -255,235, -255,255, -255,227, -255,85, -0,0, -0,0, -0,0, -0,0, -0,0, -255,73, -255,255, -255,173, -255,76, -255,76, -255,76, -255,76, -255,33, -0,0, -0,0, -0,0, -0,0, -255,73, -255,255, -255,173, -255,76, -255,76, -255,76, -255,76, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,141, -255,230, -255,250, -255,222, -255,132, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,151, -255,245, -255,247, -255,168, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,255, -255,176, -0,0, -0,0, -255,51, -255,255, -255,161, -0,0, -0,0, -0,0, -0,0, -255,38, -255,255, -255,176, -0,0, -0,0, -255,51, -255,255, -255,161, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,79, -255,219, -255,246, -255,185, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,238, -255,171, -0,0, -0,0, -0,0, -0,0, -255,25, -255,255, -255,44, -0,0, -255,89, -255,236, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,104, -255,104, -255,104, -255,104, -255,104, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,98, -255,227, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -255,29, -255,254, -255,203, -0,0, -0,0, -0,0, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,254, -255,203, -0,0, -0,0, -0,0, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,163, -255,233, -255,242, -255,188, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,255, -255,163, -255,125, -255,227, -255,250, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,255, -255,163, -255,125, -255,227, -255,250, -255,41, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,255, -255,255, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,88, -255,35, -255,215, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,79, -255,255, -255,81, -0,0, -0,0, -0,0, -0,0, -255,25, -255,255, -255,44, -0,0, -255,89, -255,237, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,96, -255,51, -0,0, -0,0, -255,40, -255,255, -255,175, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,184, -255,118, -255,150, -255,221, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,184, -255,118, -255,150, -255,221, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,197, -255,248, -255,129, -255,120, -255,237, -255,229, -255,7, -0,0, -0,0, -0,0, -0,0, -255,72, -255,140, -255,140, -255,140, -255,140, -255,140, -255,140, -255,126, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,151, -255,235, -255,249, -255,203, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,151, -255,235, -255,249, -255,203, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,55, -255,165, -255,255, -255,132, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,103, -255,227, -255,254, -255,255, -255,143, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,168, -255,240, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -255,226, -255,139, -255,28, -255,178, -255,183, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,31, -255,255, -255,177, -0,0, -0,0, -255,26, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,141, -255,230, -255,250, -255,222, -255,132, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,141, -255,230, -255,250, -255,222, -255,132, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,68, -0,0, -0,0, -255,145, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,253, -255,97, -255,1, -255,184, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,245, -255,158, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,208, -255,244, -255,191, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,194, -255,255, -255,162, -255,122, -255,208, -255,255, -255,99, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,103, -255,4, -255,28, -255,103, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -255,168, -255,250, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,161, -255,246, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,193, -255,239, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,209, -255,173, -255,174, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,21, -255,255, -255,94, -255,61, -255,237, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,158, -255,237, -255,255, -255,219, -255,111, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,206, -255,135, -255,3, -255,206, -255,135, -0,0, -0,0, -0,0, -0,0, -0,0, -255,73, -255,255, -255,110, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,247, -255,254, -255,113, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,249, -255,210, -255,55, -255,28, -255,152, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,110, -255,160, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,219, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,139, -255,243, -255,198, -255,173, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,181, -255,231, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,124, -0,0, -255,34, -255,128, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,251, -255,70, -255,53, -255,251, -255,70, -0,0, -0,0, -0,0, -0,0, -255,3, -255,231, -255,205, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,115, -255,243, -255,169, -255,217, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,107, -0,0, -0,0, -255,172, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,250, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,248, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,97, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,208, -0,0, -255,188, -255,208, -0,0, -0,0, -0,0, -0,0, -0,0, -255,139, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,219, -255,155, -255,57, -255,255, -255,67, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,52, -255,255, -255,215, -255,117, -255,176, -255,252, -255,255, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,124, -0,0, -255,34, -255,128, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,243, -255,150, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,114, -255,232, -255,241, -255,148, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,105, -255,255, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,101, -255,215, -255,246, -255,218, -255,113, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,104, -255,30, -255,104, -255,3, -0,0, -0,0, -0,0, -0,0, -255,252, -255,207, -255,143, -255,244, -255,232, -255,117, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,251, -255,68, -255,53, -255,251, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,255, -255,139, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,69, -255,255, -255,55, -0,0, -255,209, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,118, -255,230, -255,245, -255,170, -255,123, -255,255, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,248, -0,0, -255,68, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -255,128, -255,230, -255,60, -255,205, -255,172, -255,3, -0,0, -0,0, -0,0, -0,0, -255,20, -255,219, -255,100, -255,89, -255,255, -255,51, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,194, -255,220, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,213, -255,134, -255,206, -255,255, -255,99, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,195, -255,145, -255,195, -255,141, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,255, -255,185, -255,132, -255,224, -255,255, -255,77, -0,0, -0,0, -0,0, -0,0, -255,3, -255,206, -255,133, -255,3, -255,206, -255,133, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,205, -255,230, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,45, -255,80, -0,0, -0,0, -255,46, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,114, -255,247, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,254, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,123, -255,208, -255,36, -0,0, -255,25, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,133, -255,226, -255,145, -255,226, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,214, -255,1, -0,0, -255,44, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -255,28, -255,103, -255,4, -255,28, -255,103, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,110, -255,255, -255,73, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,173, -255,232, -255,255, -255,255, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,91, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,245, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,118, -255,255, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,255, -255,186, -0,0, -0,0, -0,0, -0,0, -255,21, -255,251, -255,141, -255,251, -255,119, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,204, -0,0, -0,0, -0,0, -255,225, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,250, -255,168, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,226, -255,255, -255,255, -255,255, -255,255, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,90, -255,204, -255,255, -255,152, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,165, -255,245, -255,85, -255,28, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,207, -255,208, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,88, -255,235, -255,210, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,116, -255,124, -255,124, -255,124, -255,124, -255,124, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,40, -255,40, -255,40, -255,40, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,143, -255,255, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -255,131, -255,226, -255,143, -255,226, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,204, -0,0, -0,0, -0,0, -255,217, -255,234, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,247, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,255, -255,255, -255,255, -255,255, -255,255, -255,116, -0,0, -0,0, -0,0, -0,0, -255,15, -255,117, -255,227, -255,255, -255,217, -255,120, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,244, -255,244, -255,244, -255,244, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,241, -255,49, -255,120, -255,170, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,255, -255,255, -255,255, -255,255, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,255, -255,255, -255,255, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,114, -255,255, -255,175, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,195, -255,145, -255,195, -255,141, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,211, -0,0, -0,0, -255,24, -255,250, -255,198, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,102, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,216, -0,0, -0,0, -255,12, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -255,129, -255,255, -255,255, -255,255, -255,255, -255,255, -255,116, -0,0, -0,0, -0,0, -0,0, -255,136, -255,255, -255,200, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,224, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,238, -255,70, -255,134, -255,165, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,255, -255,184, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,104, -255,30, -255,104, -255,3, -0,0, -0,0, -0,0, -0,0, -255,252, -255,255, -255,171, -255,121, -255,210, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,236, -255,197, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,229, -255,186, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,216, -0,0, -0,0, -255,12, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -255,99, -255,255, -255,255, -255,255, -255,255, -255,255, -255,116, -0,0, -0,0, -0,0, -0,0, -255,71, -255,219, -255,255, -255,208, -255,111, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,157, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,76, -255,212, -255,189, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,122, -255,255, -255,77, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,210, -255,149, -255,236, -255,235, -255,132, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,147, -255,255, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,193, -255,190, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,216, -0,0, -0,0, -255,12, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -255,18, -255,234, -255,255, -255,255, -255,255, -255,255, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,81, -255,195, -255,255, -255,249, -255,114, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,255, -255,255, -255,255, -255,255, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,216, -0,0, -0,0, -255,12, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,195, -255,249, -255,255, -255,255, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,168, -255,147, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,255, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,157, -255,160, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -255,184, -255,128, -0,0, -0,0, -0,0, -0,0, -255,255, -255,172, -0,0, -0,0, -0,0, -0,0, -255,120, -255,106, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,120, -255,120, -255,120, -255,120, -255,120, -255,45, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,92, -255,180, -255,53, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,218, -0,0, -0,0, -255,12, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,97, -255,255, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,207, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,168, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,224, -255,228, -0,0, -0,0, -0,0, -0,0, -255,162, -255,183, -0,0, -0,0, -0,0, -0,0, -255,184, -255,128, -0,0, -0,0, -0,0, -0,0, -255,255, -255,172, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -255,175, -255,152, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,243, -255,6, -0,0, -255,24, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,255, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,153, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,128, -0,0, -0,0, -0,0, -0,0, -255,255, -255,172, -0,0, -0,0, -0,0, -0,0, -255,15, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,139, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,255, -255,179, -255,127, -255,209, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,255, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,83, -255,254, -255,45, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,168, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,128, -0,0, -0,0, -0,0, -0,0, -255,255, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -255,224, -255,232, -0,0, -0,0, -0,0, -0,0, -255,224, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,248, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,139, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,229, -255,186, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,241, -255,221, -255,247, -255,192, -255,245, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,255, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,108, -255,151, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,153, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,128, -0,0, -0,0, -0,0, -0,0, -255,255, -255,172, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -255,224, -255,232, -0,0, -0,0, -0,0, -0,0, -255,157, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,249, -255,151, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,193, -255,190, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,216, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -255,83, -255,254, -255,45, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -255,224, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,60, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,249, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,246, -255,108, -255,108, -255,108, -255,108, -255,91, -0,0, -0,0, -0,0, -0,0, -255,240, -255,216, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,255, -255,148, -255,5, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,255, -255,244, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,116, -255,112, -0,0, -0,0, -0,0, -0,0, -255,26, -255,212, -255,208, -255,9, -0,0, -0,0, -0,0, -0,0, -255,7, -255,94, -255,196, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -255,108, -255,151, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -255,224, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,60, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -255,54, -255,112, -255,112, -255,112, -255,40, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,229, -255,186, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,147, -255,236, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,76, -255,141, -255,206, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,255, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,255, -255,255, -255,216, -0,0, -0,0, -0,0, -0,0, -255,240, -255,216, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,65, -255,255, -255,74, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,217, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,225, -255,146, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,248, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -255,224, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,216, -255,48, -255,255, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,112, -255,112, -255,112, -255,40, -0,0, -0,0, -0,0, -0,0, -255,2, -255,193, -255,190, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,52, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,255, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,220, -255,228, -255,24, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,125, -255,248, -0,0, -0,0, -0,0, -0,0, -255,132, -255,205, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -255,224, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,101, -255,40, -255,174, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,150, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,255, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,55, -255,80, -255,170, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,116, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,212, -255,208, -255,9, -0,0, -0,0, -0,0, -0,0, -255,4, -255,61, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,248, -0,0, -0,0, -0,0, -0,0, -255,117, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -255,224, -255,232, -0,0, -0,0, -0,0, -0,0, -255,157, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,255, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,190, -255,255, -255,107, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,255, -255,150, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,225, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,236, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,248, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,224, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,198, -255,244, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,135, -255,255, -255,156, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,236, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,236, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,255, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,240, -255,198, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,212, -255,208, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,174, -0,0, -0,0, -0,0, -0,0, -255,163, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,207, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,236, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,161, -255,166, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,108, -255,255, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,225, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,50, -255,246, -255,110, -0,0, -0,0, -0,0, -0,0, -255,94, -255,250, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,255, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,236, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,224, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,130, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,158, -255,255, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,211, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,172, -255,225, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,236, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,252, -255,162, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,127, -255,255, -255,176, -255,67, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,127, -255,255, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,255, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,255, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,236, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,245, -255,64, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,195, -255,248, -255,136, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,252, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,174, -255,233, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,224, -255,200, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,236, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,144, -255,147, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,62, -255,245, -255,162, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,229, -255,181, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,168, -255,251, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,236, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,144, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,161, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,147, -255,255, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,217, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,228, -255,226, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -255,13, -255,255, -255,147, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,131, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,255, -255,244, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,148, -255,255, -255,171, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,161, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,147, -255,255, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,134, -255,246, -255,186, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,230, -255,181, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,251, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,174, -255,233, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,201, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,255, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,110, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,212, -255,179, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,163, -255,226, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,247, -255,103, -0,0, -0,0, -0,0, -0,0, -255,87, -255,249, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,176, -0,0, -0,0, -0,0, -0,0, -255,163, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -46,0, -0,0, -142,4, -0,0, -160,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,207, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,52, -0,0, -0,0, -0,0, -0,0, -255,147, -255,255, -255,73, -0,0, -0,0, -0,0, -255,217, -255,235, -255,1, -0,0, -0,0, -255,50, -255,255, -255,171, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,154, -255,227, -255,248, -255,210, -255,82, -255,84, -255,215, -255,248, -255,217, -255,119, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,201, -255,128, -255,231, -255,247, -255,183, -255,20, -255,110, -255,228, -255,237, -255,149, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,58, -255,177, -255,237, -255,247, -255,211, -255,119, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,147, -255,255, -255,54, -0,0, -0,0, -255,222, -255,202, -0,0, -0,0, -255,74, -255,255, -255,127, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,20, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,20, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,152, -255,26, -0,0, -255,142, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,7, -0,0, -255,39, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,152, -255,26, -0,0, -255,142, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,181, -255,255, -255,74, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,223, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,151, -255,229, -255,249, -255,220, -255,132, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,31, -255,61, -0,0, -0,0, -0,0, -0,0, -0,0, -255,65, -255,223, -255,242, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,255, -255,255, -255,255, -255,159, -255,140, -255,140, -255,140, -255,140, -255,28, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,125, -0,0, -0,0, -255,26, -255,255, -255,255, -255,46, -0,0, -0,0, -255,101, -255,255, -255,113, -0,0, -0,0, -0,0, -0,0, -0,0, -255,197, -255,255, -255,190, -255,145, -255,230, -255,255, -255,255, -255,205, -255,144, -255,198, -255,255, -255,126, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,254, -255,219, -255,158, -255,226, -255,255, -255,214, -255,225, -255,154, -255,223, -255,255, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,110, -255,225, -255,95, -255,21, -255,8, -255,52, -255,169, -255,202, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -255,82, -255,255, -255,108, -0,0, -255,36, -255,255, -255,253, -255,18, -0,0, -255,126, -255,255, -255,61, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,230, -255,221, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,200, -255,247, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,255, -255,44, -0,0, -255,240, -255,244, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,249, -255,223, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,138, -255,255, -255,220, -255,92, -255,188, -255,139, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,255, -255,44, -0,0, -255,240, -255,244, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,255, -255,152, -0,0, -0,0, -0,0, -0,0, -255,112, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,223, -255,255, -255,199, -255,158, -255,212, -255,255, -255,201, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,151, -255,229, -255,247, -255,214, -255,123, -255,198, -255,99, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,145, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -26,0, -0,0, -26,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,224, -255,240, -255,201, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,177, -0,0, -0,0, -255,91, -255,255, -255,255, -255,112, -0,0, -0,0, -255,153, -255,255, -255,55, -0,0, -0,0, -0,0, -0,0, -255,7, -255,183, -255,173, -255,1, -0,0, -255,87, -255,255, -255,222, -255,6, -0,0, -255,5, -255,234, -255,227, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,241, -255,15, -0,0, -255,47, -255,255, -255,248, -255,27, -0,0, -255,43, -255,255, -255,200, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,218, -255,23, -255,88, -255,221, -255,238, -255,158, -255,8, -255,132, -255,183, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,253, -255,162, -0,0, -255,105, -255,247, -255,254, -255,85, -0,0, -255,178, -255,245, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,215, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,200, -255,207, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,245, -255,70, -255,144, -255,234, -255,47, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,233, -255,64, -255,81, -255,219, -255,216, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,249, -255,228, -0,0, -0,0, -0,0, -0,0, -255,190, -255,255, -255,51, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,133, -0,0, -0,0, -255,3, -255,162, -255,255, -255,134, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,223, -255,255, -255,199, -255,157, -255,213, -255,255, -255,246, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,255, -255,44, -0,0, -0,0, -255,107, -255,143, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,116, -255,255, -255,126, -255,173, -255,255, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,230, -255,229, -0,0, -0,0, -255,156, -255,241, -255,220, -255,177, -0,0, -0,0, -255,204, -255,247, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,192, -255,237, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,5, -0,0, -0,0, -0,0, -0,0, -255,255, -255,232, -0,0, -0,0, -255,3, -255,254, -255,231, -0,0, -0,0, -255,2, -255,254, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -255,209, -255,62, -255,39, -255,247, -255,78, -255,38, -255,213, -255,117, -255,1, -255,203, -255,67, -0,0, -0,0, -0,0, -0,0, -0,0, -255,206, -255,216, -0,0, -255,175, -255,181, -255,205, -255,154, -0,0, -255,230, -255,185, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,151, -255,229, -255,249, -255,220, -255,133, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,255, -255,51, -0,0, -0,0, -255,16, -255,251, -255,220, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,236, -255,7, -0,0, -0,0, -0,0, -255,19, -255,249, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,133, -0,0, -0,0, -255,13, -255,241, -255,255, -255,134, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,255, -255,44, -0,0, -255,32, -255,242, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,17, -255,238, -255,236, -255,13, -255,162, -255,255, -255,67, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,173, -255,255, -255,25, -0,0, -255,221, -255,178, -255,152, -255,239, -255,3, -255,6, -255,249, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -255,49, -255,250, -255,239, -255,114, -255,80, -255,132, -255,255, -255,211, -255,88, -255,88, -255,88, -255,88, -255,88, -255,2, -0,0, -0,0, -0,0, -0,0, -255,255, -255,232, -0,0, -0,0, -0,0, -255,252, -255,232, -0,0, -0,0, -0,0, -255,252, -255,236, -0,0, -0,0, -0,0, -0,0, -255,34, -255,217, -0,0, -255,123, -255,183, -0,0, -0,0, -255,107, -255,136, -0,0, -255,102, -255,149, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,254, -255,18, -255,240, -255,108, -255,132, -255,223, -255,26, -255,255, -255,119, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,223, -255,255, -255,199, -255,158, -255,212, -255,255, -255,203, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,129, -0,0, -0,0, -255,89, -255,255, -255,133, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,236, -255,7, -0,0, -0,0, -255,129, -255,180, -255,249, -255,231, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,255, -255,44, -0,0, -255,187, -255,152, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,138, -255,255, -255,118, -0,0, -255,152, -255,255, -255,255, -255,255, -255,255, -255,255, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,115, -255,255, -255,76, -255,30, -255,255, -255,112, -255,86, -255,255, -255,53, -255,51, -255,255, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -255,129, -255,255, -255,113, -0,0, -0,0, -255,76, -255,255, -255,220, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,232, -0,0, -0,0, -0,0, -255,252, -255,232, -0,0, -0,0, -0,0, -255,252, -255,236, -0,0, -0,0, -0,0, -0,0, -255,70, -255,173, -0,0, -255,152, -255,154, -0,0, -0,0, -0,0, -0,0, -0,0, -255,58, -255,185, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,255, -255,124, -255,255, -255,36, -255,59, -255,255, -255,115, -255,255, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,143, -255,254, -255,205, -255,240, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,133, -0,0, -0,0, -255,3, -255,162, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,247, -255,206, -0,0, -0,0, -255,166, -255,255, -255,47, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,194, -0,0, -0,0, -255,28, -255,237, -255,30, -255,211, -255,255, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,255, -255,44, -255,99, -255,226, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,247, -255,232, -255,10, -0,0, -255,141, -255,255, -255,180, -255,140, -255,140, -255,140, -255,78, -0,0, -0,0, -225,4, -0,0, -92,182, -0,0, -255,57, -255,255, -255,128, -255,95, -255,255, -255,45, -255,21, -255,254, -255,118, -255,103, -255,255, -255,81, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,102, -0,0, -0,0, -255,132, -255,255, -255,255, -255,67, -0,0, -0,0, -255,2, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,232, -0,0, -0,0, -0,0, -255,252, -255,232, -0,0, -0,0, -0,0, -255,252, -255,236, -0,0, -0,0, -0,0, -0,0, -255,70, -255,174, -0,0, -255,152, -255,154, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,251, -255,236, -255,220, -0,0, -255,3, -255,238, -255,230, -255,240, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,143, -255,254, -255,205, -255,240, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,143, -255,254, -255,205, -255,240, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,230, -255,197, -255,99, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,143, -255,254, -255,205, -255,240, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,143, -255,254, -255,205, -255,240, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,236, -255,7, -0,0, -0,0, -0,0, -255,19, -255,249, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,175, -255,255, -255,28, -255,4, -255,239, -255,216, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -0,0, -255,164, -255,132, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,239, -255,72, -255,89, -255,221, -255,246, -255,193, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,161, -255,255, -255,224, -255,176, -255,176, -255,217, -255,255, -255,97, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,248, -255,180, -255,160, -255,233, -255,1, -0,0, -255,210, -255,184, -255,154, -255,255, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,255, -255,231, -255,129, -255,175, -255,255, -255,219, -255,255, -255,242, -255,155, -255,144, -255,216, -255,158, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,232, -0,0, -0,0, -0,0, -255,252, -255,232, -0,0, -0,0, -0,0, -255,252, -255,236, -0,0, -0,0, -0,0, -0,0, -255,33, -255,218, -0,0, -255,123, -255,183, -0,0, -0,0, -255,109, -255,133, -0,0, -255,103, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,199, -255,255, -255,148, -0,0, -0,0, -255,169, -255,255, -255,178, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,230, -255,197, -255,99, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,230, -255,197, -255,99, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,114, -255,20, -255,252, -255,168, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,230, -255,197, -255,99, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,230, -255,197, -255,99, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,255, -255,105, -255,65, -255,255, -255,129, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,195, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -255,54, -255,228, -255,11, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,160, -255,9, -255,247, -255,153, -255,62, -255,247, -255,141, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,253, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,107, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,198, -255,232, -255,225, -255,168, -0,0, -0,0, -255,144, -255,244, -255,211, -255,221, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,99, -255,219, -255,249, -255,220, -255,128, -255,8, -255,89, -255,206, -255,248, -255,241, -255,185, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,232, -0,0, -0,0, -0,0, -255,252, -255,232, -0,0, -0,0, -0,0, -255,252, -255,236, -0,0, -0,0, -0,0, -0,0, -0,0, -255,207, -255,63, -255,40, -255,247, -255,76, -255,37, -255,212, -255,116, -255,1, -255,204, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,133, -255,255, -255,76, -0,0, -0,0, -255,96, -255,255, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,114, -255,20, -255,252, -255,168, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,114, -255,20, -255,252, -255,168, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,155, -255,255, -255,31, -0,0, -255,190, -255,245, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,114, -255,20, -255,252, -255,168, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,114, -255,20, -255,252, -255,168, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,246, -255,183, -255,142, -255,255, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,237, -255,7, -0,0, -0,0, -0,0, -255,18, -255,249, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,255, -255,191, -0,0, -255,198, -255,96, -0,0, -0,0, -255,216, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,230, -255,17, -0,0, -0,0, -0,0, -255,49, -255,253, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,255, -255,98, -0,0, -0,0, -0,0, -255,111, -255,255, -255,118, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,255, -255,102, -0,0, -0,0, -255,78, -255,255, -255,255, -255,164, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,219, -255,23, -255,90, -255,222, -255,239, -255,161, -255,9, -255,132, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,155, -255,255, -255,31, -0,0, -255,190, -255,245, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,155, -255,255, -255,31, -0,0, -255,190, -255,245, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,238, -255,203, -0,0, -0,0, -255,107, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,155, -255,255, -255,31, -0,0, -255,190, -255,245, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,155, -255,255, -255,31, -0,0, -255,190, -255,245, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,172, -255,246, -255,216, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,131, -0,0, -0,0, -255,2, -255,157, -255,255, -255,139, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,245, -255,236, -255,96, -255,204, -255,1, -0,0, -255,18, -255,249, -255,233, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,235, -255,80, -0,0, -0,0, -0,0, -255,89, -255,243, -255,156, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,255, -255,226, -255,5, -0,0, -0,0, -0,0, -255,100, -255,255, -255,194, -255,136, -255,136, -255,136, -255,136, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,255, -255,35, -0,0, -0,0, -255,15, -255,252, -255,255, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,225, -255,95, -255,20, -255,7, -255,52, -255,169, -255,203, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,238, -255,203, -0,0, -0,0, -255,107, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,238, -255,203, -0,0, -0,0, -255,107, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,78, -255,255, -255,210, -255,152, -255,152, -255,171, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,238, -255,203, -0,0, -0,0, -255,107, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,238, -255,203, -0,0, -0,0, -255,107, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,195, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,255, -255,255, -255,125, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,223, -255,255, -255,198, -255,157, -255,210, -255,255, -255,235, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,159, -255,255, -255,250, -255,61, -0,0, -255,2, -255,157, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,87, -255,160, -0,0, -0,0, -255,3, -255,149, -255,254, -255,143, -255,36, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,204, -255,255, -255,109, -0,0, -0,0, -0,0, -0,0, -255,89, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,255, -255,225, -0,0, -0,0, -0,0, -0,0, -255,201, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,178, -255,238, -255,248, -255,212, -255,120, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,78, -255,255, -255,210, -255,152, -255,152, -255,171, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,78, -255,255, -255,210, -255,152, -255,152, -255,171, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,248, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,78, -255,255, -255,210, -255,152, -255,152, -255,171, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,78, -255,255, -255,210, -255,152, -255,152, -255,171, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,237, -255,7, -0,0, -0,0, -0,0, -255,18, -255,249, -255,233, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,244, -255,255, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,152, -255,230, -255,250, -255,222, -255,219, -255,255, -255,143, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,229, -255,255, -255,193, -255,155, -255,210, -255,255, -255,204, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,255, -255,255, -255,255, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,248, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,248, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,245, -255,205, -0,0, -0,0, -0,0, -0,0, -255,113, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,248, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,248, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,131, -0,0, -0,0, -255,2, -255,157, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,17, -255,200, -255,255, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,236, -255,152, -255,227, -255,249, -255,222, -255,135, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,228, -255,248, -255,208, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,58, -255,177, -255,237, -255,247, -255,211, -255,119, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,82, -255,222, -255,240, -255,158, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,245, -255,205, -0,0, -0,0, -0,0, -0,0, -255,113, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,245, -255,205, -0,0, -0,0, -0,0, -0,0, -255,113, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,127, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,245, -255,205, -0,0, -0,0, -0,0, -0,0, -255,113, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,245, -255,205, -0,0, -0,0, -0,0, -0,0, -255,113, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,223, -255,255, -255,198, -255,157, -255,210, -255,255, -255,204, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,105, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,79, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,189, -255,122, -255,57, -255,230, -255,168, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,110, -255,225, -255,95, -255,21, -255,8, -255,52, -255,169, -255,202, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,245, -255,129, -255,63, -255,240, -255,105, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,127, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,127, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,255, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,251, -255,20, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,127, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,127, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,152, -255,230, -255,250, -255,222, -255,135, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,180, -255,255, -255,243, -255,45, -0,0, -0,0, -0,0, -255,107, -255,143, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,218, -255,43, -255,255, -255,255, -255,243, -255,178, -255,18, -255,132, -255,183, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,255, -255,30, -0,0, -255,186, -255,152, -0,0, -255,45, -255,198, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,255, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,251, -255,20, -0,0, -0,0, -0,0, -0,0, -255,179, -255,255, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,251, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,255, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,251, -255,20, -0,0, -0,0, -0,0, -0,0, -255,179, -255,255, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,251, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,76, -255,177, -255,232, -255,250, -255,233, -255,180, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,21, -255,206, -255,183, -0,0, -0,0, -255,32, -255,242, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,209, -255,62, -255,20, -255,255, -255,38, -255,23, -255,185, -255,137, -255,1, -255,203, -255,67, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,223, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -255,30, -255,255, -255,69, -255,6, -255,219, -255,129, -255,3, -255,203, -255,133, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,255, -255,255, -255,248, -255,209, -255,111, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,7, -0,0, -255,39, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,249, -255,223, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,164, -255,239, -255,123, -255,50, -255,30, -255,49, -255,116, -255,232, -255,162, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,224, -255,126, -255,57, -255,213, -255,189, -0,0, -0,0, -255,187, -255,152, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,217, -0,0, -255,20, -255,255, -255,28, -255,20, -255,183, -255,134, -0,0, -255,102, -255,149, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,255, -255,58, -0,0, -0,0, -0,0, -0,0, -255,55, -255,255, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,248, -255,234, -255,223, -255,25, -255,120, -255,213, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,181, -255,136, -255,156, -255,223, -255,255, -255,176, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,138, -255,255, -255,220, -255,92, -255,188, -255,139, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,245, -255,70, -255,144, -255,234, -255,47, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,154, -255,222, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,221, -255,122, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,118, -255,228, -255,246, -255,196, -255,44, -0,0, -255,99, -255,226, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,70, -255,173, -0,0, -255,20, -255,255, -255,255, -255,255, -255,240, -255,22, -0,0, -255,58, -255,185, -0,0, -0,0, -0,0, -0,0, -255,192, -255,251, -255,248, -255,147, -0,0, -0,0, -0,0, -0,0, -255,144, -255,249, -255,250, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,61, -255,10, -255,39, -255,244, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,96, -0,0, -0,0, -255,12, -255,190, -255,255, -255,108, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,233, -255,64, -255,81, -255,219, -255,216, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,253, -255,53, -0,0, -255,49, -255,206, -255,250, -255,214, -255,93, -0,0, -255,75, -255,241, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,239, -255,72, -0,0, -255,127, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -255,70, -255,174, -0,0, -255,20, -255,255, -255,38, -255,21, -255,196, -255,121, -0,0, -255,59, -255,184, -0,0, -0,0, -0,0, -0,0, -255,192, -255,251, -255,173, -255,233, -255,3, -0,0, -0,0, -255,2, -255,231, -255,175, -255,248, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,196, -255,140, -255,16, -255,63, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,163, -255,255, -255,115, -0,0, -0,0, -0,0, -0,0, -255,135, -255,255, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,96, -0,0, -0,0, -0,0, -255,43, -255,255, -255,210, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,151, -255,229, -255,249, -255,220, -255,133, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,177, -0,0, -255,12, -255,232, -255,191, -255,68, -255,173, -255,222, -0,0, -255,2, -255,234, -255,77, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,160, -0,0, -255,77, -255,249, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,218, -0,0, -255,20, -255,255, -255,28, -0,0, -255,141, -255,161, -0,0, -255,103, -255,148, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,86, -255,255, -255,71, -0,0, -0,0, -255,67, -255,255, -255,85, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,218, -255,59, -255,238, -255,231, -255,250, -255,114, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,82, -255,212, -255,245, -255,199, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,252, -255,227, -255,5, -0,0, -0,0, -255,14, -255,240, -255,246, -255,25, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,201, -255,246, -255,189, -255,48, -0,0, -0,0, -255,107, -255,93, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,108, -0,0, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -255,143, -255,255, -255,173, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -255,241, -255,253, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,151, -255,229, -255,249, -255,220, -255,133, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,223, -255,255, -255,199, -255,158, -255,212, -255,255, -255,203, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,245, -255,94, -0,0, -255,118, -255,252, -255,25, -0,0, -255,158, -255,201, -0,0, -0,0, -255,191, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,230, -255,17, -255,40, -255,239, -255,103, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,207, -255,63, -255,20, -255,255, -255,28, -0,0, -255,130, -255,177, -255,1, -255,204, -255,65, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,21, -255,239, -255,160, -0,0, -0,0, -255,157, -255,240, -255,19, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,243, -255,61, -255,166, -255,189, -255,1, -255,106, -255,246, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,250, -255,202, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,251, -255,229, -255,148, -255,235, -255,230, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,161, -255,255, -255,95, -0,0, -0,0, -255,117, -255,255, -255,142, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,199, -255,235, -255,164, -255,239, -255,248, -255,122, -255,87, -255,243, -255,136, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,235, -255,16, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -255,71, -255,254, -255,224, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,255, -255,255, -255,255, -255,255, -255,104, -0,0, -0,0, -255,220, -255,255, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,223, -255,255, -255,199, -255,158, -255,212, -255,255, -255,203, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,133, -0,0, -0,0, -255,3, -255,162, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,255, -255,43, -0,0, -255,187, -255,205, -0,0, -0,0, -255,180, -255,179, -0,0, -0,0, -255,178, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,235, -255,80, -255,14, -255,216, -255,151, -255,56, -255,255, -255,125, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,219, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,23, -255,155, -255,241, -255,8, -255,7, -255,239, -255,156, -255,20, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,148, -0,0, -255,189, -255,150, -0,0, -255,66, -255,255, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,29, -255,188, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,113, -255,255, -255,89, -0,0, -255,105, -255,255, -255,51, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,251, -255,211, -255,1, -255,6, -255,229, -255,245, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,217, -255,87, -0,0, -255,28, -255,193, -255,255, -255,255, -255,224, -255,24, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,255, -255,141, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -255,21, -255,231, -255,251, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,60, -255,172, -255,255, -255,148, -255,84, -255,34, -0,0, -0,0, -255,220, -255,255, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,133, -0,0, -0,0, -255,3, -255,162, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,236, -255,7, -0,0, -0,0, -0,0, -255,19, -255,249, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,255, -255,20, -0,0, -255,232, -255,169, -0,0, -0,0, -255,202, -255,157, -0,0, -0,0, -255,197, -255,111, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,87, -255,160, -0,0, -255,89, -255,255, -255,255, -255,255, -255,255, -255,255, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,225, -255,95, -255,20, -255,7, -255,52, -255,169, -255,203, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,32, -255,64, -255,255, -255,83, -255,80, -255,255, -255,64, -255,28, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,199, -255,12, -0,0, -255,143, -255,218, -255,52, -255,153, -255,225, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,244, -255,190, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,110, -255,255, -255,106, -0,0, -255,163, -255,249, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,158, -255,255, -255,75, -255,99, -255,255, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,60, -255,77, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,183, -255,249, -255,36, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -255,178, -255,255, -255,118, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -255,240, -255,253, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,236, -255,7, -0,0, -0,0, -0,0, -255,19, -255,249, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,255, -255,19, -0,0, -255,234, -255,171, -0,0, -0,0, -255,225, -255,138, -0,0, -255,18, -255,245, -255,52, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,178, -255,238, -255,248, -255,212, -255,120, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -255,1, -255,226, -255,173, -255,170, -255,226, -255,1, -255,32, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,178, -255,244, -255,213, -255,59, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,245, -255,227, -255,180, -255,254, -255,107, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,251, -255,195, -255,216, -255,243, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,55, -255,239, -255,175, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -255,105, -255,255, -255,184, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,96, -0,0, -0,0, -0,0, -255,41, -255,255, -255,211, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,152, -255,136, -255,136, -255,136, -255,136, -255,227, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,47, -255,255, -255,43, -0,0, -255,181, -255,239, -255,90, -255,151, -255,245, -255,173, -255,33, -255,174, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -255,137, -255,248, -255,246, -255,137, -0,0, -255,32, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,159, -255,255, -255,254, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,255, -255,134, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -255,113, -255,255, -255,64, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,255, -255,255, -255,252, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,96, -0,0, -0,0, -255,10, -255,186, -255,255, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,247, -255,101, -0,0, -255,42, -255,214, -255,240, -255,134, -255,74, -255,236, -255,239, -255,162, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -16,0, -0,0, -26,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -255,45, -255,255, -255,255, -255,45, -0,0, -255,32, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,130, -255,255, -255,238, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,255, -255,245, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -255,5, -255,219, -255,206, -255,2, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,176, -255,203, -255,255, -255,134, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,178, -255,132, -255,151, -255,220, -255,255, -255,182, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,195, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,206, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -255,210, -255,209, -0,0, -0,0, -255,32, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,143, -255,254, -255,205, -255,240, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,255, -255,199, -255,17, -255,211, -255,253, -255,63, -255,27, -255,255, -255,122, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -255,80, -255,255, -255,97, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -255,18, -255,230, -255,253, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,255, -255,255, -255,248, -255,211, -255,115, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,195, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,237, -255,7, -0,0, -0,0, -0,0, -255,18, -255,249, -255,233, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,247, -255,139, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,230, -255,197, -255,99, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,121, -255,255, -255,114, -0,0, -255,40, -255,244, -255,228, -255,134, -255,255, -255,75, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,160, -255,234, -255,249, -255,220, -255,136, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -255,191, -255,230, -255,208, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -255,77, -255,255, -255,222, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,237, -255,7, -0,0, -0,0, -0,0, -255,18, -255,249, -255,233, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,131, -0,0, -0,0, -255,2, -255,157, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,77, -255,247, -255,191, -255,87, -255,46, -255,51, -255,95, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,65, -255,223, -255,242, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,114, -255,20, -255,252, -255,168, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,255, -255,159, -0,0, -0,0, -255,92, -255,255, -255,255, -255,216, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,227, -255,255, -255,184, -255,148, -255,209, -255,255, -255,200, -255,4, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -255,49, -255,253, -255,255, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -255,161, -255,255, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,131, -0,0, -0,0, -255,2, -255,157, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,223, -255,255, -255,198, -255,157, -255,210, -255,255, -255,204, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,149, -255,219, -255,247, -255,238, -255,201, -255,99, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,145, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -49,0, -0,0, -79,182, -72,0, -79,182, -72,0, -48,5, -0,0, -48,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,207, -255,136, -255,96, -255,210, -255,249, -255,228, -255,135, -255,77, -255,237, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,155, -255,255, -255,31, -0,0, -255,190, -255,245, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,223, -255,255, -255,177, -255,138, -255,174, -255,252, -255,255, -255,169, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,255, -255,121, -0,0, -0,0, -255,2, -255,181, -255,255, -255,87, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -255,157, -255,255, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -255,16, -255,229, -255,255, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,223, -255,255, -255,198, -255,157, -255,210, -255,255, -255,204, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,152, -255,230, -255,250, -255,222, -255,135, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,255, -255,44, -0,0, -0,0, -255,107, -255,143, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,174, -255,255, -255,255, -255,180, -255,123, -255,153, -255,246, -255,255, -255,231, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,238, -255,203, -0,0, -0,0, -255,107, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,165, -255,229, -255,246, -255,216, -255,139, -255,180, -255,255, -255,127, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,239, -255,7, -0,0, -0,0, -0,0, -255,86, -255,244, -255,129, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -255,25, -255,243, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -255,74, -255,255, -255,236, -255,25, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,152, -255,230, -255,250, -255,222, -255,135, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,255, -255,44, -0,0, -255,32, -255,242, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,151, -255,229, -255,249, -255,220, -255,133, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,87, -255,255, -255,108, -0,0, -0,0, -0,0, -255,46, -255,245, -255,166, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,78, -255,255, -255,210, -255,152, -255,152, -255,171, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,200, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,7, -0,0, -255,39, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,20, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,255, -255,44, -0,0, -255,187, -255,152, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,223, -255,255, -255,199, -255,158, -255,212, -255,255, -255,203, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,193, -255,201, -0,0, -0,0, -0,0, -0,0, -0,0, -255,127, -255,250, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,248, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,138, -255,255, -255,220, -255,92, -255,188, -255,139, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,230, -255,221, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,255, -255,44, -255,99, -255,226, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,143, -255,254, -255,205, -255,240, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,133, -0,0, -0,0, -255,3, -255,162, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,238, -255,136, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,57, -0,0, -0,0, -0,0, -0,0, -255,11, -255,245, -255,205, -0,0, -0,0, -0,0, -0,0, -255,113, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,233, -255,64, -255,81, -255,219, -255,216, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,215, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,155, -255,231, -255,247, -255,215, -255,140, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,20, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,20, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,239, -255,72, -0,0, -255,127, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,230, -255,197, -255,99, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,236, -255,7, -0,0, -0,0, -0,0, -255,19, -255,249, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,239, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,255, -255,57, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,127, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,160, -255,234, -255,249, -255,220, -255,136, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,200, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,226, -255,255, -255,192, -255,147, -255,198, -255,255, -255,218, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,91, -255,200, -255,239, -255,237, -255,197, -255,81, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,230, -255,221, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,200, -255,247, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,160, -0,0, -255,77, -255,249, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,114, -255,20, -255,252, -255,168, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -255,194, -255,202, -0,0, -0,0, -0,0, -0,0, -0,0, -255,129, -255,250, -255,17, -0,0, -0,0, -0,0, -0,0, -255,179, -255,255, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,251, -255,20, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,144, -0,0, -0,0, -0,0, -255,2, -255,218, -255,252, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,227, -255,255, -255,184, -255,148, -255,209, -255,255, -255,200, -255,4, -0,0, -0,0, -0,0, -0,0, -255,7, -255,248, -255,239, -255,7, -0,0, -0,0, -0,0, -255,84, -255,240, -255,127, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,186, -255,233, -255,248, -255,208, -255,103, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,4, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,108, -0,0, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,163, -255,255, -255,115, -0,0, -0,0, -0,0, -0,0, -255,135, -255,255, -255,146, -0,0, -0,0, -0,0, -0,0, -0,0, -255,165, -255,255, -255,131, -0,0, -0,0, -0,0, -255,156, -255,255, -255,109, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,234, -255,13, -0,0, -0,0, -0,0, -255,200, -255,255, -255,111, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,125, -255,255, -255,229, -255,150, -255,158, -255,244, -255,255, -255,99, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,215, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,200, -255,207, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,230, -255,17, -255,40, -255,239, -255,103, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,155, -255,255, -255,31, -0,0, -255,190, -255,245, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,255, -255,108, -0,0, -0,0, -0,0, -255,45, -255,245, -255,175, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,214, -255,245, -255,20, -0,0, -0,0, -255,88, -255,255, -255,142, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,255, -255,121, -0,0, -0,0, -255,2, -255,181, -255,255, -255,87, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,255, -255,122, -0,0, -0,0, -255,1, -255,175, -255,255, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,254, -255,238, -255,154, -255,146, -255,220, -255,255, -255,143, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,136, -255,136, -255,173, -255,255, -255,205, -255,136, -255,136, -255,136, -255,2, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,235, -255,16, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,38, -255,252, -255,227, -255,5, -0,0, -0,0, -255,14, -255,240, -255,246, -255,25, -0,0, -0,0, -0,0, -0,0, -255,6, -255,246, -255,240, -255,8, -0,0, -0,0, -0,0, -255,42, -255,156, -255,90, -0,0, -0,0, -0,0, -0,0, -0,0, -255,163, -255,255, -255,129, -0,0, -0,0, -255,84, -255,255, -255,210, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,252, -255,26, -0,0, -0,0, -255,61, -255,255, -255,201, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,235, -255,80, -255,14, -255,216, -255,151, -255,56, -255,255, -255,125, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,238, -255,203, -0,0, -0,0, -255,107, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,14, -255,207, -255,255, -255,255, -255,179, -255,122, -255,152, -255,245, -255,255, -255,247, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,254, -255,132, -0,0, -255,1, -255,210, -255,227, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,239, -255,7, -0,0, -0,0, -0,0, -255,86, -255,244, -255,129, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,227, -255,255, -255,183, -255,143, -255,201, -255,255, -255,196, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -255,211, -255,255, -255,45, -0,0, -0,0, -255,10, -255,221, -255,254, -255,25, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,255, -255,141, -0,0, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -255,161, -255,255, -255,95, -0,0, -0,0, -255,117, -255,255, -255,142, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,255, -255,202, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,242, -255,243, -255,22, -255,4, -255,218, -255,255, -255,62, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,251, -255,15, -0,0, -0,0, -255,1, -255,91, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,151, -255,229, -255,249, -255,220, -255,133, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,151, -255,229, -255,249, -255,220, -255,133, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,87, -255,160, -0,0, -255,89, -255,255, -255,255, -255,255, -255,255, -255,255, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -255,78, -255,255, -255,210, -255,152, -255,152, -255,171, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,195, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -255,4, -255,172, -255,95, -255,98, -255,214, -255,250, -255,229, -255,137, -255,48, -255,204, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,239, -255,14, -255,78, -255,255, -255,81, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,200, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,158, -255,233, -255,250, -255,221, -255,135, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,231, -255,253, -255,14, -0,0, -0,0, -0,0, -255,79, -255,124, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,183, -255,249, -255,36, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,251, -255,211, -255,1, -255,6, -255,229, -255,245, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,114, -255,255, -255,147, -255,106, -255,255, -255,165, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,165, -255,255, -255,211, -255,100, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,223, -255,255, -255,199, -255,158, -255,212, -255,255, -255,203, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,223, -255,255, -255,199, -255,158, -255,212, -255,255, -255,203, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,248, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,237, -255,7, -0,0, -0,0, -0,0, -255,18, -255,249, -255,233, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,234, -255,120, -255,200, -255,179, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,249, -255,158, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,159, -255,255, -255,193, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,55, -255,239, -255,175, -0,0, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,158, -255,255, -255,75, -255,99, -255,255, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,192, -0,0, -0,0, -255,112, -255,255, -255,255, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,213, -255,250, -255,235, -255,242, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,255, -255,255, -255,255, -255,253, -255,187, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,133, -0,0, -0,0, -255,3, -255,162, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,133, -0,0, -0,0, -255,3, -255,162, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,245, -255,205, -0,0, -0,0, -0,0, -0,0, -255,113, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,131, -0,0, -0,0, -255,2, -255,157, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,137, -255,221, -255,245, -255,213, -255,110, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,255, -255,255, -255,246, -255,255, -255,255, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,82, -255,255, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,172, -255,255, -255,255, -255,220, -255,127, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -255,113, -255,255, -255,64, -0,0, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,251, -255,195, -255,216, -255,243, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,255, -255,203, -0,0, -0,0, -255,47, -255,108, -255,133, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,255, -255,255, -255,119, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,237, -255,234, -255,66, -255,121, -255,214, -255,255, -255,255, -255,103, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,236, -255,7, -0,0, -0,0, -0,0, -255,19, -255,249, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,236, -255,7, -0,0, -0,0, -0,0, -255,19, -255,249, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,127, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,223, -255,255, -255,198, -255,157, -255,210, -255,255, -255,204, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,195, -255,146, -255,218, -255,255, -255,121, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,125, -255,136, -255,151, -255,255, -255,227, -255,136, -255,136, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,200, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,254, -255,134, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,150, -255,235, -255,255, -255,238, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -255,5, -255,219, -255,206, -255,2, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,255, -255,134, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,245, -255,242, -255,9, -0,0, -0,0, -0,0, -255,44, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,255, -255,255, -255,154, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,255, -255,173, -0,0, -0,0, -0,0, -255,92, -255,252, -255,237, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,255, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,251, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,152, -255,230, -255,250, -255,222, -255,135, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,203, -255,1, -0,0, -255,21, -255,251, -255,221, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,248, -255,239, -255,7, -0,0, -0,0, -0,0, -255,84, -255,240, -255,127, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,188, -255,251, -255,53, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,101, -255,252, -255,237, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -255,80, -255,255, -255,97, -255,196, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,255, -255,245, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,159, -255,255, -255,141, -0,0, -0,0, -0,0, -255,51, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,235, -255,242, -255,211, -255,253, -255,51, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,255, -255,231, -255,33, -0,0, -0,0, -0,0, -255,215, -255,255, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,32, -255,20, -0,0, -0,0, -0,0, -255,239, -255,243, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,140, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,255, -255,122, -0,0, -0,0, -255,1, -255,175, -255,255, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,118, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,148, -255,96, -0,0, -0,0, -0,0, -0,0, -255,172, -255,255, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -255,191, -255,230, -255,208, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,218, -255,255, -255,199, -255,141, -255,155, -255,234, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,255, -255,126, -255,71, -255,255, -255,199, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,255, -255,249, -255,172, -255,88, -255,73, -255,252, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,20, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,98, -255,255, -255,155, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,125, -255,136, -255,151, -255,255, -255,227, -255,136, -255,136, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,227, -255,255, -255,183, -255,143, -255,201, -255,255, -255,196, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,253, -255,226, -255,17, -0,0, -0,0, -255,3, -255,204, -255,255, -255,53, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -255,49, -255,253, -255,255, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,17, -255,142, -255,224, -255,250, -255,235, -255,183, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,251, -255,234, -255,12, -0,0, -255,192, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,96, -255,208, -255,255, -255,255, -255,255, -255,244, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,195, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,195, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,200, -255,247, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,255, -255,255, -255,184, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,158, -255,233, -255,250, -255,221, -255,135, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,130, -255,255, -255,232, -255,154, -255,142, -255,206, -255,255, -255,192, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -255,157, -255,255, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,187, -255,255, -255,111, -0,0, -0,0, -255,56, -255,255, -255,232, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,139, -255,244, -255,255, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,237, -255,7, -0,0, -0,0, -0,0, -255,18, -255,249, -255,233, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,248, -255,237, -255,7, -0,0, -0,0, -0,0, -255,18, -255,249, -255,233, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,200, -255,207, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,122, -255,135, -255,205, -255,253, -255,107, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,70, -255,184, -255,232, -255,244, -255,212, -255,120, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -255,25, -255,243, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,81, -255,255, -255,224, -255,6, -0,0, -0,0, -0,0, -255,176, -255,255, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,88, -255,55, -0,0, -0,0, -0,0, -255,65, -255,255, -255,195, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,131, -0,0, -0,0, -255,2, -255,157, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,255, -255,131, -0,0, -0,0, -255,2, -255,157, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,110, -255,215, -255,246, -255,218, -255,121, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,150, -255,231, -255,247, -255,212, -255,69, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,237, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,231, -255,243, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,211, -255,6, -0,0, -0,0, -255,63, -255,255, -255,190, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,223, -255,255, -255,198, -255,157, -255,210, -255,255, -255,204, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,223, -255,255, -255,198, -255,157, -255,210, -255,255, -255,204, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,114, -255,255, -255,222, -255,148, -255,217, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,216, -255,255, -255,193, -255,149, -255,188, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,174, -255,255, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,128, -255,221, -255,246, -255,212, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,56, -255,29, -0,0, -0,0, -0,0, -255,193, -255,255, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,194, -255,255, -255,216, -255,147, -255,158, -255,240, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,152, -255,230, -255,250, -255,222, -255,135, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,152, -255,230, -255,250, -255,222, -255,135, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -255,255, -255,33, -0,0, -255,21, -255,249, -255,234, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,143, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,88, -255,255, -255,246, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,255, -255,184, -255,132, -255,212, -255,255, -255,77, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,183, -0,0, -0,0, -255,13, -255,235, -255,250, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,123, -255,211, -255,244, -255,237, -255,193, -255,78, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,227, -255,252, -255,3, -0,0, -0,0, -255,232, -255,251, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,247, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,235, -255,203, -255,165, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,154, -255,160, -255,2, -0,0, -255,55, -255,255, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,214, -255,255, -255,187, -255,142, -255,215, -255,255, -255,141, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,7, -0,0, -255,39, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,255, -255,119, -255,11, -255,96, -255,255, -255,173, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,255, -255,224, -255,135, -255,222, -255,247, -255,188, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,171, -255,244, -255,37, -255,160, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,166, -255,228, -255,253, -255,255, -255,255, -255,183, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,21, -255,146, -255,224, -255,245, -255,210, -255,104, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,20, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,136, -255,225, -255,248, -255,214, -255,111, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,138, -255,255, -255,220, -255,92, -255,188, -255,139, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,152, -255,26, -0,0, -255,142, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,149, -255,237, -255,238, -255,184, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,98, -255,216, -255,249, -255,221, -255,111, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,152, -255,26, -0,0, -255,142, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,152, -255,26, -0,0, -255,142, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,110, -255,213, -255,135, -255,108, -255,208, -255,33, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,173, -255,255, -255,255, -255,255, -255,188, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,255, -255,210, -255,133, -255,179, -255,255, -255,216, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -255,85, -255,255, -255,98, -0,0, -255,160, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,221, -255,252, -255,111, -255,50, -255,87, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,230, -255,221, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,172, -255,255, -255,201, -255,147, -255,221, -255,255, -255,119, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,233, -255,64, -255,81, -255,219, -255,216, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,255, -255,44, -0,0, -255,240, -255,244, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,255, -255,195, -255,163, -255,253, -255,229, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,255, -255,223, -255,150, -255,216, -255,255, -255,115, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,255, -255,44, -0,0, -255,240, -255,244, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,255, -255,44, -0,0, -255,240, -255,244, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,73, -255,237, -255,255, -255,255, -255,75, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,246, -255,216, -255,148, -255,208, -255,250, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,223, -255,10, -0,0, -0,0, -255,175, -255,255, -255,81, -0,0, -0,0, -0,0, -0,0, -255,20, -255,234, -255,171, -0,0, -0,0, -255,160, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,169, -0,0, -0,0, -255,49, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,215, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,255, -255,205, -255,2, -0,0, -255,26, -255,250, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,249, -255,229, -255,4, -0,0, -255,148, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,250, -255,27, -0,0, -255,16, -255,241, -255,237, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,206, -255,118, -255,97, -255,255, -255,205, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,74, -255,250, -255,7, -255,62, -255,255, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,88, -255,214, -255,248, -255,215, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,116, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -255,12, -255,240, -255,229, -255,11, -0,0, -255,5, -255,214, -255,249, -255,26, -0,0, -0,0, -0,0, -0,0, -255,19, -255,255, -255,210, -0,0, -0,0, -0,0, -255,101, -255,255, -255,124, -0,0, -0,0, -0,0, -0,0, -255,131, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,180, -0,0, -0,0, -0,0, -0,0, -255,75, -255,255, -255,161, -0,0, -0,0, -255,141, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,164, -255,94, -0,0, -0,0, -0,0, -255,225, -255,254, -255,3, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,195, -255,114, -255,228, -255,243, -255,180, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,220, -0,0, -0,0, -0,0, -255,208, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,255, -255,180, -0,0, -0,0, -255,55, -255,136, -255,61, -0,0, -0,0, -0,0, -0,0, -255,23, -255,255, -255,204, -0,0, -0,0, -0,0, -255,181, -255,255, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,219, -255,249, -255,222, -255,119, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,128, -255,221, -255,246, -255,212, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,194, -255,255, -255,59, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,255, -255,255, -255,254, -255,225, -255,167, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,126, -255,206, -0,0, -255,114, -255,222, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,255, -255,233, -255,151, -255,234, -255,254, -255,64, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,136, -255,136, -255,136, -255,136, -255,136, -255,207, -255,255, -255,82, -0,0, -0,0, -0,0, -0,0, -255,51, -255,255, -255,178, -0,0, -0,0, -0,0, -255,154, -255,255, -255,74, -0,0, -0,0, -0,0, -0,0, -255,3, -255,247, -255,238, -255,2, -0,0, -0,0, -255,106, -255,255, -255,126, -0,0, -0,0, -0,0, -0,0, -255,71, -255,136, -255,136, -255,136, -255,136, -255,211, -255,255, -255,167, -255,95, -0,0, -0,0, -0,0, -0,0, -255,21, -255,244, -255,250, -255,154, -255,185, -255,248, -255,255, -255,191, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,128, -255,221, -255,246, -255,212, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,253, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,250, -255,226, -255,153, -255,206, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,220, -0,0, -0,0, -0,0, -255,208, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -255,52, -255,255, -255,177, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,255, -255,185, -0,0, -0,0, -0,0, -255,161, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,120, -255,255, -255,219, -255,151, -255,215, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,255, -255,184, -255,132, -255,212, -255,255, -255,77, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,144, -255,230, -255,249, -255,192, -255,167, -255,255, -255,124, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,152, -255,136, -255,138, -255,178, -255,254, -255,240, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,154, -0,0, -255,166, -255,170, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,182, -255,255, -255,63, -0,0, -255,90, -255,255, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,245, -255,173, -0,0, -0,0, -0,0, -0,0, -0,0, -255,31, -255,255, -255,225, -255,7, -0,0, -255,2, -255,208, -255,255, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -255,180, -255,255, -255,85, -0,0, -0,0, -255,188, -255,255, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,214, -255,248, -255,200, -255,63, -255,251, -255,229, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,255, -255,184, -255,132, -255,212, -255,255, -255,77, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,178, -255,255, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,241, -255,23, -0,0, -255,9, -255,241, -255,248, -255,1, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,220, -0,0, -0,0, -0,0, -255,208, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,255, -255,187, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,184, -0,0, -0,0, -0,0, -255,160, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -255,13, -255,244, -255,239, -255,18, -0,0, -255,14, -255,231, -255,250, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -255,154, -255,160, -255,2, -0,0, -255,55, -255,255, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,189, -255,255, -255,198, -255,129, -255,159, -255,248, -255,255, -255,150, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -255,126, -255,255, -255,142, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -255,224, -255,251, -255,2, -0,0, -255,84, -255,255, -255,134, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,197, -255,234, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,255, -255,209, -255,142, -255,200, -255,255, -255,200, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,246, -255,247, -255,156, -255,184, -255,255, -255,196, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,154, -255,160, -255,2, -0,0, -255,55, -255,255, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,127, -255,255, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -255,210, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,220, -0,0, -0,0, -0,0, -255,208, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,255, -255,255, -255,255, -255,255, -255,200, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,184, -0,0, -0,0, -0,0, -255,160, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -255,67, -255,255, -255,167, -0,0, -0,0, -0,0, -255,152, -255,255, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,166, -255,228, -255,253, -255,255, -255,255, -255,183, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,255, -255,201, -255,3, -0,0, -0,0, -255,91, -255,255, -255,156, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -255,59, -255,255, -255,174, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,60, -255,82, -255,255, -255,103, -255,70, -255,255, -255,115, -255,64, -255,12, -0,0, -0,0, -0,0, -0,0, -255,240, -255,244, -0,0, -0,0, -255,184, -255,255, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,79, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,128, -255,217, -255,246, -255,221, -255,141, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,52, -255,189, -255,246, -255,238, -255,158, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,166, -255,228, -255,253, -255,255, -255,255, -255,183, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,255, -255,202, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -255,208, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,220, -0,0, -0,0, -0,0, -255,208, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -255,48, -255,146, -255,255, -255,234, -255,136, -255,136, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,45, -255,255, -255,185, -0,0, -0,0, -0,0, -255,161, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,85, -255,255, -255,144, -0,0, -0,0, -0,0, -255,128, -255,255, -255,100, -0,0, -0,0, -0,0, -0,0, -255,11, -255,221, -255,252, -255,111, -255,50, -255,87, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,115, -0,0, -0,0, -0,0, -255,76, -255,255, -255,152, -0,0, -0,0, -0,0, -0,0, -255,243, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,227, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -255,121, -255,255, -255,142, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,255, -255,15, -255,45, -255,255, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,244, -0,0, -255,28, -255,255, -255,208, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,205, -255,233, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,221, -255,252, -255,111, -255,50, -255,87, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,65, -255,249, -255,222, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -255,208, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -255,3, -255,253, -255,224, -0,0, -0,0, -0,0, -255,208, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,255, -255,207, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,204, -0,0, -0,0, -0,0, -255,180, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -255,67, -255,255, -255,165, -0,0, -0,0, -0,0, -255,151, -255,255, -255,82, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,169, -0,0, -0,0, -255,49, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -255,125, -255,255, -255,113, -0,0, -0,0, -0,0, -255,110, -255,255, -255,126, -0,0, -0,0, -0,0, -0,0, -255,231, -255,254, -255,10, -0,0, -0,0, -0,0, -255,26, -255,255, -255,214, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,152, -255,136, -255,137, -255,175, -255,254, -255,241, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,103, -255,229, -0,0, -255,87, -255,243, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,244, -0,0, -255,38, -255,255, -255,219, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,45, -255,255, -255,153, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,169, -0,0, -0,0, -255,49, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,239, -255,238, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -255,208, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -255,227, -255,249, -255,15, -0,0, -255,16, -255,230, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,255, -255,161, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,221, -255,250, -255,26, -0,0, -255,13, -255,240, -255,239, -255,6, -0,0, -0,0, -0,0, -0,0, -255,13, -255,245, -255,237, -255,15, -0,0, -255,11, -255,229, -255,251, -255,24, -0,0, -0,0, -0,0, -0,0, -255,75, -255,255, -255,161, -0,0, -0,0, -255,141, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,255, -255,203, -255,5, -0,0, -255,9, -255,211, -255,255, -255,49, -0,0, -0,0, -0,0, -0,0, -255,175, -255,255, -255,104, -0,0, -0,0, -0,0, -255,125, -255,255, -255,156, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,255, -255,255, -255,254, -255,227, -255,169, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,136, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,156, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,244, -0,0, -0,0, -255,189, -255,255, -255,171, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,127, -255,255, -255,83, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -70,0, -0,0, -79,182, -72,0, -79,182, -72,0, -112,5, -0,0, -112,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,73, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,255, -255,161, -0,0, -0,0, -255,141, -255,255, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,223, -255,255, -255,186, -255,132, -255,132, -255,132, -255,132, -255,53, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -255,208, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,255, -255,206, -255,148, -255,217, -255,249, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -255,180, -255,255, -255,168, -255,132, -255,132, -255,132, -255,132, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -255,98, -255,255, -255,221, -255,145, -255,211, -255,255, -255,121, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,123, -255,255, -255,215, -255,146, -255,211, -255,255, -255,142, -0,0, -0,0, -0,0, -0,0, -0,0, -255,21, -255,244, -255,250, -255,154, -255,185, -255,248, -255,255, -255,191, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,255, -255,208, -255,145, -255,210, -255,255, -255,150, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,243, -255,254, -255,177, -255,141, -255,188, -255,255, -255,235, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,31, -255,60, -255,212, -255,161, -255,60, -255,200, -255,173, -255,60, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,244, -0,0, -0,0, -255,18, -255,207, -255,255, -255,152, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,194, -255,255, -255,25, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,21, -255,244, -255,250, -255,154, -255,185, -255,248, -255,255, -255,191, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -255,208, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,161, -255,238, -255,236, -255,137, -255,165, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -255,224, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,99, -255,216, -255,250, -255,223, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,220, -255,250, -255,224, -255,123, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,214, -255,248, -255,200, -255,63, -255,251, -255,229, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,130, -255,224, -255,250, -255,220, -255,116, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,169, -255,235, -255,251, -255,229, -255,158, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,235, -255,96, -0,0, -255,219, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,244, -0,0, -0,0, -0,0, -255,21, -255,233, -255,254, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,238, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,20, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,20, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,219, -255,249, -255,222, -255,119, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,210, -255,255, -255,238, -255,149, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,214, -255,248, -255,200, -255,63, -255,251, -255,229, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,56, -255,7, -255,252, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,244, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,255, -255,201, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,230, -255,221, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,200, -255,247, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,120, -255,255, -255,219, -255,151, -255,215, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,74, -255,255, -255,235, -255,152, -255,205, -255,255, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,60, -255,255, -255,16, -255,44, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,244, -255,12, -255,210, -255,147, -255,167, -255,255, -255,218, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,255, -255,174, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,215, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,200, -255,207, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,244, -255,239, -255,18, -0,0, -255,14, -255,231, -255,250, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -255,171, -255,255, -255,71, -0,0, -255,6, -255,225, -255,254, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,244, -255,34, -255,208, -255,244, -255,238, -255,181, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,255, -255,167, -0,0, -0,0, -0,0, -255,152, -255,255, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -255,186, -255,255, -255,47, -0,0, -0,0, -255,114, -255,168, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -255,85, -255,255, -255,144, -0,0, -0,0, -0,0, -255,128, -255,255, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -255,126, -255,255, -255,187, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,85, -255,188, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,40, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,20, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,224, -255,255, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,129, -255,119, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,123, -255,226, -255,249, -255,209, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -255,67, -255,255, -255,165, -0,0, -0,0, -0,0, -255,151, -255,255, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,187, -255,255, -255,250, -255,162, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,152, -255,26, -0,0, -255,142, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,220, -0,0, -0,0, -0,0, -255,208, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,116, -255,255, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,250, -255,202, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,200, -255,247, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,224, -255,255, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,219, -255,249, -255,220, -255,245, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,143, -255,255, -255,213, -255,152, -255,231, -255,255, -255,86, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,249, -255,223, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -255,13, -255,245, -255,237, -255,15, -0,0, -255,11, -255,229, -255,251, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,88, -255,202, -255,255, -255,248, -255,89, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,255, -255,44, -0,0, -255,240, -255,244, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,220, -0,0, -0,0, -0,0, -255,208, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,29, -255,188, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,200, -255,207, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,224, -255,255, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -255,123, -255,255, -255,219, -255,147, -255,229, -255,255, -255,131, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,252, -255,232, -255,13, -0,0, -255,39, -255,253, -255,217, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,245, -255,70, -255,144, -255,234, -255,47, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,255, -255,255, -255,250, -255,219, -255,146, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -255,123, -255,255, -255,215, -255,146, -255,211, -255,255, -255,142, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,78, -255,248, -255,243, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,220, -0,0, -0,0, -0,0, -255,208, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,244, -255,190, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,224, -255,255, -255,8, -0,0, -0,0, -0,0, -0,0, -255,13, -255,245, -255,239, -255,18, -255,16, -255,237, -255,235, -255,249, -255,19, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,157, -0,0, -0,0, -0,0, -255,205, -255,255, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,20, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,255, -255,152, -255,136, -255,141, -255,198, -255,255, -255,214, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,128, -255,221, -255,246, -255,212, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,195, -255,114, -255,228, -255,243, -255,180, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,249, -255,223, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -255,244, -255,244, -0,0, -0,0, -0,0, -0,0, -255,4, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -}; diff --git a/scene/resources/default_theme/font_lodpi.inc b/scene/resources/default_theme/font_lodpi.inc new file mode 100644 index 0000000000..8eae45a8a7 --- /dev/null +++ b/scene/resources/default_theme/font_lodpi.inc @@ -0,0 +1,13115 @@ +static const int _lodpi_font_height=14; +static const int _lodpi_font_ascent=11; +static const int _lodpi_font_charcount=191; +static const int _lodpi_font_charrects[191][8]={ +/* charidx , ofs_x, ofs_y, size_x, size_y, valign, halign, advance */ +{64,72,34,10,11,1,1,12}, +{224,85,180,5,11,0,1,7}, +{192,32,16,11,13,-2,-1,9}, +{96,2,216,3,2,0,3,8}, +{160,1734439808,0,0,0,11,0,4}, +{32,0,0,0,0,11,0,4}, +{33,65,234,2,10,1,1,4}, +{225,112,169,5,11,0,1,7}, +{193,17,16,11,13,-2,-1,9}, +{161,2,222,2,11,3,1,4}, +{65,2,16,11,10,1,-1,9}, +{97,76,188,5,8,3,1,7}, +{98,102,165,6,11,0,1,8}, +{226,72,143,6,11,0,1,7}, +{194,113,2,11,13,-2,-1,9}, +{66,46,109,7,10,1,1,9}, +{162,12,136,6,10,1,1,8}, +{34,49,187,5,4,1,1,6}, +{35,78,66,8,10,1,0,9}, +{163,22,167,6,10,1,1,8}, +{195,53,2,11,14,-3,-1,9}, +{227,2,155,6,12,-1,1,7}, +{67,68,115,7,10,1,1,8}, +{99,40,179,5,8,3,1,7}, +{228,121,169,5,11,0,1,7}, +{196,98,2,11,13,-2,-1,9}, +{36,102,137,6,12,0,1,8}, +{100,82,150,6,11,0,1,8}, +{68,90,66,8,10,1,1,10}, +{164,14,79,8,7,3,0,8}, +{37,2,30,10,10,1,1,12}, +{69,29,191,5,10,1,1,7}, +{165,79,98,7,10,1,0,8}, +{229,20,196,5,12,-1,1,7}, +{197,83,2,11,12,-1,-1,9}, +{101,32,124,6,8,3,1,8}, +{38,67,49,9,10,1,1,10}, +{70,101,105,6,10,1,1,7}, +{198,21,2,12,10,1,-1,12}, +{166,95,228,2,14,0,3,7}, +{102,2,201,5,11,0,0,4}, +{230,58,34,10,8,3,1,12}, +{71,66,65,8,10,1,1,10}, +{231,2,186,5,11,3,1,7}, +{199,57,97,7,13,1,1,8}, +{103,13,107,7,11,3,1,7}, +{167,112,131,6,11,0,0,7}, +{39,119,219,2,4,1,1,3}, +{72,54,65,8,10,1,1,10}, +{232,62,143,6,11,0,1,8}, +{200,47,195,5,13,-2,1,7}, +{40,93,212,4,12,1,1,4}, +{104,72,158,6,11,0,1,8}, +{168,77,217,4,2,0,2,8}, +{73,38,191,5,10,1,0,5}, +{169,44,34,10,10,1,1,12}, +{233,52,142,6,11,0,1,8}, +{201,56,197,5,13,-2,1,7}, +{41,51,226,3,12,1,0,4}, +{105,109,213,3,11,0,0,4}, +{106,101,213,4,14,0,-1,4}, +{74,92,195,5,13,1,-2,3}, +{202,65,202,5,13,-2,1,7}, +{42,108,80,7,6,0,0,8}, +{170,29,205,4,5,1,0,5}, +{234,12,181,6,11,0,1,8}, +{171,22,181,5,6,4,1,7}, +{43,101,94,7,7,3,0,8}, +{107,112,92,7,11,0,1,7}, +{203,83,200,5,13,-2,1,7}, +{235,2,171,6,11,0,1,8}, +{75,102,66,8,10,1,1,8}, +{44,107,231,2,3,9,1,4}, +{172,2,104,7,4,6,0,8}, +{108,113,228,2,11,0,1,4}, +{204,101,196,5,13,-2,0,5}, +{236,30,214,3,11,0,0,4}, +{76,22,124,6,10,1,1,7}, +{173,16,229,3,2,7,1,5}, +{45,123,201,3,2,7,1,5}, +{109,68,2,11,8,3,1,13}, +{205,11,211,5,13,-2,0,5}, +{237,37,214,3,11,0,1,4}, +{77,62,20,10,10,1,1,12}, +{46,101,231,2,2,9,1,4}, +{110,111,107,6,8,3,1,8}, +{206,20,212,5,13,-2,0,5}, +{238,11,196,5,11,0,-1,4}, +{174,30,33,10,10,1,1,12}, +{78,2,79,8,10,1,1,10}, +{175,35,111,7,1,-1,0,7}, +{111,102,153,6,8,3,1,8}, +{207,119,184,5,13,-2,0,5}, +{239,69,219,4,11,0,0,4}, +{79,41,66,9,10,1,1,11}, +{47,90,105,7,10,1,-1,5}, +{176,61,219,4,4,1,1,6}, +{112,32,150,6,11,3,1,8}, +{240,82,165,6,11,0,1,8}, +{208,86,33,9,10,1,0,10}, +{80,52,128,6,10,1,1,8}, +{48,42,135,6,10,1,1,8}, +{177,46,97,7,8,3,0,8}, +{113,22,152,6,11,3,1,8}, +{241,2,112,6,12,-1,1,8}, +{81,15,59,9,13,1,1,11}, +{209,74,80,8,14,-3,1,10}, +{49,45,212,4,10,1,2,8}, +{178,58,187,5,6,1,0,5}, +{114,85,217,4,8,3,1,5}, +{210,2,62,9,13,-2,1,11}, +{242,62,165,6,11,0,1,8}, +{82,35,97,7,10,1,1,8}, +{50,57,114,7,10,1,1,8}, +{179,53,214,4,6,1,0,5}, +{115,112,146,6,8,3,0,7}, +{211,106,49,9,13,-2,1,11}, +{243,52,172,6,11,0,1,8}, +{83,24,96,7,10,1,0,7}, +{51,22,138,6,10,1,1,8}, +{180,9,228,3,2,0,3,8}, +{116,67,188,5,10,1,0,5}, +{212,93,49,9,13,-2,1,11}, +{244,42,164,6,11,0,1,8}, +{84,13,93,7,10,1,0,7}, +{52,24,110,7,10,1,1,8}, +{53,92,119,6,10,1,1,8}, +{85,114,66,8,10,1,1,10}, +{213,2,44,9,14,-3,1,11}, +{117,42,123,6,8,3,1,8}, +{181,2,140,6,11,3,1,8}, +{245,12,165,6,12,-1,1,8}, +{54,82,121,6,10,1,1,8}, +{86,76,18,10,10,1,-1,8}, +{246,72,173,6,11,0,1,8}, +{214,80,49,9,13,-2,1,11}, +{182,68,98,7,13,0,1,9}, +{118,15,47,9,8,3,-1,7}, +{55,72,129,6,10,1,1,8}, +{87,2,2,15,10,1,-1,13}, +{119,37,2,12,8,3,-1,10}, +{247,90,94,7,7,3,0,8}, +{215,2,93,7,7,3,0,8}, +{183,77,223,2,2,5,1,4}, +{56,62,129,6,10,1,1,8}, +{88,90,19,10,10,1,-1,8}, +{216,99,33,9,12,0,1,11}, +{248,2,128,6,8,3,1,8}, +{120,119,80,7,8,3,0,7}, +{184,116,212,3,3,11,0,3}, +{89,28,65,9,10,1,-1,7}, +{217,38,80,8,13,-2,1,10}, +{249,52,157,6,11,0,1,8}, +{121,112,33,9,11,3,-1,7}, +{57,12,122,6,10,1,1,8}, +{185,23,229,3,6,1,0,5}, +{218,26,79,8,13,-2,1,10}, +{250,42,149,6,11,0,1,8}, +{90,32,136,6,10,1,1,8}, +{122,112,119,6,8,3,1,7}, +{58,89,229,2,8,3,1,4}, +{186,37,205,4,5,1,0,5}, +{219,50,80,8,13,-2,1,10}, +{91,58,227,3,12,1,1,4}, +{123,103,180,5,12,1,0,5}, +{251,12,150,6,11,0,1,8}, +{59,71,234,2,9,3,1,4}, +{187,31,181,5,6,4,1,7}, +{188,16,33,10,10,1,0,10}, +{124,83,229,2,14,0,3,7}, +{220,62,79,8,13,-2,1,10}, +{252,92,133,6,11,0,1,8}, +{92,97,80,7,10,1,-1,5}, +{60,92,153,6,7,3,1,8}, +{189,47,20,11,10,1,0,10}, +{253,28,47,9,14,0,-1,7}, +{221,54,48,9,13,-2,-1,7}, +{93,44,226,3,12,1,0,4}, +{125,110,196,5,12,1,0,5}, +{61,79,112,7,5,4,0,8}, +{190,104,19,10,10,1,0,10}, +{222,32,165,6,10,1,1,8}, +{254,102,119,6,14,0,1,8}, +{62,112,158,6,7,3,1,8}, +{94,86,80,7,6,1,0,7}, +{126,62,158,6,3,5,1,8}, +{223,82,135,6,11,0,1,8}, +{255,41,48,9,14,0,-1,7}, +{191,94,180,5,11,3,0,6}, +{63,74,202,5,10,1,0,6}, +{95,92,148,6,1,12,0,6}, +}; +static const int _lodpi_font_kerning_pair_count=0; +static const int _lodpi_font_kerning_pairs[1][3]={ +{0,0,0}, +}; +static const int _lodpi_font_img_width=128; +static const int _lodpi_font_img_height=256; +static const int _lodpi_font_img_data_size=12909; +static const unsigned char _lodpi_font_img_data[12909]={ +137, +80, +78, +71, +13, +10, +26, +10, +0, +0, +0, +13, +73, +72, +68, +82, +0, +0, +0, +128, +0, +0, +1, +0, +8, +6, +0, +0, +0, +123, +249, +126, +167, +0, +0, +32, +0, +73, +68, +65, +84, +120, +156, +237, +157, +119, +184, +30, +85, +181, +255, +191, +59, +128, +8, +210, +155, +82, +77, +232, +221, +2, +210, +164, +132, +26, +154, +5, +164, +131, +63, +224, +98, +65, +4, +68, +46, +8, +42, +23, +84, +80, +41, +94, +16, +21, +17, +197, +10, +22, +80, +17, +21, +4, +5, +65, +16, +41, +42, +185, +116, +19, +106, +128, +80, +46, +32, +33, +148, +208, +18, +62, +191, +63, +214, +122, +115, +230, +204, +217, +51, +179, +103, +222, +121, +223, +115, +146, +123, +190, +207, +115, +158, +51, +101, +237, +50, +243, +174, +217, +123, +237, +213, +182, +52, +138, +81, +140, +98, +20, +2, +150, +3, +222, +0, +54, +207, +93, +255, +32, +134, +247, +231, +174, +111, +237, +244, +203, +38, +212, +61, +31, +48, +149, +2, +68, +232, +87, +242, +91, +107, +102, +174, +253, +28, +184, +58, +115, +190, +178, +211, +172, +88, +243, +57, +199, +84, +220, +7, +216, +17, +184, +21, +120, +21, +184, +23, +216, +9, +56, +192, +143, +103, +0, +55, +1, +235, +36, +180, +245, +117, +224, +122, +224, +244, +58, +125, +244, +178, +247, +0, +239, +4, +222, +13, +220, +85, +179, +236, +55, +253, +57, +190, +89, +69, +59, +251, +101, +132, +16, +30, +151, +116, +171, +164, +157, +114, +52, +59, +74, +186, +94, +210, +118, +185, +235, +59, +73, +250, +123, +8, +225, +137, +132, +62, +237, +39, +233, +113, +73, +11, +248, +249, +206, +126, +188, +64, +230, +218, +108, +132, +16, +30, +145, +116, +175, +164, +205, +252, +129, +230, +149, +180, +161, +164, +21, +129, +133, +156, +108, +115, +73, +147, +67, +8, +143, +150, +53, +12, +28, +9, +76, +3, +206, +4, +198, +74, +186, +49, +161, +191, +103, +75, +58, +76, +210, +242, +178, +103, +191, +88, +210, +17, +146, +118, +151, +52, +78, +210, +51, +146, +190, +157, +80, +207, +102, +33, +132, +45, +37, +109, +157, +64, +155, +199, +204, +204, +241, +172, +212, +66, +192, +119, +37, +45, +41, +105, +13, +73, +75, +251, +121, +114, +225, +19, +128, +137, +185, +107, +15, +1, +59, +3, +255, +202, +93, +191, +11, +248, +108, +98, +189, +119, +2, +251, +250, +49, +64, +158, +153, +98, +101, +206, +1, +206, +247, +227, +109, +128, +75, +129, +31, +117, +70, +34, +224, +188, +20, +14, +7, +110, +241, +209, +226, +76, +224, +57, +224, +136, +10, +122, +128, +79, +100, +206, +215, +205, +247, +217, +71, +136, +23, +18, +218, +190, +223, +203, +222, +93, +69, +59, +34, +0, +172, +159, +29, +214, +129, +53, +128, +71, +252, +120, +42, +176, +188, +31, +175, +232, +15, +182, +118, +66, +157, +59, +1, +143, +250, +87, +92, +135, +1, +62, +216, +121, +113, +192, +89, +192, +97, +192, +65, +192, +185, +126, +237, +110, +114, +211, +82, +65, +61, +165, +67, +126, +132, +30, +96, +219, +204, +249, +88, +191, +54, +54, +115, +109, +115, +24, +58, +117, +69, +234, +186, +12, +248, +53, +240, +251, +58, +125, +240, +178, +59, +121, +187, +249, +17, +185, +167, +101, +59, +95, +252, +193, +126, +124, +100, +230, +43, +252, +17, +112, +144, +31, +127, +28, +184, +47, +177, +190, +107, +128, +207, +100, +206, +135, +160, +160, +220, +162, +192, +107, +254, +255, +62, +76, +46, +88, +14, +120, +16, +88, +204, +239, +45, +146, +216, +135, +228, +23, +226, +116, +155, +103, +206, +59, +12, +176, +66, +230, +90, +37, +3, +0, +227, +128, +151, +252, +99, +121, +41, +203, +64, +137, +125, +238, +134, +121, +26, +151, +21, +112, +54, +112, +177, +31, +255, +1, +216, +211, +143, +247, +7, +46, +244, +227, +75, +129, +175, +37, +212, +245, +110, +224, +5, +96, +177, +204, +53, +252, +7, +121, +115, +231, +175, +164, +252, +77, +192, +129, +192, +29, +153, +107, +119, +0, +7, +3, +55, +212, +120, +166, +228, +23, +210, +34, +3, +156, +14, +252, +218, +143, +47, +1, +78, +171, +209, +223, +198, +204, +211, +45, +227, +9, +216, +22, +19, +154, +22, +0, +158, +7, +22, +247, +235, +111, +5, +30, +199, +36, +250, +231, +201, +173, +22, +10, +234, +250, +121, +236, +139, +39, +97, +10, +240, +242, +39, +3, +55, +0, +95, +201, +92, +59, +195, +25, +227, +164, +196, +58, +106, +189, +144, +54, +24, +192, +25, +251, +25, +96, +15, +63, +223, +195, +207, +11, +153, +61, +87, +190, +27, +230, +105, +92, +182, +83, +193, +188, +206, +0, +31, +7, +110, +206, +221, +187, +29, +27, +9, +158, +162, +122, +57, +53, +22, +27, +166, +215, +206, +126, +237, +53, +25, +96, +75, +167, +223, +44, +115, +109, +187, +252, +181, +138, +58, +106, +189, +144, +150, +24, +224, +64, +255, +72, +22, +240, +243, +55, +3, +211, +129, +3, +19, +250, +219, +152, +121, +186, +101, +188, +108, +69, +63, +195, +164, +231, +47, +230, +174, +127, +205, +191, +190, +31, +36, +212, +113, +54, +240, +219, +200, +117, +72, +156, +2, +186, +69, +107, +47, +164, +126, +187, +127, +39, +142, +91, +18, +202, +118, +195, +60, +141, +203, +230, +43, +218, +219, +59, +252, +222, +220, +245, +9, +126, +253, +3, +21, +229, +23, +7, +94, +4, +198, +71, +238, +13, +65, +173, +206, +213, +64, +107, +47, +164, +94, +155, +239, +1, +102, +97, +43, +168, +236, +200, +183, +154, +95, +223, +176, +162, +124, +55, +204, +211, +184, +236, +92, +137, +225, +120, +33, +216, +106, +233, +55, +5, +247, +46, +5, +126, +88, +82, +182, +49, +243, +116, +203, +120, +115, +29, +134, +227, +133, +0, +75, +2, +47, +3, +91, +21, +220, +223, +214, +239, +47, +89, +112, +191, +27, +230, +105, +92, +118, +174, +196, +156, +246, +66, +186, +97, +158, +110, +25, +111, +174, +195, +232, +11, +105, +1, +116, +163, +78, +180, +242, +75, +1, +255, +11, +252, +180, +102, +185, +159, +123, +185, +165, +154, +180, +59, +138, +150, +64, +55, +234, +68, +43, +127, +5, +166, +195, +175, +171, +139, +159, +7, +51, +163, +254, +161, +73, +187, +163, +104, +1, +116, +171, +78, +156, +139, +1, +44, +3, +188, +14, +108, +19, +185, +183, +131, +223, +91, +102, +56, +250, +214, +4, +69, +95, +231, +39, +36, +93, +233, +182, +246, +63, +250, +121, +50, +186, +153, +62, +186, +157, +122, +122, +141, +16, +194, +83, +146, +174, +146, +180, +103, +228, +246, +158, +146, +254, +228, +52, +131, +0, +44, +136, +57, +121, +124, +46, +114, +239, +72, +191, +183, +96, +228, +222, +217, +152, +129, +238, +62, +224, +204, +204, +245, +177, +152, +133, +54, +201, +32, +150, +12, +90, +208, +158, +117, +51, +125, +212, +41, +235, +194, +222, +143, +129, +215, +114, +215, +43, +95, +142, +51, +217, +171, +184, +173, +35, +119, +239, +77, +192, +211, +80, +104, +169, +220, +215, +229, +148, +121, +50, +215, +230, +245, +50, +251, +148, +180, +185, +30, +102, +28, +219, +58, +115, +109, +99, +204, +79, +97, +221, +130, +50, +107, +250, +180, +184, +46, +240, +104, +230, +250, +133, +192, +167, +138, +218, +106, +12, +186, +212, +158, +117, +51, +125, +212, +45, +11, +252, +2, +179, +77, +204, +200, +93, +175, +124, +57, +206, +0, +55, +147, +113, +254, +200, +220, +219, +3, +184, +177, +132, +1, +22, +244, +119, +180, +77, +230, +218, +118, +217, +247, +86, +210, +238, +199, +128, +39, +129, +101, +157, +129, +31, +6, +62, +86, +81, +230, +58, +103, +174, +143, +248, +249, +187, +48, +103, +147, +55, +149, +149, +107, +4, +186, +212, +158, +49, +12, +150, +44, +96, +102, +230, +56, +233, +229, +248, +51, +29, +79, +206, +224, +229, +247, +254, +0, +28, +81, +196, +0, +78, +243, +35, +220, +57, +197, +207, +207, +3, +126, +148, +216, +223, +95, +96, +190, +130, +127, +0, +126, +145, +88, +102, +89, +224, +223, +126, +252, +39, +220, +195, +170, +85, +208, +189, +30, +123, +88, +44, +89, +57, +6, +72, +122, +57, +206, +0, +219, +98, +243, +235, +26, +153, +235, +203, +3, +255, +196, +220, +208, +202, +24, +96, +59, +124, +26, +240, +191, +167, +200, +120, +18, +85, +180, +189, +48, +54, +69, +61, +69, +197, +28, +142, +59, +189, +2, +107, +97, +158, +85, +219, +99, +14, +171, +1, +27, +253, +94, +43, +43, +95, +11, +116, +169, +61, +99, +152, +44, +89, +29, +6, +200, +188, +156, +147, +128, +73, +216, +240, +26, +157, +10, +156, +1, +182, +195, +124, +14, +190, +156, +185, +254, +121, +224, +112, +191, +87, +198, +0, +99, +128, +199, +156, +81, +182, +246, +31, +52, +105, +201, +235, +31, +218, +116, +108, +154, +27, +178, +154, +200, +209, +222, +130, +9, +128, +119, +2, +239, +243, +231, +219, +14, +88, +221, +127, +175, +25, +101, +229, +147, +65, +11, +218, +51, +134, +201, +146, +5, +204, +244, +47, +162, +243, +114, +54, +197, +28, +90, +22, +3, +166, +23, +148, +233, +48, +192, +106, +206, +40, +99, +188, +142, +187, +49, +107, +102, +41, +3, +120, +29, +103, +96, +186, +142, +179, +73, +116, +253, +118, +198, +254, +23, +240, +73, +224, +88, +108, +4, +90, +168, +186, +164, +4, +236, +7, +252, +17, +152, +31, +184, +26, +120, +27, +240, +122, +74, +217, +158, +131, +97, +182, +100, +117, +94, +78, +238, +218, +4, +224, +138, +2, +122, +112, +199, +20, +76, +224, +219, +22, +24, +143, +207, +201, +137, +12, +240, +14, +108, +249, +54, +25, +88, +191, +170, +143, +94, +230, +76, +224, +42, +103, +182, +121, +128, +127, +0, +149, +46, +230, +216, +202, +228, +126, +44, +86, +224, +28, +6, +166, +202, +153, +85, +101, +251, +2, +134, +209, +146, +149, +125, +57, +153, +107, +155, +2, +215, +82, +108, +121, +203, +50, +192, +161, +216, +114, +242, +2, +96, +123, +191, +86, +201, +0, +78, +119, +59, +112, +123, +21, +157, +211, +110, +9, +60, +75, +38, +152, +5, +243, +196, +126, +149, +204, +210, +176, +160, +236, +81, +192, +5, +126, +252, +47, +108, +138, +155, +228, +207, +49, +188, +90, +83, +134, +217, +146, +149, +125, +57, +126, +190, +13, +112, +17, +176, +112, +73, +153, +44, +3, +44, +14, +252, +219, +95, +236, +24, +191, +150, +196, +0, +169, +0, +222, +2, +60, +64, +68, +166, +193, +228, +144, +7, +129, +183, +20, +148, +93, +4, +147, +55, +198, +70, +238, +141, +140, +17, +96, +184, +16, +123, +57, +206, +48, +247, +101, +190, +146, +141, +34, +229, +102, +51, +128, +159, +255, +146, +140, +11, +92, +219, +12, +48, +226, +1, +108, +229, +28, +122, +47, +176, +113, +230, +250, +242, +152, +144, +212, +174, +202, +113, +20, +35, +11, +152, +20, +190, +13, +166, +139, +191, +46, +115, +253, +7, +192, +145, +195, +217, +183, +81, +244, +1, +216, +154, +244, +45, +192, +66, +248, +210, +9, +211, +63, +223, +75, +47, +84, +142, +163, +24, +89, +192, +140, +20, +29, +6, +120, +222, +175, +93, +78, +137, +113, +195, +105, +26, +27, +100, +156, +110, +39, +204, +0, +116, +149, +255, +93, +6, +76, +232, +254, +137, +134, +31, +12, +198, +12, +44, +170, +233, +68, +42, +236, +5, +5, +117, +189, +189, +224, +250, +82, +190, +138, +200, +135, +245, +111, +130, +197, +101, +44, +157, +218, +192, +13, +153, +41, +224, +111, +216, +154, +248, +159, +152, +150, +107, +136, +108, +144, +41, +215, +141, +65, +230, +100, +224, +123, +89, +9, +31, +88, +218, +175, +149, +70, +254, +212, +101, +28, +111, +107, +50, +240, +138, +255, +159, +0, +124, +26, +51, +204, +60, +5, +156, +75, +196, +28, +155, +41, +191, +14, +240, +83, +23, +56, +159, +198, +150, +157, +167, +149, +49, +184, +255, +240, +157, +24, +136, +177, +192, +7, +48, +101, +213, +223, +139, +218, +194, +116, +254, +223, +243, +118, +94, +5, +166, +248, +52, +252, +34, +176, +92, +65, +153, +139, +240, +24, +206, +204, +181, +115, +113, +187, +74, +18, +128, +205, +48, +201, +249, +126, +96, +139, +140, +76, +16, +149, +13, +34, +229, +107, +25, +100, +128, +93, +24, +80, +186, +128, +169, +70, +31, +7, +142, +245, +107, +223, +43, +250, +65, +155, +48, +14, +102, +194, +125, +15, +182, +228, +251, +152, +127, +145, +147, +176, +105, +110, +37, +255, +0, +162, +241, +142, +192, +110, +254, +110, +246, +194, +109, +19, +152, +99, +200, +119, +252, +171, +142, +46, +55, +253, +185, +182, +203, +93, +91, +8, +91, +242, +157, +16, +161, +95, +10, +19, +184, +127, +131, +41, +153, +22, +1, +54, +192, +84, +228, +143, +20, +49, +27, +3, +150, +200, +5, +253, +124, +126, +44, +186, +107, +151, +24, +125, +37, +128, +125, +112, +229, +2, +17, +217, +160, +160, +76, +45, +131, +12, +230, +50, +182, +148, +31, +131, +169, +53, +87, +195, +194, +211, +23, +244, +31, +244, +178, +72, +185, +44, +227, +172, +4, +252, +197, +31, +246, +119, +126, +173, +144, +113, +50, +117, +204, +139, +105, +24, +63, +150, +185, +182, +7, +240, +112, +132, +118, +172, +191, +252, +149, +10, +234, +186, +144, +140, +45, +33, +119, +111, +8, +3, +248, +245, +207, +17, +201, +250, +1, +252, +183, +51, +229, +152, +28, +237, +3, +152, +138, +250, +11, +5, +237, +4, +103, +170, +255, +231, +231, +123, +249, +199, +52, +79, +140, +190, +20, +152, +86, +237, +94, +92, +181, +73, +68, +54, +40, +40, +151, +55, +200, +148, +90, +171, +24, +156, +238, +5, +224, +67, +192, +113, +152, +110, +188, +163, +140, +185, +42, +82, +46, +203, +56, +191, +195, +244, +241, +99, +112, +61, +64, +9, +227, +172, +128, +133, +188, +61, +236, +127, +49, +188, +17, +41, +247, +117, +224, +56, +63, +94, +13, +83, +27, +79, +197, +134, +230, +21, +48, +245, +245, +189, +145, +114, +67, +144, +185, +247, +65, +224, +229, +72, +153, +201, +157, +182, +252, +124, +93, +76, +167, +177, +165, +191, +155, +59, +242, +101, +50, +180, +159, +7, +174, +241, +227, +203, +129, +83, +139, +104, +75, +1, +124, +138, +140, +93, +27, +147, +7, +182, +198, +101, +131, +146, +114, +121, +131, +76, +169, +181, +42, +194, +0, +87, +96, +115, +241, +58, +153, +235, +49, +6, +200, +150, +123, +14, +88, +61, +66, +19, +43, +247, +103, +204, +211, +104, +17, +103, +24, +176, +16, +184, +172, +237, +97, +136, +233, +25, +251, +34, +215, +246, +227, +107, +128, +195, +252, +248, +85, +44, +98, +122, +12, +240, +74, +164, +92, +39, +16, +118, +167, +124, +221, +192, +238, +192, +139, +145, +50, +175, +0, +123, +249, +241, +188, +152, +12, +118, +150, +159, +239, +89, +244, +46, +253, +254, +114, +152, +208, +183, +14, +230, +151, +184, +70, +17, +109, +33, +252, +229, +60, +202, +96, +93, +245, +32, +217, +160, +162, +124, +178, +181, +202, +127, +240, +37, +253, +24, +167, +61, +16, +56, +207, +175, +45, +69, +252, +75, +206, +51, +192, +106, +17, +154, +24, +3, +188, +4, +236, +234, +199, +227, +188, +205, +83, +202, +158, +199, +105, +95, +102, +96, +110, +125, +9, +120, +59, +54, +26, +130, +141, +150, +139, +3, +79, +23, +148, +133, +248, +20, +240, +37, +224, +214, +200, +245, +87, +24, +200, +199, +112, +2, +54, +34, +116, +204, +227, +123, +17, +25, +53, +114, +229, +127, +135, +77, +191, +133, +31, +106, +207, +64, +77, +107, +21, +102, +219, +254, +185, +31, +119, +24, +32, +96, +158, +50, +155, +96, +115, +249, +16, +199, +208, +28, +227, +252, +22, +243, +34, +26, +195, +192, +180, +80, +196, +56, +147, +176, +233, +226, +173, +216, +84, +112, +163, +51, +208, +222, +206, +16, +239, +5, +118, +143, +148, +123, +9, +88, +212, +143, +31, +194, +134, +227, +29, +176, +17, +96, +25, +44, +140, +254, +226, +130, +103, +28, +194, +0, +94, +230, +73, +224, +63, +35, +244, +147, +49, +47, +165, +245, +48, +33, +117, +211, +204, +189, +227, +129, +59, +99, +237, +228, +222, +41, +184, +235, +88, +95, +65, +3, +107, +21, +240, +85, +44, +16, +36, +43, +205, +47, +133, +45, +45, +79, +46, +40, +147, +101, +156, +149, +176, +37, +224, +52, +60, +137, +85, +9, +227, +108, +143, +205, +253, +211, +129, +111, +97, +67, +236, +209, +126, +237, +117, +108, +78, +143, +249, +7, +78, +196, +163, +156, +177, +161, +123, +138, +63, +215, +4, +224, +127, +48, +225, +108, +229, +130, +190, +130, +77, +1, +11, +96, +242, +194, +1, +152, +176, +118, +13, +145, +21, +18, +230, +91, +112, +15, +54, +141, +158, +150, +185, +62, +143, +51, +71, +244, +157, +100, +232, +118, +114, +134, +45, +52, +130, +245, +4, +116, +97, +173, +242, +31, +244, +10, +108, +202, +184, +218, +143, +75, +151, +47, +77, +24, +167, +41, +128, +255, +44, +98, +224, +132, +178, +89, +60, +143, +45, +169, +143, +2, +230, +43, +160, +95, +6, +147, +222, +95, +198, +150, +172, +11, +99, +115, +250, +149, +206, +116, +67, +150, +129, +206, +28, +11, +97, +194, +232, +93, +192, +25, +77, +250, +58, +199, +161, +9, +227, +52, +108, +103, +62, +255, +98, +127, +69, +198, +117, +219, +127, +172, +86, +29, +51, +177, +21, +204, +115, +152, +101, +242, +49, +76, +168, +155, +234, +35, +86, +52, +84, +206, +71, +150, +87, +188, +220, +15, +128, +249, +219, +236, +147, +168, +25, +218, +53, +55, +194, +153, +224, +211, +152, +84, +62, +13, +243, +29, +120, +0, +23, +88, +91, +110, +43, +26, +31, +208, +55, +144, +203, +172, +73, +196, +109, +122, +20, +115, +15, +98, +95, +247, +254, +146, +54, +240, +227, +219, +36, +213, +138, +238, +29, +197, +28, +142, +58, +67, +190, +207, +89, +175, +145, +243, +184, +193, +194, +157, +94, +45, +154, +183, +114, +180, +141, +194, +200, +71, +209, +3, +48, +216, +18, +213, +17, +64, +190, +77, +137, +73, +17, +211, +174, +125, +35, +119, +237, +219, +20, +172, +141, +35, +229, +107, +133, +145, +211, +48, +139, +246, +40, +163, +85, +128, +1, +75, +212, +165, +12, +88, +162, +214, +243, +31, +248, +62, +92, +25, +18, +41, +183, +11, +166, +194, +237, +228, +2, +126, +147, +11, +73, +61, +177, +233, +99, +214, +183, +14, +3, +36, +121, +227, +122, +185, +36, +70, +195, +20, +66, +19, +49, +69, +204, +237, +84, +104, +63, +115, +101, +107, +51, +39, +53, +82, +187, +231, +202, +181, +203, +208, +152, +37, +234, +94, +114, +22, +36, +76, +203, +54, +153, +98, +139, +215, +60, +62, +98, +236, +226, +231, +187, +59, +35, +69, +95, +52, +109, +57, +48, +244, +8, +152, +54, +243, +84, +96, +9, +76, +115, +152, +148, +19, +217, +203, +214, +98, +78, +224, +187, +152, +86, +114, +117, +76, +135, +145, +156, +218, +189, +238, +200, +153, +82, +225, +32, +75, +84, +238, +222, +241, +101, +28, +141, +41, +102, +126, +230, +199, +191, +161, +192, +108, +153, +161, +175, +229, +192, +208, +132, +105, +176, +168, +160, +105, +228, +220, +176, +49, +83, +247, +179, +37, +35, +218, +11, +25, +102, +222, +139, +2, +61, +255, +92, +7, +50, +150, +168, +200, +189, +82, +67, +4, +102, +38, +157, +142, +185, +135, +205, +160, +192, +118, +158, +161, +175, +237, +192, +80, +151, +105, +252, +254, +137, +152, +118, +44, +100, +174, +221, +70, +196, +25, +35, +115, +255, +39, +152, +61, +98, +2, +166, +149, +59, +172, +236, +89, +188, +76, +19, +217, +169, +47, +101, +146, +209, +13, +3, +56, +205, +95, +49, +15, +153, +63, +150, +209, +57, +109, +109, +7, +134, +134, +76, +179, +136, +127, +237, +239, +243, +243, +157, +177, +136, +227, +178, +128, +145, +245, +48, +211, +246, +27, +192, +222, +9, +207, +82, +91, +118, +234, +87, +153, +90, +192, +116, +205, +199, +23, +220, +75, +177, +68, +29, +236, +47, +46, +150, +58, +37, +70, +95, +203, +129, +161, +9, +211, +100, +218, +185, +193, +143, +255, +74, +193, +52, +231, +247, +223, +235, +12, +115, +54, +166, +233, +251, +25, +3, +206, +41, +135, +19, +113, +200, +160, +129, +236, +212, +175, +50, +181, +128, +37, +130, +190, +47, +210, +64, +146, +37, +170, +65, +123, +181, +29, +24, +234, +50, +141, +211, +45, +236, +95, +253, +103, +49, +169, +57, +26, +126, +229, +180, +119, +0, +95, +242, +227, +149, +24, +112, +200, +92, +206, +153, +237, +195, +145, +50, +181, +101, +167, +126, +149, +169, +133, +204, +16, +115, +21, +230, +138, +148, +181, +68, +117, +63, +196, +196, +219, +172, +229, +192, +208, +132, +105, +188, +220, +113, +24, +134, +216, +224, +115, +116, +47, +2, +187, +101, +206, +87, +198, +28, +100, +94, +0, +190, +95, +80, +166, +246, +212, +217, +175, +50, +41, +200, +238, +26, +246, +140, +164, +77, +36, +77, +145, +244, +39, +73, +255, +150, +101, +8, +123, +80, +182, +251, +85, +161, +67, +104, +23, +248, +158, +164, +237, +37, +37, +165, +109, +245, +157, +205, +174, +148, +116, +150, +108, +199, +178, +201, +137, +237, +116, +148, +82, +67, +210, +215, +231, +112, +163, +164, +227, +176, +101, +220, +56, +73, +155, +202, +118, +239, +154, +79, +210, +180, +196, +182, +230, +40, +204, +155, +61, +241, +45, +224, +62, +218, +199, +246, +103, +74, +154, +33, +233, +162, +26, +101, +190, +39, +233, +119, +170, +215, +207, +212, +32, +207, +131, +36, +125, +93, +198, +248, +11, +73, +154, +36, +233, +11, +146, +110, +146, +116, +45, +240, +74, +8, +33, +191, +130, +152, +34, +41, +234, +16, +226, +215, +239, +143, +92, +239, +87, +153, +222, +131, +226, +165, +73, +52, +89, +34, +93, +58, +48, +208, +192, +235, +133, +129, +93, +63, +86, +173, +211, +86, +98, +221, +181, +101, +167, +126, +149, +233, +57, +40, +95, +154, +60, +64, +102, +179, +168, +76, +153, +218, +14, +12, +45, +48, +77, +47, +25, +160, +182, +236, +212, +175, +50, +61, +7, +189, +94, +154, +12, +212, +215, +91, +175, +151, +46, +145, +25, +5, +31, +167, +190, +82, +167, +167, +101, +154, +62, +80, +82, +198, +110, +122, +189, +52, +25, +197, +240, +128, +196, +140, +221, +244, +104, +105, +50, +138, +254, +97, +222, +216, +197, +16, +194, +44, +73, +71, +181, +80, +127, +123, +73, +12, +71, +209, +19, +12, +50, +37, +82, +223, +216, +48, +69, +229, +75, +147, +41, +249, +139, +52, +180, +210, +213, +133, +11, +125, +177, +168, +156, +194, +220, +63, +152, +47, +195, +49, +152, +63, +192, +75, +152, +98, +232, +110, +160, +141, +143, +97, +100, +163, +66, +162, +47, +146, +76, +171, +150, +38, +255, +85, +208, +86, +19, +43, +93, +45, +230, +172, +203, +0, +254, +227, +95, +135, +5, +101, +236, +224, +140, +250, +86, +224, +253, +177, +122, +114, +253, +122, +202, +143, +151, +6, +30, +47, +233, +79, +7, +149, +201, +34, +98, +253, +199, +98, +45, +175, +35, +30, +195, +56, +147, +248, +30, +6, +105, +201, +174, +104, +102, +160, +40, +91, +154, +220, +73, +65, +6, +76, +106, +90, +233, +26, +50, +103, +93, +6, +56, +14, +75, +252, +80, +107, +4, +2, +118, +197, +147, +81, +98, +219, +202, +71, +211, +220, +123, +127, +146, +147, +69, +228, +251, +15, +124, +25, +27, +153, +138, +114, +4, +212, +122, +222, +14, +178, +83, +192, +174, +146, +190, +239, +243, +255, +108, +132, +16, +222, +144, +169, +106, +135, +108, +22, +25, +81, +31, +79, +147, +116, +151, +164, +151, +36, +109, +17, +66, +24, +18, +1, +235, +229, +158, +151, +244, +223, +146, +58, +43, +136, +207, +74, +58, +35, +132, +240, +66, +65, +63, +63, +43, +233, +85, +73, +31, +10, +33, +220, +30, +66, +120, +62, +132, +112, +167, +108, +131, +134, +55, +36, +125, +166, +160, +92, +29, +236, +39, +233, +188, +6, +42, +239, +13, +36, +77, +140, +28, +199, +240, +122, +8, +225, +149, +16, +194, +148, +16, +194, +111, +37, +109, +37, +105, +41, +73, +71, +151, +53, +0, +28, +42, +105, +15, +73, +59, +250, +187, +107, +31, +180, +36, +209, +99, +86, +186, +137, +249, +145, +36, +66, +87, +199, +74, +215, +196, +122, +86, +138, +8, +253, +12, +96, +191, +148, +103, +116, +250, +231, +252, +111, +38, +102, +44, +26, +116, +92, +208, +159, +58, +201, +34, +240, +175, +247, +3, +62, +250, +69, +115, +4, +37, +212, +159, +60, +2, +180, +133, +79, +75, +90, +69, +210, +37, +148, +36, +67, +242, +175, +253, +12, +73, +95, +145, +116, +122, +8, +225, +165, +146, +58, +223, +46, +233, +161, +130, +123, +15, +122, +123, +49, +236, +44, +105, +129, +220, +223, +206, +69, +93, +146, +217, +38, +102, +163, +140, +97, +66, +8, +139, +133, +16, +22, +147, +244, +164, +164, +181, +252, +248, +127, +37, +173, +238, +199, +169, +184, +167, +164, +255, +235, +75, +250, +153, +108, +116, +28, +146, +189, +164, +13, +100, +25, +96, +138, +90, +48, +54, +132, +16, +238, +149, +89, +248, +222, +144, +84, +149, +201, +58, +213, +74, +215, +20, +157, +33, +119, +246, +95, +73, +159, +30, +148, +148, +207, +53, +80, +198, +48, +194, +118, +20, +39, +132, +48, +21, +75, +224, +52, +203, +13, +106, +117, +48, +70, +210, +172, +130, +123, +235, +203, +166, +166, +147, +128, +229, +107, +214, +155, +220, +120, +7, +151, +73, +58, +36, +63, +116, +251, +249, +193, +146, +46, +77, +173, +52, +132, +240, +247, +16, +194, +110, +33, +132, +170, +60, +182, +169, +86, +186, +41, +234, +189, +37, +236, +18, +73, +135, +146, +145, +176, +203, +24, +198, +135, +249, +127, +73, +90, +214, +143, +39, +75, +90, +174, +51, +53, +212, +104, +247, +157, +94, +54, +134, +11, +93, +86, +184, +72, +210, +79, +200, +172, +154, +34, +152, +37, +51, +91, +231, +241, +38, +229, +70, +182, +44, +178, +12, +112, +170, +19, +95, +73, +70, +162, +151, +116, +185, +211, +69, +51, +104, +245, +9, +173, +49, +103, +9, +206, +144, +9, +175, +127, +194, +178, +164, +45, +138, +173, +74, +162, +95, +158, +15, +243, +231, +72, +58, +209, +143, +207, +148, +116, +82, +102, +106, +168, +4, +102, +49, +253, +152, +108, +152, +47, +195, +103, +36, +173, +36, +233, +216, +18, +154, +123, +37, +189, +59, +114, +125, +35, +191, +151, +212, +161, +254, +24, +27, +6, +218, +75, +178, +210, +209, +204, +122, +86, +91, +40, +194, +188, +154, +191, +137, +101, +5, +155, +233, +130, +225, +189, +20, +236, +235, +227, +237, +79, +240, +227, +203, +40, +217, +234, +206, +251, +83, +39, +89, +196, +160, +254, +99, +233, +239, +95, +6, +54, +200, +211, +250, +253, +61, +48, +167, +217, +3, +253, +119, +124, +27, +112, +144, +11, +165, +251, +23, +245, +107, +142, +65, +191, +153, +51, +177, +79, +79, +116, +218, +247, +227, +183, +149, +208, +102, +145, +146, +44, +98, +8, +3, +99, +241, +23, +147, +41, +78, +43, +255, +62, +44, +132, +253, +101, +103, +222, +155, +129, +15, +117, +243, +140, +163, +24, +197, +40, +70, +49, +138, +185, +31, +62, +231, +220, +157, +159, +147, +42, +132, +166, +43, +124, +94, +126, +210, +231, +230, +239, +2, +151, +39, +180, +53, +98, +66, +181, +105, +24, +110, +62, +183, +32, +175, +9, +92, +84, +210, +49, +53, +202, +63, +41, +105, +89, +73, +107, +75, +90, +75, +210, +91, +252, +90, +21, +46, +144, +45, +125, +134, +4, +90, +228, +65, +162, +119, +82, +174, +76, +157, +144, +235, +236, +26, +185, +72, +33, +83, +214, +86, +85, +184, +249, +10, +152, +89, +121, +205, +18, +154, +206, +190, +73, +235, +213, +108, +187, +52, +112, +21, +203, +99, +124, +117, +238, +218, +159, +201, +236, +175, +148, +189, +1, +240, +31, +46, +161, +142, +203, +92, +47, +27, +1, +30, +3, +86, +201, +156, +47, +82, +213, +169, +186, +32, +209, +59, +41, +67, +223, +56, +228, +58, +177, +254, +90, +57, +148, +128, +243, +49, +251, +72, +105, +194, +12, +108, +207, +133, +115, +203, +104, +156, +110, +33, +6, +194, +213, +254, +234, +255, +3, +17, +203, +171, +255, +30, +15, +2, +255, +225, +231, +135, +96, +206, +186, +67, +173, +174, +206, +0, +91, +250, +131, +93, +158, +185, +94, +198, +0, +79, +144, +73, +146, +136, +173, +207, +163, +241, +244, +116, +107, +175, +110, +25, +77, +251, +131, +237, +228, +185, +178, +191, +167, +231, +128, +35, +74, +104, +215, +240, +23, +62, +63, +102, +30, +127, +103, +9, +237, +70, +216, +154, +189, +106, +131, +141, +19, +48, +179, +245, +79, +49, +31, +138, +159, +98, +9, +58, +190, +88, +64, +191, +137, +223, +127, +167, +255, +31, +178, +231, +67, +135, +16, +108, +139, +182, +133, +176, +112, +168, +78, +170, +215, +50, +6, +248, +1, +150, +174, +117, +49, +255, +241, +127, +82, +244, +197, +121, +253, +117, +236, +243, +181, +126, +160, +6, +244, +181, +250, +147, +185, +95, +39, +135, +210, +175, +128, +143, +250, +241, +190, +68, +82, +216, +230, +232, +255, +9, +28, +94, +65, +179, +8, +182, +165, +252, +49, +216, +212, +114, +180, +159, +23, +250, +49, +96, +142, +39, +51, +136, +56, +232, +228, +31, +38, +184, +13, +255, +40, +73, +103, +71, +135, +138, +193, +120, +171, +164, +103, +100, +170, +198, +251, +100, +115, +104, +105, +110, +128, +26, +152, +39, +210, +191, +54, +233, +107, +193, +25, +230, +110, +111, +39, +123, +189, +136, +193, +54, +148, +244, +46, +13, +132, +189, +93, +36, +105, +53, +96, +147, +146, +102, +206, +145, +52, +36, +93, +109, +22, +238, +15, +48, +77, +246, +27, +29, +44, +179, +190, +78, +171, +240, +99, +24, +39, +233, +89, +255, +63, +8, +209, +23, +22, +66, +248, +181, +44, +69, +220, +41, +42, +49, +36, +132, +16, +118, +9, +33, +28, +18, +66, +88, +38, +132, +240, +182, +16, +194, +193, +33, +132, +29, +203, +30, +96, +14, +71, +29, +33, +249, +84, +73, +167, +116, +12, +98, +238, +88, +243, +21, +73, +101, +177, +18, +191, +144, +244, +54, +42, +118, +17, +149, +180, +177, +164, +137, +33, +132, +95, +74, +186, +69, +210, +123, +139, +8, +49, +175, +171, +237, +36, +189, +71, +210, +14, +120, +198, +244, +24, +225, +160, +33, +17, +203, +160, +253, +60, +182, +189, +74, +215, +115, +116, +131, +41, +96, +36, +210, +215, +18, +146, +155, +0, +115, +205, +251, +101, +75, +117, +45, +137, +201, +105, +157, +233, +124, +79, +63, +95, +162, +67, +83, +56, +100, +134, +16, +30, +146, +244, +85, +73, +95, +106, +163, +51, +115, +9, +238, +151, +116, +190, +164, +111, +245, +176, +141, +115, +37, +189, +159, +130, +13, +162, +106, +226, +219, +146, +238, +8, +33, +252, +74, +146, +124, +196, +184, +211, +175, +75, +170, +158, +51, +191, +38, +11, +19, +111, +3, +141, +236, +213, +61, +68, +147, +254, +204, +39, +233, +68, +73, +235, +119, +190, +170, +182, +17, +66, +184, +95, +210, +181, +50, +51, +113, +183, +117, +237, +29, +66, +152, +144, +187, +182, +67, +8, +97, +246, +86, +128, +217, +252, +0, +33, +132, +112, +117, +142, +248, +245, +16, +194, +58, +33, +132, +50, +71, +132, +84, +212, +181, +87, +215, +253, +129, +234, +210, +55, +177, +159, +215, +21, +146, +155, +226, +28, +73, +31, +197, +115, +47, +206, +21, +160, +166, +189, +26, +83, +209, +126, +62, +114, +253, +11, +46, +141, +119, +75, +95, +183, +63, +121, +25, +233, +114, +44, +151, +208, +248, +54, +101, +128, +185, +26, +212, +176, +87, +55, +248, +129, +106, +59, +68, +212, +236, +79, +158, +1, +90, +21, +146, +71, +17, +65, +157, +31, +168, +9, +125, +205, +190, +12, +89, +53, +96, +46, +237, +79, +14, +39, +3, +120, +191, +54, +175, +166, +76, +171, +108, +173, +252, +57, +17, +71, +68, +74, +208, +74, +71, +70, +32, +10, +24, +96, +62, +204, +130, +58, +231, +51, +0, +176, +10, +166, +99, +222, +193, +207, +183, +33, +183, +143, +95, +134, +182, +179, +207, +222, +26, +222, +129, +181, +41, +216, +119, +111, +20, +67, +129, +109, +170, +149, +36, +88, +99, +6, +173, +168, +219, +152, +223, +111, +117, +4, +216, +210, +153, +224, +243, +254, +127, +124, +5, +253, +88, +239, +64, +235, +169, +87, +230, +102, +164, +254, +248, +78, +75, +217, +135, +149, +101, +0, +204, +225, +244, +38, +114, +41, +117, +235, +118, +238, +24, +175, +52, +154, +53, +52, +71, +155, +196, +0, +88, +46, +225, +171, +49, +227, +197, +19, +152, +141, +255, +255, +252, +94, +68, +41, +72, +101, +0, +44, +136, +247, +55, +192, +239, +105, +178, +103, +176, +87, +182, +149, +127, +249, +157, +72, +217, +237, +43, +232, +83, +25, +224, +70, +44, +217, +243, +50, +152, +229, +234, +160, +146, +135, +129, +129, +125, +252, +206, +1, +22, +79, +232, +119, +233, +48, +233, +52, +75, +97, +142, +34, +83, +177, +56, +200, +135, +40, +216, +45, +188, +23, +192, +220, +192, +99, +136, +109, +33, +123, +97, +1, +237, +175, +34, +180, +96, +91, +204, +125, +195, +191, +254, +232, +182, +244, +41, +29, +28, +135, +205, +249, +219, +248, +249, +22, +126, +190, +86, +73, +153, +84, +6, +120, +153, +34, +35, +196, +96, +58, +48, +223, +249, +133, +49, +251, +248, +157, +120, +26, +250, +132, +114, +101, +95, +201, +34, +152, +59, +245, +213, +152, +235, +215, +226, +254, +124, +177, +212, +175, +11, +3, +23, +224, +210, +125, +22, +17, +218, +107, +129, +255, +206, +93, +59, +25, +207, +77, +156, +187, +62, +134, +220, +62, +197, +254, +55, +36, +225, +21, +38, +92, +118, +238, +131, +5, +169, +188, +153, +8, +147, +251, +253, +142, +7, +212, +16, +121, +173, +22, +200, +24, +57, +252, +188, +40, +104, +177, +115, +63, +149, +1, +238, +33, +205, +219, +5, +6, +175, +181, +247, +7, +42, +85, +209, +9, +12, +112, +10, +230, +189, +84, +24, +172, +154, +161, +61, +39, +247, +187, +79, +194, +116, +10, +147, +34, +180, +91, +96, +211, +90, +103, +43, +219, +249, +253, +163, +121, +127, +69, +27, +109, +203, +0, +191, +194, +188, +160, +174, +168, +83, +119, +215, +168, +193, +0, +59, +99, +27, +62, +92, +71, +137, +61, +60, +194, +0, +31, +6, +162, +193, +150, +212, +27, +38, +239, +166, +98, +19, +139, +12, +237, +99, +185, +250, +238, +242, +235, +81, +135, +81, +44, +215, +241, +201, +126, +124, +176, +51, +123, +233, +143, +64, +15, +86, +1, +216, +200, +245, +16, +240, +233, +148, +122, +91, +65, +42, +3, +56, +237, +234, +152, +144, +50, +139, +200, +208, +235, +52, +48, +48, +5, +108, +140, +165, +145, +249, +66, +1, +109, +157, +97, +242, +21, +96, +159, +88, +61, +17, +218, +153, +53, +25, +96, +19, +204, +71, +112, +17, +108, +47, +225, +131, +83, +218, +105, +11, +29, +6, +240, +227, +205, +49, +5, +216, +187, +250, +213, +120, +237, +101, +32, +182, +15, +79, +52, +214, +63, +242, +53, +31, +153, +88, +39, +148, +15, +147, +175, +144, +176, +249, +131, +211, +78, +175, +195, +0, +126, +239, +114, +76, +250, +158, +74, +36, +206, +175, +151, +200, +50, +128, +159, +127, +5, +155, +182, +10, +19, +110, +12, +43, +176, +164, +75, +209, +52, +39, +254, +48, +219, +249, +241, +223, +129, +66, +239, +155, +220, +8, +112, +169, +143, +26, +69, +35, +192, +36, +224, +115, +137, +253, +251, +83, +42, +3, +48, +48, +250, +228, +177, +66, +74, +91, +35, +10, +184, +85, +43, +134, +46, +235, +93, +10, +51, +208, +44, +141, +249, +200, +95, +6, +252, +174, +128, +54, +203, +0, +187, +97, +75, +209, +162, +68, +83, +117, +100, +128, +51, +177, +249, +177, +242, +235, +196, +146, +80, +61, +156, +194, +0, +126, +61, +59, +13, +237, +196, +156, +170, +13, +37, +190, +76, +89, +180, +5, +6, +88, +28, +219, +170, +165, +147, +71, +231, +18, +10, +162, +104, +115, +12, +16, +48, +225, +45, +233, +203, +173, +232, +195, +210, +152, +167, +243, +223, +176, +53, +243, +34, +216, +178, +183, +72, +22, +121, +51, +176, +1, +176, +97, +25, +3, +208, +197, +8, +224, +12, +254, +40, +17, +165, +77, +65, +157, +253, +183, +55, +116, +30, +176, +143, +237, +205, +102, +0, +63, +255, +48, +45, +37, +143, +4, +150, +7, +190, +143, +133, +176, +205, +194, +76, +185, +215, +38, +148, +235, +201, +8, +128, +229, +58, +40, +202, +163, +56, +187, +174, +236, +95, +74, +189, +173, +2, +155, +103, +135, +36, +71, +192, +180, +121, +127, +241, +151, +217, +193, +227, +100, +156, +13, +71, +50, +128, +139, +129, +75, +18, +105, +43, +133, +64, +191, +63, +136, +121, +43, +104, +87, +199, +150, +197, +149, +35, +97, +66, +155, +187, +96, +59, +156, +206, +192, +130, +86, +214, +79, +233, +67, +87, +192, +134, +244, +147, +252, +248, +68, +224, +250, +158, +55, +218, +34, +176, +41, +33, +41, +223, +94, +42, +3, +212, +108, +255, +44, +160, +112, +151, +148, +154, +12, +48, +25, +155, +170, +150, +193, +132, +225, +222, +255, +22, +206, +109, +219, +250, +241, +182, +68, +244, +217, +125, +232, +67, +22, +47, +99, +243, +233, +197, +84, +107, +47, +255, +138, +173, +48, +62, +153, +216, +78, +171, +12, +128, +89, +236, +166, +1, +91, +149, +208, +68, +81, +64, +247, +137, +204, +249, +142, +64, +81, +178, +205, +40, +154, +90, +228, +238, +151, +244, +65, +31, +242, +63, +168, +226, +44, +87, +131, +128, +205, +233, +80, +18, +35, +87, +19, +157, +60, +128, +111, +147, +101, +50, +93, +82, +210, +144, +85, +64, +22, +33, +132, +45, +66, +8, +27, +133, +16, +206, +105, +169, +15, +117, +177, +159, +164, +199, +66, +8, +215, +85, +208, +197, +114, +28, +198, +144, +117, +96, +125, +81, +182, +215, +81, +111, +225, +67, +206, +52, +204, +106, +55, +145, +4, +205, +19, +176, +32, +166, +217, +123, +190, +136, +1, +48, +189, +122, +244, +47, +66, +59, +100, +152, +196, +36, +235, +178, +132, +147, +195, +14, +204, +101, +173, +116, +244, +169, +57, +5, +100, +149, +64, +155, +199, +70, +138, +50, +148, +186, +29, +3, +99, +60, +164, +105, +16, +66, +8, +255, +196, +214, +212, +107, +132, +16, +30, +76, +108, +235, +51, +178, +221, +184, +10, +99, +223, +66, +8, +141, +184, +23, +83, +254, +140, +149, +237, +36, +86, +103, +7, +178, +174, +128, +57, +204, +68, +87, +18, +49, +87, +122, +44, +50, +119, +13, +73, +63, +233, +109, +207, +26, +130, +26, +177, +239, +88, +122, +179, +14, +158, +164, +68, +213, +138, +45, +193, +158, +192, +148, +66, +111, +180, +49, +5, +20, +76, +147, +23, +208, +212, +25, +162, +89, +31, +138, +76, +188, +209, +37, +27, +233, +57, +0, +250, +54, +2, +228, +101, +128, +253, +101, +25, +175, +37, +11, +14, +141, +166, +112, +1, +206, +145, +101, +239, +92, +213, +255, +206, +85, +121, +34, +201, +175, +74, +58, +199, +179, +139, +183, +105, +174, +236, +204, +147, +11, +75, +26, +47, +11, +234, +248, +122, +164, +191, +27, +98, +186, +250, +233, +88, +130, +234, +139, +40, +73, +233, +150, +138, +16, +194, +27, +249, +84, +180, +153, +148, +180, +249, +62, +44, +41, +105, +47, +101, +194, +178, +70, +28, +72, +116, +211, +242, +121, +121, +163, +204, +249, +38, +20, +164, +71, +197, +52, +111, +143, +227, +198, +9, +231, +218, +182, +70, +128, +188, +12, +176, +63, +240, +108, +132, +246, +66, +204, +81, +99, +101, +108, +13, +126, +45, +5, +121, +253, +157, +62, +201, +123, +136, +30, +169, +207, +135, +5, +222, +239, +36, +165, +2, +102, +207, +62, +210, +143, +23, +244, +23, +28, +141, +104, +5, +110, +192, +44, +84, +171, +250, +31, +152, +255, +126, +87, +201, +143, +11, +24, +224, +96, +224, +177, +132, +178, +239, +163, +216, +32, +85, +199, +123, +168, +214, +20, +48, +162, +225, +47, +52, +73, +169, +224, +95, +252, +173, +152, +243, +196, +67, +88, +166, +176, +168, +22, +176, +232, +11, +1, +254, +210, +66, +127, +59, +234, +210, +69, +49, +143, +230, +251, +129, +51, +19, +202, +126, +130, +72, +184, +152, +223, +75, +246, +30, +154, +171, +224, +47, +180, +43, +165, +66, +141, +118, +218, +22, +2, +103, +98, +185, +120, +78, +166, +98, +83, +73, +44, +5, +206, +125, +192, +199, +11, +238, +39, +123, +15, +205, +85, +240, +23, +185, +109, +230, +188, +182, +68, +89, +163, +157, +182, +20, +65, +117, +219, +158, +199, +71, +182, +223, +80, +224, +146, +69, +13, +239, +161, +134, +125, +56, +44, +50, +26, +198, +18, +85, +64, +66, +192, +7, +240, +59, +76, +86, +153, +138, +9, +184, +93, +233, +1, +94, +173, +83, +184, +9, +90, +10, +53, +175, +13, +76, +192, +253, +129, +164, +197, +101, +123, +239, +148, +189, +168, +94, +10, +113, +75, +73, +186, +66, +82, +214, +219, +169, +82, +110, +41, +66, +8, +97, +182, +3, +42, +240, +99, +21, +107, +12, +163, +152, +123, +226, +207, +75, +224, +95, +251, +119, +100, +75, +214, +9, +33, +132, +178, +253, +143, +166, +168, +120, +11, +151, +170, +118, +86, +150, +229, +1, +218, +82, +166, +150, +30, +31, +66, +184, +41, +71, +182, +148, +164, +7, +61, +17, +68, +107, +0, +54, +147, +244, +33, +89, +194, +206, +100, +212, +182, +5, +96, +82, +242, +143, +128, +127, +99, +10, +160, +202, +8, +162, +17, +128, +111, +200, +244, +4, +71, +200, +146, +48, +117, +86, +36, +177, +156, +124, +127, +144, +37, +103, +168, +229, +219, +135, +101, +50, +189, +78, +54, +122, +76, +144, +237, +115, +116, +103, +132, +116, +41, +217, +222, +66, +41, +216, +4, +19, +204, +103, +96, +249, +0, +163, +242, +141, +143, +110, +223, +146, +244, +213, +16, +194, +163, +117, +250, +157, +173, +100, +208, +156, +83, +36, +3, +0, +223, +193, +44, +106, +171, +57, +205, +35, +192, +1, +141, +26, +237, +65, +255, +74, +202, +198, +240, +145, +8, +109, +45, +239, +161, +76, +185, +255, +194, +54, +131, +172, +218, +45, +237, +50, +204, +59, +234, +53, +76, +63, +242, +109, +34, +153, +70, +188, +127, +183, +97, +190, +23, +107, +98, +130, +235, +23, +10, +234, +60, +212, +239, +247, +126, +87, +117, +239, +244, +142, +153, +243, +143, +18, +89, +46, +22, +9, +55, +5, +117, +158, +128, +229, +3, +126, +26, +56, +151, +226, +141, +20, +187, +82, +123, +166, +130, +6, +222, +67, +88, +46, +130, +74, +247, +53, +44, +115, +215, +170, +216, +82, +123, +107, +204, +97, +245, +194, +8, +29, +120, +138, +87, +63, +255, +52, +241, +76, +39, +75, +98, +163, +241, +46, +169, +207, +215, +21, +48, +117, +234, +123, +51, +231, +59, +0, +67, +146, +20, +166, +50, +0, +176, +31, +166, +88, +90, +23, +88, +9, +83, +28, +197, +180, +110, +125, +99, +128, +38, +192, +252, +29, +191, +136, +133, +179, +189, +128, +69, +233, +84, +42, +187, +176, +61, +25, +103, +68, +174, +67, +38, +95, +32, +166, +188, +26, +34, +164, +99, +35, +114, +105, +6, +210, +50, +52, +241, +7, +184, +94, +210, +17, +62, +52, +190, +93, +182, +251, +103, +179, +128, +68, +195, +17, +146, +190, +22, +66, +184, +43, +132, +240, +136, +76, +151, +191, +103, +23, +245, +13, +23, +22, +146, +180, +181, +164, +221, +36, +173, +40, +233, +101, +153, +141, +164, +10, +243, +73, +122, +170, +224, +222, +152, +220, +113, +140, +225, +63, +42, +105, +51, +6, +150, +130, +83, +233, +165, +91, +186, +127, +165, +87, +98, +246, +128, +59, +157, +235, +159, +137, +208, +165, +142, +0, +207, +50, +20, +67, +76, +208, +145, +17, +96, +251, +17, +54, +2, +188, +64, +38, +0, +22, +83, +31, +199, +70, +198, +227, +125, +180, +91, +26, +139, +198, +190, +15, +56, +37, +66, +7, +158, +103, +216, +207, +143, +161, +7, +251, +25, +204, +230, +48, +76, +175, +125, +134, +255, +32, +79, +99, +33, +221, +135, +228, +11, +132, +16, +30, +9, +33, +236, +24, +66, +88, +40, +132, +176, +158, +164, +87, +148, +186, +45, +89, +113, +31, +246, +209, +96, +207, +151, +216, +136, +242, +146, +6, +123, +187, +172, +17, +171, +44, +195, +68, +179, +48, +19, +244, +55, +72, +8, +49, +111, +1, +119, +201, +190, +252, +14, +22, +146, +121, +232, +228, +241, +30, +217, +40, +58, +85, +210, +121, +146, +126, +36, +41, +154, +233, +91, +210, +145, +152, +0, +184, +150, +164, +195, +212, +75, +63, +2, +224, +63, +157, +27, +215, +198, +50, +91, +19, +99, +128, +72, +185, +137, +192, +137, +145, +235, +169, +35, +192, +45, +120, +112, +101, +5, +221, +13, +152, +6, +111, +25, +76, +58, +159, +28, +27, +1, +188, +221, +78, +124, +225, +38, +152, +106, +247, +231, +17, +186, +113, +88, +166, +243, +206, +30, +192, +151, +18, +217, +159, +55, +50, +58, +81, +208, +238, +129, +152, +13, +97, +75, +108, +133, +116, +3, +240, +157, +170, +231, +42, +121, +94, +128, +207, +96, +246, +141, +151, +177, +125, +7, +122, +23, +118, +134, +5, +54, +30, +229, +199, +215, +96, +214, +176, +91, +34, +116, +243, +99, +238, +226, +75, +98, +142, +35, +83, +137, +108, +221, +86, +131, +1, +246, +194, +156, +80, +62, +4, +172, +136, +229, +5, +216, +45, +66, +247, +78, +103, +182, +87, +48, +139, +229, +174, +37, +12, +144, +141, +45, +56, +0, +152, +22, +161, +187, +25, +11, +169, +30, +135, +229, +71, +250, +5, +112, +107, +132, +110, +213, +220, +223, +215, +40, +112, +148, +193, +150, +130, +79, +97, +82, +249, +15, +169, +200, +253, +95, +6, +127, +142, +118, +114, +255, +36, +54, +56, +29, +147, +52, +183, +193, +252, +214, +118, +45, +120, +113, +27, +97, +107, +216, +255, +197, +162, +124, +242, +251, +237, +118, +232, +146, +24, +192, +105, +63, +130, +133, +99, +205, +116, +134, +250, +84, +23, +207, +145, +103, +128, +168, +137, +24, +155, +179, +179, +50, +197, +150, +84, +24, +191, +48, +91, +194, +20, +122, +104, +43, +200, +180, +149, +204, +0, +152, +60, +52, +209, +71, +138, +169, +36, +140, +168, +177, +74, +166, +97, +67, +231, +141, +152, +37, +240, +3, +68, +156, +43, +106, +212, +7, +67, +163, +91, +74, +211, +184, +180, +129, +76, +187, +139, +49, +32, +100, +157, +29, +161, +251, +33, +240, +107, +204, +58, +184, +16, +230, +49, +84, +234, +41, +12, +236, +141, +41, +137, +122, +174, +66, +175, +201, +0, +79, +98, +250, +152, +69, +177, +216, +198, +241, +77, +26, +252, +7, +22, +230, +220, +217, +135, +230, +104, +224, +239, +181, +43, +26, +168, +47, +134, +82, +151, +237, +54, +144, +105, +107, +38, +230, +171, +112, +10, +241, +173, +89, +231, +199, +194, +179, +158, +197, +134, +236, +243, +168, +222, +0, +234, +22, +224, +179, +45, +244, +177, +213, +157, +202, +188, +190, +243, +233, +38, +132, +14, +248, +148, +191, +184, +253, +49, +65, +240, +1, +224, +208, +110, +59, +215, +111, +248, +51, +164, +200, +30, +187, +251, +151, +179, +157, +63, +251, +179, +148, +7, +107, +116, +146, +47, +44, +217, +66, +31, +239, +200, +48, +192, +237, +45, +212, +55, +30, +115, +209, +159, +142, +109, +47, +91, +223, +153, +5, +203, +171, +251, +15, +127, +17, +211, +128, +47, +85, +125, +17, +253, +4, +22, +45, +124, +154, +247, +237, +25, +34, +137, +161, +157, +46, +149, +1, +38, +147, +209, +239, +99, +94, +66, +49, +227, +77, +231, +254, +111, +40, +217, +129, +12, +203, +104, +50, +209, +153, +228, +206, +70, +195, +112, +67, +120, +123, +7, +249, +135, +123, +11, +240, +219, +126, +53, +12, +53, +247, +186, +43, +168, +99, +8, +34, +116, +7, +99, +235, +250, +119, +97, +110, +107, +79, +1, +187, +23, +212, +151, +194, +0, +47, +98, +38, +212, +206, +249, +86, +68, +20, +55, +126, +111, +21, +159, +82, +10, +179, +112, +249, +87, +253, +77, +204, +135, +240, +43, +64, +212, +220, +235, +253, +107, +85, +165, +141, +9, +180, +59, +249, +241, +102, +244, +58, +56, +6, +56, +28, +19, +174, +240, +161, +39, +105, +79, +191, +130, +186, +242, +14, +149, +151, +17, +9, +156, +196, +150, +166, +95, +204, +156, +159, +76, +68, +7, +94, +131, +1, +174, +196, +214, +254, +227, +176, +117, +251, +31, +129, +95, +23, +208, +126, +11, +184, +170, +162, +190, +89, +157, +175, +30, +19, +66, +135, +232, +247, +51, +253, +171, +197, +0, +20, +120, +92, +103, +238, +159, +238, +31, +196, +193, +192, +73, +192, +53, +101, +244, +93, +193, +27, +121, +209, +135, +156, +21, +176, +124, +193, +155, +69, +232, +222, +135, +101, +5, +123, +17, +27, +182, +47, +7, +86, +175, +168, +123, +107, +108, +41, +51, +54, +114, +111, +42, +153, +204, +223, +152, +222, +160, +177, +39, +141, +247, +253, +82, +6, +166, +148, +11, +137, +236, +78, +234, +95, +244, +139, +84, +88, +219, +178, +63, +44, +230, +36, +251, +199, +42, +58, +63, +239, +154, +1, +156, +102, +87, +76, +249, +4, +137, +249, +144, +26, +1, +83, +194, +156, +154, +64, +247, +117, +224, +8, +76, +149, +185, +10, +54, +135, +22, +174, +42, +48, +85, +244, +109, +192, +87, +10, +238, +191, +204, +96, +159, +197, +109, +129, +215, +154, +61, +69, +79, +60, +184, +94, +0, +0, +18, +40, +73, +68, +65, +84, +251, +200, +49, +192, +115, +192, +7, +170, +232, +252, +188, +200, +239, +98, +69, +76, +178, +159, +226, +101, +30, +163, +64, +238, +201, +149, +251, +36, +53, +118, +111, +205, +218, +2, +82, +57, +115, +13, +73, +149, +203, +195, +16, +194, +81, +33, +132, +111, +134, +16, +38, +133, +16, +30, +144, +237, +23, +92, +54, +2, +252, +135, +108, +31, +194, +175, +22, +220, +207, +247, +101, +94, +73, +175, +87, +245, +99, +152, +48, +70, +233, +190, +121, +69, +116, +157, +60, +74, +239, +147, +244, +188, +164, +93, +36, +253, +45, +79, +132, +173, +253, +247, +195, +54, +201, +88, +92, +182, +181, +221, +16, +5, +94, +17, +154, +40, +52, +130, +226, +102, +201, +40, +48, +231, +142, +119, +201, +12, +30, +81, +243, +40, +230, +17, +115, +138, +164, +207, +135, +16, +138, +180, +113, +79, +203, +28, +58, +59, +88, +212, +175, +141, +68, +156, +45, +233, +187, +192, +191, +66, +8, +249, +101, +94, +146, +81, +75, +182, +41, +247, +255, +132, +16, +238, +4, +8, +33, +220, +86, +210, +222, +161, +50, +195, +82, +144, +52, +81, +210, +190, +181, +123, +92, +99, +104, +186, +139, +136, +249, +178, +164, +78, +48, +1, +233, +28, +10, +220, +165, +176, +181, +235, +109, +148, +44, +59, +49, +161, +237, +212, +204, +249, +233, +84, +11, +102, +125, +219, +166, +62, +55, +5, +4, +151, +47, +254, +26, +161, +75, +53, +106, +77, +192, +220, +237, +30, +197, +150, +150, +221, +229, +1, +174, +243, +0, +126, +94, +196, +0, +31, +193, +92, +164, +14, +192, +92, +167, +86, +195, +118, +167, +140, +213, +185, +152, +207, +101, +31, +196, +116, +253, +223, +143, +208, +140, +245, +249, +189, +116, +183, +76, +204, +104, +244, +12, +166, +60, +121, +47, +166, +175, +56, +168, +162, +204, +21, +88, +58, +150, +40, +99, +81, +99, +107, +122, +42, +182, +164, +143, +188, +191, +9, +192, +16, +239, +99, +18, +141, +90, +78, +59, +47, +102, +163, +152, +137, +41, +121, +26, +219, +72, +42, +17, +121, +128, +66, +135, +11, +44, +140, +60, +187, +12, +188, +60, +70, +151, +43, +179, +47, +145, +120, +60, +44, +173, +203, +101, +164, +133, +87, +127, +145, +1, +69, +213, +233, +116, +153, +24, +153, +196, +173, +233, +73, +216, +146, +62, +55, +2, +108, +134, +105, +23, +155, +121, +232, +14, +173, +251, +57, +10, +140, +115, +173, +193, +31, +32, +235, +236, +121, +120, +17, +3, +228, +202, +36, +41, +130, +176, +244, +48, +49, +171, +92, +20, +245, +159, +96, +80, +157, +149, +78, +166, +109, +35, +199, +0, +19, +177, +81, +114, +136, +215, +113, +141, +250, +254, +11, +27, +233, +222, +234, +117, +157, +69, +36, +99, +121, +107, +240, +7, +200, +206, +77, +15, +116, +243, +67, +248, +215, +250, +78, +44, +213, +250, +54, +36, +6, +110, +118, +11, +18, +157, +76, +157, +54, +197, +27, +121, +127, +76, +203, +247, +146, +255, +47, +220, +168, +185, +77, +96, +166, +246, +71, +49, +211, +251, +27, +254, +28, +27, +20, +208, +110, +129, +5, +235, +118, +204, +193, +73, +50, +90, +190, +18, +48, +109, +219, +11, +192, +189, +152, +121, +177, +27, +6, +184, +16, +211, +78, +189, +234, +204, +244, +101, +250, +16, +54, +141, +237, +154, +113, +72, +230, +124, +15, +224, +225, +8, +93, +170, +55, +242, +54, +152, +60, +180, +4, +182, +81, +228, +255, +244, +250, +25, +34, +125, +168, +210, +4, +62, +132, +237, +243, +180, +24, +150, +225, +116, +124, +147, +70, +160, +124, +111, +251, +57, +2, +164, +59, +153, +38, +49, +74, +174, +204, +22, +68, +92, +179, +107, +246, +47, +41, +9, +86, +174, +76, +21, +3, +60, +5, +28, +219, +77, +191, +134, +8, +129, +35, +21, +84, +44, +237, +48, +129, +105, +111, +42, +132, +202, +26, +140, +50, +214, +135, +227, +39, +241, +189, +4, +122, +241, +92, +221, +0, +19, +176, +103, +0, +127, +198, +183, +252, +105, +82, +73, +45, +6, +160, +98, +89, +84, +179, +221, +221, +72, +136, +129, +115, +250, +170, +165, +93, +170, +147, +105, +42, +163, +252, +5, +243, +143, +92, +15, +91, +218, +165, +134, +163, +245, +53, +112, +5, +147, +181, +78, +195, +150, +151, +69, +94, +198, +173, +53, +86, +185, +44, +170, +81, +23, +152, +67, +106, +101, +12, +92, +98, +125, +169, +78, +166, +169, +140, +50, +3, +247, +247, +119, +134, +25, +145, +12, +144, +105, +247, +195, +20, +152, +181, +251, +221, +145, +249, +177, +180, +104, +51, +48, +97, +235, +253, +177, +23, +226, +12, +144, +18, +3, +55, +104, +132, +42, +123, +193, +36, +56, +153, +214, +96, +148, +251, +49, +211, +243, +242, +62, +26, +140, +40, +6, +192, +4, +191, +15, +99, +182, +128, +37, +48, +79, +237, +59, +122, +217, +96, +210, +15, +129, +217, +165, +31, +194, +188, +84, +214, +197, +252, +214, +138, +24, +32, +37, +6, +46, +153, +1, +106, +60, +75, +10, +163, +124, +8, +243, +25, +124, +12, +83, +198, +12, +73, +1, +231, +116, +89, +134, +159, +236, +140, +92, +217, +63, +204, +185, +101, +136, +74, +155, +193, +129, +58, +207, +98, +190, +141, +177, +228, +147, +139, +98, +102, +247, +23, +48, +129, +242, +58, +224, +29, +169, +239, +160, +54, +106, +48, +192, +36, +50, +91, +190, +224, +169, +81, +10, +234, +203, +154, +121, +63, +16, +123, +201, +189, +96, +128, +54, +17, +97, +248, +127, +149, +245, +15, +155, +62, +47, +246, +15, +99, +136, +241, +134, +193, +129, +58, +107, +251, +113, +235, +62, +154, +85, +94, +176, +221, +248, +4, +142, +211, +224, +144, +177, +178, +140, +24, +43, +103, +142, +87, +171, +160, +29, +169, +216, +87, +150, +12, +243, +158, +16, +194, +93, +146, +138, +108, +6, +203, +97, +17, +67, +151, +72, +250, +173, +164, +117, +67, +8, +67, +34, +151, +36, +29, +144, +169, +239, +30, +89, +130, +201, +131, +218, +238, +244, +160, +31, +152, +92, +170, +88, +73, +55, +118, +81, +247, +171, +210, +32, +179, +241, +204, +18, +218, +38, +49, +112, +35, +45, +141, +91, +42, +195, +79, +150, +180, +130, +164, +119, +135, +16, +126, +26, +203, +197, +236, +88, +89, +210, +3, +185, +250, +74, +61, +170, +154, +160, +81, +170, +216, +28, +138, +126, +136, +71, +52, +248, +203, +46, +203, +187, +115, +129, +164, +203, +100, +182, +236, +107, +20, +73, +247, +170, +116, +59, +122, +45, +43, +95, +139, +72, +101, +248, +141, +100, +161, +227, +119, +96, +22, +213, +162, +140, +34, +111, +104, +112, +90, +221, +222, +123, +104, +167, +12, +249, +46, +104, +84, +26, +141, +128, +207, +97, +42, +229, +53, +49, +147, +241, +173, +37, +50, +64, +74, +58, +180, +36, +59, +186, +211, +86, +90, +249, +48, +255, +132, +231, +177, +37, +232, +62, +152, +4, +253, +229, +46, +250, +119, +87, +86, +136, +164, +66, +149, +142, +121, +55, +95, +238, +178, +210, +144, +20, +59, +216, +166, +22, +71, +103, +206, +163, +129, +58, +88, +112, +75, +212, +70, +80, +11, +36, +26, +61, +82, +127, +8, +76, +177, +242, +83, +204, +64, +113, +63, +190, +45, +125, +132, +46, +245, +5, +39, +219, +209, +83, +0, +156, +138, +5, +184, +238, +131, +249, +213, +191, +72, +36, +147, +119, +141, +254, +229, +25, +126, +98, +74, +255, +128, +77, +137, +120, +241, +2, +135, +248, +123, +235, +8, +129, +209, +64, +29, +76, +11, +120, +15, +150, +0, +59, +26, +167, +153, +4, +18, +141, +30, +77, +127, +8, +138, +87, +11, +73, +47, +56, +21, +249, +250, +138, +218, +109, +90, +95, +9, +93, +158, +225, +119, +239, +178, +221, +128, +237, +199, +52, +141, +138, +64, +29, +108, +201, +184, +191, +51, +242, +119, +128, +101, +155, +182, +219, +169, +176, +107, +163, +71, +164, +206, +126, +41, +70, +122, +193, +0, +71, +210, +239, +157, +185, +26, +0, +120, +19, +150, +243, +32, +57, +197, +111, +214, +43, +120, +182, +209, +67, +182, +11, +70, +95, +247, +192, +29, +225, +56, +92, +210, +33, +178, +93, +73, +158, +144, +229, +228, +27, +49, +192, +100, +158, +3, +36, +221, +46, +233, +53, +153, +160, +89, +187, +146, +70, +70, +143, +145, +134, +30, +141, +0, +61, +79, +162, +221, +20, +216, +74, +98, +18, +230, +86, +215, +60, +7, +51, +13, +141, +30, +253, +6, +245, +157, +51, +187, +74, +38, +229, +245, +245, +60, +137, +118, +83, +96, +78, +60, +155, +54, +45, +159, +21, +42, +30, +151, +180, +49, +150, +219, +174, +112, +99, +167, +130, +78, +52, +94, +163, +250, +11, +78, +205, +36, +242, +93, +89, +14, +222, +53, +36, +45, +77, +220, +10, +217, +11, +125, +65, +146, +60, +132, +37, +153, +56, +20, +216, +147, +72, +242, +199, +58, +72, +21, +62, +67, +8, +219, +68, +242, +17, +55, +106, +48, +201, +232, +225, +180, +201, +155, +75, +37, +180, +155, +204, +0, +137, +245, +181, +173, +47, +72, +158, +82, +176, +112, +181, +89, +152, +175, +193, +184, +46, +159, +35, +137, +1, +134, +5, +46, +9, +175, +236, +12, +240, +28, +112, +68, +1, +221, +170, +192, +245, +152, +110, +225, +62, +96, +255, +8, +77, +7, +165, +105, +221, +72, +183, +142, +181, +173, +47, +168, +195, +0, +151, +96, +145, +193, +151, +23, +140, +78, +117, +219, +237, +139, +3, +106, +109, +164, +14, +249, +152, +139, +210, +165, +88, +36, +238, +22, +192, +187, +35, +52, +144, +150, +214, +173, +85, +235, +88, +13, +134, +74, +102, +128, +12, +205, +130, +152, +71, +111, +227, +47, +216, +219, +61, +154, +68, +79, +169, +190, +33, +245, +197, +57, +237, +12, +96, +231, +138, +250, +96, +112, +86, +175, +253, +137, +103, +39, +155, +157, +198, +206, +207, +63, +77, +119, +83, +79, +219, +12, +181, +16, +230, +15, +240, +44, +166, +8, +186, +22, +248, +65, +23, +245, +65, +13, +79, +41, +170, +125, +37, +219, +201, +75, +84, +231, +197, +249, +67, +140, +175, +168, +47, +207, +0, +69, +105, +221, +166, +147, +9, +65, +195, +28, +71, +186, +201, +98, +214, +54, +67, +157, +137, +169, +208, +215, +240, +247, +114, +15, +5, +89, +66, +18, +235, +131, +4, +79, +169, +204, +253, +42, +95, +201, +234, +188, +68, +41, +92, +82, +231, +197, +213, +96, +128, +148, +180, +110, +211, +128, +236, +246, +40, +221, +166, +177, +107, +155, +161, +166, +228, +126, +176, +131, +40, +200, +18, +146, +88, +31, +12, +94, +126, +70, +61, +165, +186, +69, +158, +91, +178, +38, +204, +89, +5, +101, +146, +236, +212, +12, +172, +34, +254, +140, +185, +92, +149, +249, +3, +252, +65, +210, +51, +178, +188, +185, +23, +73, +138, +249, +184, +223, +39, +219, +242, +165, +131, +85, +84, +226, +56, +82, +53, +36, +170, +125, +115, +235, +91, +101, +90, +194, +14, +158, +145, +45, +73, +219, +66, +52, +91, +56, +9, +70, +188, +50, +154, +65, +15, +29, +66, +88, +63, +132, +112, +91, +8, +97, +98, +8, +161, +200, +175, +44, +233, +197, +133, +16, +58, +46, +214, +219, +134, +16, +230, +13, +33, +148, +229, +34, +216, +222, +105, +198, +133, +16, +78, +8, +33, +196, +50, +127, +156, +39, +233, +176, +206, +212, +35, +233, +147, +178, +77, +160, +138, +112, +129, +164, +159, +73, +42, +218, +233, +35, +153, +161, +18, +231, +207, +71, +37, +45, +151, +57, +31, +39, +115, +254, +232, +6, +41, +158, +82, +79, +200, +156, +104, +86, +148, +169, +240, +99, +106, +234, +20, +26, +137, +180, +88, +185, +84, +59, +245, +252, +62, +140, +149, +234, +165, +243, +50, +64, +9, +93, +178, +117, +44, +5, +36, +154, +91, +157, +182, +114, +254, +4, +190, +128, +173, +96, +58, +66, +219, +100, +42, +194, +215, +43, +250, +135, +183, +187, +38, +176, +22, +240, +32, +240, +153, +138, +50, +149, +70, +188, +66, +26, +210, +99, +229, +82, +237, +212, +251, +49, +32, +20, +205, +78, +182, +156, +240, +236, +93, +129, +244, +229, +93, +219, +12, +53, +63, +38, +8, +62, +225, +245, +157, +22, +107, +183, +70, +125, +175, +99, +91, +249, +150, +102, +11, +39, +33, +114, +41, +133, +70, +164, +7, +85, +38, +189, +56, +10, +208, +232, +109, +212, +0, +195, +164, +47, +24, +46, +144, +96, +196, +75, +161, +17, +137, +177, +114, +35, +29, +140, +112, +125, +65, +219, +32, +193, +136, +87, +70, +147, +223, +147, +38, +101, +231, +142, +145, +142, +182, +189, +105, +251, +226, +158, +221, +5, +82, +140, +120, +213, +52, +36, +198, +202, +245, +27, +62, +4, +127, +25, +91, +103, +191, +72, +197, +14, +89, +140, +112, +125, +65, +219, +32, +193, +136, +151, +66, +35, +18, +99, +229, +250, +13, +224, +40, +108, +101, +50, +1, +75, +56, +89, +149, +76, +42, +105, +149, +82, +163, +253, +70, +12, +69, +130, +169, +25, +115, +72, +189, +39, +161, +174, +9, +254, +129, +150, +230, +17, +232, +26, +212, +216, +185, +131, +132, +240, +112, +224, +91, +153, +227, +111, +84, +220, +31, +162, +253, +243, +235, +183, +147, +176, +33, +99, +134, +62, +121, +121, +151, +88, +95, +35, +134, +34, +205, +212, +188, +31, +80, +169, +43, +192, +18, +64, +156, +76, +127, +54, +191, +170, +6, +105, +89, +179, +182, +0, +206, +247, +227, +205, +128, +239, +69, +104, +190, +207, +64, +98, +165, +243, +137, +120, +182, +96, +75, +160, +104, +218, +213, +130, +190, +13, +155, +190, +160, +87, +240, +15, +109, +124, +63, +219, +236, +26, +152, +143, +218, +134, +249, +227, +28, +205, +134, +157, +57, +221, +143, +127, +31, +161, +121, +53, +59, +4, +247, +27, +77, +24, +138, +244, +24, +139, +13, +128, +202, +116, +183, +206, +0, +133, +155, +89, +116, +131, +70, +95, +6, +105, +105, +216, +230, +41, +56, +46, +163, +139, +169, +139, +31, +80, +205, +45, +209, +219, +68, +8, +129, +16, +194, +151, +66, +8, +139, +251, +223, +137, +37, +241, +124, +29, +164, +169, +94, +165, +93, +53, +120, +197, +50, +8, +152, +95, +193, +129, +50, +27, +77, +105, +254, +162, +146, +58, +90, +221, +158, +166, +142, +198, +112, +171, +204, +20, +48, +123, +58, +200, +209, +124, +31, +216, +210, +143, +207, +39, +226, +64, +129, +69, +20, +61, +142, +185, +91, +173, +74, +65, +86, +210, +145, +10, +10, +84, +175, +192, +58, +152, +215, +210, +129, +37, +101, +193, +164, +247, +198, +35, +32, +169, +219, +211, +144, +184, +220, +162, +70, +118, +45, +50, +187, +112, +17, +17, +22, +169, +16, +18, +253, +250, +60, +152, +38, +110, +42, +166, +208, +24, +178, +153, +196, +72, +3, +105, +234, +217, +75, +171, +158, +5, +179, +104, +30, +139, +41, +233, +150, +232, +93, +143, +149, +190, +220, +98, +4, +106, +12, +201, +8, +138, +20, +8, +141, +62, +143, +79, +194, +86, +57, +189, +203, +185, +171, +100, +245, +236, +244, +148, +121, +29, +203, +23, +12, +176, +69, +131, +126, +108, +130, +173, +253, +241, +81, +180, +216, +199, +144, +196, +229, +22, +137, +217, +181, +250, +9, +127, +200, +45, +242, +199, +57, +154, +77, +129, +5, +48, +199, +147, +194, +36, +74, +88, +142, +223, +117, +75, +238, +167, +216, +223, +83, +212, +179, +47, +146, +152, +151, +209, +127, +192, +241, +41, +180, +145, +178, +99, +189, +124, +212, +16, +151, +21, +2, +87, +151, +84, +232, +114, +148, +193, +100, +89, +86, +139, +87, +178, +127, +77, +58, +215, +34, +158, +245, +191, +252, +241, +108, +132, +16, +110, +10, +33, +188, +44, +105, +99, +21, +36, +190, +192, +172, +109, +71, +75, +90, +172, +164, +173, +20, +1, +47, +69, +61, +123, +147, +164, +99, +48, +185, +102, +107, +224, +240, +146, +54, +123, +15, +18, +151, +91, +140, +64, +141, +33, +150, +24, +105, +217, +252, +113, +132, +110, +83, +204, +89, +51, +186, +247, +31, +3, +123, +238, +60, +133, +201, +28, +165, +31, +4, +197, +2, +94, +138, +122, +118, +101, +44, +170, +231, +37, +76, +183, +80, +168, +134, +247, +169, +235, +44, +26, +200, +1, +85, +35, +64, +150, +240, +30, +224, +184, +196, +74, +187, +218, +235, +151, +8, +34, +52, +233, +243, +87, +90, +155, +219, +96, +49, +244, +11, +39, +244, +173, +208, +157, +155, +97, +200, +28, +138, +233, +11, +254, +66, +131, +152, +196, +58, +12, +208, +183, +229, +150, +119, +104, +208, +190, +194, +5, +116, +105, +157, +79, +107, +243, +101, +204, +148, +59, +201, +255, +162, +158, +74, +9, +12, +80, +41, +224, +141, +36, +84, +189, +195, +172, +226, +229, +44, +153, +99, +227, +143, +37, +45, +33, +233, +247, +254, +215, +43, +188, +222, +79, +217, +33, +132, +208, +86, +82, +169, +141, +36, +237, +229, +123, +249, +172, +221, +82, +157, +195, +134, +217, +66, +96, +8, +97, +86, +8, +225, +216, +16, +194, +10, +178, +132, +77, +61, +223, +233, +123, +14, +69, +227, +32, +218, +57, +6, +192, +210, +68, +182, +119, +105, +177, +254, +74, +25, +192, +233, +42, +167, +0, +90, +206, +8, +134, +109, +206, +176, +101, +201, +253, +228, +32, +218, +132, +182, +160, +197, +192, +216, +130, +54, +234, +77, +163, +192, +95, +49, +19, +232, +39, +11, +238, +39, +101, +9, +199, +76, +161, +215, +3, +167, +71, +238, +181, +38, +3, +144, +184, +239, +79, +42, +48, +111, +222, +51, +129, +69, +128, +229, +170, +75, +116, +213, +86, +33, +3, +84, +49, +54, +166, +71, +184, +25, +216, +190, +164, +254, +77, +48, +33, +29, +103, +216, +238, +130, +77, +169, +145, +37, +28, +183, +153, +3, +255, +136, +220, +75, +226, +252, +218, +220, +91, +94, +87, +210, +22, +114, +152, +13, +99, +18, +230, +149, +219, +120, +107, +218, +196, +62, +149, +49, +64, +41, +99, +99, +91, +218, +126, +25, +75, +233, +51, +242, +224, +35, +197, +117, +196, +13, +69, +173, +48, +0, +17, +148, +212, +85, +26, +59, +55, +28, +72, +125, +15, +37, +229, +199, +151, +61, +115, +207, +224, +29, +239, +54, +244, +185, +235, +41, +32, +181, +158, +145, +138, +34, +6, +32, +81, +7, +50, +34, +25, +128, +52, +93, +121, +229, +151, +75, +194, +252, +149, +242, +5, +213, +25, +37, +218, +0, +53, +236, +239, +101, +253, +175, +98, +254, +12, +205, +235, +192, +129, +64, +163, +101, +110, +62, +89, +244, +78, +88, +182, +203, +87, +129, +235, +155, +84, +168, +4, +93, +121, +136, +32, +66, +115, +115, +8, +97, +5, +191, +189, +124, +8, +97, +200, +198, +201, +53, +176, +179, +6, +187, +187, +247, +18, +41, +1, +182, +173, +32, +132, +48, +69, +210, +30, +50, +29, +78, +101, +36, +114, +229, +71, +128, +237, +85, +123, +18, +182, +9, +65, +97, +182, +201, +178, +17, +32, +71, +215, +122, +194, +201, +72, +63, +170, +70, +146, +202, +81, +194, +233, +170, +178, +143, +125, +17, +91, +33, +188, +132, +173, +148, +186, +86, +2, +181, +48, +2, +44, +129, +153, +231, +143, +37, +109, +251, +219, +78, +220, +226, +154, +157, +107, +121, +129, +104, +5, +73, +215, +132, +16, +166, +135, +16, +158, +80, +3, +208, +255, +132, +147, +93, +127, +221, +164, +101, +31, +123, +70, +22, +145, +252, +14, +89, +100, +241, +144, +200, +228, +126, +79, +55, +146, +214, +145, +237, +168, +126, +86, +8, +225, +153, +42, +226, +16, +194, +164, +206, +223, +144, +155, +88, +98, +35, +112, +75, +88, +89, +69, +101, +35, +0, +125, +212, +149, +167, +124, +221, +189, +248, +81, +48, +7, +214, +162, +93, +77, +146, +133, +210, +22, +70, +128, +174, +133, +192, +172, +42, +120, +23, +63, +220, +221, +213, +193, +77, +177, +145, +164, +175, +135, +16, +238, +84, +129, +93, +29, +248, +33, +112, +35, +22, +199, +119, +66, +228, +254, +246, +126, +255, +111, +180, +227, +14, +93, +58, +74, +52, +96, +146, +247, +72, +122, +168, +224, +222, +235, +41, +126, +18, +12, +56, +210, +118, +19, +101, +212, +110, +144, +106, +217, +151, +157, +74, +71, +194, +46, +91, +192, +124, +254, +127, +94, +226, +249, +128, +110, +195, +20, +29, +75, +2, +255, +172, +232, +71, +233, +23, +87, +99, +148, +72, +250, +114, +125, +100, +123, +30, +216, +175, +97, +91, +203, +96, +94, +73, +39, +97, +171, +155, +104, +230, +175, +170, +17, +0, +155, +255, +191, +65, +133, +207, +66, +45, +164, +50, +64, +69, +29, +41, +206, +16, +159, +192, +66, +157, +174, +35, +238, +80, +49, +37, +118, +92, +208, +223, +210, +47, +183, +6, +3, +164, +102, +43, +189, +25, +248, +97, +23, +253, +153, +142, +169, +113, +175, +39, +18, +43, +145, +161, +171, +98, +128, +23, +48, +231, +150, +230, +249, +129, +11, +30, +160, +231, +217, +41, +49, +149, +236, +155, +253, +75, +24, +178, +124, +193, +166, +134, +37, +48, +245, +237, +109, +93, +182, +85, +249, +117, +215, +100, +128, +153, +148, +251, +18, +116, +173, +152, +162, +109, +29, +126, +141, +134, +251, +197, +0, +231, +96, +6, +167, +223, +19, +223, +36, +114, +107, +76, +6, +184, +145, +76, +166, +172, +134, +109, +165, +142, +18, +165, +52, +53, +218, +234, +169, +117, +175, +167, +232, +23, +3, +140, +52, +212, +249, +114, +49, +69, +217, +222, +37, +245, +204, +81, +12, +208, +52, +52, +44, +201, +178, +54, +135, +33, +73, +122, +87, +181, +228, +61, +95, +183, +83, +192, +136, +7, +213, +89, +41, +91, +217, +89, +188, +162, +15, +251, +249, +124, +220, +181, +16, +212, +214, +151, +91, +103, +42, +1, +62, +6, +252, +185, +219, +54, +11, +234, +190, +24, +184, +164, +23, +117, +167, +52, +222, +218, +206, +226, +37, +109, +28, +136, +45, +55, +95, +109, +145, +1, +250, +102, +85, +196, +18, +99, +79, +163, +100, +163, +7, +239, +199, +195, +192, +123, +234, +220, +243, +251, +189, +241, +232, +162, +69, +87, +109, +74, +60, +94, +170, +166, +24, +103, +176, +85, +48, +75, +216, +16, +6, +192, +118, +61, +123, +8, +243, +2, +62, +51, +161, +47, +201, +95, +110, +27, +240, +175, +191, +52, +49, +68, +83, +6, +160, +194, +163, +171, +107, +80, +189, +62, +77, +181, +101, +23, +122, +188, +144, +232, +188, +225, +109, +196, +24, +96, +77, +175, +127, +93, +224, +209, +212, +103, +235, +23, +176, +192, +208, +115, +170, +41, +251, +136, +178, +47, +50, +71, +151, +106, +167, +46, +165, +105, +3, +69, +12, +224, +247, +174, +195, +242, +23, +124, +164, +151, +125, +104, +2, +204, +234, +250, +209, +4, +58, +40, +214, +184, +22, +222, +171, +131, +236, +23, +118, +128, +164, +159, +43, +109, +227, +230, +86, +80, +244, +16, +109, +60, +92, +8, +97, +43, +73, +235, +75, +58, +173, +155, +122, +98, +160, +194, +233, +195, +251, +191, +62, +166, +210, +126, +58, +82, +197, +210, +50, +235, +226, +176, +99, +118, +96, +72, +8, +97, +150, +164, +163, +74, +104, +231, +24, +0, +43, +134, +16, +30, +149, +25, +163, +26, +167, +108, +47, +65, +138, +211, +199, +143, +37, +157, +44, +41, +230, +21, +20, +100, +73, +183, +135, +29, +35, +198, +65, +178, +101, +252, +10, +184, +79, +210, +197, +138, +4, +111, +96, +18, +255, +195, +46, +40, +78, +136, +220, +47, +253, +194, +19, +179, +170, +255, +44, +132, +240, +235, +16, +66, +76, +216, +251, +183, +164, +158, +239, +108, +78, +66, +130, +173, +178, +20, +238, +115, +44, +66, +8, +27, +87, +144, +156, +39, +105, +127, +73, +79, +75, +186, +66, +150, +218, +61, +139, +54, +220, +186, +162, +123, +47, +59, +110, +147, +57, +150, +244, +26, +209, +80, +249, +44, +230, +74, +6, +72, +192, +24, +217, +143, +60, +83, +17, +205, +94, +8, +33, +187, +55, +112, +211, +31, +170, +76, +155, +120, +165, +164, +126, +164, +154, +171, +100, +128, +236, +222, +193, +147, +128, +189, +122, +222, +165, +22, +225, +14, +163, +77, +172, +133, +31, +151, +244, +11, +73, +87, +169, +32, +190, +175, +45, +41, +187, +0, +23, +72, +90, +145, +18, +115, +112, +75, +72, +103, +0, +89, +186, +182, +170, +117, +247, +38, +146, +110, +240, +211, +235, +138, +214, +248, +35, +29, +33, +132, +203, +67, +8, +111, +247, +29, +74, +174, +168, +91, +30, +184, +149, +72, +196, +83, +141, +246, +159, +147, +116, +156, +164, +83, +154, +214, +145, +216, +206, +86, +77, +125, +59, +27, +131, +26, +182, +236, +94, +46, +3, +187, +69, +197, +26, +124, +34, +112, +107, +147, +178, +13, +250, +176, +89, +183, +245, +164, +54, +54, +29, +88, +186, +47, +141, +205, +1, +24, +78, +38, +196, +92, +225, +198, +99, +187, +169, +22, +186, +231, +183, +129, +172, +16, +56, +70, +115, +192, +254, +0, +48, +160, +167, +207, +7, +148, +0, +127, +146, +116, +73, +8, +225, +59, +125, +239, +88, +187, +120, +80, +210, +235, +146, +142, +239, +219, +16, +142, +5, +60, +12, +91, +74, +214, +84, +96, +134, +144, +29, +178, +140, +144, +185, +183, +9, +102, +101, +91, +40, +114, +111, +54, +18, +219, +25, +246, +105, +168, +31, +200, +239, +24, +18, +29, +1, +24, +65, +14, +32, +238, +172, +17, +219, +86, +78, +33, +132, +155, +37, +61, +37, +105, +136, +199, +174, +99, +130, +122, +31, +26, +150, +12, +103, +178, +174, +77, +207, +221, +48, +107, +18, +3, +168, +100, +15, +190, +178, +47, +203, +231, +178, +31, +3, +209, +31, +172, +71, +248, +179, +236, +135, +142, +225, +181, +94, +230, +37, +42, +250, +65, +49, +155, +192, +196, +94, +181, +219, +13, +146, +100, +128, +16, +194, +78, +37, +117, +148, +77, +27, +231, +200, +18, +77, +237, +89, +191, +107, +141, +113, +155, +164, +227, +187, +173, +36, +22, +176, +218, +5, +222, +144, +134, +238, +250, +57, +18, +208, +181, +16, +24, +141, +51, +27, +184, +183, +143, +36, +1, +63, +174, +223, +181, +198, +120, +70, +150, +237, +108, +196, +32, +132, +240, +238, +58, +244, +190, +196, +36, +132, +176, +97, +238, +250, +169, +146, +246, +13, +33, +188, +189, +173, +190, +205, +113, +171, +128, +4, +228, +183, +182, +157, +19, +81, +212, +255, +117, +36, +253, +178, +205, +134, +178, +230, +224, +57, +253, +165, +117, +176, +148, +70, +136, +173, +189, +10, +69, +239, +188, +100, +196, +120, +151, +164, +99, +218, +236, +195, +220, +104, +14, +126, +135, +76, +14, +72, +134, +11, +111, +255, +47, +114, +125, +68, +9, +111, +158, +48, +163, +219, +13, +169, +7, +161, +47, +12, +80, +177, +115, +120, +219, +216, +70, +102, +228, +169, +131, +55, +36, +197, +182, +100, +107, +69, +120, +115, +219, +65, +97, +144, +235, +112, +98, +142, +51, +7, +251, +50, +43, +154, +116, +194, +173, +107, +43, +202, +150, +173, +117, +240, +134, +164, +151, +242, +23, +235, +10, +111, +37, +24, +177, +211, +235, +28, +199, +0, +146, +94, +46, +185, +247, +37, +73, +159, +117, +107, +91, +12, +111, +2, +222, +28, +209, +5, +204, +82, +124, +4, +104, +5, +69, +140, +228, +186, +147, +5, +134, +115, +191, +133, +57, +142, +1, +202, +132, +213, +16, +194, +206, +21, +197, +255, +216, +33, +205, +93, +143, +142, +0, +255, +23, +48, +199, +49, +64, +83, +84, +172, +114, +138, +100, +128, +57, +2, +221, +172, +224, +230, +198, +85, +64, +19, +204, +82, +100, +4, +0, +78, +165, +96, +71, +180, +185, +5, +255, +103, +70, +128, +50, +132, +16, +22, +45, +184, +213, +186, +226, +101, +20, +35, +16, +20, +196, +252, +187, +103, +211, +26, +53, +234, +105, +197, +186, +215, +79, +140, +142, +0, +134, +34, +141, +92, +173, +108, +105, +115, +145, +54, +117, +20, +163, +24, +197, +40, +70, +49, +138, +81, +140, +98, +20, +163, +24, +197, +40, +70, +49, +138, +81, +140, +98, +20, +163, +24, +197, +40, +70, +49, +138, +81, +204, +37, +248, +255, +129, +51, +157, +250, +111, +139, +157, +153, +0, +0, +0, +0, +73, +69, +78, +68, +174, +66, +96, +130, +}; diff --git a/scene/resources/default_theme/font_mono.png b/scene/resources/default_theme/font_mono.png Binary files differdeleted file mode 100644 index 8a50dccf44..0000000000 --- a/scene/resources/default_theme/font_mono.png +++ /dev/null diff --git a/scene/resources/default_theme/font_normal.inc b/scene/resources/default_theme/font_normal.inc deleted file mode 100644 index 0555c8160d..0000000000 --- a/scene/resources/default_theme/font_normal.inc +++ /dev/null @@ -1,65741 +0,0 @@ -static const int _builtin_normal_font_height=13; -static const int _builtin_normal_font_ascent=11; -static const int _builtin_normal_font_charcount=191; -static const int _builtin_normal_font_charrects[191][8]={ -/* charidx , ofs_x, ofs_y, size_x, size_y, valign, halign, advance */ -{224,222,75,7,10,1,0,7}, -{192,94,2,9,12,-1,0,8}, -{64,35,2,12,12,2,0,12}, -{96,109,104,4,2,1,0,4}, -{160,0,0,0,0,11,0,3}, -{32,0,0,0,0,11,0,3}, -{33,64,107,2,9,2,1,3}, -{225,233,66,7,10,1,0,7}, -{193,107,2,9,12,-1,0,8}, -{65,224,2,9,9,2,0,8}, -{161,243,93,3,9,4,0,3}, -{97,244,51,7,7,4,0,7}, -{98,151,47,7,10,1,0,7}, -{226,244,62,7,10,1,0,7}, -{194,120,2,9,12,-1,0,8}, -{162,200,57,7,11,2,0,7}, -{66,24,58,7,9,2,1,8}, -{34,117,104,4,4,1,0,4}, -{35,38,45,8,9,2,0,8}, -{195,28,28,9,13,-2,0,8}, -{227,211,57,7,11,0,0,7}, -{67,26,45,8,9,2,0,8}, -{163,140,17,8,9,2,0,8}, -{99,24,71,7,7,4,0,7}, -{100,118,44,7,10,1,0,7}, -{228,13,87,7,10,1,0,7}, -{164,159,2,9,10,2,0,9}, -{36,162,47,7,13,0,0,7}, -{196,172,2,9,12,-1,0,8}, -{68,46,58,7,9,2,1,9}, -{37,211,15,9,9,2,0,10}, -{69,112,61,7,9,2,1,8}, -{165,176,28,8,9,2,0,8}, -{197,67,28,9,14,-3,0,8}, -{229,13,71,7,12,-1,0,7}, -{101,35,71,7,7,4,0,7}, -{38,14,45,8,9,2,0,8}, -{70,101,61,7,9,2,1,8}, -{198,2,2,13,9,2,-1,12}, -{166,9,117,3,11,2,0,3}, -{102,47,96,5,10,1,0,4}, -{230,51,13,11,7,4,0,11}, -{71,164,18,8,9,2,0,9}, -{231,24,82,7,10,4,0,7}, -{199,188,28,8,12,2,0,8}, -{167,200,28,8,12,2,0,8}, -{103,189,57,7,10,4,0,7}, -{39,46,110,2,4,1,0,2}, -{72,152,30,8,9,2,1,9}, -{232,2,75,7,10,1,0,7}, -{40,83,105,5,13,1,0,4}, -{200,79,75,7,12,-1,1,8}, -{104,167,64,7,10,1,0,7}, -{168,38,96,5,2,1,1,6}, -{73,58,107,2,9,2,1,4}, -{169,66,2,10,9,2,0,10}, -{233,211,72,7,10,1,0,7}, -{41,173,103,4,13,1,0,4}, -{201,90,74,7,12,-1,1,8}, -{105,16,117,2,11,0,1,3}, -{234,200,72,7,10,1,0,7}, -{106,221,102,4,14,0,-1,3}, -{202,101,74,7,12,-1,1,8}, -{42,123,83,6,6,2,0,6}, -{170,65,97,5,5,2,0,6}, -{74,90,61,7,9,2,0,7}, -{171,233,80,6,5,5,0,6}, -{43,74,46,7,8,3,0,7}, -{107,145,61,7,10,1,0,7}, -{203,112,74,7,12,-1,1,8}, -{235,189,71,7,10,1,0,7}, -{75,152,17,8,9,2,1,8}, -{172,222,68,7,3,6,0,7}, -{44,52,110,2,4,10,0,3}, -{108,40,102,2,10,1,1,3}, -{204,213,102,4,12,-1,-1,4}, -{236,141,97,4,10,1,-1,3}, -{76,243,80,6,9,2,1,7}, -{173,125,98,4,1,7,0,4}, -{45,125,93,4,1,7,0,4}, -{109,51,2,11,7,4,0,11}, -{205,181,103,4,12,-1,0,4}, -{237,149,94,4,10,1,0,3}, -{77,80,2,10,9,2,1,11}, -{46,34,112,2,2,9,1,3}, -{110,57,72,7,7,4,0,7}, -{206,133,97,4,12,-1,0,4}, -{238,157,103,4,10,1,0,3}, -{174,66,15,10,9,2,0,10}, -{78,128,31,8,9,2,1,9}, -{175,143,87,6,1,2,0,6}, -{111,68,72,7,7,4,0,7}, -{47,163,89,6,10,2,0,5}, -{207,29,96,5,12,-1,0,4}, -{239,92,104,5,10,1,-1,3}, -{79,198,15,9,9,2,0,9}, -{176,74,105,5,4,2,0,5}, -{112,112,90,7,10,4,0,7}, -{240,134,72,7,10,1,0,8}, -{208,185,2,9,9,2,0,9}, -{80,68,59,7,9,2,1,8}, -{48,35,58,7,9,2,0,7}, -{177,145,75,7,8,3,0,7}, -{113,101,90,7,10,4,0,7}, -{81,133,2,9,11,2,0,9}, -{241,233,51,7,11,0,0,7}, -{209,140,30,8,13,-2,1,9}, -{49,189,100,4,9,2,1,7}, -{178,20,101,5,6,2,0,6}, -{114,2,89,5,7,4,0,4}, -{210,54,28,9,12,-1,0,9}, -{242,173,47,7,10,1,0,7}, -{82,57,59,7,9,2,1,9}, -{50,13,58,7,9,2,0,7}, -{179,56,97,5,6,2,0,6}, -{115,123,72,7,7,4,0,7}, -{211,41,24,9,12,-1,0,9}, -{243,140,47,7,10,1,0,7}, -{83,104,31,8,9,2,0,8}, -{51,2,47,7,9,2,0,7}, -{180,101,104,4,2,1,0,4}, -{116,205,99,4,9,2,0,5}, -{244,156,64,7,10,1,0,7}, -{212,2,15,9,12,-1,0,9}, -{84,104,18,8,9,2,0,8}, -{52,224,22,8,9,2,0,7}, -{53,239,38,7,9,2,0,7}, -{85,92,26,8,9,2,0,9}, -{213,15,28,9,13,-2,0,9}, -{117,46,71,7,7,4,0,7}, -{181,79,91,7,10,4,0,7}, -{245,2,60,7,11,0,0,7}, -{54,228,38,7,9,2,0,7}, -{86,211,2,9,9,2,0,8}, -{182,203,86,6,9,2,0,6}, -{214,237,2,9,12,-1,0,9}, -{246,123,58,7,10,1,0,7}, -{118,222,57,7,7,4,0,7}, -{87,19,15,12,9,2,0,11}, -{55,217,44,7,9,2,0,7}, -{247,156,78,7,7,3,0,7}, -{119,80,15,10,7,4,0,10}, -{215,178,72,7,6,4,0,7}, -{183,22,111,2,2,6,1,3}, -{88,62,46,8,9,2,0,8}, -{248,129,44,7,9,3,0,7}, -{216,146,2,9,11,1,0,9}, -{56,206,44,7,9,2,0,7}, -{120,178,61,7,7,4,0,7}, -{184,2,100,3,3,11,0,3}, -{217,164,31,8,12,-1,0,9}, -{249,90,90,7,10,1,0,7}, -{121,68,83,7,10,4,0,7}, -{57,195,44,7,9,2,0,7}, -{89,80,26,8,9,2,0,8}, -{185,236,98,3,6,2,0,4}, -{218,212,28,8,12,-1,0,9}, -{250,57,83,7,10,1,0,7}, -{90,128,18,8,9,2,0,8}, -{122,167,78,7,7,4,0,7}, -{58,70,113,2,7,4,1,3}, -{186,183,85,6,5,2,0,6}, -{59,250,93,3,10,4,0,3}, -{91,197,100,4,13,0,0,4}, -{219,236,22,8,12,-1,0,9}, -{123,11,101,5,12,1,0,4}, -{251,46,82,7,10,1,0,7}, -{187,233,89,6,5,5,0,6}, -{188,185,15,9,9,2,1,10}, -{92,193,86,6,10,2,0,5}, -{252,35,82,7,10,1,0,7}, -{220,2,31,8,12,-1,0,9}, -{124,28,112,2,11,2,1,3}, -{60,133,86,6,7,4,0,7}, -{189,198,2,9,9,2,1,11}, -{93,229,98,3,13,0,0,4}, -{253,107,44,7,13,1,0,7}, -{221,116,18,8,12,-1,0,8}, -{125,165,103,4,12,1,0,4}, -{61,184,44,7,6,4,0,7}, -{190,19,2,12,9,2,0,11}, -{222,85,39,7,9,2,1,8}, -{254,96,44,7,13,1,0,8}, -{62,134,61,7,7,4,0,7}, -{94,223,89,6,5,2,0,5}, -{126,224,15,9,3,6,0,9}, -{223,50,44,8,10,1,0,8}, -{255,79,58,7,13,1,0,7}, -{191,173,89,6,10,4,0,6}, -{63,213,89,6,9,2,0,6}, -{95,153,89,6,1,11,0,6}, -}; -static const int _builtin_normal_font_kerning_pair_count=0; -static const int _builtin_normal_font_kerning_pairs[1][3]={ -{0,0,0} -}; -static const int _builtin_normal_font_img_width=256; -static const int _builtin_normal_font_img_height=256; -static const unsigned char _builtin_normal_font_img_data[131072]={ -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,206, -255,255, -255,255, -255,255, -255,255, -255,255, -255,152, -0,0, -0,0, -0,0, -0,0, -255,7, -255,178, -255,247, -255,217, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,74, -255,188, -255,241, -255,247, -255,210, -255,118, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,132, -255,224, -255,242, -255,124, -255,71, -255,222, -255,239, -255,133, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,182, -255,242, -255,245, -255,193, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,232, -255,5, -0,0, -0,0, -0,0, -0,0, -255,133, -255,253, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,229, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,222, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,121, -255,128, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,129, -255,227, -255,250, -255,213, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,31, -0,0, -255,63, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,172, -255,255, -255,255, -255,248, -255,205, -255,85, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,119, -255,113, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,171, -255,169, -0,0, -0,0, -0,0, -0,0, -255,110, -255,225, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,127, -255,240, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,31, -0,0, -255,63, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,122, -255,141, -255,255, -255,61, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,17, -255,95, -255,16, -255,172, -255,135, -0,0, -0,0, -255,114, -255,81, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,215, -255,80, -255,15, -255,9, -255,49, -255,164, -255,182, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,138, -255,20, -255,103, -255,255, -255,184, -255,25, -255,63, -255,252, -255,53, -0,0, -0,0, -0,0, -0,0, -0,0, -255,76, -255,217, -255,84, -255,15, -255,10, -255,72, -255,209, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,191, -255,80, -0,0, -0,0, -0,0, -255,2, -255,191, -255,226, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,151, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,151, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,150, -255,136, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,217, -255,60, -255,21, -255,86, -255,238, -255,107, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,129, -255,227, -255,247, -255,205, -255,170, -255,123, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,231, -255,114, -255,194, -255,243, -255,217, -255,117, -255,207, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,120, -0,0, -255,240, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,172, -255,148, -0,0, -255,15, -255,91, -255,241, -255,102, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,255, -255,132, -0,0, -0,0, -255,114, -255,81, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,74, -255,243, -255,8, -0,0, -0,0, -0,0, -255,194, -255,129, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,224, -255,186, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,120, -0,0, -255,240, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,234, -255,21, -255,247, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,246, -255,44, -0,0, -255,42, -255,196, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,216, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -255,158, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -255,2, -255,251, -255,89, -0,0, -0,0, -255,214, -255,103, -0,0, -0,0, -0,0, -0,0, -255,12, -255,212, -255,25, -255,110, -255,235, -255,235, -255,106, -255,13, -255,208, -255,30, -0,0, -0,0, -0,0, -0,0, -255,220, -255,107, -255,175, -0,0, -0,0, -0,0, -255,72, -255,127, -255,233, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,253, -255,61, -0,0, -0,0, -0,0, -255,102, -255,236, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,217, -255,60, -255,19, -255,108, -255,255, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,164, -255,250, -255,122, -255,47, -255,85, -255,227, -255,233, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,172, -255,148, -0,0, -0,0, -0,0, -255,104, -255,236, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,132, -0,0, -255,42, -255,196, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,228, -255,81, -0,0, -0,0, -255,24, -255,251, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,198, -255,79, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,183, -255,135, -0,0, -255,236, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,111, -255,15, -255,150, -255,164, -255,4, -255,196, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,193, -255,70, -0,0, -255,63, -255,217, -255,246, -255,169, -255,4, -255,31, -255,195, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,244, -255,80, -0,0, -0,0, -255,204, -255,116, -0,0, -0,0, -0,0, -0,0, -255,80, -255,125, -255,27, -255,231, -255,32, -255,34, -255,240, -255,5, -255,94, -255,112, -0,0, -0,0, -0,0, -0,0, -255,220, -255,88, -255,183, -255,23, -0,0, -0,0, -255,168, -255,34, -255,241, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,127, -255,240, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,127, -255,240, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,127, -255,240, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,253, -255,4, -0,0, -0,0, -0,0, -255,39, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -255,24, -255,253, -255,61, -0,0, -0,0, -255,183, -255,161, -255,231, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -255,207, -255,120, -0,0, -0,0, -0,0, -255,48, -255,249, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,127, -255,240, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,172, -255,148, -0,0, -0,0, -0,0, -255,32, -255,255, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,132, -255,4, -255,196, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,134, -255,165, -0,0, -0,0, -255,106, -255,189, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,177, -255,116, -255,9, -255,244, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,129, -255,227, -255,250, -255,213, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,242, -255,18, -0,0, -255,226, -255,255, -255,255, -255,255, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -255,12, -255,185, -255,248, -255,219, -255,66, -255,128, -255,115, -0,0, -255,50, -255,247, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -255,17, -255,230, -255,1, -255,15, -255,236, -255,81, -255,14, -255,246, -0,0, -0,0, -255,216, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,244, -255,80, -0,0, -0,0, -255,204, -255,116, -0,0, -0,0, -0,0, -0,0, -255,106, -255,89, -255,58, -255,189, -0,0, -0,0, -0,0, -0,0, -255,58, -255,138, -0,0, -0,0, -0,0, -0,0, -255,220, -255,96, -255,94, -255,115, -0,0, -255,17, -255,188, -0,0, -255,248, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,224, -255,186, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,224, -255,186, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,224, -255,186, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -0,0, -0,0, -0,0, -0,0, -255,28, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -255,66, -255,253, -255,4, -0,0, -255,90, -255,159, -255,37, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -255,13, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -255,210, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,224, -255,186, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,255, -255,255, -255,255, -255,84, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,132, -255,128, -255,120, -255,168, -255,245, -255,211, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,240, -255,7, -0,0, -255,190, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,251, -255,34, -0,0, -255,174, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,217, -255,60, -255,21, -255,86, -255,238, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,230, -255,156, -255,36, -255,36, -255,222, -255,102, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,189, -255,2, -255,20, -255,205, -255,220, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,186, -0,0, -255,92, -255,195, -0,0, -255,23, -255,225, -0,0, -0,0, -255,214, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,244, -255,80, -0,0, -0,0, -255,204, -255,116, -0,0, -0,0, -0,0, -0,0, -255,79, -255,126, -255,28, -255,231, -255,30, -255,8, -255,76, -255,2, -255,95, -255,111, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -255,11, -255,201, -0,0, -255,108, -255,102, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,198, -255,79, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,198, -255,79, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,198, -255,79, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,252, -255,4, -0,0, -0,0, -0,0, -255,38, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -0,0, -255,18, -255,211, -255,18, -255,28, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -255,14, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -255,210, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,198, -255,79, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,172, -255,148, -0,0, -0,0, -0,0, -255,32, -255,255, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,189, -255,31, -255,134, -255,18, -255,184, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,195, -255,77, -255,21, -255,237, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,212, -255,12, -255,12, -255,102, -255,232, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,253, -255,61, -0,0, -0,0, -0,0, -255,102, -255,236, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,147, -255,255, -255,255, -255,255, -255,255, -255,255, -255,114, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,201, -255,34, -255,3, -255,177, -255,54, -255,192, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -255,69, -255,173, -0,0, -255,135, -255,151, -0,0, -255,49, -255,201, -0,0, -255,3, -255,209, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,244, -255,80, -0,0, -0,0, -255,204, -255,116, -0,0, -0,0, -0,0, -0,0, -255,11, -255,212, -255,25, -255,113, -255,235, -255,243, -255,156, -255,13, -255,208, -255,29, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,163, -255,53, -255,197, -255,16, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,177, -255,116, -255,9, -255,244, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,177, -255,116, -255,9, -255,244, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,177, -255,116, -255,9, -255,244, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,253, -255,58, -0,0, -0,0, -0,0, -255,100, -255,231, -255,2, -0,0, -0,0, -0,0, -0,0, -255,66, -255,252, -255,2, -255,157, -255,91, -0,0, -255,39, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -255,207, -255,118, -0,0, -0,0, -0,0, -255,46, -255,249, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,177, -255,116, -255,9, -255,244, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,172, -255,148, -0,0, -0,0, -0,0, -255,105, -255,238, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,201, -255,34, -0,0, -0,0, -255,71, -255,221, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,161, -255,102, -255,152, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,223, -255,255, -255,255, -255,255, -255,255, -255,255, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,253, -255,4, -0,0, -0,0, -0,0, -255,39, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,253, -255,90, -0,0, -0,0, -0,0, -255,194, -255,126, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,102, -0,0, -255,96, -255,255, -255,255, -255,255, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,55, -255,192, -0,0, -255,122, -255,186, -255,12, -255,128, -255,198, -0,0, -255,111, -255,131, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,76, -255,217, -255,83, -255,14, -255,10, -255,71, -255,208, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,69, -255,192, -255,171, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,251, -255,34, -0,0, -255,174, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,251, -255,34, -0,0, -255,174, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,251, -255,34, -0,0, -255,174, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,154, -255,214, -255,55, -255,16, -255,80, -255,235, -255,99, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,254, -255,121, -255,184, -0,0, -0,0, -255,100, -255,237, -255,3, -0,0, -0,0, -0,0, -0,0, -255,4, -255,187, -255,249, -255,118, -255,42, -255,81, -255,225, -255,241, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,251, -255,34, -0,0, -255,174, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,172, -255,148, -0,0, -255,15, -255,91, -255,241, -255,105, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,102, -0,0, -255,4, -255,135, -255,201, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,225, -255,185, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -255,23, -0,0, -0,0, -0,0, -255,161, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -0,0, -0,0, -0,0, -0,0, -255,28, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,205, -255,181, -0,0, -0,0, -0,0, -0,0, -255,182, -255,255, -255,255, -255,255, -255,255, -255,252, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,237, -255,11, -255,27, -255,215, -255,235, -255,89, -255,195, -255,213, -255,154, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,182, -255,243, -255,246, -255,194, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,2, -255,228, -255,78, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,212, -255,12, -255,12, -255,102, -255,232, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,212, -255,12, -255,12, -255,102, -255,232, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,212, -255,12, -255,12, -255,102, -255,232, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,132, -255,229, -255,250, -255,212, -255,249, -255,108, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,154, -255,255, -255,81, -255,15, -255,80, -255,235, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,202, -255,98, -255,198, -255,244, -255,219, -255,115, -255,177, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,212, -255,12, -255,12, -255,102, -255,232, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,172, -255,255, -255,255, -255,249, -255,206, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,255, -255,255, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,157, -255,211, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,173, -255,160, -0,0, -0,0, -0,0, -0,0, -255,51, -255,253, -255,28, -0,0, -0,0, -0,0, -0,0, -255,66, -255,252, -255,4, -0,0, -0,0, -0,0, -255,38, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,164, -255,136, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,223, -255,255, -255,255, -255,255, -255,255, -255,255, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,223, -255,255, -255,255, -255,255, -255,255, -255,255, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,223, -255,255, -255,255, -255,255, -255,255, -255,255, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,74, -255,246, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -255,122, -255,185, -255,224, -255,250, -255,214, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,223, -255,255, -255,255, -255,255, -255,255, -255,255, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,253, -255,58, -0,0, -0,0, -0,0, -255,100, -255,237, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,221, -255,150, -255,41, -255,6, -255,23, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -255,23, -0,0, -0,0, -0,0, -255,161, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -255,23, -0,0, -0,0, -0,0, -255,161, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -255,23, -0,0, -0,0, -0,0, -255,161, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,103, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -255,23, -0,0, -0,0, -0,0, -255,161, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,154, -255,214, -255,55, -255,16, -255,80, -255,235, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,144, -255,223, -255,249, -255,224, -255,133, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,219, -255,248, -255,198, -255,61, -255,172, -255,246, -255,219, -255,89, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,173, -255,160, -0,0, -0,0, -0,0, -0,0, -255,51, -255,253, -255,28, -0,0, -0,0, -0,0, -0,0, -255,173, -255,160, -0,0, -0,0, -0,0, -0,0, -255,51, -255,253, -255,28, -0,0, -0,0, -0,0, -0,0, -255,173, -255,160, -0,0, -0,0, -0,0, -0,0, -255,51, -255,253, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,173, -255,160, -0,0, -0,0, -0,0, -0,0, -255,51, -255,253, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,132, -255,229, -255,250, -255,214, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,253, -255,86, -255,11, -255,167, -255,255, -255,170, -255,16, -255,62, -255,246, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,121, -255,128, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,136, -255,178, -0,0, -0,0, -255,6, -255,246, -255,96, -0,0, -0,0, -255,74, -255,238, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,44, -0,0, -0,0, -255,88, -255,255, -255,38, -0,0, -0,0, -255,194, -255,110, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,182, -255,242, -255,245, -255,193, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,147, -255,165, -0,0, -0,0, -255,188, -255,139, -0,0, -0,0, -255,212, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,119, -255,113, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,129, -255,227, -255,250, -255,213, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,163, -255,243, -255,186, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,117, -255,240, -255,211, -255,75, -0,0, -255,2, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,150, -255,136, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,73, -255,231, -0,0, -0,0, -255,61, -255,238, -255,161, -0,0, -0,0, -255,127, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,157, -255,227, -255,247, -255,250, -255,255, -255,255, -255,255, -255,255, -255,255, -255,135, -0,0, -0,0, -0,0, -0,0, -0,0, -255,76, -255,217, -255,84, -255,15, -255,10, -255,72, -255,209, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -255,74, -255,225, -0,0, -255,11, -255,196, -255,202, -0,0, -255,14, -255,252, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,255, -255,132, -0,0, -0,0, -255,114, -255,81, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,217, -255,60, -255,21, -255,86, -255,238, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,194, -255,12, -255,160, -255,103, -0,0, -255,150, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -255,21, -255,227, -255,37, -255,82, -255,231, -255,173, -255,174, -255,179, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,252, -255,30, -0,0, -255,126, -255,142, -255,224, -0,0, -0,0, -255,180, -255,113, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,219, -255,39, -255,4, -255,86, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,212, -255,25, -255,204, -255,255, -255,240, -255,134, -255,13, -255,208, -255,30, -0,0, -0,0, -0,0, -0,0, -255,9, -255,247, -255,28, -255,76, -255,138, -255,194, -255,27, -255,69, -255,206, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,147, -255,236, -255,236, -255,154, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -255,3, -255,186, -255,172, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,132, -0,0, -255,42, -255,196, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,253, -255,61, -0,0, -0,0, -0,0, -255,102, -255,236, -255,3, -0,0, -0,0, -0,0, -0,0, -255,80, -255,165, -0,0, -255,126, -255,115, -255,74, -255,169, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,29, -0,0, -0,0, -255,21, -255,110, -255,116, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,129, -255,227, -255,250, -255,213, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,203, -255,84, -0,0, -255,191, -255,54, -255,204, -255,36, -0,0, -255,233, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,137, -255,202, -255,16, -255,37, -255,174, -255,247, -255,167, -255,22, -255,19, -255,101, -255,27, -0,0, -0,0, -0,0, -0,0, -255,80, -255,125, -0,0, -255,204, -255,36, -255,37, -255,238, -255,1, -255,94, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,88, -255,148, -255,67, -255,123, -255,99, -255,126, -255,133, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,222, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,255, -255,255, -255,255, -255,255, -255,251, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,101, -255,231, -255,35, -255,31, -255,220, -255,113, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -255,146, -255,208, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,120, -255,217, -255,245, -255,213, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,132, -255,4, -255,196, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,253, -255,4, -0,0, -0,0, -0,0, -255,39, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -255,17, -255,223, -255,191, -255,232, -255,57, -255,205, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,217, -255,60, -255,21, -255,86, -255,238, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,138, -255,7, -255,228, -255,2, -255,133, -255,101, -255,30, -255,240, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,194, -255,247, -255,230, -255,138, -255,28, -255,168, -255,242, -255,245, -255,185, -255,35, -0,0, -0,0, -0,0, -0,0, -255,106, -255,89, -0,0, -255,204, -255,255, -255,255, -255,140, -0,0, -255,58, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,148, -255,208, -255,6, -255,50, -255,171, -255,182, -255,61, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,151, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,201, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,149, -255,170, -0,0, -0,0, -255,73, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,101, -255,234, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,216, -255,54, -255,10, -255,68, -255,237, -255,99, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,132, -255,128, -255,115, -255,50, -255,247, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -0,0, -0,0, -0,0, -0,0, -255,28, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,64, -255,22, -255,168, -255,76, -255,46, -255,53, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,253, -255,61, -0,0, -0,0, -0,0, -255,102, -255,236, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,77, -255,192, -255,64, -255,168, -0,0, -255,63, -255,167, -255,82, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,79, -255,126, -0,0, -255,204, -255,36, -255,28, -255,236, -255,1, -255,95, -255,111, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,218, -255,178, -0,0, -255,1, -255,205, -255,217, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,129, -255,213, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,174, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -255,63, -255,244, -255,61, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,253, -255,65, -0,0, -0,0, -0,0, -255,109, -255,150, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,189, -255,22, -255,205, -255,220, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,252, -255,4, -0,0, -0,0, -0,0, -255,38, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,87, -255,156, -255,120, -255,221, -255,215, -255,141, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,253, -255,4, -0,0, -0,0, -0,0, -255,39, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,241, -255,130, -255,97, -0,0, -255,5, -255,218, -255,134, -255,117, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,212, -255,25, -255,204, -255,36, -0,0, -255,233, -255,26, -255,208, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,107, -0,0, -0,0, -255,160, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,154, -255,209, -255,1, -0,0, -0,0, -255,5, -255,221, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,246, -255,49, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,255, -255,255, -255,255, -255,255, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,179, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,52, -255,255, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,201, -255,37, -255,177, -255,54, -255,192, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,253, -255,58, -0,0, -0,0, -0,0, -255,100, -255,237, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,205, -255,13, -255,212, -255,29, -255,10, -255,231, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -0,0, -0,0, -0,0, -0,0, -255,28, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,207, -255,209, -255,27, -0,0, -0,0, -255,178, -255,205, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,76, -255,217, -255,83, -255,14, -255,10, -255,72, -255,209, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,244, -255,89, -0,0, -0,0, -255,106, -255,235, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,220, -255,121, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,125, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -255,43, -255,241, -255,105, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,60, -255,255, -255,4, -0,0, -255,112, -255,255, -255,255, -255,216, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,102, -255,96, -255,255, -255,255, -255,255, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -255,154, -255,214, -255,55, -255,16, -255,80, -255,235, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,131, -255,64, -0,0, -255,200, -255,65, -255,43, -255,223, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,220, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,121, -255,128, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,252, -255,4, -0,0, -0,0, -0,0, -255,38, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,211, -0,0, -0,0, -0,0, -255,107, -255,243, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,182, -255,243, -255,246, -255,194, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,219, -255,4, -255,10, -255,230, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,155, -255,195, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,136, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,74, -255,248, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,255, -255,12, -0,0, -0,0, -0,0, -255,104, -255,216, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,132, -255,229, -255,250, -255,214, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,226, -255,234, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,252, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,150, -255,136, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,253, -255,58, -0,0, -0,0, -0,0, -255,100, -255,237, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,222, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,231, -255,102, -255,119, -255,218, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,79, -255,241, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,139, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -255,113, -255,239, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,252, -255,73, -0,0, -0,0, -0,0, -255,104, -255,216, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,239, -255,160, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,154, -255,214, -255,55, -255,16, -255,80, -255,235, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,151, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,103, -255,229, -255,238, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,234, -255,97, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,155, -255,219, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -255,143, -255,225, -255,69, -255,9, -255,31, -255,177, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,210, -255,100, -255,128, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,132, -255,229, -255,250, -255,214, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,154, -255,209, -255,1, -0,0, -0,0, -255,5, -255,221, -255,137, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,217, -255,197, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,99, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,103, -255,210, -255,246, -255,232, -255,156, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,181, -0,0, -255,128, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,129, -255,227, -255,250, -255,213, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,244, -255,89, -0,0, -0,0, -255,106, -255,235, -255,15, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,230, -255,25, -0,0, -255,128, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,8, -0,0, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,217, -255,60, -255,21, -255,86, -255,238, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,229, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,219, -255,4, -255,10, -255,230, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,123, -255,223, -255,7, -0,0, -0,0, -255,31, -255,247, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,132, -255,230, -255,245, -255,204, -255,78, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,182, -255,239, -255,238, -255,179, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,222, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,4, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,185, -255,229, -255,83, -255,169, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,218, -255,55, -255,153, -255,47, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,253, -255,61, -0,0, -0,0, -0,0, -255,102, -255,236, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,151, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,211, -255,189, -255,75, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,231, -255,102, -255,119, -255,218, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,204, -255,117, -0,0, -0,0, -255,166, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,137, -255,217, -255,52, -255,12, -255,86, -255,247, -255,63, -0,0, -0,0, -0,0, -0,0, -255,1, -255,225, -255,148, -255,17, -255,22, -255,172, -255,209, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,151, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,160, -255,24, -255,183, -255,162, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,181, -255,44, -255,211, -255,190, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,253, -255,4, -0,0, -0,0, -0,0, -255,39, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,164, -255,87, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,103, -255,229, -255,238, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,45, -255,233, -255,19, -255,54, -255,226, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,251, -255,67, -0,0, -0,0, -0,0, -255,164, -255,151, -0,0, -0,0, -0,0, -0,0, -255,17, -255,255, -255,50, -0,0, -0,0, -255,34, -255,191, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,31, -0,0, -255,63, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -0,0, -0,0, -0,0, -0,0, -255,28, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,129, -255,227, -255,250, -255,213, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,225, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,217, -255,197, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,168, -255,235, -255,238, -255,180, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,177, -0,0, -0,0, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,218, -255,55, -255,153, -255,47, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,229, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,125, -255,146, -255,194, -255,73, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,255, -255,9, -0,0, -0,0, -0,0, -255,12, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -255,202, -255,198, -255,69, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,246, -255,72, -0,0, -0,0, -0,0, -255,118, -255,203, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -96,0, -0,0, -0,0, -255,236, -255,120, -0,0, -255,240, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,129, -255,227, -255,250, -255,213, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,127, -255,240, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,252, -255,4, -0,0, -0,0, -0,0, -255,38, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,217, -255,60, -255,21, -255,86, -255,238, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,246, -255,72, -0,0, -0,0, -0,0, -255,118, -255,203, -0,0, -0,0, -0,0, -0,0, -0,0, -255,207, -255,157, -255,21, -255,15, -255,128, -255,228, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,238, -255,74, -0,0, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,181, -255,44, -255,211, -255,190, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,151, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,255, -255,254, -255,255, -255,255, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,179, -255,226, -255,242, -255,238, -255,161, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,204, -255,43, -255,9, -255,65, -255,232, -255,117, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,217, -255,60, -255,21, -255,86, -255,238, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,224, -255,186, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,253, -255,58, -0,0, -0,0, -0,0, -255,100, -255,237, -255,3, -0,0, -0,0, -0,0, -0,0, -255,24, -255,253, -255,61, -0,0, -0,0, -0,0, -255,102, -255,236, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,127, -255,240, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,204, -255,43, -255,9, -255,65, -255,232, -255,117, -0,0, -0,0, -0,0, -0,0, -255,10, -255,255, -255,56, -0,0, -0,0, -0,0, -255,191, -255,59, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,122, -255,204, -255,8, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,255, -255,9, -0,0, -0,0, -0,0, -255,15, -255,19, -0,0, -0,0, -0,0, -0,0, -255,89, -255,239, -255,8, -255,5, -255,62, -255,162, -255,241, -255,23, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,143, -255,226, -255,246, -255,214, -255,112, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,253, -255,61, -0,0, -0,0, -0,0, -255,102, -255,236, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,198, -255,79, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,154, -255,214, -255,55, -255,16, -255,80, -255,235, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,253, -255,4, -0,0, -0,0, -0,0, -255,39, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,224, -255,186, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,143, -255,226, -255,246, -255,214, -255,112, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,183, -255,207, -255,74, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -255,108, -255,127, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,220, -255,177, -0,0, -0,0, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,255, -255,255, -255,255, -255,255, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,251, -255,67, -0,0, -0,0, -0,0, -255,165, -255,149, -0,0, -0,0, -0,0, -0,0, -255,46, -255,248, -255,127, -255,45, -255,1, -255,18, -255,253, -255,56, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,253, -255,4, -0,0, -0,0, -0,0, -255,39, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,177, -255,116, -255,9, -255,244, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,132, -255,229, -255,250, -255,214, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -0,0, -0,0, -0,0, -0,0, -255,28, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,198, -255,79, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,129, -255,226, -255,242, -255,163, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -255,3, -255,198, -255,34, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,220, -255,238, -255,74, -0,0, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,139, -255,217, -255,51, -255,11, -255,85, -255,245, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -255,60, -255,176, -255,245, -255,230, -255,234, -255,154, -255,1, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -0,0, -0,0, -0,0, -0,0, -255,28, -255,255, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,251, -255,34, -0,0, -255,174, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,252, -255,4, -0,0, -0,0, -0,0, -255,38, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,177, -255,116, -255,9, -255,244, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,160, -255,234, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,58, -255,178, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,220, -255,122, -255,204, -255,8, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,135, -255,231, -255,245, -255,200, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,90, -255,222, -255,170, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,252, -255,4, -0,0, -0,0, -0,0, -255,38, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,212, -255,12, -255,12, -255,102, -255,232, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,253, -255,58, -0,0, -0,0, -0,0, -255,100, -255,237, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,251, -255,34, -0,0, -255,174, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,195, -0,0, -0,0, -0,0, -0,0, -255,229, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -255,160, -255,110, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -255,108, -255,127, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,177, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,172, -0,0, -0,0, -0,0, -255,80, -255,244, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,246, -255,72, -0,0, -0,0, -0,0, -255,118, -255,203, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,253, -255,58, -0,0, -0,0, -0,0, -255,100, -255,237, -255,3, -0,0, -0,0, -0,0, -0,0, -255,2, -255,223, -255,255, -255,255, -255,255, -255,255, -255,255, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,154, -255,214, -255,55, -255,16, -255,80, -255,235, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,212, -255,12, -255,12, -255,102, -255,232, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,235, -255,138, -255,22, -255,10, -255,89, -255,248, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -255,22, -255,225, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -255,3, -255,198, -255,34, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,111, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,246, -255,115, -255,13, -255,23, -255,172, -255,200, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,204, -255,43, -255,9, -255,65, -255,232, -255,117, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,121, -255,228, -255,247, -255,187, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,255, -255,255, -255,255, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,154, -255,214, -255,55, -255,16, -255,80, -255,235, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -255,23, -0,0, -0,0, -0,0, -255,161, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,132, -255,229, -255,250, -255,214, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,223, -255,255, -255,255, -255,255, -255,255, -255,255, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,166, -255,233, -255,243, -255,200, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,109, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,58, -255,178, -255,32, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,48, -0,0, -0,0, -0,0, -255,92, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,230, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,195, -255,243, -255,237, -255,174, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,143, -255,226, -255,246, -255,214, -255,112, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,115, -255,216, -255,50, -255,11, -255,45, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,134, -255,175, -255,28, -255,28, -255,28, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,246, -255,72, -0,0, -0,0, -0,0, -255,118, -255,203, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,132, -255,229, -255,250, -255,214, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,173, -255,160, -0,0, -0,0, -0,0, -0,0, -255,51, -255,253, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -255,23, -0,0, -0,0, -0,0, -255,161, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -255,160, -255,110, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,246, -255,72, -0,0, -0,0, -0,0, -255,118, -255,203, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,239, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,135, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,204, -255,43, -255,9, -255,65, -255,232, -255,117, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,173, -255,160, -0,0, -0,0, -0,0, -0,0, -255,51, -255,253, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,255, -255,255, -255,238, -255,178, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -255,22, -255,225, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,204, -255,43, -255,9, -255,65, -255,232, -255,117, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,255, -255,150, -255,226, -255,237, -255,152, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -255,190, -255,206, -255,237, -255,228, -255,117, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,143, -255,226, -255,246, -255,214, -255,112, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,72, -0,0, -255,19, -255,160, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,109, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,143, -255,226, -255,246, -255,214, -255,112, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,131, -255,12, -255,43, -255,225, -255,127, -0,0, -0,0, -0,0, -0,0, -0,0, -255,199, -255,139, -255,28, -255,88, -255,252, -255,70, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,72, -0,0, -0,0, -255,49, -255,255, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,23, -0,0, -0,0, -255,122, -255,199, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,182, -255,140, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,191, -255,244, -255,202, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,72, -0,0, -255,18, -255,157, -255,214, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,171, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,121, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,12, -255,12, -255,12, -255,12, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -255,60, -255,205, -255,244, -255,202, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,49, -255,197, -255,245, -255,220, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,255, -255,255, -255,255, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -255,5, -255,251, -255,58, -0,0, -0,0, -255,127, -255,191, -0,0, -0,0, -0,0, -0,0, -0,0, -255,138, -255,26, -0,0, -0,0, -255,177, -255,140, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,201, -255,246, -255,201, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,132, -255,230, -255,245, -255,204, -255,78, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,223, -255,20, -255,77, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,198, -255,161, -255,15, -255,160, -255,179, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,255, -255,255, -255,239, -255,181, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,199, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,185, -255,242, -255,222, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,255, -255,255, -255,255, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,26, -255,241, -255,110, -255,13, -255,104, -255,242, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -255,221, -255,148, -255,12, -255,85, -255,252, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,209, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -255,158, -255,194, -255,28, -255,39, -255,226, -255,110, -0,0, -0,0, -0,0, -0,0, -0,0, -255,201, -255,148, -255,12, -255,64, -255,247, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,170, -255,177, -255,11, -255,148, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,137, -255,217, -255,52, -255,12, -255,86, -255,247, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,209, -0,0, -255,143, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,255, -255,45, -0,0, -255,105, -255,198, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,52, -255,252, -255,73, -0,0, -0,0, -255,23, -255,239, -255,119, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,52, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -255,112, -0,0, -0,0, -0,0, -0,0, -255,4, -255,216, -255,142, -255,14, -255,176, -255,248, -255,70, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,222, -0,0, -0,0, -0,0, -255,220, -255,95, -0,0, -0,0, -0,0, -0,0, -255,13, -255,255, -255,50, -0,0, -0,0, -255,227, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,148, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,152, -255,233, -255,231, -255,136, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,190, -255,245, -255,222, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,206, -255,245, -255,214, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,175, -255,147, -0,0, -255,151, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,251, -255,67, -0,0, -0,0, -0,0, -255,164, -255,151, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -255,31, -255,255, -255,28, -255,1, -255,208, -255,118, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,136, -255,220, -255,8, -0,0, -255,164, -255,203, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,140, -255,221, -255,233, -255,131, -255,1, -0,0, -0,0, -0,0, -0,0, -255,165, -255,185, -0,0, -0,0, -255,52, -255,255, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,207, -255,239, -255,160, -255,217, -255,112, -0,0, -0,0, -0,0, -0,0, -255,63, -255,247, -255,9, -255,38, -255,172, -255,163, -255,164, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,171, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,173, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,101, -255,218, -0,0, -0,0, -0,0, -255,193, -255,125, -0,0, -0,0, -0,0, -0,0, -0,0, -255,202, -255,145, -255,11, -255,76, -255,242, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,224, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,243, -255,98, -255,10, -255,86, -255,250, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,246, -255,185, -255,186, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,255, -255,9, -0,0, -0,0, -0,0, -255,12, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,134, -255,113, -0,0, -255,239, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,28, -255,46, -255,255, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,216, -255,129, -255,65, -255,249, -255,45, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,156, -255,24, -255,68, -255,244, -255,88, -0,0, -0,0, -0,0, -0,0, -255,72, -255,250, -255,16, -0,0, -255,131, -255,208, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,225, -255,146, -255,18, -255,78, -255,247, -255,112, -0,0, -0,0, -0,0, -0,0, -255,94, -255,225, -0,0, -255,164, -255,47, -255,130, -255,190, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,199, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,195, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,255, -255,255, -255,255, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -255,36, -255,249, -255,95, -255,9, -255,69, -255,243, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,236, -255,255, -255,254, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,172, -255,117, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,133, -0,0, -0,0, -0,0, -255,245, -255,73, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,91, -255,247, -255,244, -255,29, -0,0, -255,35, -255,40, -0,0, -0,0, -0,0, -0,0, -255,64, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,170, -255,75, -255,22, -255,223, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,28, -255,12, -255,232, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,58, -255,245, -255,222, -255,126, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,255, -255,255, -255,255, -255,255, -255,255, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -255,153, -255,175, -0,0, -0,0, -0,0, -0,0, -255,3, -255,231, -255,93, -0,0, -255,211, -255,118, -0,0, -0,0, -0,0, -0,0, -0,0, -255,60, -255,251, -255,13, -0,0, -0,0, -255,208, -255,112, -0,0, -0,0, -0,0, -0,0, -255,69, -255,248, -255,53, -255,169, -0,0, -255,162, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,192, -255,252, -255,236, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,12, -255,12, -255,12, -255,12, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,213, -255,243, -255,170, -255,208, -255,122, -0,0, -0,0, -0,0, -0,0, -255,18, -255,230, -255,107, -255,10, -255,56, -255,231, -255,73, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,17, -255,249, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,77, -255,233, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -255,73, -255,246, -255,66, -255,165, -255,209, -255,14, -255,158, -255,135, -0,0, -0,0, -0,0, -0,0, -255,53, -255,255, -255,9, -0,0, -0,0, -0,0, -255,15, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,206, -255,38, -255,58, -255,186, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,28, -0,0, -255,49, -255,233, -255,135, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,190, -255,248, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,32, -255,32, -255,245, -255,98, -255,32, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -255,114, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -255,141, -255,175, -255,34, -255,254, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,229, -0,0, -0,0, -0,0, -255,208, -255,112, -0,0, -0,0, -0,0, -0,0, -255,7, -255,224, -255,237, -255,54, -255,68, -255,246, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,185, -255,241, -255,215, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,131, -255,232, -255,231, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,167, -255,18, -255,71, -255,252, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,185, -255,241, -255,215, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,229, -255,88, -0,0, -0,0, -0,0, -0,0, -255,80, -255,240, -0,0, -0,0, -0,0, -255,161, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,83, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,136, -255,255, -255,255, -255,110, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,183, -0,0, -255,4, -255,181, -255,189, -255,237, -255,57, -0,0, -0,0, -0,0, -0,0, -255,13, -255,251, -255,67, -0,0, -0,0, -0,0, -255,165, -255,149, -0,0, -0,0, -0,0, -0,0, -255,144, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,28, -0,0, -0,0, -255,58, -255,255, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,216, -255,148, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -255,139, -255,185, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,246, -255,122, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,245, -255,4, -0,0, -0,0, -255,208, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -255,77, -255,236, -255,249, -255,217, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,216, -255,144, -255,16, -255,71, -255,246, -255,60, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,159, -255,17, -255,70, -255,247, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -255,233, -255,88, -0,0, -0,0, -255,184, -255,118, -0,0, -0,0, -0,0, -0,0, -255,4, -255,216, -255,144, -255,16, -255,71, -255,246, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,19, -255,13, -255,130, -255,230, -255,14, -0,0, -0,0, -0,0, -0,0, -255,37, -255,251, -255,97, -255,9, -255,50, -255,230, -255,111, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,134, -255,183, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,47, -255,195, -255,245, -255,220, -255,87, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,58, -255,246, -255,61, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,239, -255,56, -255,9, -255,72, -255,251, -255,207, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,139, -255,217, -255,51, -255,11, -255,85, -255,245, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,199, -0,0, -255,156, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,28, -255,70, -255,11, -255,82, -255,254, -255,25, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,224, -255,81, -255,19, -255,236, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,151, -255,20, -255,54, -255,235, -255,108, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,211, -255,238, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,237, -255,129, -255,15, -255,79, -255,248, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,247, -255,9, -0,0, -0,0, -255,163, -255,159, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,166, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,211, -255,59, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,247, -255,9, -0,0, -0,0, -255,163, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,111, -255,236, -255,242, -255,189, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,83, -255,210, -255,247, -255,227, -255,134, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,171, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,218, -255,55, -255,153, -255,47, -0,0, -0,0, -0,0, -0,0, -0,0, -255,217, -255,131, -255,9, -255,96, -255,250, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,132, -0,0, -0,0, -0,0, -255,210, -255,108, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,114, -255,222, -255,247, -255,218, -255,133, -255,236, -255,111, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,135, -255,231, -255,245, -255,200, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,133, -0,0, -255,219, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,38, -255,206, -255,247, -255,228, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,195, -0,0, -0,0, -255,119, -255,213, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,145, -255,223, -255,237, -255,146, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,117, -255,250, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,212, -255,244, -255,191, -255,193, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,225, -0,0, -0,0, -0,0, -255,130, -255,188, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,130, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,148, -255,244, -255,212, -255,86, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,225, -0,0, -0,0, -0,0, -255,130, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,181, -255,44, -255,211, -255,190, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,2, -0,0, -255,6, -255,255, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,248, -255,88, -255,9, -255,69, -255,247, -255,51, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,253, -255,55, -0,0, -0,0, -255,8, -255,225, -255,135, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,247, -255,9, -0,0, -0,0, -255,162, -255,159, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,152, -255,169, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,113, -255,250, -255,81, -0,0, -0,0, -0,0, -0,0, -255,64, -255,247, -255,9, -0,0, -0,0, -255,162, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,105, -255,217, -255,250, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,77, -255,210, -255,246, -255,214, -255,89, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,35, -255,235, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,218, -255,142, -255,15, -255,68, -255,246, -255,63, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,163, -255,17, -255,58, -255,239, -255,92, -0,0, -0,0, -0,0, -0,0, -255,47, -255,204, -255,2, -0,0, -0,0, -255,171, -255,151, -0,0, -0,0, -0,0, -0,0, -255,5, -255,218, -255,142, -255,15, -255,68, -255,246, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,115, -255,230, -255,240, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -255,50, -255,254, -255,80, -255,5, -255,4, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,69, -255,246, -255,147, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,187, -255,242, -255,217, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,252, -255,134, -255,232, -255,235, -255,136, -255,2, -0,0, -0,0, -0,0, -0,0, -255,17, -255,242, -255,119, -255,13, -255,49, -255,229, -255,111, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,187, -255,242, -255,217, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,157, -255,17, -255,55, -255,247, -255,73, -0,0, -0,0, -0,0, -0,0, -255,61, -255,250, -255,46, -255,28, -255,138, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,69, -255,209, -255,254, -255,236, -255,147, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,45, -255,203, -255,242, -255,189, -255,177, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,133, -255,189, -0,0, -0,0, -255,29, -255,254, -255,38, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,203, -255,116, -0,0, -0,0, -0,0, -0,0, -255,1, -255,152, -255,242, -255,231, -255,96, -255,243, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,199, -255,244, -255,221, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,245, -255,201, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,187, -255,242, -255,214, -255,81, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,244, -255,189, -255,58, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,31, -0,0, -255,63, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,31, -0,0, -255,63, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,220, -255,154, -255,19, -255,71, -255,244, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,218, -255,55, -255,153, -255,47, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,252, -255,20, -0,0, -255,111, -255,200, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,196, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,241, -255,103, -255,11, -255,79, -255,251, -255,45, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,11, -255,120, -255,245, -255,16, -0,0, -0,0, -0,0, -0,0, -255,1, -255,207, -255,139, -255,13, -255,73, -255,248, -255,39, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,24, -255,119, -255,247, -255,58, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,251, -255,223, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,254, -255,228, -255,142, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,120, -0,0, -255,240, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,120, -0,0, -255,240, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,45, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,55, -255,253, -255,16, -0,0, -0,0, -255,196, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,192, -255,255, -255,234, -255,113, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,181, -255,44, -255,211, -255,190, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,203, -255,101, -0,0, -255,192, -255,108, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,196, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,196, -0,0, -0,0, -0,0, -255,222, -255,96, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -255,11, -255,255, -255,51, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,15, -0,0, -0,0, -255,192, -255,122, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,155, -255,189, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,4, -255,53, -255,236, -255,93, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,1, -255,42, -255,215, -255,134, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,85, -255,233, -0,0, -0,0, -0,0, -255,196, -255,124, -0,0, -0,0, -0,0, -0,0, -255,2, -255,215, -255,151, -255,16, -255,61, -255,243, -255,61, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,110, -255,185, -255,21, -255,247, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,196, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,218, -255,55, -255,153, -255,47, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,250, -255,44, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,6, -255,115, -255,197, -255,4, -0,0, -0,0, -0,0, -0,0, -255,68, -255,248, -0,0, -0,0, -0,0, -255,168, -255,152, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,84, -255,243, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,175, -255,144, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,128, -255,190, -0,0, -0,0, -0,0, -0,0, -255,165, -255,185, -0,0, -0,0, -255,52, -255,255, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,255, -255,64, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,255, -255,52, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,185, -255,241, -255,215, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,82, -255,246, -255,28, -0,0, -255,149, -255,208, -255,4, -0,0, -0,0, -0,0, -0,0, -255,66, -255,249, -255,6, -0,0, -0,0, -255,196, -255,124, -0,0, -0,0, -0,0, -0,0, -255,53, -255,255, -255,17, -0,0, -0,0, -255,95, -255,58, -0,0, -0,0, -0,0, -0,0, -0,0, -255,47, -255,195, -255,245, -255,220, -255,87, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,246, -255,117, -255,179, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,196, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,181, -255,44, -255,211, -255,190, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,200, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,252, -255,127, -255,1, -0,0, -0,0, -0,0, -0,0, -255,72, -255,248, -0,0, -0,0, -0,0, -255,168, -255,156, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,68, -255,252, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,5, -255,52, -255,233, -255,76, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,1, -255,40, -255,213, -255,135, -0,0, -0,0, -0,0, -0,0, -255,72, -255,250, -255,16, -0,0, -255,131, -255,208, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,216, -255,144, -255,16, -255,71, -255,246, -255,60, -0,0, -0,0, -0,0, -0,0, -255,31, -255,249, -255,170, -255,58, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,175, -255,161, -255,42, -255,248, -255,52, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,233, -255,136, -255,16, -255,72, -255,246, -255,124, -0,0, -0,0, -0,0, -0,0, -255,79, -255,243, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,217, -255,131, -255,9, -255,96, -255,250, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,180, -255,239, -255,86, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,121, -255,128, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,183, -255,179, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,1, -255,47, -255,236, -255,95, -0,0, -0,0, -0,0, -0,0, -255,68, -255,248, -0,0, -0,0, -0,0, -255,168, -255,152, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,84, -255,243, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,154, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,254, -255,229, -255,145, -255,8, -0,0, -0,0, -0,0, -0,0, -255,3, -255,231, -255,93, -0,0, -255,211, -255,118, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,247, -255,9, -0,0, -0,0, -255,163, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,126, -255,224, -255,201, -255,89, -255,4, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,238, -255,209, -255,139, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,60, -255,210, -255,241, -255,170, -255,209, -255,124, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,16, -0,0, -0,0, -255,59, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,2, -0,0, -255,6, -255,255, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,87, -255,241, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,150, -255,136, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,185, -255,241, -255,215, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,174, -255,182, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,175, -255,144, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,16, -0,0, -0,0, -255,191, -255,122, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,155, -255,191, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,1, -255,60, -255,245, -255,78, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,141, -255,175, -255,34, -255,254, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,225, -0,0, -0,0, -0,0, -255,130, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,146, -255,251, -255,76, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -255,120, -255,234, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,121, -255,128, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,149, -255,253, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,109, -0,0, -0,0, -0,0, -0,0, -255,2, -255,218, -255,149, -255,15, -255,52, -255,237, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -255,105, -255,217, -255,250, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,216, -255,144, -255,16, -255,71, -255,246, -255,60, -0,0, -0,0, -0,0, -0,0, -255,2, -255,164, -255,183, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,3, -255,54, -255,235, -255,90, -0,0, -0,0, -0,0, -0,0, -255,2, -255,209, -255,142, -255,13, -255,70, -255,248, -255,41, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -255,23, -255,119, -255,248, -255,61, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,181, -255,141, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,246, -255,122, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,156, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,247, -255,9, -0,0, -0,0, -255,162, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,129, -255,228, -255,203, -255,90, -255,5, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -255,33, -255,246, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,150, -255,136, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,241, -255,191, -255,151, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,50, -255,20, -255,97, -255,252, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,193, -255,255, -255,234, -255,108, -0,0, -0,0, -0,0, -0,0, -0,0, -255,50, -255,254, -255,80, -255,5, -255,4, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,47, -255,195, -255,245, -255,220, -255,87, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,247, -255,9, -0,0, -0,0, -255,163, -255,159, -0,0, -0,0, -0,0, -0,0, -255,62, -255,255, -255,255, -255,255, -255,255, -255,255, -255,188, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,252, -255,224, -255,123, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,188, -255,243, -255,216, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,245, -255,190, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,169, -255,151, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,211, -255,238, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,218, -255,142, -255,15, -255,68, -255,246, -255,63, -0,0, -0,0, -0,0, -0,0, -255,31, -255,250, -255,174, -255,61, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -255,183, -255,161, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,187, -255,150, -255,27, -255,244, -255,62, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,79, -255,220, -255,248, -255,216, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,250, -255,46, -255,28, -255,138, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,171, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,217, -255,131, -255,9, -255,96, -255,250, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,225, -0,0, -0,0, -0,0, -255,130, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -255,131, -255,206, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,117, -255,250, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,121, -0,0, -0,0, -255,44, -255,255, -255,19, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,187, -255,242, -255,217, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,255, -255,255, -255,47, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,185, -255,241, -255,215, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,110, -255,224, -255,240, -255,149, -255,1, -0,0, -0,0, -0,0, -0,0, -255,97, -255,240, -255,20, -0,0, -255,128, -255,218, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,120, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,152, -255,242, -255,231, -255,96, -255,243, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,199, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,2, -0,0, -255,6, -255,255, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,247, -255,9, -0,0, -0,0, -255,162, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,238, -255,50, -255,13, -255,154, -255,215, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -255,165, -255,200, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,216, -255,144, -255,16, -255,71, -255,246, -255,60, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,155, -255,18, -255,57, -255,247, -255,75, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,255, -255,255, -255,255, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,105, -255,217, -255,250, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,218, -255,142, -255,15, -255,68, -255,246, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,35, -255,235, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,123, -255,226, -255,245, -255,191, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -255,13, -255,219, -255,140, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,247, -255,9, -0,0, -0,0, -255,163, -255,159, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,199, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,12, -255,12, -255,12, -255,50, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -255,47, -255,195, -255,245, -255,220, -255,87, -0,0, -0,0, -0,0, -0,0, -0,0, -255,50, -255,254, -255,80, -255,5, -255,4, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,187, -255,242, -255,217, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,69, -255,246, -255,147, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -255,50, -255,247, -255,76, -0,0, -0,0, -0,0, -0,0, -255,93, -255,225, -0,0, -0,0, -0,0, -255,130, -255,188, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,192, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,184, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -255,217, -255,131, -255,9, -255,96, -255,250, -255,20, -0,0, -0,0, -0,0, -0,0, -255,61, -255,250, -255,46, -255,28, -255,138, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,189, -255,242, -255,219, -255,90, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,183, -255,242, -255,209, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,247, -255,9, -0,0, -0,0, -255,162, -255,159, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,192, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,31, -0,0, -255,63, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,2, -0,0, -255,6, -255,255, -255,57, -0,0, -0,0, -0,0, -0,0, -255,1, -255,152, -255,242, -255,231, -255,96, -255,243, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,211, -255,189, -255,75, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,221, -255,138, -255,15, -255,71, -255,246, -255,44, -0,0, -0,0, -0,0, -0,0, -255,4, -255,209, -255,155, -255,14, -255,102, -255,237, -255,15, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,115, -255,230, -255,240, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,185, -255,241, -255,215, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,73, -255,212, -255,246, -255,204, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,214, -255,99, -255,124, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,218, -255,142, -255,15, -255,68, -255,246, -255,63, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,192, -255,128, -0,0, -0,0, -0,0, -0,0, -255,42, -255,185, -255,14, -0,0, -255,30, -255,191, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,120, -0,0, -255,240, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,121, -255,128, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,171, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,105, -255,217, -255,250, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,164, -255,87, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,248, -255,8, -0,0, -0,0, -255,103, -255,48, -0,0, -0,0, -0,0, -0,0, -255,59, -255,254, -255,19, -0,0, -0,0, -255,236, -255,71, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,157, -255,17, -255,55, -255,247, -255,73, -0,0, -0,0, -0,0, -0,0, -255,4, -255,216, -255,144, -255,16, -255,71, -255,246, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,245, -255,98, -255,9, -255,132, -255,226, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,177, -255,255, -255,204, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,187, -255,242, -255,217, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,192, -255,128, -0,0, -0,0, -0,0, -0,0, -255,7, -255,185, -255,197, -255,41, -255,221, -255,154, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,150, -255,136, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,199, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,50, -255,254, -255,80, -255,5, -255,4, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,225, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,227, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,255, -255,255, -255,255, -255,255, -255,95, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,203, -255,116, -0,0, -0,0, -0,0, -0,0, -255,63, -255,247, -255,9, -0,0, -0,0, -255,163, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,222, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,121, -255,128, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,31, -0,0, -255,63, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,244, -255,120, -255,13, -255,7, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,101, -255,223, -255,165, -255,255, -255,59, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,190, -255,252, -255,161, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,183, -255,242, -255,209, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,250, -255,46, -255,28, -255,138, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,173, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,247, -255,7, -0,0, -0,0, -255,64, -255,31, -0,0, -0,0, -0,0, -0,0, -255,61, -255,248, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,255, -255,45, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,196, -255,124, -0,0, -0,0, -0,0, -0,0, -255,93, -255,225, -0,0, -0,0, -0,0, -255,130, -255,188, -0,0, -0,0, -0,0, -0,0, -255,35, -255,229, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,151, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,150, -255,136, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,120, -0,0, -255,240, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,58, -255,184, -255,243, -255,188, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,70, -255,21, -255,3, -255,219, -255,155, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,148, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,214, -255,238, -255,190, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,209, -255,155, -255,14, -255,102, -255,237, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,183, -255,242, -255,209, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,183, -255,242, -255,209, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,173, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,152, -255,242, -255,231, -255,96, -255,243, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,195, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,47, -255,195, -255,245, -255,220, -255,87, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,222, -255,133, -255,14, -255,61, -255,240, -255,47, -0,0, -0,0, -0,0, -0,0, -255,5, -255,215, -255,140, -255,14, -255,30, -255,117, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -255,223, -255,131, -255,12, -255,84, -255,251, -255,120, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,196, -255,124, -0,0, -0,0, -0,0, -0,0, -255,64, -255,247, -255,9, -0,0, -0,0, -255,162, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,151, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,62, -0,0, -255,11, -255,119, -255,246, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,202, -255,243, -255,193, -255,189, -255,197, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,211, -255,168, -255,16, -255,198, -255,186, -255,8, -0,0, -0,0, -0,0, -0,0, -255,59, -255,254, -255,19, -0,0, -0,0, -255,236, -255,71, -0,0, -0,0, -0,0, -0,0, -255,4, -255,209, -255,155, -255,14, -255,102, -255,237, -255,15, -0,0, -0,0, -0,0, -0,0, -255,4, -255,209, -255,155, -255,14, -255,102, -255,237, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,195, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,217, -255,131, -255,9, -255,96, -255,250, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,190, -255,242, -255,217, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,182, -255,242, -255,236, -255,152, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,216, -255,240, -255,171, -255,188, -255,120, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,196, -255,124, -0,0, -0,0, -0,0, -0,0, -255,5, -255,218, -255,142, -255,15, -255,68, -255,246, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,255, -255,52, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,255, -255,52, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,255, -255,52, -0,0, -0,0, -0,0, -0,0, -255,35, -255,251, -255,78, -255,7, -255,91, -255,249, -255,13, -0,0, -0,0, -0,0, -0,0, -255,34, -255,245, -255,108, -255,10, -255,38, -255,192, -255,208, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,145, -255,4, -0,0, -255,14, -255,151, -255,14, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,255, -255,255, -255,255, -255,255, -255,95, -0,0, -0,0, -0,0, -0,0, -255,59, -255,254, -255,19, -0,0, -0,0, -255,236, -255,71, -0,0, -0,0, -0,0, -0,0, -255,59, -255,254, -255,19, -0,0, -0,0, -255,236, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,183, -255,242, -255,209, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,2, -0,0, -255,6, -255,255, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,196, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,187, -255,242, -255,217, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,255, -255,52, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,85, -255,215, -255,247, -255,214, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -255,114, -255,207, -0,0, -0,0, -0,0, -255,118, -255,200, -0,0, -0,0, -0,0, -0,0, -255,96, -255,255, -255,255, -255,255, -255,255, -255,255, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,164, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,92, -255,255, -255,255, -255,255, -255,255, -255,214, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,248, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,255, -255,255, -255,255, -255,255, -255,95, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,255, -255,255, -255,255, -255,255, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -255,47, -255,195, -255,245, -255,220, -255,87, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,209, -255,155, -255,14, -255,102, -255,237, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -255,105, -255,217, -255,250, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,118, -255,202, -0,0, -0,0, -0,0, -255,155, -255,161, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,164, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,238, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,215, -255,140, -255,14, -255,30, -255,117, -255,2, -0,0, -0,0, -0,0, -0,0, -255,61, -255,248, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,248, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,217, -255,131, -255,9, -255,96, -255,250, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,254, -255,19, -0,0, -0,0, -255,236, -255,71, -0,0, -0,0, -0,0, -0,0, -255,50, -255,254, -255,80, -255,5, -255,4, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,246, -255,105, -255,12, -255,73, -255,244, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,244, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,196, -255,165, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,182, -255,242, -255,236, -255,152, -255,8, -0,0, -0,0, -0,0, -0,0, -255,5, -255,215, -255,140, -255,14, -255,30, -255,117, -255,2, -0,0, -0,0, -0,0, -0,0, -255,5, -255,215, -255,140, -255,14, -255,30, -255,117, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,2, -0,0, -255,6, -255,255, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,198, -255,56, -255,198, -255,49, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,255, -255,255, -255,255, -255,255, -255,255, -255,95, -0,0, -0,0, -0,0, -0,0, -255,61, -255,250, -255,46, -255,28, -255,138, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,201, -255,244, -255,209, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,255, -255,255, -255,255, -255,255, -255,200, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,130, -255,220, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,182, -255,242, -255,236, -255,152, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,182, -255,242, -255,236, -255,152, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -255,105, -255,217, -255,250, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,134, -255,151, -255,134, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,248, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,152, -255,242, -255,231, -255,96, -255,243, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,189, -255,242, -255,219, -255,90, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,31, -0,0, -255,63, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,121, -255,128, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,255, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,26, -255,48, -255,48, -255,48, -255,48, -255,48, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,247, -255,53, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,50, -255,254, -255,80, -255,5, -255,4, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -255,42, -255,249, -255,58, -255,249, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,215, -255,140, -255,14, -255,30, -255,117, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,221, -255,138, -255,15, -255,71, -255,246, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,120, -0,0, -255,240, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,150, -255,136, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,171, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -255,165, -255,185, -0,0, -0,0, -255,52, -255,255, -255,42, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,175, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,116, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,227, -255,117, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,250, -255,46, -255,28, -255,138, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,134, -255,151, -255,134, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,182, -255,242, -255,236, -255,152, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,248, -255,8, -0,0, -0,0, -255,103, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,199, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,72, -255,250, -255,16, -0,0, -255,131, -255,208, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,88, -255,69, -255,169, -255,85, -255,92, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,53, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,255, -255,255, -255,255, -255,255, -255,255, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,152, -255,242, -255,231, -255,96, -255,243, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,198, -255,56, -255,198, -255,49, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,227, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,231, -255,93, -0,0, -255,211, -255,118, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -255,81, -255,169, -255,254, -255,232, -255,154, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,114, -255,236, -255,231, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,247, -255,7, -0,0, -0,0, -255,64, -255,31, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -255,141, -255,175, -255,34, -255,254, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,255, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,120, -255,172, -255,219, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,245, -255,39, -255,54, -255,247, -255,10, -0,0, -0,0, -0,0, -0,0, -255,143, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,88, -255,212, -255,250, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,31, -0,0, -255,63, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,222, -255,133, -255,14, -255,61, -255,240, -255,47, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,246, -255,122, -255,194, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,192, -255,14, -255,113, -255,115, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,104, -255,220, -255,155, -0,0, -0,0, -0,0, -0,0, -255,56, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,220, -0,0, -0,0, -255,241, -255,35, -0,0, -0,0, -0,0, -0,0, -255,44, -255,243, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,58, -255,254, -255,255, -255,255, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,120, -0,0, -255,240, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,190, -255,242, -255,217, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,211, -255,238, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,17, -255,123, -255,233, -255,198, -255,90, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,245, -255,41, -255,55, -255,247, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -255,201, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,134, -255,255, -255,255, -255,255, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,255, -255,255, -255,255, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,129, -255,233, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,177, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,255, -255,45, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,18, -255,255, -255,45, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,117, -255,250, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,238, -255,90, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,255, -255,255, -255,255, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,210, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,52, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,232, -255,229, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,197, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,125, -255,255, -255,255, -255,255, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -255,5, -255,150, -255,237, -255,237, -255,158, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,231, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,205, -255,49, -255,205, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,169, -255,59, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,47, -255,195, -255,245, -255,220, -255,87, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,111, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,223, -255,131, -255,12, -255,84, -255,251, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -255,223, -255,131, -255,12, -255,84, -255,251, -255,120, -0,0, -0,0, -0,0, -0,0, -255,18, -255,255, -255,45, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,173, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,207, -255,242, -255,185, -255,197, -255,92, -0,0, -0,0, -0,0, -0,0, -255,24, -255,244, -255,132, -255,230, -255,231, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,125, -255,233, -255,190, -255,85, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,17, -255,84, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,244, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,245, -255,255, -255,255, -255,255, -255,80, -0,0, -0,0, -0,0, -0,0, -255,111, -255,220, -255,41, -255,41, -255,225, -255,114, -0,0, -0,0, -0,0, -0,0, -0,0, -255,85, -255,237, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,121, -255,166, -255,121, -255,166, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,217, -255,131, -255,9, -255,96, -255,250, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,230, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,216, -255,240, -255,171, -255,188, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,216, -255,240, -255,171, -255,188, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -255,223, -255,131, -255,12, -255,84, -255,251, -255,120, -0,0, -0,0, -0,0, -0,0, -255,4, -255,35, -255,235, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -255,216, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,195, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,225, -255,143, -255,16, -255,80, -255,248, -255,92, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,143, -255,22, -255,78, -255,249, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,107, -255,222, -255,155, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,236, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,76, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,161, -255,139, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,158, -255,194, -255,252, -255,80, -0,0, -0,0, -0,0, -0,0, -255,44, -255,47, -0,0, -0,0, -255,170, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -255,190, -255,102, -255,237, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,244, -255,67, -255,244, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,2, -0,0, -255,6, -255,255, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,216, -255,240, -255,171, -255,188, -255,120, -0,0, -0,0, -0,0, -0,0, -255,69, -255,246, -255,147, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -255,216, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,60, -255,251, -255,12, -0,0, -0,0, -255,228, -255,92, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,169, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,98, -255,171, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,254, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,232, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,241, -255,71, -0,0, -0,0, -0,0, -0,0, -255,39, -255,240, -255,10, -255,146, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,121, -255,166, -255,121, -255,166, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,105, -255,217, -255,250, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -255,216, -255,104, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,89, -255,229, -0,0, -0,0, -0,0, -255,228, -255,92, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,130, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,255, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,197, -255,73, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,203, -255,168, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,218, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,215, -255,136, -0,0, -0,0, -0,0, -0,0, -0,0, -255,77, -255,106, -0,0, -255,40, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,205, -255,49, -255,205, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,50, -255,254, -255,80, -255,5, -255,4, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -255,216, -255,104, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,71, -255,246, -255,4, -0,0, -0,0, -255,228, -255,92, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -255,155, -255,169, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,171, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,227, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,211, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,120, -255,179, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,161, -255,178, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,80, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -255,70, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,250, -255,46, -255,28, -255,138, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,67, -0,0, -0,0, -255,216, -255,104, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -255,13, -255,237, -255,128, -255,14, -255,82, -255,250, -255,92, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,138, -255,18, -255,62, -255,242, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,199, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,138, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,31, -255,254, -255,53, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,248, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,85, -255,58, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,152, -255,242, -255,231, -255,96, -255,243, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,31, -0,0, -255,63, -255,30, -0,0, -0,0, -0,0, -0,0, -255,62, -255,31, -0,0, -255,63, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,182, -255,246, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,155, -255,9, -255,68, -255,248, -255,104, -0,0, -0,0, -0,0, -0,0, -255,32, -255,255, -255,36, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,212, -255,241, -255,164, -255,235, -255,92, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,142, -255,227, -255,234, -255,136, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,231, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,253, -255,2, -0,0, -255,21, -255,70, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,45, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,120, -0,0, -255,240, -255,116, -0,0, -0,0, -0,0, -0,0, -255,236, -255,120, -0,0, -255,240, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -255,117, -255,218, -255,22, -255,5, -0,0, -0,0, -0,0, -0,0, -255,3, -255,163, -255,246, -255,217, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -255,116, -255,238, -255,232, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,209, -255,246, -255,211, -255,218, -255,104, -0,0, -0,0, -0,0, -0,0, -255,18, -255,255, -255,45, -0,0, -0,0, -255,200, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,228, -255,92, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,121, -255,128, -255,1, -0,0, -0,0, -0,0, -0,0, -255,35, -255,173, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,191, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,21, -255,247, -255,102, -255,23, -255,157, -255,199, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,196, -255,140, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,147, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,137, -255,20, -255,172, -255,135, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,43, -255,103, -255,199, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,223, -255,131, -255,12, -255,84, -255,251, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,228, -255,92, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,255, -255,84, -0,0, -0,0, -0,0, -0,0, -255,144, -255,150, -255,136, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,195, -255,2, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,83, -255,219, -255,245, -255,194, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -255,10, -255,119, -255,113, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,164, -255,255, -255,255, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,255, -255,246, -255,42, -0,0, -0,0, -0,0, -0,0, -255,5, -255,170, -255,245, -255,255, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,216, -255,240, -255,171, -255,188, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,228, -255,92, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,115, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,132, -0,0, -0,0, -0,0, -0,0, -255,100, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -255,64, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,177, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,148, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,95, -255,2, -255,137, -255,163, -0,0, -0,0, -0,0, -0,0, -255,48, -255,245, -255,37, -255,111, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,106, -255,188, -255,79, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,132, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -255,90, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,111, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,193, -255,28, -0,0, -0,0, -0,0, -0,0, -255,1, -255,153, -255,244, -255,211, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,148, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,17, -255,220, -255,216, -255,241, -255,93, -0,0, -0,0, -0,0, -0,0, -255,8, -255,195, -255,241, -255,169, -255,208, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,206, -255,251, -255,255, -255,84, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,200, -255,255, -255,255, -255,220, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,132, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -255,146, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,230, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,224, -255,81, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,175, -255,22, -255,185, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,148, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,46, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,84, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,229, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,50, -255,255, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,52, -255,223, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,148, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,121, -255,128, -255,1, -0,0, -0,0, -0,0, -0,0, -255,155, -255,108, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,173, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,222, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,84, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,151, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,252, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,78, -255,213, -255,52, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,148, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,31, -0,0, -255,63, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,171, -255,32, -0,0, -0,0, -0,0, -0,0, -255,35, -255,173, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,196, -255,136, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,150, -255,136, -255,157, -0,0, -0,0, -0,0, -0,0, -255,12, -255,225, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,215, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,151, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,84, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,52, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,73, -255,237, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,253, -255,228, -255,216, -255,114, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,148, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,154, -255,242, -255,123, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,170, -255,31, -0,0, -0,0, -0,0, -0,0, -255,236, -255,120, -0,0, -255,240, -255,116, -0,0, -0,0, -0,0, -0,0, -255,5, -255,199, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,195, -255,2, -0,0, -0,0, -0,0, -0,0, -255,124, -255,191, -255,136, -255,179, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,157, -255,153, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,169, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,84, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,155, -255,118, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,40, -255,40, -255,40, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,202, -255,22, -255,227, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,140, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,114, -255,136, -255,102, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,148, -255,171, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,69, -255,240, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,84, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,163, -255,176, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,254, -255,114, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -255,236, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,215, -255,203, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,228, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,13, -255,40, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,133, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,248, -255,62, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,84, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,231, -255,201, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,145, -255,236, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -255,236, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,59, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,160, -255,139, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,205, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,225, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,84, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,69, -255,252, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -255,236, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,238, -255,70, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,227, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,255, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -255,124, -255,196, -0,0, -0,0, -0,0, -0,0, -255,64, -255,255, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -255,236, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,255, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,225, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,224, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,88, -0,0, -0,0, -0,0, -0,0, -255,240, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,17, -255,243, -255,81, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -255,124, -255,180, -0,0, -0,0, -0,0, -0,0, -255,90, -255,204, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -255,236, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,148, -255,173, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,246, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,203, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,24, -0,0, -0,0, -0,0, -0,0, -255,228, -255,28, -0,0, -0,0, -0,0, -0,0, -255,70, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,96, -0,0, -0,0, -0,0, -0,0, -255,146, -255,79, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -255,236, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,255, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,157, -255,165, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,241, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,228, -255,28, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,8, -0,0, -0,0, -0,0, -0,0, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -255,11, -255,4, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,239, -255,70, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,225, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,159, -255,135, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,233, -255,86, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,228, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -255,70, -255,26, -0,0, -0,0, -0,0, -0,0, -255,70, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,161, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,159, -255,134, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -255,60, -255,215, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,37, -255,251, -255,53, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,228, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,120, -0,0, -0,0, -0,0, -0,0, -255,236, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,58, -255,227, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,173, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,91, -255,244, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,228, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,158, -255,136, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -255,11, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,228, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,170, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,228, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,70, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -255,59, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,228, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,228, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,228, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,228, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,17, -255,224, -255,38, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -255,252, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -}; diff --git a/scene/resources/default_theme/font_normal.png b/scene/resources/default_theme/font_normal.png Binary files differdeleted file mode 100644 index f0c0c35fcc..0000000000 --- a/scene/resources/default_theme/font_normal.png +++ /dev/null diff --git a/scene/resources/default_theme/font_source.inc b/scene/resources/default_theme/font_source.inc deleted file mode 100644 index 3b6a633bcc..0000000000 --- a/scene/resources/default_theme/font_source.inc +++ /dev/null @@ -1,32973 +0,0 @@ -static const int _builtin_source_font_height=15; -static const int _builtin_source_font_ascent=11; -static const int _builtin_source_font_charcount=191; -static const int _builtin_source_font_charrects[191][8]={ -/* charidx , ofs_x, ofs_y, size_x, size_y, valign, halign, advance */ -{64,62,54,8,10,3,0,8}, -{192,14,15,8,11,0,0,8}, -{224,12,206,6,11,0,1,8}, -{96,101,220,3,3,0,2,8}, -{160,0,0,0,0,11,0,8}, -{32,0,0,0,0,11,0,8}, -{65,74,30,8,9,2,0,8}, -{33,80,223,3,10,1,3,8}, -{161,108,220,3,10,4,3,8}, -{193,26,17,8,11,0,0,8}, -{225,112,189,6,11,0,1,8}, -{97,46,162,6,7,4,1,8}, -{98,79,110,7,9,2,1,8}, -{66,57,109,7,9,2,1,8}, -{162,2,188,6,10,1,1,8}, -{194,38,26,8,11,0,0,8}, -{226,32,197,6,11,0,1,8}, -{34,2,164,6,5,1,1,8}, -{163,61,84,7,8,3,1,8}, -{67,62,41,8,9,2,0,8}, -{227,24,105,7,9,2,1,8}, -{35,72,183,6,10,1,1,8}, -{195,98,56,8,12,-1,0,8}, -{99,112,120,7,7,4,1,8}, -{100,90,111,7,9,2,0,8}, -{68,90,98,7,9,2,1,8}, -{228,92,191,6,10,1,1,8}, -{36,42,180,6,13,0,1,8}, -{196,86,69,8,12,-1,0,8}, -{164,86,58,8,7,3,0,8}, -{165,57,97,7,8,3,1,8}, -{37,54,2,9,8,3,0,8}, -{69,68,97,7,9,2,1,8}, -{229,102,189,6,10,1,1,8}, -{197,93,2,9,13,-2,0,8}, -{101,14,81,8,7,4,0,8}, -{102,68,110,7,9,2,1,8}, -{70,46,97,7,9,2,1,8}, -{38,41,13,9,9,2,0,8}, -{198,106,2,9,9,2,-1,8}, -{166,2,210,2,14,0,3,8}, -{230,41,2,9,7,4,0,8}, -{71,2,69,8,9,2,0,8}, -{103,46,148,7,10,4,1,8}, -{199,74,56,8,12,2,0,8}, -{167,102,174,6,11,1,1,8}, -{231,13,160,7,10,4,1,8}, -{39,122,215,2,5,1,3,8}, -{104,13,104,7,9,2,1,8}, -{72,2,82,7,9,2,1,8}, -{40,70,206,5,13,0,2,8}, -{200,24,118,7,11,0,1,8}, -{232,14,30,8,11,0,0,8}, -{168,18,221,4,2,1,2,8}, -{169,38,77,8,9,2,0,8}, -{73,83,85,7,9,2,1,8}, -{105,88,206,5,10,1,1,8}, -{41,79,206,5,13,0,1,8}, -{201,46,123,7,11,0,1,8}, -{233,2,26,8,11,0,0,8}, -{106,12,174,6,13,1,0,8}, -{202,57,122,7,11,0,1,8}, -{234,110,15,8,11,0,0,8}, -{42,35,128,7,6,4,1,8}, -{170,97,205,5,5,3,2,8}, -{74,62,193,6,9,2,1,8}, -{171,86,166,6,6,4,1,8}, -{43,90,152,7,7,3,1,8}, -{235,98,30,8,10,1,0,8}, -{203,62,177,6,12,-1,1,8}, -{75,112,131,7,9,2,1,8}, -{107,72,84,7,9,2,1,8}, -{172,38,68,8,5,5,0,8}, -{44,66,223,3,7,8,3,8}, -{236,22,191,6,11,0,0,8}, -{204,79,123,7,11,0,1,8}, -{76,101,141,7,9,2,1,8}, -{108,110,66,8,9,2,0,8}, -{173,96,165,6,2,5,1,8}, -{45,72,177,6,2,5,1,8}, -{109,14,70,8,7,4,0,8}, -{237,2,107,7,11,0,0,8}, -{205,90,124,7,11,0,1,8}, -{77,90,139,7,9,2,1,8}, -{46,87,223,3,3,8,3,8}, -{174,106,165,6,5,2,1,8}, -{110,68,123,7,7,4,1,8}, -{238,13,117,7,11,0,0,8}, -{206,101,126,7,11,0,1,8}, -{78,79,138,7,9,2,1,8}, -{175,58,215,4,1,2,2,8}, -{111,110,55,8,7,4,0,8}, -{207,52,173,6,12,-1,1,8}, -{47,32,180,6,13,2,1,8}, -{239,22,206,6,10,1,1,8}, -{79,2,13,8,9,2,0,8}, -{176,2,202,4,4,1,2,8}, -{48,13,148,7,8,3,1,8}, -{112,57,143,7,10,4,1,8}, -{80,35,91,7,9,2,1,8}, -{240,110,30,8,9,2,0,8}, -{208,15,2,9,9,2,-1,8}, -{49,24,149,7,8,3,1,8}, -{177,2,138,7,8,3,1,8}, -{209,35,138,7,12,-1,1,8}, -{81,2,52,8,13,1,0,8}, -{113,68,152,7,10,4,0,8}, -{241,112,92,7,9,2,1,8}, -{178,26,226,4,5,0,3,8}, -{114,66,166,6,7,4,2,8}, -{50,35,154,7,8,3,1,8}, -{210,26,32,8,11,0,0,8}, -{242,86,19,8,11,0,0,8}, -{82,24,92,7,9,2,1,8}, -{179,52,201,5,5,0,2,8}, -{115,101,154,7,7,4,1,8}, -{51,50,56,8,8,3,0,8}, -{211,38,41,8,11,0,0,8}, -{243,74,15,8,11,0,0,8}, -{83,62,15,8,9,2,0,8}, -{180,94,220,3,3,0,3,8}, -{52,38,56,8,8,3,0,8}, -{212,50,41,8,11,0,0,8}, -{244,50,26,8,11,0,0,8}, -{84,14,45,8,9,2,0,8}, -{116,26,78,8,9,2,0,8}, -{53,2,95,7,8,3,1,8}, -{245,101,98,7,9,2,0,8}, -{85,94,85,7,9,2,1,8}, -{117,116,155,6,7,4,1,8}, -{181,2,150,7,10,4,1,8}, -{213,50,68,8,12,-1,0,8}, -{54,79,98,7,8,3,1,8}, -{86,74,43,8,9,2,-1,8}, -{246,26,47,8,10,1,0,8}, -{214,62,68,8,12,-1,0,8}, -{182,112,174,6,11,2,1,8}, -{118,98,19,8,7,4,0,8}, -{55,14,58,8,8,3,0,8}, -{87,80,2,9,9,2,-1,8}, -{247,112,144,7,7,3,0,8}, -{119,2,2,9,7,4,-1,8}, -{215,76,166,6,6,3,1,8}, -{183,115,215,3,3,4,3,8}, -{216,62,28,8,9,2,0,8}, -{88,50,84,7,9,2,1,8}, -{56,105,79,7,8,3,1,8}, -{248,2,41,8,7,4,0,8}, -{120,35,117,7,7,4,1,8}, -{184,10,221,4,3,11,2,8}, -{89,67,2,9,9,2,0,8}, -{121,35,166,7,10,4,1,8}, -{249,92,176,6,11,0,1,8}, -{217,112,105,7,11,0,1,8}, -{57,86,46,8,8,3,0,8}, -{185,34,226,4,6,0,2,8}, -{90,116,79,7,9,2,1,8}, -{250,2,173,6,11,0,1,8}, -{218,101,111,7,11,0,1,8}, -{58,73,223,3,8,3,3,8}, -{122,56,162,6,7,4,1,8}, -{186,61,206,5,5,3,2,8}, -{59,50,220,4,12,3,2,8}, -{123,13,132,7,12,1,1,8}, -{91,42,220,4,12,1,3,8}, -{251,12,191,6,11,0,1,8}, -{219,79,151,7,11,0,1,8}, -{187,46,138,7,6,4,1,8}, -{124,8,228,2,14,0,3,8}, -{92,22,174,6,13,2,1,8}, -{220,24,133,7,12,-1,1,8}, -{252,32,212,6,10,1,1,8}, -{60,13,92,7,8,2,1,8}, -{188,98,44,8,8,3,0,8}, -{253,68,134,7,14,0,1,8}, -{93,106,204,5,12,1,1,8}, -{125,82,176,6,12,1,1,8}, -{221,28,2,9,11,0,0,8}, -{189,110,43,8,8,3,0,8}, -{61,42,197,6,5,4,1,8}, -{222,46,110,7,9,2,1,8}, -{254,2,122,7,12,2,1,8}, -{62,52,189,6,8,2,1,8}, -{190,86,34,8,8,3,0,8}, -{94,115,204,5,7,1,1,8}, -{126,24,161,7,3,5,0,8}, -{223,35,104,7,9,2,1,8}, -{63,82,192,6,10,1,1,8}, -{255,26,61,8,13,1,0,8}, -{191,42,206,6,10,4,1,8}, -{95,57,137,7,2,11,1,8}, -}; -static const int _builtin_source_font_kerning_pair_count=0; -static const int _builtin_source_font_kerning_pairs[1][3]={ -{0,0,0} -}; -static const int _builtin_source_font_img_width=128; -static const int _builtin_source_font_img_height=256; -static const unsigned char _builtin_source_font_img_data[65536]={ -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,255, -255,72, -0,0, -255,21, -255,16, -0,0, -255,97, -255,231, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,237, -255,190, -255,58, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,174, -255,140, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,114, -255,207, -255,242, -255,180, -255,30, -255,194, -255,229, -255,73, -0,0, -0,0, -0,0, -0,0, -0,0, -255,122, -255,198, -255,201, -255,145, -255,1, -255,2, -255,119, -255,162, -255,1, -0,0, -0,0, -0,0, -0,0, -255,9, -255,230, -255,136, -0,0, -0,0, -0,0, -255,163, -255,198, -255,1, -0,0, -0,0, -0,0, -0,0, -255,18, -255,255, -255,79, -0,0, -0,0, -0,0, -0,0, -255,94, -255,238, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,123, -255,232, -255,133, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,255, -255,255, -255,255, -255,255, -255,164, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,230, -255,119, -0,0, -255,198, -255,159, -0,0, -255,146, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,71, -255,59, -255,138, -255,250, -255,64, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,96, -255,94, -255,39, -255,157, -255,243, -255,124, -255,104, -255,222, -255,1, -0,0, -0,0, -0,0, -0,0, -255,241, -255,54, -255,54, -255,255, -255,26, -255,145, -255,130, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,241, -255,15, -0,0, -255,29, -255,251, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,235, -255,108, -0,0, -0,0, -0,0, -0,0, -255,122, -255,201, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,71, -255,244, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,206, -255,255, -255,78, -255,44, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,167, -255,8, -255,199, -255,215, -0,0, -255,195, -255,130, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,136, -255,197, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,230, -255,136, -0,0, -0,0, -0,0, -255,163, -255,198, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,119, -255,255, -255,28, -255,20, -255,255, -255,23, -0,0, -0,0, -0,0, -0,0, -255,108, -255,236, -255,242, -255,139, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,223, -255,120, -0,0, -255,141, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,197, -255,137, -0,0, -255,17, -255,15, -0,0, -255,150, -255,165, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,123, -255,232, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,237, -255,96, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,126, -255,215, -255,60, -255,156, -255,208, -255,31, -255,242, -255,80, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,251, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,241, -255,15, -0,0, -255,29, -255,251, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,194, -255,230, -255,183, -255,255, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -0,0, -255,81, -255,229, -255,225, -255,62, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,96, -255,229, -255,22, -255,243, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,159, -255,166, -0,0, -255,175, -255,163, -0,0, -255,177, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,236, -255,8, -255,255, -255,67, -255,32, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,74, -255,252, -255,120, -255,104, -255,156, -255,117, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,255, -255,255, -255,255, -255,20, -255,10, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,223, -255,120, -0,0, -255,141, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,106, -255,1, -255,40, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,198, -255,12, -255,239, -255,95, -255,97, -255,206, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,216, -255,203, -255,178, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,121, -255,195, -255,10, -255,195, -255,225, -255,6, -255,205, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,255, -255,110, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,185, -255,134, -0,0, -255,255, -255,255, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,255, -255,209, -255,46, -255,97, -255,212, -255,235, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,30, -255,255, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,96, -255,229, -255,22, -255,243, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,238, -255,134, -255,47, -255,161, -255,245, -255,138, -255,50, -255,78, -0,0, -0,0, -0,0, -0,0, -0,0, -255,21, -255,213, -255,78, -255,31, -255,255, -255,16, -255,17, -255,247, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,88, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,82, -255,223, -255,80, -255,149, -255,188, -255,71, -255,232, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,198, -255,183, -255,201, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,254, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,226, -255,243, -255,3, -255,38, -255,255, -255,185, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,115, -255,217, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,216, -255,203, -255,178, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,98, -255,238, -255,217, -255,101, -255,37, -255,202, -255,242, -255,177, -255,6, -0,0, -0,0, -0,0, -0,0, -255,190, -255,128, -0,0, -255,8, -255,245, -255,63, -255,65, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,242, -255,154, -255,84, -255,122, -255,145, -255,252, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,245, -255,28, -255,250, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,126, -255,204, -255,32, -255,32, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,71, -255,56, -255,128, -255,248, -255,83, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,88, -255,255, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,2, -0,0, -0,0, -255,93, -255,225, -255,215, -255,64, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,254, -255,229, -255,20, -255,53, -255,230, -255,238, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,126, -255,169, -0,0, -255,181, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,223, -255,121, -0,0, -0,0, -255,255, -255,78, -255,44, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,241, -255,197, -255,73, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,224, -255,209, -0,0, -255,3, -255,237, -255,202, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,218, -255,76, -0,0, -255,91, -255,220, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,255, -255,40, -0,0, -0,0, -255,255, -255,255, -255,255, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,255, -255,255, -255,255, -255,255, -255,255, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,146, -255,174, -255,32, -255,32, -255,32, -255,185, -255,147, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,121, -255,225, -255,225, -255,120, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,232, -255,233, -255,97, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,234, -255,96, -0,0, -0,0, -0,0, -255,109, -255,234, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,239, -255,95, -255,95, -255,240, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,250, -255,72, -255,85, -255,239, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,74, -255,255, -255,28, -0,0, -0,0, -0,0, -255,39, -255,255, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,99, -0,0, -0,0, -255,101, -255,218, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,92, -255,218, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,255, -255,30, -255,127, -255,202, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,165, -255,235, -255,234, -255,184, -255,62, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,255, -255,26, -0,0, -0,0, -255,28, -255,255, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,25, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,212, -255,205, -255,210, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,185, -255,183, -255,87, -255,75, -255,137, -255,191, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,244, -255,72, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,223, -255,225, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,255, -255,7, -0,0, -0,0, -255,8, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,248, -255,247, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,55, -255,218, -255,92, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,221, -255,255, -255,56, -0,0, -255,9, -255,217, -255,78, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,242, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,173, -255,122, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,112, -255,86, -255,190, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,255, -255,28, -0,0, -0,0, -255,30, -255,255, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,211, -255,225, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,219, -255,121, -255,144, -255,229, -255,42, -255,100, -255,239, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,156, -255,231, -255,121, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,217, -255,103, -0,0, -0,0, -255,104, -255,214, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,185, -255,126, -255,141, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,248, -255,247, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,255, -255,18, -255,2, -255,148, -255,241, -255,226, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,90, -255,213, -255,251, -255,155, -255,25, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,140, -255,230, -255,230, -255,139, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,230, -255,120, -0,0, -0,0, -0,0, -255,133, -255,206, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,126, -255,226, -255,235, -255,163, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,101, -255,240, -255,95, -255,96, -255,241, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,253, -255,43, -255,56, -255,252, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,211, -255,225, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,230, -255,157, -255,51, -255,67, -255,233, -255,255, -255,175, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,61, -255,185, -255,222, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -255,146, -255,209, -255,65, -255,65, -255,209, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,73, -255,244, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,131, -255,216, -255,1, -0,0, -255,3, -255,227, -255,105, -0,0, -0,0, -0,0, -0,0, -0,0, -255,129, -255,205, -255,58, -255,42, -255,171, -255,177, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,119, -255,225, -255,225, -255,119, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,212, -0,0, -255,1, -255,224, -255,108, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,185, -255,126, -255,141, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,198, -255,245, -255,215, -255,123, -255,37, -255,160, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -0,0, -0,0, -0,0, -255,18, -255,255, -255,26, -0,0, -0,0, -0,0, -0,0, -255,4, -255,248, -255,51, -0,0, -0,0, -255,53, -255,248, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,122, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,254, -255,56, -0,0, -255,69, -255,246, -255,15, -0,0, -0,0, -0,0, -0,0, -255,2, -255,243, -255,40, -0,0, -0,0, -255,23, -255,255, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,198, -255,255, -255,255, -255,255, -255,255, -255,197, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,253, -255,43, -255,56, -255,252, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,246, -255,142, -255,77, -255,90, -255,175, -255,211, -255,1, -0,0, -0,0, -0,0, -0,0, -255,29, -255,255, -255,9, -0,0, -0,0, -255,10, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,183, -255,153, -0,0, -255,165, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,255, -255,74, -255,32, -255,32, -255,88, -255,255, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,212, -0,0, -255,1, -255,224, -255,108, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,188, -255,238, -255,233, -255,168, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,249, -255,50, -0,0, -0,0, -255,53, -255,248, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,140, -255,230, -255,230, -255,139, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,239, -255,18, -255,245, -255,59, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,250, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,122, -255,233, -255,2, -0,0, -0,0, -255,7, -255,245, -255,121, -0,0, -0,0, -0,0, -0,0, -0,0, -255,198, -255,255, -255,255, -255,255, -255,255, -255,197, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,147, -255,208, -255,65, -255,65, -255,208, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,146, -255,209, -255,65, -255,65, -255,209, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,230, -255,169, -255,215, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,148, -255,201, -255,66, -255,33, -255,64, -255,108, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,161, -0,0, -0,0, -0,0, -0,0, -255,177, -255,211, -0,0, -0,0, -0,0, -0,0, -255,33, -255,255, -255,74, -255,32, -255,32, -255,85, -255,255, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,142, -255,232, -255,232, -255,141, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,248, -255,51, -0,0, -0,0, -255,53, -255,248, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,114, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,130, -255,223, -255,245, -255,211, -255,127, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,122, -255,233, -255,2, -0,0, -0,0, -255,6, -255,244, -255,121, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,192, -255,192, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,255, -255,9, -0,0, -0,0, -255,10, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,241, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,161, -0,0, -0,0, -0,0, -0,0, -255,177, -255,211, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,32, -255,5, -255,5, -255,32, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,222, -255,222, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,249, -255,50, -0,0, -0,0, -255,53, -255,248, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,248, -255,247, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,103, -255,103, -255,166, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,121, -255,225, -255,232, -255,136, -255,170, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,147, -255,208, -255,65, -255,65, -255,208, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,211, -255,225, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,239, -255,95, -255,94, -255,239, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,142, -255,232, -255,232, -255,141, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,126, -255,226, -255,235, -255,163, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,185, -255,126, -255,141, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,140, -255,230, -255,230, -255,139, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,99, -0,0, -255,43, -255,242, -255,223, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,248, -255,247, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -0,0, -0,0, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,115, -255,177, -255,93, -255,138, -255,155, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,129, -255,205, -255,58, -255,42, -255,171, -255,177, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,70, -255,247, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,253, -255,43, -255,56, -255,252, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,146, -255,209, -255,65, -255,65, -255,209, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,255, -255,26, -255,6, -255,204, -255,99, -255,255, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,95, -255,211, -255,225, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,15, -0,0, -255,213, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,90, -255,186, -255,207, -255,177, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,243, -255,40, -0,0, -0,0, -255,23, -255,255, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,110, -255,193, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,213, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,212, -0,0, -255,1, -255,224, -255,108, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,248, -255,51, -0,0, -0,0, -255,53, -255,248, -255,4, -0,0, -0,0, -0,0, -0,0, -255,33, -255,255, -255,8, -255,131, -255,140, -255,9, -255,255, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,185, -255,126, -255,141, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,64, -255,20, -255,16, -255,212, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,198, -255,255, -255,255, -255,255, -255,255, -255,197, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,255, -255,9, -0,0, -0,0, -255,10, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -255,13, -255,255, -255,93, -255,209, -255,8, -255,30, -255,255, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,253, -255,43, -255,56, -255,252, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,121, -255,224, -255,237, -255,166, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,203, -255,255, -255,241, -255,181, -255,213, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,250, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,126, -255,226, -255,235, -255,163, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,121, -255,225, -255,225, -255,120, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,255, -255,71, -255,32, -255,32, -255,85, -255,255, -255,33, -0,0, -0,0, -0,0, -0,0, -255,4, -255,249, -255,50, -0,0, -0,0, -255,53, -255,248, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,243, -255,50, -0,0, -255,104, -255,214, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,212, -0,0, -255,1, -255,224, -255,108, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,179, -255,222, -255,176, -0,0, -0,0, -255,75, -255,143, -0,0, -0,0, -0,0, -0,0, -0,0, -255,126, -255,208, -255,61, -255,40, -255,167, -255,179, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,207, -255,161, -255,24, -255,25, -255,146, -255,255, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,148, -255,201, -255,66, -255,33, -255,63, -255,109, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,129, -255,205, -255,58, -255,42, -255,171, -255,177, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,239, -255,95, -255,95, -255,240, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -255,122, -255,232, -255,2, -0,0, -0,0, -255,6, -255,244, -255,121, -0,0, -0,0, -0,0, -0,0, -0,0, -255,147, -255,208, -255,65, -255,65, -255,208, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,157, -255,241, -255,93, -255,96, -255,241, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,198, -255,255, -255,255, -255,255, -255,255, -255,197, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,255, -255,156, -0,0, -255,46, -255,216, -255,54, -0,0, -0,0, -0,0, -0,0, -255,2, -255,243, -255,42, -0,0, -0,0, -255,22, -255,255, -255,11, -0,0, -0,0, -0,0, -0,0, -255,22, -255,255, -255,19, -0,0, -0,0, -255,5, -255,255, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,130, -255,223, -255,245, -255,211, -255,127, -255,6, -0,0, -0,0, -0,0, -0,0, -255,2, -255,243, -255,40, -0,0, -0,0, -255,23, -255,255, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,99, -0,0, -0,0, -255,101, -255,218, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,160, -0,0, -0,0, -0,0, -0,0, -255,177, -255,211, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,142, -255,232, -255,232, -255,141, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,177, -255,135, -255,232, -255,225, -255,119, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,255, -255,74, -255,32, -255,32, -255,85, -255,255, -255,33, -0,0, -0,0, -0,0, -0,0, -255,21, -255,69, -255,67, -255,255, -255,20, -255,133, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,39, -0,0, -0,0, -0,0, -0,0, -255,13, -255,254, -255,36, -0,0, -0,0, -255,46, -255,250, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,39, -0,0, -0,0, -0,0, -0,0, -255,11, -255,255, -255,26, -0,0, -0,0, -255,28, -255,255, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,122, -255,233, -255,2, -0,0, -0,0, -255,6, -255,244, -255,121, -0,0, -0,0, -0,0, -0,0, -255,34, -255,196, -255,237, -255,155, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,249, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,173, -255,200, -255,64, -255,60, -255,199, -255,151, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,250, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,255, -255,7, -0,0, -0,0, -255,8, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,161, -0,0, -0,0, -0,0, -0,0, -255,177, -255,211, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,30, -0,0, -255,133, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,141, -255,211, -255,78, -255,34, -255,61, -255,97, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,152, -255,234, -255,231, -255,149, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,148, -255,201, -255,66, -255,33, -255,63, -255,109, -255,1, -0,0, -0,0, -0,0, -0,0, -255,10, -255,255, -255,28, -0,0, -0,0, -255,30, -255,255, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,175, -255,158, -255,38, -255,159, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,118, -255,218, -255,247, -255,216, -255,131, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,130, -255,223, -255,245, -255,211, -255,127, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -255,217, -255,103, -0,0, -0,0, -255,104, -255,214, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,212, -255,146, -255,2, -255,165, -255,186, -255,255, -255,121, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,140, -255,230, -255,236, -255,159, -255,169, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,101, -255,240, -255,95, -255,96, -255,241, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,50, -255,213, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,190, -255,191, -255,64, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,192, -255,240, -255,210, -255,111, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,84, -255,1, -0,0, -0,0, -0,0, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,146, -255,206, -255,58, -255,78, -255,246, -255,177, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,119, -255,225, -255,225, -255,119, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,7, -255,8, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,251, -255,148, -255,73, -255,101, -255,189, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,248, -255,51, -255,1, -255,156, -255,153, -255,254, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,121, -255,225, -255,225, -255,120, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,121, -255,225, -255,225, -255,120, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,197, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,255, -255,54, -0,0, -0,0, -0,0, -255,146, -255,215, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,210, -255,254, -255,40, -0,0, -255,10, -255,172, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,31, -255,255, -255,12, -255,128, -255,127, -255,12, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,239, -255,95, -255,95, -255,240, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,239, -255,95, -255,95, -255,240, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,252, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,237, -255,130, -0,0, -0,0, -255,1, -255,222, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,210, -255,254, -255,40, -0,0, -255,1, -255,147, -255,76, -0,0, -0,0, -0,0, -0,0, -255,6, -255,36, -255,255, -255,40, -255,13, -255,180, -255,101, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,253, -255,152, -255,155, -255,1, -255,52, -255,248, -255,4, -0,0, -0,0, -0,0, -0,0, -255,28, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,244, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,99, -0,0, -0,0, -255,101, -255,218, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,99, -0,0, -0,0, -255,101, -255,218, -0,0, -0,0, -0,0, -0,0, -0,0, -255,31, -255,255, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,158, -255,206, -0,0, -0,0, -255,41, -255,255, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,36, -255,255, -255,40, -0,0, -255,115, -255,205, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,37, -255,41, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,168, -255,246, -255,77, -255,57, -255,205, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,44, -255,44, -255,78, -255,255, -255,44, -255,44, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,255, -255,26, -0,0, -0,0, -255,28, -255,255, -255,9, -0,0, -0,0, -0,0, -0,0, -255,11, -255,255, -255,26, -0,0, -0,0, -255,28, -255,255, -255,9, -0,0, -0,0, -0,0, -0,0, -255,6, -255,252, -255,38, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,255, -255,27, -0,0, -255,117, -255,224, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,181, -255,242, -255,225, -255,135, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -255,52, -255,174, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -0,0, -255,135, -255,242, -255,155, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,169, -255,160, -255,237, -255,232, -255,141, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -0,0, -0,0, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,255, -255,7, -0,0, -0,0, -255,8, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,33, -255,255, -255,7, -0,0, -0,0, -255,8, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -255,201, -255,140, -0,0, -0,0, -0,0, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,242, -255,103, -0,0, -255,192, -255,142, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,218, -255,153, -255,47, -255,54, -255,199, -255,143, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,30, -255,1, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,173, -255,11, -255,82, -255,50, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,214, -0,0, -255,15, -255,215, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,255, -255,28, -0,0, -0,0, -255,30, -255,255, -255,9, -0,0, -0,0, -0,0, -0,0, -255,10, -255,255, -255,28, -0,0, -0,0, -255,30, -255,255, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,252, -255,148, -255,73, -255,100, -255,223, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,166, -255,177, -255,16, -255,252, -255,59, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,255, -255,14, -0,0, -0,0, -255,40, -255,247, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,1, -255,1, -255,167, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,165, -255,103, -0,0, -0,0, -255,81, -255,210, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,217, -255,103, -0,0, -0,0, -255,104, -255,214, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,217, -255,103, -0,0, -0,0, -255,104, -255,214, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,196, -255,242, -255,211, -255,112, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,83, -255,244, -255,92, -255,232, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,238, -255,146, -255,55, -255,65, -255,172, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,185, -255,9, -255,100, -255,144, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,130, -255,183, -255,1, -0,0, -255,43, -255,212, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,146, -255,234, -255,227, -255,134, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,101, -255,240, -255,95, -255,96, -255,241, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,101, -255,240, -255,95, -255,96, -255,241, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,246, -255,222, -255,151, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,210, -255,245, -255,193, -255,78, -255,254, -255,8, -0,0, -0,0, -0,0, -0,0, -255,100, -255,216, -255,24, -255,19, -255,242, -255,175, -255,255, -255,124, -0,0, -0,0, -0,0, -0,0, -255,45, -255,26, -0,0, -0,0, -255,234, -255,241, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,205, -255,61, -255,70, -255,213, -255,141, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,119, -255,225, -255,225, -255,119, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,119, -255,225, -255,225, -255,119, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,174, -255,255, -255,69, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,214, -0,0, -0,0, -0,0, -0,0, -0,0, -255,47, -255,35, -0,0, -0,0, -0,0, -0,0, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,249, -255,50, -0,0, -0,0, -255,55, -255,247, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,120, -255,78, -255,47, -255,104, -255,240, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,151, -255,249, -255,249, -255,150, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,255, -255,9, -0,0, -0,0, -255,10, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,110, -255,209, -255,245, -255,210, -255,87, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,119, -255,218, -255,41, -255,41, -255,218, -255,118, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,250, -255,49, -0,0, -0,0, -255,55, -255,247, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,47, -255,186, -255,227, -255,223, -255,148, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,226, -255,83, -0,0, -0,0, -255,86, -255,224, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,204, -255,61, -255,69, -255,212, -255,141, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,240, -255,89, -255,3, -255,16, -255,184, -255,152, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,140, -255,230, -255,230, -255,139, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,255, -255,24, -0,0, -0,0, -255,25, -255,255, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,148, -255,235, -255,229, -255,136, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,172, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,175, -255,235, -255,240, -255,190, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,183, -255,136, -0,0, -0,0, -0,0, -255,60, -255,234, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,31, -255,167, -255,225, -255,235, -255,173, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,119, -255,228, -255,76, -255,176, -255,25, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,146, -255,209, -255,65, -255,65, -255,209, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,7, -0,0, -0,0, -255,7, -255,255, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,135, -255,213, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,98, -255,42, -255,54, -255,139, -255,227, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,246, -255,46, -255,8, -255,101, -255,173, -255,209, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,243, -255,179, -255,87, -255,76, -255,164, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,190, -255,52, -255,206, -255,177, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,248, -255,51, -0,0, -0,0, -255,53, -255,248, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,255, -255,26, -0,0, -0,0, -255,28, -255,255, -255,13, -0,0, -0,0, -0,0, -0,0, -255,24, -255,255, -255,255, -255,255, -255,255, -255,255, -255,254, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,96, -255,238, -255,38, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,51, -255,81, -255,166, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,255, -255,13, -255,185, -255,156, -255,46, -255,43, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,182, -255,162, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,85, -255,100, -0,0, -255,15, -255,14, -0,0, -255,100, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,255, -255,9, -0,0, -0,0, -255,10, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,218, -255,89, -0,0, -0,0, -255,92, -255,221, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,44, -255,44, -255,44, -255,48, -255,220, -255,115, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,240, -255,58, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,129, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -255,17, -255,255, -255,20, -255,238, -255,103, -255,18, -255,131, -255,255, -0,0, -0,0, -0,0, -0,0, -255,3, -255,248, -255,45, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,235, -255,197, -255,255, -255,255, -255,196, -255,234, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,223, -255,254, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,249, -255,50, -0,0, -0,0, -255,53, -255,248, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,107, -255,223, -255,46, -255,46, -255,224, -255,121, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,161, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,37, -255,237, -255,108, -255,32, -255,32, -255,255, -255,67, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,14, -255,48, -255,162, -255,191, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,58, -255,94, -255,235, -255,219, -255,96, -255,255, -0,0, -0,0, -0,0, -0,0, -255,30, -255,255, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,172, -255,42, -255,41, -255,172, -255,189, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,53, -255,238, -255,203, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,147, -255,208, -255,65, -255,65, -255,208, -255,145, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,130, -255,244, -255,255, -255,163, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,235, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -0,0, -0,0, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -0,0, -0,0, -0,0, -255,19, -255,255, -255,25, -0,0, -0,0, -0,0, -0,0, -0,0, -255,158, -255,162, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,251, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,246, -255,55, -0,0, -0,0, -255,56, -255,245, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,139, -255,162, -255,117, -255,195, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,142, -255,232, -255,232, -255,141, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,78, -255,246, -255,76, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,123, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,214, -255,16, -255,16, -255,214, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,215, -255,120, -255,56, -255,75, -255,171, -255,221, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,238, -255,129, -255,23, -255,20, -255,89, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -255,186, -255,143, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,170, -255,40, -255,40, -255,171, -255,189, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,225, -255,82, -255,36, -255,254, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,117, -255,246, -255,255, -255,45, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,190, -255,95, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,186, -255,235, -255,237, -255,175, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,179, -255,238, -255,229, -255,163, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,235, -255,148, -255,55, -255,43, -255,129, -255,165, -0,0, -0,0, -0,0, -0,0, -255,40, -255,234, -255,197, -255,255, -255,255, -255,197, -255,232, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -255,55, -255,245, -255,10, -0,0, -255,207, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -44,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,255, -255,45, -0,0, -0,0, -255,48, -255,254, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,158, -255,231, -255,245, -255,191, -255,52, -0,0, -0,0, -0,0, -0,0, -255,85, -255,100, -0,0, -255,15, -255,14, -0,0, -255,100, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,255, -255,255, -255,255, -255,198, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,47, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,189, -255,141, -0,0, -0,0, -255,128, -255,190, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,83, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,225, -255,114, -255,32, -255,32, -255,76, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,233, -255,5, -0,0, -255,208, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,82, -255,232, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,255, -255,29, -0,0, -0,0, -255,3, -255,239, -255,114, -0,0, -0,0, -0,0, -0,0, -255,60, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,215, -255,79, -255,31, -255,248, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,190, -255,123, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,142, -255,215, -0,0, -0,0, -0,0, -0,0, -255,171, -255,201, -0,0, -0,0, -0,0, -0,0, -255,7, -255,28, -255,28, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,170, -255,106, -255,171, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,32, -255,32, -255,32, -255,32, -255,32, -255,32, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,126, -255,219, -255,59, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -0,0, -0,0, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,74, -255,200, -255,242, -255,202, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,226, -255,193, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,184, -255,60, -255,220, -255,126, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,214, -255,16, -255,16, -255,213, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -0,0, -0,0, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,78, -255,250, -255,133, -255,70, -255,108, -255,172, -255,6, -0,0, -0,0, -0,0, -0,0, -255,40, -255,212, -255,144, -255,236, -255,121, -255,124, -255,236, -255,125, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,129, -255,238, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,214, -255,15, -255,16, -255,213, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,213, -255,118, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,144, -255,133, -255,252, -255,146, -255,130, -255,218, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,150, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,121, -255,225, -255,225, -255,120, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,121, -255,225, -255,225, -255,120, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,2, -255,42, -255,255, -255,2, -255,42, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,98, -255,241, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,180, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,239, -255,95, -255,95, -255,240, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,239, -255,95, -255,95, -255,240, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,255, -255,255, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,45, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,255, -255,10, -0,0, -255,168, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -255,40, -255,255, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,5, -255,232, -255,224, -255,83, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,99, -0,0, -0,0, -255,101, -255,218, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,99, -0,0, -0,0, -255,101, -255,218, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,141, -255,202, -255,221, -255,140, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,230, -255,157, -255,44, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,251, -255,41, -0,0, -255,21, -255,32, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -255,40, -255,255, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,255, -255,26, -0,0, -0,0, -255,28, -255,255, -255,9, -0,0, -0,0, -0,0, -0,0, -255,11, -255,255, -255,26, -0,0, -0,0, -255,28, -255,255, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,218, -255,112, -255,131, -255,217, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,231, -255,236, -255,164, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,193, -255,138, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -255,40, -255,255, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,33, -255,255, -255,7, -0,0, -0,0, -255,8, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,33, -255,255, -255,7, -0,0, -0,0, -255,8, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,254, -255,27, -255,40, -255,255, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,251, -255,139, -255,70, -255,110, -255,255, -255,39, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -255,40, -255,255, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,255, -255,28, -0,0, -0,0, -255,30, -255,255, -255,9, -0,0, -0,0, -0,0, -0,0, -255,10, -255,255, -255,28, -0,0, -0,0, -255,30, -255,255, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,117, -255,188, -0,0, -0,0, -255,198, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,200, -255,243, -255,205, -255,97, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,163, -255,225, -255,238, -255,182, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,217, -255,103, -0,0, -0,0, -255,104, -255,214, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,217, -255,103, -0,0, -0,0, -255,104, -255,214, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,194, -255,255, -255,255, -255,255, -255,255, -255,193, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,225, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,235, -255,139, -255,35, -255,19, -255,101, -255,234, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -255,101, -255,240, -255,95, -255,96, -255,241, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,101, -255,240, -255,95, -255,96, -255,241, -255,100, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,253, -255,75, -255,32, -255,32, -255,86, -255,253, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,162, -255,151, -255,51, -255,208, -255,237, -255,80, -255,113, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,119, -255,225, -255,225, -255,119, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,119, -255,225, -255,225, -255,119, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,93, -255,244, -255,4, -0,0, -0,0, -255,11, -255,251, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,79, -255,215, -255,246, -255,202, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -255,140, -255,255, -255,255, -255,255, -255,255, -255,255, -255,254, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -255,222, -255,46, -255,210, -255,139, -255,8, -0,0, -255,30, -255,223, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,170, -255,187, -0,0, -0,0, -0,0, -0,0, -255,199, -255,169, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,248, -255,104, -255,26, -255,150, -255,216, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,44, -255,44, -255,44, -255,76, -255,250, -255,130, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,126, -255,226, -255,235, -255,163, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,32, -255,67, -255,255, -255,32, -255,32, -255,32, -255,8, -0,0, -0,0, -0,0, -0,0, -255,243, -255,11, -255,244, -255,60, -0,0, -0,0, -255,11, -255,244, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,247, -255,43, -0,0, -255,67, -255,219, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,200, -255,192, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,129, -255,205, -255,58, -255,42, -255,171, -255,177, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,205, -255,32, -255,190, -255,141, -255,29, -255,39, -255,40, -255,207, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,240, -255,150, -255,196, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,139, -255,234, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,243, -255,40, -0,0, -0,0, -255,23, -255,255, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,130, -255,107, -255,41, -255,206, -255,238, -255,100, -255,118, -255,139, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,179, -255,92, -255,122, -255,224, -255,126, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,253, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,198, -255,54, -0,0, -0,0, -255,44, -255,211, -255,19, -0,0, -0,0, -0,0, -0,0, -255,139, -255,234, -255,13, -0,0, -255,6, -255,222, -255,140, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,186, -255,240, -255,231, -255,159, -255,16, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,233, -255,75, -0,0, -0,0, -255,32, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,236, -255,133, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,67, -255,32, -255,32, -255,32, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,250, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,240, -255,128, -255,39, -255,32, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,148, -255,165, -255,167, -255,165, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,234, -255,130, -0,0, -255,107, -255,236, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -255,217, -255,154, -255,64, -255,50, -255,109, -255,31, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,255, -255,255, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,201, -255,168, -255,55, -255,22, -255,121, -255,243, -255,8, -0,0, -0,0, -0,0, -0,0, -255,4, -255,195, -255,195, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,148, -255,201, -255,66, -255,33, -255,63, -255,109, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,81, -255,221, -255,244, -255,203, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,102, -255,245, -255,31, -255,229, -255,108, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -255,20, -255,210, -255,168, -255,3, -0,0, -0,0, -0,0, -0,0, -255,18, -255,44, -255,78, -255,255, -255,44, -255,44, -255,11, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,28, -255,164, -255,232, -255,248, -255,206, -255,67, -0,0, -0,0, -0,0, -0,0, -0,0, -255,132, -255,248, -255,72, -255,44, -255,44, -255,44, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,130, -255,223, -255,245, -255,211, -255,127, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,208, -255,221, -255,216, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,255, -255,255, -255,255, -255,255, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -255,17, -255,206, -255,178, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,254, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,255, -255,126, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,254, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,55, -255,202, -255,196, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,17, -255,236, -255,177, -255,233, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,87, -255,218, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,222, -255,233, -255,228, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,205, -255,7, -255,223, -255,140, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,223, -255,130, -255,44, -255,44, -255,44, -255,24, -0,0, -0,0, -0,0, -0,0, -255,255, -255,192, -255,15, -255,203, -255,173, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,44, -0,0, -0,0, -255,4, -255,255, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,238, -255,186, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,252, -255,69, -0,0, -255,89, -255,251, -255,39, -0,0, -0,0, -0,0, -0,0, -255,235, -255,255, -255,255, -255,255, -255,255, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -255,255, -255,43, -0,0, -255,39, -255,246, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,221, -255,83, -0,0, -0,0, -255,46, -255,253, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,155, -255,24, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,240, -255,188, -255,51, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,67, -255,35, -255,71, -255,153, -255,231, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,183, -255,186, -0,0, -0,0, -255,2, -255,202, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,103, -255,245, -255,39, -0,0, -0,0, -0,0, -0,0, -255,18, -255,44, -255,78, -255,255, -255,44, -255,44, -255,11, -0,0, -0,0, -0,0, -0,0, -255,138, -255,222, -255,84, -255,75, -255,203, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,117, -255,236, -255,103, -255,116, -255,200, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,70, -255,226, -255,176, -255,8, -0,0, -0,0, -0,0, -0,0, -255,255, -255,67, -255,35, -255,70, -255,153, -255,231, -255,2, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,15, -255,255, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,255, -255,255, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -255,11, -255,152, -255,234, -255,239, -255,171, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,169, -255,39, -255,171, -255,208, -255,61, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,155, -255,233, -255,87, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,16, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -255,2, -255,22, -255,134, -255,229, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,35, -255,161, -255,230, -255,229, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,226, -255,165, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -255,3, -255,44, -255,140, -255,236, -255,6, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,255, -255,202, -255,51, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,222, -255,112, -255,64, -255,158, -255,239, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,51, -255,44, -255,44, -255,36, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,227, -255,164, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,255, -255,225, -255,69, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,67, -255,31, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,55, -0,0, -0,0, -255,16, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,249, -255,201, -255,244, -255,193, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,155, -255,233, -255,86, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,67, -255,39, -255,231, -255,174, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,255, -255,84, -0,0, -0,0, -0,0, -0,0, -255,67, -255,239, -255,24, -0,0, -255,42, -255,236, -255,41, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,126, -255,52, -255,54, -255,183, -255,210, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,227, -255,175, -255,8, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -255,94, -255,255, -255,51, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,44, -255,44, -255,44, -255,44, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -255,105, -255,156, -0,0, -255,180, -255,70, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,44, -255,44, -255,44, -255,44, -255,16, -0,0, -0,0, -0,0, -0,0, -255,1, -255,107, -255,214, -255,245, -255,209, -255,111, -255,3, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,239, -255,194, -255,67, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,215, -255,53, -255,197, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,255, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,155, -255,24, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -255,2, -255,198, -255,182, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,109, -255,107, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,230, -255,93, -255,45, -255,68, -255,73, -255,2, -0,0, -0,0, -0,0, -0,0, -255,255, -255,71, -255,58, -255,132, -255,249, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,167, -255,61, -255,195, -255,99, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -0,0, -0,0, -0,0, -255,34, -255,254, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,51, -255,254, -255,59, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,32, -255,32, -255,32, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,255, -255,255, -255,255, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,32, -255,32, -255,32, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -255,211, -255,115, -255,179, -255,242, -255,201, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,124, -255,209, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,146, -255,234, -255,225, -255,121, -255,3, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,164, -255,158, -255,63, -255,64, -255,198, -255,179, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,172, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -255,247, -255,225, -255,87, -255,46, -255,164, -255,213, -255,1, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,34, -255,254, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,205, -255,61, -255,75, -255,226, -255,107, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,31, -255,166, -255,225, -255,238, -255,161, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,255, -255,255, -255,255, -255,255, -255,255, -255,44, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,223, -255,68, -0,0, -0,0, -255,21, -255,255, -255,21, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,10, -255,255, -255,31, -0,0, -0,0, -0,0, -0,0, -255,5, -255,249, -255,50, -0,0, -0,0, -255,91, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,115, -0,0, -0,0, -255,26, -255,255, -255,16, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,36, -255,253, -255,6, -0,0, -0,0, -0,0, -0,0, -255,30, -255,255, -255,9, -0,0, -0,0, -255,50, -255,245, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,166, -255,234, -255,236, -255,110, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,44, -255,44, -255,44, -255,44, -255,22, -0,0, -0,0, -0,0, -0,0, -255,61, -255,236, -255,74, -255,36, -255,172, -255,186, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,129, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,250, -255,49, -0,0, -0,0, -255,90, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,239, -255,123, -255,97, -255,203, -0,0, -0,0, -0,0, -0,0, -0,0, -255,180, -255,188, -255,52, -255,91, -255,253, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,215, -255,241, -255,172, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,71, -255,57, -255,134, -255,250, -255,71, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,204, -255,61, -255,74, -255,225, -255,108, -0,0, -0,0, -0,0, -0,0, -255,1, -255,88, -255,219, -255,66, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,62, -255,159, -255,229, -255,229, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,177, -255,39, -255,145, -255,210, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -255,247, -255,54, -0,0, -255,34, -255,251, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,240, -255,194, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,148, -255,235, -255,227, -255,122, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,36, -255,3, -0,0, -0,0, -0,0, -0,0, -255,255, -255,225, -255,112, -255,64, -255,158, -255,239, -255,5, -0,0, -0,0, -0,0, -0,0, -255,63, -255,166, -255,217, -255,245, -255,198, -255,49, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -255,171, -255,133, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,158, -255,163, -255,1, -0,0, -0,0, -0,0, -0,0, -255,255, -255,55, -0,0, -0,0, -255,16, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,148, -255,127, -255,64, -255,50, -255,154, -255,219, -255,1, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -255,242, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,38, -255,214, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,52, -255,93, -255,255, -255,25, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -255,90, -255,231, -255,167, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,236, -255,176, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,39, -255,185, -255,225, -255,185, -255,139, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,12, -255,147, -255,215, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,61, -255,31, -255,71, -255,172, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,217, -255,247, -255,211, -255,88, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,214, -255,106, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -255,80, -255,33, -255,127, -255,226, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,232, -255,163, -255,25, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,56, -255,234, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,242, -255,123, -255,40, -255,44, -255,21, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,51, -255,217, -255,105, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,32, -255,32, -255,32, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,232, -255,133, -255,43, -255,71, -255,180, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -255,188, -255,247, -255,208, -255,62, -0,0, -0,0, -0,0, -0,0, -255,255, -255,175, -255,162, -255,181, -255,245, -255,189, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,67, -255,36, -255,65, -255,189, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,255, -255,255, -255,255, -255,255, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,104, -255,196, -255,242, -255,190, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,44, -0,0, -0,0, -255,4, -255,255, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,76, -255,222, -255,241, -255,190, -255,80, -255,166, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,55, -255,255, -255,11, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,255, -255,230, -255,50, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,32, -255,255, -255,67, -255,32, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,204, -255,76, -255,61, -255,192, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,153, -255,238, -255,219, -255,134, -255,255, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,221, -255,83, -0,0, -0,0, -255,46, -255,253, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,18, -255,255, -255,22, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -255,6, -255,45, -255,134, -255,236, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,41, -0,0, -0,0, -255,39, -255,255, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -255,153, -255,219, -255,77, -255,59, -255,165, -255,255, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,138, -255,222, -255,84, -255,75, -255,203, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,67, -255,34, -255,56, -255,173, -255,202, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,17, -255,255, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,10, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -255,5, -255,250, -255,60, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,11, -255,152, -255,234, -255,239, -255,171, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,232, -255,164, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,64, -255,30, -255,51, -255,163, -255,223, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,59, -255,248, -255,3, -0,0, -0,0, -0,0, -0,0, -255,31, -255,255, -255,10, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,36, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,116, -255,245, -255,38, -0,0, -255,24, -255,237, -255,122, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,239, -255,181, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,168, -255,59, -255,68, -255,213, -255,149, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,255, -255,45, -0,0, -0,0, -255,41, -255,255, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,110, -255,232, -255,94, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,139, -255,188, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,185, -255,202, -255,4, -255,172, -255,196, -255,3, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,102, -255,217, -255,239, -255,155, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,200, -255,60, -255,67, -255,195, -255,255, -0,0, -0,0, -0,0, -0,0, -255,252, -255,44, -0,0, -0,0, -255,4, -255,255, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,31, -255,218, -255,32, -255,219, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,233, -255,182, -255,243, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,181, -255,242, -255,203, -255,80, -255,255, -0,0, -0,0, -0,0, -0,0, -255,221, -255,83, -0,0, -0,0, -255,46, -255,253, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,147, -255,255, -255,143, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,138, -255,222, -255,84, -255,75, -255,203, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,87, -255,206, -255,245, -255,211, -255,108, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,44, -255,44, -255,44, -255,44, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,249, -255,151, -255,246, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,152, -255,234, -255,239, -255,171, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,243, -255,109, -255,49, -255,88, -255,144, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,32, -255,32, -255,32, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,222, -255,141, -255,1, -255,178, -255,214, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,147, -255,167, -255,192, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,207, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,32, -255,32, -255,32, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -255,164, -255,213, -255,8, -0,0, -255,18, -255,224, -255,160, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,121, -255,195, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,27, -0,0, -255,17, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,27, -255,162, -255,230, -255,229, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,169, -255,138, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,245, -255,52, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,105, -255,197, -255,242, -255,189, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,32, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -255,255, -255,221, -255,112, -255,64, -255,158, -255,239, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,31, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,174, -255,140, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,211, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,203, -255,75, -255,61, -255,193, -255,187, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,255, -255,92, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,44, -255,44, -255,44, -255,44, -255,16, -0,0, -0,0, -0,0, -0,0, -255,255, -255,55, -0,0, -0,0, -255,16, -255,255, -255,32, -0,0, -0,0, -0,0, -0,0, -255,100, -255,255, -255,255, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,26, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,241, -255,105, -255,48, -255,86, -255,181, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,41, -0,0, -0,0, -255,39, -255,255, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,44, -255,44, -255,44, -255,44, -255,16, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,18, -255,44, -255,78, -255,255, -255,44, -255,44, -255,11, -0,0, -0,0, -0,0, -0,0, -255,100, -255,255, -255,255, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,172, -255,173, -255,144, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,101, -255,213, -255,245, -255,208, -255,100, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,10, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,44, -255,44, -255,44, -255,44, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,32, -255,32, -255,32, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,44, -255,78, -255,255, -255,44, -255,44, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,23, -0,0, -255,28, -255,8, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,60, -255,247, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,32, -255,32, -255,32, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,255, -255,255, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,167, -255,58, -255,70, -255,215, -255,147, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,18, -0,0, -255,255, -0,0, -255,18, -255,2, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,44, -255,78, -255,255, -255,44, -255,44, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,133, -255,217, -255,238, -255,153, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,196, -255,177, -255,255, -255,177, -255,196, -255,22, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,83, -255,255, -255,83, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,44, -255,44, -255,44, -255,44, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -255,1, -255,169, -255,219, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,119, -255,233, -255,255, -255,64, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,186, -255,89, -255,185, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,44, -255,44, -255,44, -255,44, -255,22, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,44, -255,78, -255,255, -255,44, -255,44, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -255,126, -255,241, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,79, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -0,0, -0,0, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,128, -0,0, -255,128, -255,62, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,255, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,255, -255,255, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -255,18, -255,44, -255,78, -255,255, -255,44, -255,44, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -255,82, -255,252, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,214, -255,15, -255,15, -255,215, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,36, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,255, -255,255, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,88, -255,245, -255,168, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,135, -255,198, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,44, -255,78, -255,255, -255,44, -255,44, -255,11, -0,0, -0,0, -0,0, -0,0, -255,255, -255,244, -255,219, -255,246, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,227, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,100, -255,255, -255,255, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -255,255, -255,199, -255,12, -255,214, -255,164, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,16, -255,129, -255,206, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,32, -255,32, -255,32, -255,32, -255,32, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,48, -0,0, -255,75, -255,255, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,184, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,160, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,101, -255,241, -255,162, -255,38, -255,155, -0,0, -0,0, -0,0, -0,0, -0,0, -255,109, -255,111, -0,0, -255,44, -255,153, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -255,201, -255,107, -0,0, -0,0, -0,0, -255,122, -255,206, -0,0, -0,0, -0,0, -0,0, -255,255, -255,132, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -255,1, -255,190, -255,199, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,30, -255,117, -255,221, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,198, -255,37, -255,148, -255,240, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,231, -255,102, -255,2, -255,196, -255,121, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,217, -255,2, -0,0, -255,1, -255,212, -255,105, -0,0, -0,0, -0,0, -0,0, -255,255, -255,242, -255,23, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,255, -255,166, -0,0, -0,0, -255,118, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,50, -255,254, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,32, -255,67, -255,255, -255,32, -255,32, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,69, -255,252, -255,32, -255,38, -255,246, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,229, -255,73, -0,0, -255,47, -255,246, -255,15, -0,0, -0,0, -0,0, -0,0, -255,255, -255,168, -255,146, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,254, -255,217, -255,8, -0,0, -255,195, -255,235, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,255, -255,255, -255,255, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,252, -255,44, -0,0, -0,0, -255,5, -255,255, -255,35, -0,0, -0,0, -0,0, -0,0, -255,255, -255,151, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,252, -255,32, -255,38, -255,246, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,122, -255,184, -0,0, -255,137, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,56, -255,234, -255,32, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,255, -255,156, -255,78, -255,30, -255,182, -255,229, -255,40, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,255, -255,74, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -255,221, -255,82, -0,0, -0,0, -255,47, -255,253, -255,6, -0,0, -0,0, -0,0, -0,0, -255,255, -255,252, -255,62, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,23, -255,231, -255,102, -255,2, -255,194, -255,121, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,245, -255,33, -255,222, -255,58, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -255,122, -255,161, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,255, -255,87, -255,162, -255,111, -255,99, -255,243, -255,40, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,134, -255,237, -255,255, -255,64, -0,0, -0,0, -0,0, -0,0, -255,140, -255,221, -255,82, -255,77, -255,205, -255,175, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,148, -255,217, -255,9, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,109, -255,112, -0,0, -255,45, -255,153, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,76, -255,198, -255,242, -255,190, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,155, -255,182, -255,214, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -255,11, -255,230, -255,42, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -255,203, -255,178, -255,15, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,4, -255,11, -255,48, -255,4, -255,4, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,154, -255,235, -255,238, -255,169, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,43, -255,206, -255,135, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,204, -255,76, -255,61, -255,192, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,45, -255,255, -255,113, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -255,107, -255,167, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -255,128, -255,167, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,255, -255,255, -255,255, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -255,50, -255,248, -255,49, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,41, -0,0, -0,0, -255,39, -255,255, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,245, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -255,6, -255,220, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -255,10, -255,15, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,214, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -255,136, -255,205, -255,43, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,10, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -255,23, -255,76, -255,214, -255,139, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,92, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,32, -255,32, -255,32, -255,32, -255,32, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -255,9, -255,218, -255,147, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,59, -255,248, -255,3, -0,0, -0,0, -0,0, -0,0, -255,208, -255,237, -255,149, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,255, -255,255, -255,255, -255,255, -255,255, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,186, -255,245, -255,224, -255,145, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,63, -255,252, -255,255, -0,0, -0,0, -0,0, -0,0, -255,25, -255,168, -255,237, -255,255, -255,255, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -255,255, -255,168, -255,58, -255,69, -255,214, -255,149, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,44, -255,44, -255,44, -255,44, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,172, -255,199, -255,51, -255,42, -255,174, -255,179, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,121, -255,203, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,151, -255,255, -0,0, -0,0, -0,0, -0,0, -255,190, -255,161, -255,35, -255,35, -255,163, -255,195, -255,12, -0,0, -0,0, -0,0, -0,0, -255,255, -255,132, -255,217, -255,238, -255,154, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,255, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,204, -255,32, -0,0, -0,0, -255,32, -255,204, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,65, -255,186, -255,12, -255,27, -255,255, -255,13, -0,0, -0,0, -0,0, -0,0, -255,7, -255,144, -255,162, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,239, -255,55, -0,0, -0,0, -255,56, -255,242, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,214, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,246, -255,47, -255,202, -255,15, -255,12, -255,255, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,164, -255,175, -255,42, -255,42, -255,176, -255,181, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,196, -255,188, -255,109, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,220, -255,62, -0,0, -0,0, -255,40, -255,254, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,47, -255,248, -255,255, -255,239, -255,169, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,153, -255,238, -255,220, -255,106, -255,254, -0,0, -0,0, -0,0, -0,0, -255,1, -255,32, -255,5, -255,2, -255,32, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,169, -255,110, -0,0, -0,0, -255,122, -255,207, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,223, -255,129, -255,38, -255,32, -255,25, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,153, -255,219, -255,77, -255,59, -255,165, -255,255, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,52, -0,0, -0,0, -255,75, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,63, -255,217, -255,49, -255,98, -255,246, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,144, -255,217, -255,243, -255,184, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -255,84, -255,255, -255,255, -255,255, -255,255, -255,246, -255,126, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,250, -255,60, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,22, -255,32, -255,67, -255,255, -255,32, -255,32, -255,17, -0,0, -0,0, -0,0, -0,0, -255,53, -255,192, -255,242, -255,234, -255,192, -255,100, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,171, -255,48, -255,93, -255,211, -255,253, -255,31, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,219, -255,229, -255,126, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,36, -255,71, -255,255, -255,36, -255,36, -255,9, -0,0, -0,0, -0,0, -0,0, -255,117, -255,166, -255,60, -255,45, -255,170, -255,196, -0,0, -0,0, -0,0, -0,0, -0,0, -255,192, -255,79, -0,0, -0,0, -255,13, -255,96, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,31, -255,255, -255,10, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,255, -255,255, -255,255, -255,255, -255,136, -0,0, -0,0, -0,0, -0,0, -255,224, -255,134, -255,38, -255,36, -255,90, -255,132, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,189, -255,245, -255,194, -255,37, -255,167, -255,166, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,164, -255,255, -255,255, -255,255, -255,255, -255,255, -255,60, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,58, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -255,228, -255,133, -255,33, -255,18, -255,67, -255,178, -255,159, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,255, -255,45, -0,0, -0,0, -255,41, -255,255, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,196, -255,173, -255,64, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,149, -255,162, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,198, -255,244, -255,242, -255,207, -255,115, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,178, -255,200, -255,60, -255,67, -255,195, -255,255, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,103, -255,198, -255,235, -255,149, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,115, -255,212, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,181, -255,242, -255,204, -255,110, -255,255, -0,0, -0,0, -0,0, -0,0, -255,252, -255,44, -0,0, -0,0, -255,4, -255,255, -255,35, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,29, -255,180, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,124, -255,243, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,164, -255,190, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,221, -255,83, -0,0, -0,0, -255,46, -255,253, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,173, -255,84, -255,35, -255,38, -255,105, -255,243, -255,10, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,55, -0,0, -0,0, -255,55, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,61, -255,185, -255,235, -255,234, -255,175, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,208, -255,199, -255,50, -255,44, -255,44, -255,21, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,138, -255,222, -255,84, -255,75, -255,203, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,58, -255,180, -255,234, -255,241, -255,193, -255,59, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,206, -255,180, -255,61, -255,98, -255,214, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,70, -255,248, -255,137, -255,60, -255,55, -255,144, -255,62, -0,0, -0,0, -0,0, -0,0, -0,0, -255,129, -255,237, -255,185, -255,61, -255,65, -255,177, -0,0, -0,0, -0,0, -0,0, -255,186, -255,255, -255,255, -255,255, -255,255, -255,255, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,11, -255,152, -255,234, -255,239, -255,171, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,220, -255,236, -255,171, -255,29, -255,253, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,201, -255,121, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,48, -255,207, -255,58, -255,147, -255,250, -255,238, -255,65, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,65, -255,170, -255,221, -255,244, -255,186, -255,32, -0,0, -0,0, -0,0, -0,0, -255,136, -255,255, -255,255, -255,255, -255,255, -255,250, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,243, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -0,0, -0,0, -255,10, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,149, -255,124, -255,61, -255,53, -255,179, -255,181, -0,0, -0,0, -0,0, -0,0, -255,17, -255,32, -255,32, -255,86, -255,254, -255,99, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,205, -255,113, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,56, -255,121, -255,242, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,229, -255,144, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -255,255, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,247, -255,123, -255,48, -255,50, -255,129, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,190, -255,224, -255,180, -255,155, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,196, -255,187, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,32, -255,32, -255,32, -255,32, -255,32, -0,0, -0,0, -0,0, -0,0, -255,56, -255,160, -255,255, -255,255, -255,255, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,239, -0,0, -0,0, -255,240, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,64, -255,192, -255,248, -255,252, -255,191, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,201, -255,100, -0,0, -0,0, -0,0, -255,118, -255,205, -0,0, -0,0, -0,0, -0,0, -255,216, -255,103, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,152, -255,219, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,47, -255,142, -255,220, -255,245, -255,64, -0,0, -0,0, -0,0, -0,0, -255,167, -255,74, -0,0, -0,0, -255,75, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,97, -0,0, -255,64, -255,165, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -255,234, -255,29, -255,255, -255,155, -255,212, -255,239, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,218, -0,0, -0,0, -255,218, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,122, -255,83, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,89, -255,212, -255,1, -0,0, -0,0, -255,210, -255,104, -0,0, -0,0, -0,0, -0,0, -255,232, -255,131, -255,42, -255,78, -255,199, -255,255, -0,0, -0,0, -0,0, -0,0, -255,102, -255,250, -255,74, -255,32, -255,32, -255,32, -0,0, -0,0, -0,0, -0,0, -255,255, -255,213, -255,170, -255,89, -255,64, -255,8, -0,0, -0,0, -0,0, -0,0, -255,76, -255,242, -255,73, -255,74, -255,242, -255,76, -0,0, -0,0, -0,0, -0,0, -255,77, -255,238, -255,24, -255,64, -255,243, -255,69, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,217, -255,57, -255,255, -255,42, -255,200, -255,215, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,181, -0,0, -0,0, -255,181, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,91, -255,230, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,229, -255,70, -0,0, -255,45, -255,245, -255,14, -0,0, -0,0, -0,0, -0,0, -255,79, -255,225, -255,238, -255,178, -255,55, -255,253, -0,0, -0,0, -0,0, -0,0, -255,250, -255,255, -255,255, -255,255, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -255,255, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,76, -255,241, -255,242, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -255,246, -255,115, -0,0, -255,245, -255,134, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,115, -255,215, -255,74, -255,16, -255,176, -255,113, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,186, -255,125, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,122, -255,183, -0,0, -255,137, -255,157, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,76, -255,241, -255,242, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -255,246, -255,115, -0,0, -255,245, -255,134, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,127, -255,229, -255,230, -255,128, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,246, -255,35, -255,222, -255,56, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,76, -255,242, -255,73, -255,74, -255,242, -255,76, -0,0, -0,0, -0,0, -0,0, -255,77, -255,237, -255,23, -255,64, -255,243, -255,67, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,155, -255,185, -255,211, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,75, -0,0, -0,0, -255,75, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -255,97, -255,97, -0,0, -255,64, -255,165, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,45, -255,255, -255,109, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,244, -255,17, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -0,0, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,28, -255,241, -255,104, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,223, -255,156, -0,0, -0,0, -0,0, -0,0, -255,156, -255,152, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,78, -255,215, -255,135, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,214, -255,16, -255,214, -255,15, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,105, -255,232, -255,230, -255,138, -255,7, -0,0, -0,0, -0,0, -0,0, -255,13, -255,147, -255,229, -255,254, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,180, -255,141, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,194, -255,176, -0,0, -0,0, -0,0, -0,0, -255,60, -255,240, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,209, -255,236, -255,145, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,253, -255,95, -255,52, -255,130, -255,23, -0,0, -0,0, -0,0, -0,0, -255,158, -255,255, -255,255, -255,255, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,219, -255,89, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,255, -255,255, -255,255, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,108, -255,253, -255,225, -255,89, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,245, -255,93, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,255, -255,255, -255,255, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,123, -255,185, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,44, -255,255, -255,78, -255,44, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -0,0, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,32, -255,32, -255,32, -255,32, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,115, -255,230, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,85, -255,248, -255,44, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,55, -255,232, -255,247, -255,204, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -255,234, -255,255, -255,255, -255,255, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,32, -255,32, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,251, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,17, -255,212, -0,0, -255,214, -255,15, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,116, -255,202, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -255,213, -255,88, -255,23, -255,135, -255,248, -255,117, -0,0, -0,0, -0,0, -0,0, -255,158, -255,255, -255,255, -255,255, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,186, -255,122, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,234, -255,105, -0,0, -0,0, -255,92, -255,237, -0,0, -0,0, -0,0, -0,0, -255,13, -255,157, -255,248, -255,255, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,218, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,114, -255,206, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,208, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,212, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,255, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,100, -255,249, -255,162, -255,46, -255,91, -255,222, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,24, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,55, -0,0, -0,0, -255,55, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,241, -255,59, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,214, -255,106, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,44, -255,44, -255,44, -255,37, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,249, -255,82, -255,2, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,178, -255,254, -255,252, -255,98, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,206, -255,180, -255,61, -255,98, -255,214, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,153, -255,156, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,58, -255,247, -255,16, -0,0, -0,0, -0,0, -0,0, -0,0, -255,75, -255,216, -255,255, -255,215, -255,85, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,106, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,220, -255,236, -255,171, -255,29, -255,253, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,242, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,158, -255,162, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,245, -255,128, -255,48, -255,108, -255,149, -0,0, -0,0, -0,0, -0,0, -255,41, -255,44, -255,255, -255,78, -255,44, -255,4, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,32, -255,32, -255,32, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,80, -0,0, -255,85, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,253, -255,66, -255,1, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,121, -255,142, -255,50, -255,108, -255,249, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,21, -255,255, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,216, -255,93, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,245, -255,63, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,255, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,255, -255,255, -255,255, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,76, -255,137, -0,0, -255,194, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,55, -0,0, -0,0, -255,55, -255,255, -0,0, -0,0, -0,0, -0,0, -255,61, -255,193, -255,241, -255,225, -255,88, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,34, -255,121, -255,240, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,119, -255,189, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,101, -255,219, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,134, -255,249, -255,169, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,108, -255,107, -0,0, -255,216, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,206, -255,180, -255,61, -255,98, -255,214, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,191, -255,245, -255,225, -255,86, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,47, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,201, -255,119, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,50, -255,177, -255,250, -255,107, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,112, -255,238, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,220, -255,236, -255,171, -255,29, -255,253, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,46, -255,252, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,96, -255,238, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,44, -255,44, -255,44, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,49, -255,28, -255,188, -0,0, -0,0, -0,0, -0,0, -0,0, -255,108, -255,254, -255,229, -255,101, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,176, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,172, -255,57, -255,16, -255,127, -255,221, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -255,255, -255,255, -255,255, -255,248, -0,0, -0,0, -0,0, -0,0, -0,0, -255,197, -255,19, -255,60, -255,156, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,6, -255,255, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,8, -255,237, -255,76, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,130, -255,242, -255,255, -255,235, -255,70, -0,0, -0,0, -0,0, -0,0, -255,59, -255,128, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,120, -255,231, -255,120, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,36, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,232, -255,255, -255,251, -255,112, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,88, -255,229, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,255, -255,4, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,200, -255,208, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,214, -0,0, -255,114, -255,102, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,227, -255,73, -255,226, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,211, -255,136, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,216, -255,137, -255,255, -255,22, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,36, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -255,188, -255,132, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,114, -255,241, -255,128, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,190, -0,0, -255,142, -255,74, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -0,0, -0,0, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,131, -255,59, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,120, -255,185, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,23, -255,255, -255,27, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,227, -255,228, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,180, -255,147, -0,0, -0,0, -0,0, -0,0, -0,0, -255,47, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,191, -255,208, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,162, -0,0, -255,170, -255,46, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,9, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,214, -255,16, -0,0, -255,211, -255,19, -0,0, -0,0, -0,0, -0,0, -255,61, -255,162, -255,213, -255,245, -255,199, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,255, -255,22, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,181, -255,102, -255,77, -255,199, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,218, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,35, -255,190, -255,208, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,255, -255,255, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,180, -255,250, -255,254, -255,133, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,133, -255,71, -255,48, -255,172, -255,187, -0,0, -0,0, -0,0, -0,0, -255,65, -255,170, -255,221, -255,244, -255,186, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,231, -255,92, -255,255, -255,25, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,113, -255,240, -255,129, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,44, -255,44, -255,78, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,126, -255,24, -255,83, -255,255, -255,19, -0,0, -0,0, -0,0, -0,0, -255,68, -255,175, -255,226, -255,241, -255,177, -255,27, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,56, -255,129, -255,243, -0,0, -0,0, -0,0, -0,0, -255,149, -255,124, -255,61, -255,53, -255,179, -255,181, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,92, -255,245, -255,255, -255,255, -255,148, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,16, -255,255, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,25, -255,199, -255,208, -255,48, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,247, -255,10, -0,0, -0,0, -0,0, -0,0, -255,141, -255,119, -255,53, -255,63, -255,189, -255,176, -0,0, -0,0, -0,0, -0,0, -255,42, -255,190, -255,224, -255,180, -255,155, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,56, -255,121, -255,242, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,45, -255,1, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,2, -255,32, -255,32, -255,32, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,59, -255,129, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,13, -255,208, -255,119, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,56, -255,123, -255,241, -0,0, -0,0, -0,0, -0,0, -255,216, -255,103, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,42, -255,190, -255,224, -255,180, -255,155, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,34, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,141, -255,185, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,190, -255,224, -255,180, -255,155, -255,255, -0,0, -0,0, -0,0, -0,0, -255,229, -255,142, -255,50, -255,59, -255,186, -255,255, -0,0, -0,0, -0,0, -0,0, -255,216, -255,103, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,204, -255,226, -255,73, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,32, -255,32, -255,32, -255,32, -255,32, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,41, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,112, -255,75, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,103, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -255,65, -255,210, -255,245, -255,193, -255,63, -255,253, -0,0, -0,0, -0,0, -0,0, -255,232, -255,131, -255,42, -255,78, -255,199, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,248, -255,55, -0,0, -0,0, -255,55, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,129, -255,159, -255,38, -255,210, -255,9, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,3, -255,25, -0,0, -0,0, -255,66, -255,238, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,29, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,236, -255,123, -255,46, -255,98, -255,209, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,79, -255,225, -255,238, -255,178, -255,53, -255,251, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,206, -255,180, -255,61, -255,98, -255,214, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,255, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,115, -255,229, -255,96, -255,73, -255,202, -255,171, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,249, -255,222, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,96, -255,239, -255,224, -255,163, -255,60, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,62, -255,220, -255,236, -255,172, -255,30, -255,250, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,65, -255,170, -255,221, -255,244, -255,186, -255,32, -0,0, -0,0, -0,0, -0,0, -255,32, -255,32, -255,32, -255,32, -255,32, -255,32, -0,0, -0,0, -0,0, -0,0, -255,27, -255,198, -255,236, -255,137, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,10, -255,143, -255,221, -255,239, -255,175, -255,24, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,204, -255,167, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,79, -255,229, -255,229, -255,77, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,149, -255,124, -255,61, -255,53, -255,179, -255,181, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,5, -255,59, -255,99, -255,234, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,230, -255,72, -255,73, -255,228, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,56, -255,121, -255,242, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,255, -255,134, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,231, -255,70, -255,70, -255,230, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,190, -255,224, -255,180, -255,155, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,68, -255,67, -255,255, -255,20, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,32, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,80, -255,230, -255,230, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,103, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,36, -255,197, -255,237, -255,155, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,124, -255,220, -255,243, -255,136, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,68, -255,255, -255,67, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,21, -255,36, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -0,0, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,131, -255,42, -255,78, -255,199, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,167, -255,202, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,219, -255,231, -255,82, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,153, -255,91, -0,0, -0,0, -0,0, -0,0, -255,91, -255,152, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,4, -255,223, -255,156, -0,0, -0,0, -0,0, -0,0, -255,62, -255,44, -255,60, -255,255, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,164, -255,157, -255,163, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,240, -255,91, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,214, -0,0, -255,214, -255,16, -0,0, -0,0, -0,0, -0,0, -255,79, -255,225, -255,238, -255,178, -255,55, -255,253, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,223, -255,249, -255,14, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,206, -255,129, -255,91, -255,239, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,130, -255,210, -255,17, -0,0, -0,0, -0,0, -0,0, -255,18, -255,211, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,194, -255,176, -0,0, -0,0, -0,0, -0,0, -255,91, -255,170, -255,155, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,14, -255,233, -255,17, -255,232, -255,13, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,67, -255,229, -255,18, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,30, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,247, -255,55, -255,15, -255,255, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,245, -255,41, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,43, -255,245, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,241, -255,86, -255,68, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,98, -255,166, -0,0, -255,167, -255,97, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,144, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,50, -255,79, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,207, -255,127, -255,89, -255,241, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,154, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,155, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -255,176, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,128, -255,235, -255,174, -255,227, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,193, -255,78, -0,0, -255,79, -255,192, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,65, -255,170, -255,221, -255,244, -255,186, -255,32, -0,0, -0,0, -0,0, -0,0, -255,18, -255,32, -255,32, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,150, -255,166, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,58, -255,221, -255,233, -255,84, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,233, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,70, -255,231, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,32, -255,32, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,43, -255,5, -0,0, -255,5, -255,43, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,149, -255,124, -255,61, -255,53, -255,179, -255,181, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,39, -255,244, -255,57, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,255, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,18, -255,56, -255,121, -255,242, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -0,0, -0,0, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,197, -255,123, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,34, -255,255, -255,6, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,7, -255,255, -255,33, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,190, -255,224, -255,180, -255,155, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,16, -255,213, -0,0, -255,14, -255,216, -0,0, -0,0, -0,0, -0,0, -0,0, -255,21, -255,255, -255,22, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,14, -255,255, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,26, -255,255, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,103, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -255,250, -255,121, -255,59, -255,173, -255,58, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,233, -255,68, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,70, -255,231, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,232, -255,131, -255,42, -255,78, -255,199, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,99, -255,234, -255,227, -255,149, -255,12, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,240, -255,240, -255,240, -255,240, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,151, -255,154, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,155, -255,148, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,216, -255,255, -255,255, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,96, -255,190, -255,69, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,15, -255,92, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,79, -255,225, -255,238, -255,178, -255,55, -255,253, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,44, -255,245, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,42, -255,245, -255,42, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,231, -255,255, -255,190, -0,0, -0,0, -0,0, -0,0, -255,255, -255,39, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,19, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,131, -255,209, -255,17, -0,0, -0,0, -0,0, -0,0, -255,17, -255,210, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,129, -255,231, -255,96, -0,0, -0,0, -0,0, -0,0, -255,240, -255,23, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -255,154, -255,91, -0,0, -0,0, -0,0, -0,0, -255,91, -255,152, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,218, -255,5, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,250, -255,65, -0,0, -0,0, -255,58, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,181, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,215, -255,167, -255,61, -255,114, -255,223, -255,255, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,90, -255,191, -255,73, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,21, -255,34, -0,0, -0,0, -0,0, -0,0, -255,25, -255,28, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,221, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,116, -0,0, -0,0, -0,0, -0,0, -0,0, -255,11, -0,0, -0,0, -255,11, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,82, -255,236, -255,221, -255,151, -255,45, -255,255, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,230, -255,255, -255,191, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,12, -255,226, -255,121, -0,0, -0,0, -0,0, -0,0, -255,63, -255,244, -255,36, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,77, -255,250, -255,16, -0,0, -0,0, -0,0, -0,0, -255,214, -255,16, -255,16, -255,214, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,128, -255,231, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,138, -255,166, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,110, -255,180, -0,0, -0,0, -0,0, -0,0, -255,18, -255,55, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,172, -255,155, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,4, -0,0, -0,0, -0,0, -0,0, -255,96, -255,190, -255,69, -0,0, -0,0, -0,0, -0,0, -255,22, -255,140, -0,0, -0,0, -0,0, -0,0, -0,0, -255,57, -255,132, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,20, -255,124, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,91, -255,255, -255,169, -0,0, -0,0, -0,0, -0,0, -255,231, -255,255, -255,190, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,225, -255,255, -255,185, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,24, -255,3, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,239, -255,240, -0,0, -0,0, -0,0, -0,0, -255,128, -255,231, -255,96, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,136, -255,233, -255,103, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,134, -255,242, -255,156, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -255,1, -255,30, -255,5, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,199, -255,255, -255,164, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,66, -255,222, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,79, -255,48, -255,255, -255,24, -0,0, -0,0, -0,0, -0,0, -255,25, -255,223, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,163, -255,246, -255,239, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,32, -255,204, -255,119, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,86, -255,202, -255,1, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,71, -255,217, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,179, -255,130, -255,2, -0,0, -0,0, -0,0, -0,0, -255,57, -255,132, -255,40, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,54, -255,204, -255,30, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,56, -255,215, -255,96, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,225, -255,255, -255,185, -0,0, -0,0, -0,0, -0,0, -255,20, -255,128, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,22, -255,140, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,241, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -255,255, -255,40, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,27, -255,219, -255,89, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,136, -255,233, -255,103, -0,0, -0,0, -0,0, -0,0, -255,17, -255,54, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,7, -0,0, -0,0, -0,0, -0,0, -255,255, -255,255, -255,255, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -255,2, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,212, -255,255, -255,19, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,145, -255,222, -255,7, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -255,40, -255,255, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -0,0, -}; diff --git a/scene/resources/default_theme/mono_font.inc b/scene/resources/default_theme/mono_font.inc deleted file mode 100644 index 04ba51c3b5..0000000000 --- a/scene/resources/default_theme/mono_font.inc +++ /dev/null @@ -1,5 +0,0 @@ -static const int _bi_font_mono_height=14; -static const int _bi_font_mono_ascent=12; -static const int _bi_font_mono_valign=-3; -static const int _bi_font_mono_charcount=196; -static const int _bi_font_mono_characters[]={0, 131, 82, 3, 3, -1, 14, 8, 8, 127, 82, 3, 3, -1, 14, 8, 9, 123, 82, 3, 3, -1, 14, 8, 13, 119, 82, 3, 3, -1, 14, 8, 29, 115, 82, 3, 3, -1, 14, 8, 32, 111, 83, 3, 3, -1, 14, 8, 33, 252, 43, 3, 12, 2, 4, 8, 34, 30, 83, 5, 6, 1, 3, 8, 35, 213, 31, 9, 12, -1, 4, 8, 36, 19, 17, 8, 15, 0, 3, 8, 37, 223, 30, 9, 12, -1, 4, 8, 38, 233, 30, 9, 12, 0, 4, 8, 39, 251, 65, 3, 6, 2, 3, 8, 40, 72, 17, 6, 15, 1, 4, 8, 41, 79, 17, 6, 15, 1, 4, 8, 42, 183, 70, 7, 8, 0, 4, 8, 43, 20, 73, 9, 9, -1, 6, 8, 44, 54, 83, 4, 5, 1, 13, 8, 45, 86, 83, 6, 3, 1, 10, 8, 46, 135, 82, 3, 3, 2, 13, 8, 47, 67, 0, 8, 16, 0, 3, 8, 48, 117, 59, 8, 12, 0, 4, 8, 49, 161, 58, 7, 12, 1, 4, 8, 50, 126, 59, 8, 12, 0, 4, 8, 51, 108, 59, 8, 12, 0, 4, 8, 52, 135, 59, 8, 12, 0, 4, 8, 53, 144, 59, 8, 12, 0, 4, 8, 54, 90, 47, 8, 12, 0, 4, 8, 55, 99, 47, 8, 12, 0, 4, 8, 56, 108, 46, 8, 12, 0, 4, 8, 57, 117, 46, 8, 12, 0, 4, 8, 58, 249, 56, 3, 8, 2, 8, 8, 59, 233, 56, 4, 10, 1, 8, 8, 60, 94, 73, 8, 9, 0, 6, 8, 61, 14, 83, 8, 6, 0, 8, 8, 62, 76, 73, 8, 9, 0, 6, 8, 63, 176, 58, 6, 12, 1, 4, 8, 64, 127, 17, 8, 14, 0, 4, 8, 65, 40, 47, 9, 12, -1, 4, 8, 66, 126, 46, 8, 12, 0, 4, 8, 67, 135, 46, 8, 12, 0, 4, 8, 68, 144, 46, 8, 12, 0, 4, 8, 69, 153, 45, 8, 12, 0, 4, 8, 70, 162, 45, 8, 12, 0, 4, 8, 71, 171, 45, 8, 12, 0, 4, 8, 72, 180, 44, 8, 12, 0, 4, 8, 73, 153, 58, 7, 12, 0, 4, 8, 74, 189, 44, 8, 12, 0, 4, 8, 75, 99, 60, 8, 12, 0, 4, 8, 76, 198, 44, 8, 12, 0, 4, 8, 77, 207, 44, 8, 12, 0, 4, 8, 78, 216, 44, 8, 12, 0, 4, 8, 79, 225, 43, 8, 12, 0, 4, 8, 80, 234, 43, 8, 12, 0, 4, 8, 81, 100, 17, 8, 14, 0, 4, 8, 82, 50, 47, 9, 12, 0, 4, 8, 83, 243, 43, 8, 12, 0, 4, 8, 84, 30, 47, 9, 12, -1, 4, 8, 85, 0, 60, 8, 12, 0, 4, 8, 86, 10, 47, 9, 12, -1, 4, 8, 87, 9, 60, 8, 12, 0, 4, 8, 88, 60, 47, 9, 12, -1, 4, 8, 89, 70, 47, 9, 12, -1, 4, 8, 90, 18, 60, 8, 12, 0, 4, 8, 91, 93, 17, 6, 15, 1, 4, 8, 92, 112, 0, 8, 16, 0, 3, 8, 93, 86, 17, 6, 15, 1, 4, 8, 94, 201, 69, 9, 7, 0, 4, 8, 95, 75, 83, 10, 3, -1, 16, 8, 96, 42, 83, 5, 5, 1, 3, 8, 97, 49, 73, 8, 9, 0, 7, 8, 98, 144, 32, 8, 13, 0, 3, 8, 99, 148, 72, 8, 9, 0, 7, 8, 100, 126, 32, 8, 13, 0, 3, 8, 101, 58, 73, 8, 9, 0, 7, 8, 102, 163, 17, 9, 13, 0, 3, 8, 103, 81, 60, 8, 12, 0, 7, 8, 104, 153, 31, 8, 13, 0, 3, 8, 105, 206, 57, 8, 11, 0, 5, 8, 106, 145, 17, 7, 14, 0, 5, 8, 107, 162, 31, 8, 13, 0, 3, 8, 108, 45, 33, 8, 13, 0, 3, 8, 109, 139, 72, 8, 9, 0, 7, 8, 110, 130, 72, 8, 9, 0, 7, 8, 111, 121, 72, 8, 9, 0, 7, 8, 112, 72, 60, 8, 12, 0, 7, 8, 113, 63, 60, 8, 12, 0, 7, 8, 114, 166, 71, 7, 9, 1, 7, 8, 115, 85, 73, 8, 9, 0, 7, 8, 116, 197, 57, 8, 11, 0, 5, 8, 117, 67, 73, 8, 9, 0, 7, 8, 118, 30, 73, 9, 9, -1, 7, 8, 119, 10, 73, 9, 9, -1, 7, 8, 120, 0, 73, 9, 9, -1, 7, 8, 121, 54, 60, 8, 12, 0, 7, 8, 122, 40, 73, 8, 9, 0, 7, 8, 123, 85, 0, 8, 16, 0, 3, 8, 124, 212, 0, 3, 16, 2, 3, 8, 125, 76, 0, 8, 16, 0, 3, 8, 126, 59, 83, 9, 4, 0, 9, 8, 160, 107, 83, 3, 3, -1, 14, 8, 161, 183, 57, 3, 12, 2, 7, 8, 162, 118, 17, 8, 14, 0, 4, 8, 163, 27, 60, 8, 12, 0, 4, 8, 164, 238, 56, 10, 9, -1, 6, 8, 165, 243, 30, 9, 12, -1, 4, 8, 166, 208, 0, 3, 16, 2, 3, 8, 167, 109, 17, 8, 14, 0, 4, 8, 168, 69, 83, 5, 4, 1, 3, 8, 169, 215, 57, 8, 10, 0, 6, 8, 170, 0, 83, 6, 7, 1, 4, 8, 171, 211, 69, 8, 7, 0, 7, 8, 172, 191, 69, 9, 7, 0, 9, 8, 173, 100, 83, 6, 3, 1, 10, 8, 174, 224, 57, 8, 10, 0, 6, 8, 175, 93, 83, 6, 3, 1, 4, 8, 176, 23, 83, 6, 6, 1, 3, 8, 177, 187, 57, 9, 11, -1, 5, 8, 178, 237, 67, 6, 7, 1, 4, 8, 179, 244, 66, 6, 7, 1, 4, 8, 180, 36, 83, 5, 5, 2, 3, 8, 181, 45, 60, 8, 12, 0, 7, 8, 182, 0, 17, 9, 15, -1, 4, 8, 183, 139, 82, 3, 3, 2, 10, 8, 184, 48, 83, 5, 5, 1, 14, 8, 185, 7, 83, 6, 7, 1, 4, 8, 186, 229, 68, 7, 7, 0, 4, 8, 187, 220, 68, 8, 7, 0, 7, 8, 188, 191, 31, 10, 12, -1, 4, 8, 189, 180, 31, 10, 12, -1, 4, 8, 190, 202, 31, 10, 12, -1, 4, 8, 191, 169, 58, 6, 12, 0, 7, 8, 192, 20, 0, 9, 16, -1, 0, 8, 193, 30, 0, 9, 16, -1, 0, 8, 194, 10, 0, 9, 16, -1, 0, 8, 195, 227, 0, 9, 15, -1, 1, 8, 196, 237, 0, 9, 15, -1, 1, 8, 197, 216, 0, 10, 15, -1, 1, 8, 198, 20, 47, 9, 12, -1, 4, 8, 199, 46, 17, 8, 15, 0, 4, 8, 200, 175, 0, 8, 16, 0, 0, 8, 201, 166, 0, 8, 16, 0, 0, 8, 202, 157, 0, 8, 16, 0, 0, 8, 203, 37, 17, 8, 15, 0, 1, 8, 204, 192, 0, 7, 16, 0, 0, 8, 205, 200, 0, 7, 16, 0, 0, 8, 206, 184, 0, 7, 16, 0, 0, 8, 207, 64, 17, 7, 15, 0, 1, 8, 208, 80, 47, 9, 12, -1, 4, 8, 209, 28, 17, 8, 15, 0, 1, 8, 210, 121, 0, 8, 16, 0, 0, 8, 211, 103, 0, 8, 16, 0, 0, 8, 212, 94, 0, 8, 16, 0, 0, 8, 213, 10, 17, 8, 15, 0, 1, 8, 214, 247, 0, 8, 15, 0, 1, 8, 215, 174, 71, 8, 8, 0, 7, 8, 216, 0, 47, 9, 12, -1, 4, 8, 217, 58, 0, 8, 16, 0, 0, 8, 218, 49, 0, 8, 16, 0, 0, 8, 219, 40, 0, 8, 16, 0, 0, 8, 220, 55, 17, 8, 15, 0, 1, 8, 221, 0, 0, 9, 16, -1, 0, 8, 222, 90, 60, 8, 12, 0, 4, 8, 223, 135, 32, 8, 13, 0, 3, 8, 224, 108, 32, 8, 13, 0, 3, 8, 225, 99, 33, 8, 13, 0, 3, 8, 226, 90, 33, 8, 13, 0, 3, 8, 227, 81, 33, 8, 13, 0, 3, 8, 228, 72, 33, 8, 13, 0, 3, 8, 229, 136, 17, 8, 14, 0, 2, 8, 230, 103, 73, 8, 9, 0, 7, 8, 231, 36, 60, 8, 12, 0, 7, 8, 232, 54, 33, 8, 13, 0, 3, 8, 233, 36, 33, 8, 13, 0, 3, 8, 234, 27, 33, 8, 13, 0, 3, 8, 235, 18, 33, 8, 13, 0, 3, 8, 236, 117, 32, 8, 13, 0, 3, 8, 237, 9, 33, 8, 13, 0, 3, 8, 238, 63, 33, 8, 13, 0, 3, 8, 239, 0, 33, 8, 13, 0, 3, 8, 240, 153, 17, 9, 13, 0, 3, 8, 241, 218, 16, 8, 13, 0, 3, 8, 242, 209, 17, 8, 13, 0, 3, 8, 243, 200, 17, 8, 13, 0, 3, 8, 244, 191, 17, 8, 13, 0, 3, 8, 245, 182, 17, 8, 13, 0, 3, 8, 246, 173, 17, 8, 13, 0, 3, 8, 247, 112, 72, 8, 9, 0, 6, 8, 248, 157, 71, 8, 9, 0, 7, 8, 249, 171, 31, 8, 13, 0, 3, 8, 250, 227, 16, 8, 13, 0, 3, 8, 251, 236, 16, 8, 13, 0, 3, 8, 252, 245, 16, 8, 13, 0, 3, 8, 253, 148, 0, 8, 16, 0, 3, 8, 254, 130, 0, 8, 16, 0, 3, 8, 255, 139, 0, 8, 16, 0, 3, 8}; diff --git a/scene/resources/default_theme/normal_font.inc b/scene/resources/default_theme/normal_font.inc deleted file mode 100644 index 3f03b43ae9..0000000000 --- a/scene/resources/default_theme/normal_font.inc +++ /dev/null @@ -1,5 +0,0 @@ -static const int _bi_font_normal_height=13; -static const int _bi_font_normal_ascent=12; -static const int _bi_font_normal_valign=-2; -static const int _bi_font_normal_charcount=196; -static const int _bi_font_normal_characters[]={0, 75, 53, 2, 2, -1, 12, 0, 8, 78, 53, 2, 2, -1, 12, 0, 9, 63, 53, 2, 2, -1, 12, 3, 13, 66, 53, 2, 2, -1, 12, 3, 29, 69, 53, 2, 2, -1, 12, 0, 32, 72, 53, 2, 2, -1, 12, 3, 33, 249, 33, 2, 9, 0, 4, 3, 34, 0, 57, 4, 4, 0, 3, 5, 35, 0, 37, 7, 9, 0, 4, 8, 36, 0, 0, 6, 13, 0, 2, 7, 37, 91, 24, 9, 9, 0, 4, 10, 38, 212, 24, 8, 9, 0, 4, 8, 39, 5, 56, 2, 4, 0, 3, 3, 40, 200, 0, 4, 12, 0, 3, 4, 41, 195, 0, 4, 12, -1, 3, 4, 42, 199, 44, 6, 6, 0, 4, 6, 43, 192, 44, 6, 6, 0, 6, 7, 44, 245, 43, 3, 5, -1, 10, 3, 45, 58, 53, 4, 2, 0, 8, 5, 46, 32, 54, 2, 3, 0, 10, 3, 47, 172, 0, 6, 12, -1, 3, 5, 48, 89, 34, 6, 9, 0, 4, 7, 49, 239, 33, 4, 9, 0, 4, 7, 50, 96, 34, 6, 9, 0, 4, 7, 51, 82, 34, 6, 9, 0, 4, 7, 52, 103, 34, 6, 9, 0, 4, 7, 53, 110, 34, 6, 9, 0, 4, 7, 54, 117, 34, 6, 9, 0, 4, 7, 55, 124, 34, 6, 9, 0, 4, 7, 56, 131, 34, 6, 9, 0, 4, 7, 57, 138, 34, 6, 9, 0, 4, 7, 58, 19, 46, 2, 8, 0, 5, 3, 59, 39, 25, 3, 10, -1, 5, 3, 60, 137, 44, 8, 6, -1, 6, 7, 61, 249, 43, 6, 4, 0, 8, 7, 62, 146, 44, 8, 6, -1, 6, 7, 63, 227, 34, 5, 9, 0, 4, 5, 64, 107, 13, 10, 10, 0, 4, 11, 65, 194, 24, 8, 9, -1, 4, 7, 66, 8, 37, 7, 9, 0, 4, 8, 67, 239, 23, 7, 9, 0, 4, 8, 68, 158, 24, 8, 9, 0, 4, 9, 69, 152, 34, 6, 9, 0, 4, 7, 70, 159, 34, 6, 9, 0, 4, 6, 71, 32, 36, 7, 9, 0, 4, 8, 72, 16, 36, 7, 9, 0, 4, 8, 73, 0, 47, 2, 9, 0, 4, 3, 74, 166, 34, 6, 9, -1, 4, 6, 75, 131, 24, 8, 9, 0, 4, 8, 76, 180, 34, 6, 9, 0, 4, 6, 77, 69, 25, 10, 9, 0, 4, 11, 78, 203, 24, 8, 9, 0, 4, 9, 79, 221, 24, 8, 9, 0, 4, 9, 80, 24, 36, 7, 9, 0, 4, 7, 81, 0, 14, 8, 11, 0, 4, 9, 82, 230, 24, 8, 9, 0, 4, 8, 83, 194, 34, 6, 9, 0, 4, 6, 84, 140, 24, 8, 9, -1, 4, 7, 85, 247, 23, 7, 9, 0, 4, 8, 86, 185, 24, 8, 9, -1, 4, 7, 87, 56, 25, 12, 9, -1, 4, 11, 88, 176, 24, 8, 9, -1, 4, 7, 89, 167, 24, 8, 9, -1, 4, 7, 90, 54, 35, 6, 9, 0, 4, 7, 91, 210, 0, 4, 12, 0, 3, 4, 92, 144, 0, 6, 12, -1, 3, 5, 93, 185, 0, 4, 12, -1, 3, 4, 94, 178, 44, 6, 6, 0, 4, 7, 95, 35, 54, 7, 2, -1, 13, 6, 96, 21, 55, 3, 3, 0, 3, 5, 97, 125, 44, 5, 7, 0, 6, 6, 98, 239, 12, 6, 10, 0, 3, 7, 99, 85, 44, 6, 7, 0, 6, 7, 100, 134, 13, 6, 10, 0, 3, 7, 101, 106, 44, 6, 7, 0, 6, 7, 102, 18, 25, 5, 10, 0, 3, 5, 103, 68, 35, 6, 9, 0, 6, 7, 104, 141, 13, 6, 10, 0, 3, 7, 105, 34, 25, 4, 10, -1, 3, 3, 106, 179, 0, 5, 12, -2, 3, 3, 107, 148, 13, 6, 10, 0, 3, 6, 108, 29, 25, 4, 10, 0, 3, 3, 109, 22, 46, 10, 7, 0, 6, 11, 110, 71, 45, 6, 7, 0, 6, 7, 111, 78, 45, 6, 7, 0, 6, 7, 112, 201, 34, 6, 9, 0, 6, 7, 113, 208, 34, 6, 9, 0, 6, 7, 114, 119, 44, 5, 7, 0, 6, 5, 115, 131, 44, 5, 7, 0, 6, 6, 116, 221, 34, 5, 9, 0, 4, 6, 117, 99, 44, 6, 7, 0, 6, 7, 118, 92, 44, 6, 7, -1, 6, 5, 119, 33, 46, 10, 7, -1, 6, 9, 120, 63, 45, 7, 7, -1, 6, 6, 121, 61, 35, 6, 9, -1, 6, 5, 122, 113, 44, 5, 7, 0, 6, 6, 123, 190, 0, 4, 12, 0, 3, 4, 124, 228, 0, 2, 12, 0, 3, 3, 125, 215, 0, 4, 12, -1, 3, 4, 126, 8, 56, 7, 3, 0, 7, 7, 160, 81, 53, 2, 2, -1, 12, 3, 161, 252, 33, 2, 9, 0, 6, 3, 162, 34, 13, 6, 11, 0, 4, 7, 163, 40, 36, 6, 9, 0, 4, 7, 164, 3, 47, 8, 8, -1, 4, 8, 165, 149, 24, 8, 9, -1, 4, 7, 166, 231, 0, 2, 12, 0, 3, 3, 167, 55, 13, 5, 11, 0, 3, 6, 168, 48, 54, 4, 2, 0, 4, 5, 169, 101, 24, 9, 9, 0, 4, 10, 170, 221, 44, 4, 6, 0, 4, 5, 171, 155, 44, 7, 6, -1, 6, 6, 172, 226, 44, 6, 5, 0, 7, 7, 173, 53, 54, 4, 2, 0, 8, 5, 174, 121, 24, 9, 9, 0, 4, 10, 175, 43, 54, 4, 2, 0, 4, 5, 176, 240, 43, 4, 5, 0, 2, 4, 177, 12, 47, 6, 8, 0, 5, 7, 178, 206, 44, 4, 6, -1, 4, 4, 179, 211, 44, 4, 6, -1, 4, 4, 180, 25, 54, 3, 3, 1, 3, 5, 181, 173, 34, 6, 9, 0, 6, 7, 182, 26, 13, 7, 11, 0, 4, 8, 183, 29, 54, 2, 3, 0, 7, 3, 184, 16, 56, 4, 3, 0, 12, 5, 185, 216, 44, 4, 6, -1, 4, 4, 186, 233, 44, 6, 5, -1, 4, 5, 187, 163, 44, 7, 6, -2, 6, 6, 188, 72, 13, 11, 10, -1, 4, 10, 189, 96, 13, 10, 10, -1, 4, 10, 190, 84, 13, 11, 10, -1, 4, 10, 191, 215, 34, 5, 9, 0, 6, 5, 192, 34, 0, 8, 12, -1, 1, 7, 193, 25, 0, 8, 12, -1, 1, 7, 194, 7, 0, 8, 12, -1, 1, 7, 195, 16, 0, 8, 12, -1, 1, 7, 196, 243, 0, 8, 11, -1, 2, 7, 197, 234, 0, 8, 11, -1, 2, 7, 198, 43, 25, 12, 9, -1, 4, 11, 199, 97, 0, 7, 12, 0, 4, 8, 200, 137, 0, 6, 12, 0, 1, 7, 201, 151, 0, 6, 12, 0, 1, 7, 202, 158, 0, 6, 12, 0, 1, 7, 203, 48, 13, 6, 11, 0, 2, 7, 204, 224, 0, 3, 12, -1, 1, 3, 205, 220, 0, 3, 12, 0, 1, 3, 206, 205, 0, 4, 12, -1, 1, 3, 207, 67, 13, 4, 11, -1, 2, 3, 208, 111, 24, 9, 9, -1, 4, 9, 209, 52, 0, 8, 12, 0, 1, 9, 210, 61, 0, 8, 12, 0, 1, 9, 211, 70, 0, 8, 12, 0, 1, 9, 212, 79, 0, 8, 12, 0, 1, 9, 213, 88, 0, 8, 12, 0, 1, 9, 214, 9, 13, 8, 11, 0, 2, 9, 215, 171, 44, 6, 6, 0, 6, 7, 216, 80, 24, 10, 9, -1, 4, 9, 217, 105, 0, 7, 12, 0, 1, 8, 218, 129, 0, 7, 12, 0, 1, 8, 219, 121, 0, 7, 12, 0, 1, 8, 220, 18, 13, 7, 11, 0, 2, 8, 221, 43, 0, 8, 12, -1, 1, 7, 222, 47, 35, 6, 9, 0, 4, 7, 223, 126, 13, 7, 10, 0, 3, 7, 224, 12, 25, 5, 10, 0, 3, 6, 225, 6, 26, 5, 10, 0, 3, 6, 226, 0, 26, 5, 10, 0, 3, 6, 227, 246, 12, 5, 10, 0, 3, 6, 228, 233, 34, 5, 9, 0, 4, 6, 229, 61, 13, 5, 11, 0, 2, 6, 230, 44, 46, 9, 7, 0, 6, 10, 231, 225, 13, 6, 10, 0, 6, 7, 232, 190, 13, 6, 10, 0, 3, 7, 233, 183, 13, 6, 10, 0, 3, 7, 234, 169, 13, 6, 10, 0, 3, 7, 235, 187, 34, 6, 9, 0, 4, 7, 236, 252, 0, 3, 10, -1, 3, 3, 237, 252, 11, 3, 10, 0, 3, 3, 238, 24, 25, 4, 10, -1, 3, 3, 239, 244, 33, 4, 9, -1, 4, 3, 240, 118, 13, 7, 10, 0, 3, 7, 241, 232, 13, 6, 10, 0, 3, 7, 242, 218, 13, 6, 10, 0, 3, 7, 243, 211, 13, 6, 10, 0, 3, 7, 244, 204, 13, 6, 10, 0, 3, 7, 245, 197, 13, 6, 10, 0, 3, 7, 246, 145, 34, 6, 9, 0, 4, 7, 247, 185, 44, 6, 6, 0, 6, 7, 248, 54, 45, 8, 7, -1, 6, 7, 249, 176, 13, 6, 10, 0, 3, 7, 250, 162, 13, 6, 10, 0, 3, 7, 251, 155, 13, 6, 10, 0, 3, 7, 252, 75, 35, 6, 9, 0, 4, 7, 253, 165, 0, 6, 12, -1, 3, 5, 254, 113, 0, 7, 12, 0, 3, 7, 255, 41, 13, 6, 11, -1, 4, 5}; diff --git a/scene/resources/default_theme/theme_data.h b/scene/resources/default_theme/theme_data.h index fe9fa06154..80148c0fc5 100644 --- a/scene/resources/default_theme/theme_data.h +++ b/scene/resources/default_theme/theme_data.h @@ -89,21 +89,6 @@ static const unsigned char focus_png[]={ }; -static const unsigned char font_bold_png[]={ -0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x80,0x8,0x4,0x0,0x0,0x0,0x4e,0xbc,0x7f,0x81,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xdb,0xb,0x3,0x17,0x31,0x25,0x45,0x78,0xbe,0xb3,0x0,0x0,0x18,0x50,0x49,0x44,0x41,0x54,0x78,0xda,0xed,0x9d,0x3d,0x68,0x24,0x49,0x96,0xc7,0xa3,0x47,0x86,0x6,0xea,0x40,0x3,0x5a,0xa8,0x3,0xed,0x52,0x86,0x6,0x74,0x20,0x43,0xb3,0xe8,0x40,0x3,0x1a,0xd0,0x82,0xe,0x34,0x20,0x43,0x86,0xe,0x64,0xf4,0x81,0x8c,0x36,0x64,0xf4,0x82,0xe,0xda,0x68,0x43,0x86,0xc,0x19,0x32,0x64,0x68,0xa1,0x17,0x64,0x68,0x17,0x19,0x5a,0xd0,0x40,0x1d,0xc8,0x68,0xa3,0xe,0xb4,0xa0,0x3,0xd,0x68,0x41,0x7,0x3a,0x90,0x51,0x7,0x75,0x50,0x46,0xdd,0x51,0xb,0x75,0x50,0xb7,0xa4,0x51,0xb,0x69,0xfc,0xce,0xc8,0xc8,0xc8,0xf8,0xca,0x8f,0x52,0x77,0xab,0xbb,0x87,0x78,0xd0,0x2d,0x55,0x28,0x23,0x32,0x2b,0xe2,0xc5,0x8b,0xf7,0xde,0xff,0xbd,0x97,0x42,0x4,0xa,0x24,0x84,0x10,0x6c,0x72,0x4d,0xcd,0xd3,0x3e,0x41,0x83,0x6,0x13,0x4e,0xfb,0x22,0x77,0x2c,0x79,0xae,0xaf,0x71,0xcd,0x66,0xb5,0xf6,0x71,0xc6,0xf0,0x3f,0xdf,0xbb,0x8f,0xe0,0xbb,0x16,0xa0,0xf8,0x2e,0x9e,0x3e,0xce,0xe8,0x66,0x2f,0xbd,0x87,0x7d,0x2d,0xd,0x4e,0xe8,0x1,0x43,0xae,0xd8,0x70,0x9e,0xef,0x90,0x98,0x43,0xa7,0xf5,0x9e,0xfb,0xf4,0x7f,0xa3,0x7d,0x87,0x88,0x3d,0xe6,0x69,0x56,0xbb,0x3e,0xbb,0xe0,0x5,0x31,0x67,0x56,0xdb,0xa,0x37,0xc4,0x24,0x34,0x60,0x41,0xfb,0xcb,0x36,0x23,0x20,0x66,0xdb,0x19,0xe7,0x8c,0x98,0x17,0x9e,0xf1,0x9d,0xf6,0xf1,0xc6,0xf0,0x3e,0xdf,0x3b,0x8f,0x90,0xf3,0x64,0x6,0x3,0xf8,0xee,0xe2,0xe9,0x63,0x8d,0x6e,0xf7,0xd2,0x7b,0x98,0xd7,0xb2,0x4c,0x84,0x4e,0xf6,0xb7,0x8c,0x59,0x20,0xae,0xcc,0x0,0x4d,0xe6,0xd9,0x23,0x62,0x67,0x4c,0x6,0x10,0x82,0x25,0x2e,0x8c,0xcf,0xf3,0x6a,0xf1,0xcf,0xb8,0x7,0x56,0xb4,0xbf,0x1d,0x73,0xc6,0x1c,0x67,0x1c,0x3b,0xa3,0x5c,0xf8,0x76,0xa4,0xaf,0x7d,0xdc,0x31,0xec,0xe7,0x7b,0x1f,0x23,0xb8,0xd7,0x32,0xc7,0x1d,0x0,0x43,0x2e,0xf3,0xef,0xe2,0x1b,0xdf,0x1c,0xdd,0xee,0x65,0xdd,0x45,0x5d,0x4b,0x9d,0x21,0xd0,0x64,0x5e,0x8,0xea,0xbc,0x22,0x2,0x93,0xa1,0x89,0x80,0xe8,0x63,0x1c,0xa,0xaf,0x15,0x4f,0xae,0x70,0x66,0x32,0xc0,0x4f,0xf8,0x28,0xbc,0x53,0xdf,0xfa,0xee,0x49,0xee,0x77,0x4,0xb4,0x98,0xa2,0xc9,0x88,0x11,0x37,0xbc,0x30,0xef,0x4c,0x9d,0x11,0x30,0x62,0xda,0xea,0x37,0x45,0x4,0xc,0xed,0x43,0xcd,0xd7,0xae,0x4b,0x34,0xfb,0x78,0x2b,0xea,0xb6,0x9b,0xcf,0x0,0x63,0xdd,0xfe,0x3a,0xed,0xcb,0xa,0x70,0x5d,0xf4,0x50,0xe3,0xb4,0xa,0xc1,0x3c,0x2d,0x46,0x8c,0x68,0x19,0xc7,0x53,0xe5,0x56,0xba,0xc0,0x9c,0x10,0xcc,0x1,0x9d,0x6c,0x7c,0x66,0x85,0x60,0x96,0x45,0xad,0x45,0x52,0xf5,0x16,0xe7,0x20,0xc9,0xf9,0xc4,0x3,0xb0,0xcc,0x85,0xea,0x3e,0x9,0xba,0xc0,0x57,0xdb,0xf0,0x95,0x35,0xd3,0x2f,0x65,0xfb,0x4e,0x79,0x7b,0x15,0x6,0xf0,0x75,0xab,0xd3,0xcf,0x65,0x80,0x71,0x6e,0xaf,0x96,0x3d,0x63,0x85,0xf7,0xc1,0x0,0x34,0xb4,0xb3,0x33,0x62,0xee,0x11,0xad,0x27,0xc0,0x9e,0x10,0xec,0x81,0x12,0xd5,0xf7,0xc0,0x35,0x9b,0x99,0xda,0xfb,0x81,0x19,0x20,0x59,0xf4,0x11,0x30,0x93,0xb4,0x5a,0x57,0xb6,0x81,0x43,0xe0,0xc1,0x23,0xa9,0x9a,0xae,0x9c,0xf2,0xb5,0x57,0x61,0x0,0xef,0x70,0x4c,0xf3,0x9a,0x8e,0x97,0x1,0xc6,0xb8,0xbd,0x5c,0xf8,0x75,0xd6,0xb3,0xfd,0xff,0x5e,0x18,0xe0,0x1c,0x68,0x31,0xcd,0x34,0x97,0xa0,0xce,0xd4,0x71,0x5a,0xd7,0x40,0xaa,0x46,0xb0,0xaa,0x74,0x80,0x7b,0x0,0xee,0x15,0x9b,0x38,0x53,0x56,0xa5,0x65,0x2c,0x6,0x98,0x20,0x4e,0x19,0x80,0x5,0x7d,0xb1,0x59,0x4,0x6,0x4c,0xd2,0x7,0x4b,0x9e,0x41,0xc4,0x14,0x3,0x60,0xbe,0xac,0xbd,0x94,0x1,0xf2,0x86,0x93,0xda,0xab,0xc3,0x0,0xe3,0xdd,0x5e,0x7e,0x8d,0xe,0x1d,0x48,0xc5,0xea,0x7b,0x61,0x80,0x41,0x22,0xac,0x85,0xa0,0x1,0xc,0x1f,0xd1,0x3a,0xc9,0x0,0xd8,0x2,0x6,0xba,0xa1,0xcb,0x32,0x6f,0x33,0x26,0xf6,0xef,0xed,0xb2,0x96,0x31,0x8f,0x80,0x2b,0x4d,0x3e,0xc1,0x9e,0xa6,0x4a,0xc2,0x1b,0xf9,0xf3,0x48,0xeb,0x7f,0x0,0x9c,0xb,0xc1,0x29,0x70,0x50,0xd6,0x5e,0xce,0x0,0x39,0xc3,0xe5,0x32,0xc0,0x58,0xb7,0x57,0x3b,0xd0,0x30,0x70,0xde,0x3,0x3,0xbc,0xf,0x2d,0xe2,0x4,0x18,0x1,0x27,0xaa,0x65,0x95,0x45,0xc9,0x26,0x3c,0x9,0x3,0xec,0x3,0xd7,0xcc,0xd3,0x26,0xe6,0x9a,0x11,0x11,0x6f,0xb4,0xe3,0xa7,0xa7,0x9d,0x2d,0x3d,0xad,0x7f,0x47,0x6b,0xef,0x94,0xb5,0x27,0xc7,0x8c,0x64,0x79,0x2f,0x3,0xe4,0xc,0x97,0xcb,0x0,0x63,0xdd,0x5e,0xea,0x13,0x0,0x75,0x73,0xa,0xdc,0x87,0x1a,0xab,0x75,0x8,0x34,0x9c,0x5d,0x3d,0x46,0xab,0x94,0x4d,0x18,0x92,0xe9,0x5a,0x7d,0x83,0xfb,0x27,0x39,0x2,0x6a,0xb4,0x81,0x5b,0xd6,0x99,0x12,0x82,0x5a,0xf2,0x94,0x4a,0x12,0x99,0xb4,0x2c,0xdb,0x17,0xac,0xf6,0x85,0x92,0xf6,0x2e,0x70,0x48,0x8d,0x1a,0x87,0x40,0xd7,0x7e,0xd0,0x9c,0x6e,0x79,0xc,0x30,0xee,0xed,0x73,0xbc,0x6b,0xde,0x87,0x1a,0xab,0xf5,0x2,0xb8,0x54,0xe7,0x7a,0xf3,0x11,0xad,0x93,0xd2,0x6a,0xd1,0x15,0xa6,0x37,0xc,0x13,0x23,0xf0,0x69,0x74,0x0,0x21,0x68,0xf0,0xa0,0xcd,0xda,0xb5,0xe1,0x3,0x54,0x92,0x94,0x3,0xeb,0xf7,0x63,0xed,0x90,0x28,0x6b,0x7f,0x65,0xac,0xcb,0x2b,0xdf,0x1,0xe0,0xe9,0x96,0xcb,0x0,0x63,0xde,0x3e,0x87,0x1,0xbc,0xf,0x35,0x56,0xeb,0x9c,0xa1,0xd9,0xcf,0x3f,0xa2,0x35,0xb5,0xf9,0xd7,0xca,0x96,0xee,0xc3,0x59,0x1,0xd2,0xdd,0xfe,0x92,0x6b,0x69,0x40,0x9f,0x5b,0x12,0x55,0xdf,0x5e,0x1d,0xad,0x7d,0xb1,0x7a,0xbb,0x10,0xec,0xf0,0x0,0xc4,0xdc,0xd9,0x76,0x5b,0x61,0x37,0x29,0x86,0xb6,0xa9,0x27,0xff,0x3f,0xf6,0xf6,0x39,0xbb,0xc6,0xfb,0x50,0x63,0xb5,0x2e,0x28,0xdb,0x7e,0xf1,0x31,0xad,0x3c,0x0,0x7d,0x77,0x4a,0x9e,0x9a,0x1,0x2,0x5,0xa,0x14,0x28,0x50,0xa0,0xa,0xc0,0xb3,0xf,0xd4,0x76,0xae,0x71,0x47,0xb1,0x5a,0xac,0x51,0xc6,0xc3,0x96,0x7d,0xad,0xb9,0x23,0xe8,0x3a,0x82,0xe7,0x1a,0x56,0xb8,0x5,0x86,0xa9,0x1d,0xae,0xab,0x3d,0xb2,0xe5,0x96,0x81,0x35,0xa6,0x33,0xe,0x53,0xf4,0xe8,0x31,0xa5,0x3e,0x6f,0x71,0xab,0x61,0xef,0xb7,0x6c,0x69,0xbd,0x37,0xe8,0x68,0x27,0x77,0x27,0xc3,0xdf,0xfd,0xa7,0x7a,0x91,0x47,0x41,0x1b,0xb5,0x51,0x82,0x3a,0x2c,0xd0,0x22,0x2,0xfa,0x99,0x92,0xe7,0x89,0x20,0xa8,0x0,0x3c,0x7b,0x61,0x71,0xe3,0x1a,0x77,0x14,0x4f,0x8b,0x1a,0xe5,0x8b,0x42,0x86,0xfc,0x7,0xf1,0xad,0x10,0xe2,0x4f,0xe2,0x8f,0x15,0x5a,0xfd,0xf4,0x8f,0x42,0x88,0x1f,0x72,0xf9,0x7d,0x41,0xfc,0x51,0x7c,0x2b,0x84,0xf8,0x4a,0x7c,0x2d,0x9b,0x7e,0x90,0x7d,0x32,0xfa,0x56,0xfc,0x6c,0xcc,0x5d,0x34,0x29,0x7e,0x23,0xbe,0x15,0xdf,0xc8,0x8f,0xdf,0x88,0x6f,0xc5,0x6f,0x12,0x2f,0x82,0x10,0x42,0x88,0xdf,0xa9,0x7b,0x9,0x21,0xc4,0xd7,0xe2,0x77,0xef,0xb0,0x5f,0xd5,0x52,0x8b,0x1f,0xd9,0x55,0xac,0xf0,0xa3,0xf8,0x5e,0x7c,0x29,0xbe,0x14,0xdf,0x8b,0x1f,0x53,0x53,0x52,0xfc,0x8b,0xf8,0x5e,0xfc,0x8d,0x10,0xe2,0x6f,0xc5,0xcf,0x55,0xf7,0xaf,0xc4,0x77,0xe2,0xb7,0xc6,0x80,0xdf,0x88,0x1f,0xc4,0xdf,0x89,0x3f,0xa8,0x67,0x17,0x42,0x88,0x2f,0xc5,0x77,0xcf,0x7e,0x9f,0x7d,0x7c,0xf6,0x7b,0xf1,0x9d,0xf8,0xd2,0x7a,0x10,0xf3,0x1a,0x77,0x14,0xa7,0xc5,0x3b,0xca,0x7,0x11,0x69,0xce,0x8e,0x36,0xfe,0xda,0x4,0xce,0xa9,0x31,0x93,0x8a,0xa7,0x2a,0xd6,0x43,0xe9,0x3d,0xb7,0x81,0x4e,0xba,0xe4,0x4c,0xd2,0xd1,0x11,0x76,0x80,0x14,0x5a,0x65,0xba,0xd8,0x49,0x5a,0x2c,0x1,0xc,0x80,0x29,0xb3,0x7f,0xce,0xc,0xd4,0x41,0xee,0x77,0x22,0x89,0x3b,0x36,0xc,0x8f,0xbe,0x37,0x3e,0xe1,0x63,0x9c,0x3c,0xd5,0x1,0x54,0x88,0x74,0x98,0x54,0x73,0xd4,0x58,0xb0,0xaa,0xc7,0x16,0x75,0x8d,0xa7,0x21,0x30,0x53,0xcc,0x32,0xd2,0x72,0x1f,0x72,0x64,0xe2,0x73,0xf9,0x86,0x1b,0x97,0xa6,0xb3,0x83,0x57,0x90,0x6,0x77,0x14,0x3a,0x64,0xc6,0x65,0x80,0x73,0xe0,0x8a,0x69,0xb6,0x40,0x3,0x98,0x4c,0xd4,0x61,0x60,0xb8,0x9c,0x2f,0x7d,0xc1,0x72,0xf6,0xdd,0xb4,0x3b,0x4c,0x70,0xc8,0x90,0x11,0xcd,0xf4,0xa8,0xf0,0x5c,0x53,0xa5,0xd7,0x4,0xc7,0x44,0x44,0x9c,0x78,0xe7,0x70,0x2c,0x0,0x15,0xa0,0x2f,0x9d,0xaa,0xd9,0x2d,0x3d,0xb0,0xaa,0xed,0xbd,0xca,0xb3,0x9e,0xbd,0xb8,0xc4,0x81,0xd7,0xa,0x3f,0xac,0xc8,0x0,0x3d,0xf,0x44,0xd5,0xd3,0xbd,0x95,0xd6,0xe8,0xb,0x8f,0x64,0x80,0x1,0x30,0x4f,0x83,0x21,0x7,0xda,0x52,0xfb,0xb1,0x88,0x21,0x70,0x44,0x27,0xc3,0x43,0xdc,0x45,0xf1,0x2c,0xe5,0x9e,0x1d,0x26,0x56,0x89,0x1,0xdc,0x5e,0xfb,0xaa,0xc5,0x7,0x10,0x8d,0x5,0xa0,0x26,0xf4,0x40,0xcd,0xb8,0xa5,0x7,0x56,0x75,0x77,0xb3,0x67,0x82,0x23,0x8f,0x4,0xb0,0xe,0x1,0x9,0x97,0x3e,0xd7,0xc1,0x90,0x12,0x6,0x28,0x59,0x48,0xc3,0xd7,0x76,0x5e,0xc4,0x8e,0x25,0xac,0x9a,0x3c,0xd9,0xd,0xd7,0x4c,0x94,0x22,0x14,0x31,0x30,0xc5,0x94,0x5,0x2,0x19,0x8b,0xe2,0x59,0xca,0x2e,0xb0,0xc8,0x82,0x36,0x4e,0x15,0x6,0x70,0x7b,0xf5,0x80,0x55,0x56,0x73,0xe6,0x70,0x2c,0x0,0x15,0xe0,0x22,0x61,0x8,0xed,0x96,0x5e,0x58,0xd5,0xbb,0x94,0xa6,0xaf,0xec,0x16,0x38,0x65,0x92,0xba,0xe1,0xb3,0xf3,0xb2,0x4d,0xd5,0x25,0x7e,0x42,0x6,0x48,0x76,0xf5,0x80,0x19,0xe6,0xb5,0x19,0x7a,0xeb,0x45,0x1d,0x4e,0x80,0x2e,0x27,0x9a,0x2c,0x72,0x16,0xc5,0xbf,0xb8,0x7e,0x99,0x59,0xd6,0x52,0xd6,0xcb,0x64,0x80,0x31,0x61,0x55,0x26,0xb9,0x5,0x76,0x8a,0x61,0xd5,0x22,0x61,0xae,0x5a,0x5e,0x7a,0x21,0x10,0xf7,0xe0,0x98,0x66,0x2d,0x13,0xb2,0x9f,0xcc,0x11,0x90,0x84,0x71,0x6d,0x30,0xcd,0x95,0xb6,0xd4,0xcb,0x2a,0x94,0x56,0x3b,0x3a,0x85,0x60,0x83,0xb,0x22,0xd,0x2d,0x71,0x17,0x2e,0x4a,0xf0,0x16,0xad,0xa5,0xf,0x6c,0x33,0xc1,0x64,0xb2,0x15,0xbd,0xd7,0x54,0xe9,0x55,0x22,0x1,0xc6,0x81,0x55,0x93,0xa0,0xa5,0x19,0x6,0x8c,0x8c,0x49,0x77,0x60,0x55,0xbf,0x3a,0xe7,0xec,0xa2,0x43,0x9,0x81,0x9c,0x54,0x50,0x1d,0x4f,0x3f,0x31,0x25,0x70,0x49,0x7b,0xb6,0x48,0x8b,0xbf,0xd9,0x92,0x28,0xfe,0x95,0x86,0x3a,0x2c,0x33,0x2f,0x67,0x72,0x94,0x2b,0x1,0x5a,0xce,0xce,0x3d,0x52,0xd,0xed,0xdc,0x6b,0xaa,0xf4,0x3a,0x50,0x2d,0x47,0x3e,0x6,0x18,0x7,0x40,0x4d,0xf9,0x76,0xc3,0xb8,0xa5,0xf,0x56,0xad,0x68,0xd0,0xd1,0xb6,0x1d,0x3d,0x16,0xa,0x6,0xd0,0x23,0xe6,0x32,0x73,0x9a,0x58,0x8b,0x38,0xa9,0x87,0x6f,0x48,0x33,0xb0,0xab,0x99,0x81,0xdd,0xf,0x64,0x6,0xee,0xd1,0xf5,0xc1,0x4e,0xa,0x67,0x7c,0xa9,0xb9,0xa6,0x6e,0xec,0xb0,0xe,0x77,0x51,0xa8,0xd3,0x62,0x4,0xf4,0xb9,0x52,0x1e,0xbe,0x63,0x99,0x30,0xd2,0xca,0xbd,0xa6,0x4a,0xaf,0x9,0x4e,0x8a,0xac,0x80,0x71,0x0,0xd4,0xec,0xeb,0x9f,0x69,0xbf,0x7b,0x60,0x55,0xfb,0x0,0xf0,0x23,0x66,0xc9,0xae,0x28,0xb2,0x4,0x2a,0x20,0xed,0x49,0xc,0xdf,0x83,0xc6,0x10,0x7d,0xb,0xa4,0xee,0x67,0x8e,0x20,0x6,0xd6,0x81,0x36,0x78,0xbc,0x27,0x30,0x15,0xb1,0x1e,0xb6,0xae,0x73,0x4e,0x3f,0xdb,0x10,0x9c,0xd0,0x95,0x51,0x6,0xcb,0xf9,0x8b,0xf2,0xf1,0xfc,0x0,0xd5,0x1,0xd4,0x6c,0x22,0xa6,0x18,0x18,0x71,0x6d,0x16,0xac,0xea,0x71,0xea,0xfa,0x20,0xd3,0x86,0x2f,0x5b,0xc7,0x70,0x20,0x97,0x33,0x40,0xf,0x2c,0x4f,0xf7,0x56,0xe6,0xfe,0xd5,0x7f,0xff,0x70,0xae,0xe0,0x40,0x81,0x2,0x5,0x7a,0x4f,0xf2,0x78,0x8e,0x6b,0x60,0xa8,0x3c,0xae,0x2e,0xf8,0xf5,0x26,0x89,0x15,0xf6,0x41,0x61,0x3a,0x78,0x46,0xcf,0xe3,0x67,0x99,0x35,0xc3,0x4b,0xbf,0x8,0x13,0xfe,0x4e,0x8b,0xe5,0x2e,0x8e,0xd5,0xe2,0x41,0x33,0x2d,0x34,0xd5,0x19,0xe3,0xb7,0xe2,0x57,0x42,0x88,0xaf,0xc4,0x9f,0x73,0x6f,0xfb,0x6b,0xf1,0x8d,0xf8,0x75,0xce,0xdf,0x74,0xf0,0xec,0xdf,0x85,0x10,0x7f,0xaf,0x2c,0xa3,0x8e,0x4,0x86,0x92,0x76,0x93,0x1,0xca,0x51,0x67,0x27,0xa5,0xb9,0x4,0x83,0xf6,0x60,0xd2,0xfa,0xd9,0xaf,0x27,0x4b,0xdf,0x7a,0xec,0x80,0x1a,0x17,0x44,0xc4,0xdc,0x5a,0x63,0xbc,0xe0,0xcc,0x88,0xe0,0xf7,0xf5,0xdd,0xe2,0xe,0x88,0x1c,0xd0,0x54,0xdf,0x1b,0xee,0xc2,0x39,0x20,0xb7,0xb3,0x50,0x87,0xb4,0x81,0x11,0x2d,0x7b,0x57,0x15,0x92,0x8b,0x66,0x96,0xa1,0xa9,0xbf,0x12,0x42,0xfc,0x5c,0xfc,0xec,0xd9,0xff,0x48,0xe4,0xee,0x97,0xcf,0x7e,0x99,0xfe,0xaf,0x58,0xe4,0x3f,0x32,0x1c,0xf1,0xd9,0x5f,0x9e,0xfd,0xe2,0xd9,0x2f,0x9e,0xfd,0xc5,0x33,0xd2,0xbf,0x9,0x21,0xbe,0x13,0x82,0x9a,0xf8,0x5e,0x8,0xf1,0x35,0xb,0xc9,0x67,0xf1,0xa3,0xcb,0xc9,0xa5,0xa8,0xb3,0x93,0xfe,0x5c,0x88,0x41,0x7b,0x91,0x6d,0x9d,0x1,0xf4,0x64,0x69,0x9f,0x9a,0x97,0xe5,0xca,0x19,0x41,0xcc,0x1c,0x3,0x57,0xf4,0x6c,0x70,0x44,0xbb,0xe2,0xb9,0xea,0x79,0x51,0xe0,0x2b,0x70,0x19,0xc0,0x49,0xab,0xb6,0x5b,0xb4,0x80,0xf1,0x9b,0x31,0x64,0xc4,0xf8,0x68,0xa6,0xad,0x28,0xdf,0x31,0xd2,0xd5,0x5c,0xfb,0x73,0x41,0xd6,0xc3,0x52,0xf2,0xac,0x3c,0x97,0x6e,0xba,0x3,0x69,0x90,0xba,0x99,0xd3,0x9e,0xe4,0x6d,0x37,0x19,0xdb,0x4c,0x7f,0x36,0xd3,0x9d,0xed,0x64,0x68,0xfb,0xf3,0x4,0x27,0xba,0xb1,0xa6,0xf7,0xf6,0x32,0x40,0x4,0xac,0xa5,0xd9,0x72,0x5a,0x7b,0xb2,0x8,0xbb,0x36,0x80,0x62,0x59,0x1f,0x7b,0x4c,0x32,0xa9,0x67,0x21,0xbc,0xf,0xfd,0x9d,0x25,0xe6,0xa5,0x5f,0x71,0x4c,0xb4,0x8e,0x21,0x31,0xd7,0xa,0x50,0x73,0x16,0xd0,0x5d,0x42,0xe3,0x73,0x3b,0x45,0x60,0xfc,0x9f,0xb,0x18,0x60,0x82,0x88,0x11,0x93,0x5c,0x3,0xbb,0x9,0x48,0xce,0x88,0xe8,0x23,0x18,0x9e,0xca,0xed,0x71,0x55,0x0,0x83,0xee,0x66,0xde,0x3e,0xe9,0x71,0x5c,0x87,0xd4,0x99,0x21,0xdb,0x57,0xd9,0x34,0xf2,0x78,0x52,0x37,0x51,0x4b,0x39,0x77,0x5c,0x96,0xa8,0xd1,0x24,0x4e,0xbc,0x73,0xb9,0x48,0x9c,0xdb,0x72,0x45,0x1f,0x18,0x71,0x65,0xa,0x7c,0xd6,0xb4,0xa4,0xb1,0x8a,0x68,0x9d,0xa4,0x56,0xde,0x2,0x16,0x7b,0x24,0x69,0x98,0x2e,0x6c,0xfb,0x73,0x51,0x6f,0xde,0x2,0x2f,0x93,0xf3,0x9f,0xe,0xf0,0x1a,0x78,0x6b,0x2f,0x80,0x6f,0x3a,0x6c,0xce,0x2e,0x11,0x43,0xc5,0x62,0x49,0xea,0xa3,0x2f,0x84,0x48,0x27,0xd3,0x7d,0x64,0xd6,0x88,0xb9,0x36,0x77,0xb6,0xa9,0xc5,0x52,0xe7,0x4a,0x2e,0x64,0x81,0xa3,0x98,0x2e,0xf0,0x92,0x49,0x26,0xd2,0x30,0x2d,0x29,0x7b,0x28,0x44,0xe2,0xbc,0xd8,0x9c,0xb9,0x70,0x52,0xa,0x44,0xc4,0xca,0x99,0x53,0x11,0xad,0xa3,0xc6,0xb2,0xe6,0x4,0x6e,0xf8,0x31,0x89,0x5c,0x6,0x78,0xc1,0x20,0xc1,0x17,0xfc,0x9f,0xb,0x19,0x60,0x47,0xa,0xff,0x3d,0xb9,0x9,0x47,0xc0,0x4b,0x9b,0x1,0xdc,0x2f,0xef,0x72,0x76,0x89,0x18,0x2a,0x16,0x4b,0x9e,0x2f,0x65,0x8b,0xbc,0x5,0x22,0xda,0x59,0x11,0x4,0xc9,0x0,0x3,0xe0,0x48,0x39,0x75,0x5b,0x39,0x39,0x79,0x6,0x54,0xc4,0xb6,0xe3,0x9,0x1f,0x0,0x6b,0xba,0xdb,0xd7,0xe3,0x87,0xcf,0xc1,0xe6,0xf4,0x85,0x53,0xdf,0xf3,0x65,0xbe,0x6b,0xab,0x12,0x5a,0xe7,0x2c,0x60,0x9,0x3,0x44,0x90,0xa4,0xd6,0xf9,0x3f,0x7b,0x66,0x73,0x4e,0xf7,0xb3,0x42,0xb2,0x8d,0x98,0x93,0xbf,0x37,0x6c,0x6,0x70,0xbf,0xbc,0xcb,0xd9,0x25,0x62,0xa8,0x58,0x2c,0x49,0x84,0x6a,0x2b,0x5f,0x2,0x70,0x6b,0xa5,0x9f,0x27,0xd3,0xbf,0xc8,0x8d,0x16,0x8b,0x30,0x2,0x16,0x98,0xd6,0xb,0x28,0x78,0x81,0xce,0x75,0x5a,0xc0,0xc8,0x2e,0x45,0x31,0x3e,0xa8,0xea,0x67,0x64,0xcd,0xad,0x5c,0x5,0xad,0xf3,0xa3,0x7e,0xf5,0x31,0x18,0x60,0x60,0x31,0xd9,0xa0,0x28,0x5,0x85,0xbe,0x9e,0xfb,0x28,0x1d,0xe5,0x6f,0x95,0x1d,0x84,0xa7,0x46,0x50,0x25,0x44,0xb9,0x44,0xc,0x15,0x8b,0x25,0xa9,0xbd,0xeb,0xbb,0xd2,0x66,0x80,0x3a,0x1d,0xfa,0x1a,0xe7,0x26,0xc,0x30,0xa7,0x2f,0x37,0x23,0x60,0x9e,0x55,0x57,0xce,0x98,0xe1,0x22,0x42,0x30,0xcb,0x43,0x16,0x99,0x44,0x1f,0x78,0x6e,0x7c,0xbf,0xca,0x12,0xa0,0x58,0x75,0xac,0x84,0xd6,0xb9,0xb3,0x3b,0x28,0xce,0x24,0x76,0x18,0x60,0x93,0x2e,0x10,0x29,0xcd,0xc3,0xfa,0x6c,0xf5,0xde,0xa0,0x3d,0x66,0x71,0x1b,0xcf,0x97,0xf7,0x73,0x76,0x81,0x18,0x2a,0x16,0x4b,0x42,0x50,0x93,0x9,0xe2,0x9d,0x5c,0x1d,0x60,0x9e,0x88,0xae,0xae,0xca,0x25,0x42,0x5b,0x7b,0xaa,0xb,0x37,0xbd,0x51,0xe3,0xd4,0x7d,0xed,0x6e,0xd3,0xd4,0x35,0x29,0x71,0xe8,0x2c,0x8a,0x8b,0xc4,0xb9,0x2d,0x7e,0x9,0x60,0x6,0xb5,0x57,0x41,0xeb,0x5c,0x6,0x70,0x16,0xf0,0x23,0x23,0xc,0x9e,0x2f,0x7f,0xe4,0x3d,0x47,0xb,0xc4,0x50,0xb1,0x58,0x2a,0x31,0x56,0xd2,0x29,0x7a,0x61,0xc2,0xce,0xcc,0xd1,0x7,0xba,0xac,0xab,0xc9,0x6d,0x32,0x22,0xe2,0x58,0x3,0x35,0xaf,0x18,0x0,0x7d,0xe,0xb5,0xb6,0x6,0x31,0x11,0xaf,0x35,0x25,0xf7,0x90,0x3e,0x30,0x50,0x8b,0xe2,0x20,0x71,0x9e,0x96,0xa,0xc,0xf0,0x53,0x71,0x67,0xba,0x5f,0xde,0xe5,0xec,0x12,0x31,0x54,0x2c,0x96,0xca,0xc5,0x5c,0xa0,0x27,0x58,0xe7,0xb6,0x74,0xce,0x3d,0x70,0x64,0xd7,0x1c,0xb,0xf4,0x29,0x2d,0x94,0x45,0x45,0xdb,0xc7,0x5f,0x81,0x4d,0x8,0x66,0xb9,0x64,0xc4,0x88,0xcb,0x2c,0x66,0xc1,0x18,0xb4,0xef,0xd8,0x2,0x81,0xde,0xdb,0xf2,0x79,0x32,0x27,0x72,0xb2,0x2c,0xda,0x44,0x40,0xcc,0x3d,0xaf,0xfd,0x55,0xc9,0x4a,0x19,0xc0,0x5f,0x81,0xad,0x41,0x8f,0x5d,0x6a,0xd4,0xd8,0xa5,0xa7,0xfc,0x21,0x89,0xae,0x35,0xc1,0x32,0xf7,0x66,0x68,0xec,0xa7,0x37,0x89,0x8b,0xb4,0xe4,0x9,0x7c,0xaf,0x47,0xf3,0xc8,0xbf,0x7a,0x6b,0x14,0xfa,0x5,0x1c,0xf7,0x5a,0x70,0xd9,0xb2,0x56,0xf6,0xe5,0x4c,0x33,0x2f,0xcf,0x5c,0x4f,0x9e,0xf3,0xbb,0x67,0x47,0x9,0xc1,0x1a,0x6d,0xa0,0xab,0xd7,0xf7,0xcd,0xc9,0x9c,0xc8,0xcf,0xb2,0x48,0xe9,0xa4,0xd8,0x71,0x9d,0xfb,0x64,0xbe,0xa,0x6c,0xa7,0xec,0xb1,0x4c,0x1b,0x68,0xb2,0x67,0x7a,0x57,0x25,0x33,0xea,0xa6,0x22,0xcb,0x3c,0x0,0xf,0x89,0x7f,0x8b,0xcd,0x4c,0x15,0x33,0x1e,0x60,0xc1,0xcb,0x97,0xc7,0x44,0x8c,0x52,0x6c,0xda,0x5e,0x2e,0xea,0xc0,0x40,0x69,0xf6,0x35,0xba,0x59,0x9d,0xa0,0x6c,0x91,0x3d,0xfd,0x5a,0x34,0x41,0x8,0xb6,0x20,0xcd,0xb9,0xd3,0xfe,0xea,0xad,0x51,0xe8,0x17,0x70,0xec,0x66,0xc8,0x39,0xa7,0xd9,0x68,0xd4,0x78,0x48,0x46,0x60,0x3b,0xcd,0x73,0x28,0xd8,0x67,0xde,0x1d,0xa5,0xa9,0xbe,0x43,0xe7,0x39,0xec,0xcc,0x89,0xdc,0x2c,0xb,0x21,0x98,0x64,0xdd,0x2d,0x6,0x5b,0x99,0x1,0x7c,0x15,0xd8,0x6,0xcc,0xd0,0x6,0x16,0x98,0x62,0xa6,0x38,0x65,0x45,0xc8,0x80,0xae,0x95,0xc4,0xba,0x66,0x9a,0x41,0xb6,0x64,0x1e,0x18,0xc6,0x66,0x80,0x6,0x33,0x40,0x5f,0xc2,0xb0,0xd6,0x72,0xb1,0x6a,0x38,0x69,0x13,0x73,0x6c,0xd5,0x5c,0xe4,0xdc,0x65,0x86,0x9,0x3a,0xee,0xfe,0xcf,0xad,0x45,0xe8,0x15,0x70,0x4c,0x13,0x33,0x60,0x52,0x8,0x26,0x19,0x12,0x67,0x0,0x11,0xf3,0x44,0x8c,0xd8,0x22,0x32,0x22,0x7a,0xfd,0xc,0x70,0x2a,0x7d,0xa3,0x43,0x5e,0x67,0x3b,0x4a,0x9a,0xcb,0xeb,0x9e,0xec,0x7,0x37,0x73,0x22,0x37,0xcb,0xe2,0x5d,0x19,0xc0,0x5f,0x81,0xcd,0xf4,0xea,0x38,0xdf,0x67,0x51,0x8f,0x85,0x14,0x7a,0x7d,0x4a,0x9a,0xe0,0x2d,0xf6,0xbe,0x1,0x89,0x93,0xc3,0x6a,0x6f,0xa4,0x49,0x5b,0xbe,0xe5,0x4a,0x72,0x7,0x88,0x59,0x10,0x82,0x59,0x19,0x2f,0xbf,0x63,0x3d,0x68,0xde,0x32,0xc3,0xb6,0x5d,0x36,0x59,0x89,0x2f,0x6f,0x29,0xc4,0x94,0x31,0x4d,0x1,0xc7,0x65,0xf2,0x8d,0xd8,0xb2,0xa1,0x28,0xe5,0x34,0xde,0x2e,0x55,0xc0,0x6,0xcc,0x48,0xcf,0x64,0x9c,0xed,0x28,0x19,0x99,0x3,0xed,0xcc,0x81,0x95,0x97,0x39,0x51,0x90,0x65,0xe1,0xf1,0x63,0xe4,0x31,0x80,0xbf,0xd4,0x9b,0xa7,0x2,0x5b,0x26,0x1,0xea,0xb6,0x4,0x60,0x52,0x1e,0x5c,0xa7,0x1e,0x9,0x90,0x2b,0xfe,0x27,0xe8,0x10,0x2b,0x5f,0xb2,0xfe,0x65,0x66,0xa8,0x27,0xde,0x72,0xdf,0x72,0x71,0x0,0x5c,0x26,0x70,0xa,0x97,0xf2,0xf7,0x3,0x8b,0x1,0xbc,0xcb,0x2c,0x3,0x36,0x3b,0xa,0x96,0x3a,0x30,0xc6,0xf4,0x96,0x42,0xcc,0x9e,0xcc,0x78,0xc2,0xcd,0xc4,0x15,0x4a,0x2b,0xf1,0x7,0x1a,0xf7,0x78,0xb0,0x5d,0xa3,0x79,0xa,0x98,0xfa,0xcb,0x5b,0x6d,0x47,0x6d,0x3,0x43,0x60,0x8f,0xae,0xe3,0x9b,0xb4,0x32,0x27,0xf2,0xb3,0x2c,0x0,0x18,0x79,0xde,0x12,0x50,0xa9,0xaa,0x5a,0xce,0xb5,0x89,0xe,0xd0,0x5,0xae,0x4d,0x1d,0x20,0xf3,0xef,0x68,0xc,0xa3,0x74,0x80,0xd,0x6,0xc,0xd8,0xd0,0x35,0x2,0x79,0xc5,0xab,0x44,0x49,0xf1,0x30,0x40,0xb,0x18,0xb2,0xc7,0x84,0x5c,0xae,0x5d,0x2b,0xec,0x3,0x96,0xe9,0x3,0x7b,0x40,0x9f,0x25,0xa7,0x58,0xa4,0xb7,0x9f,0x9a,0xde,0x6d,0x21,0x58,0x4e,0x59,0x4c,0xc3,0xfb,0x7d,0x35,0xa,0x73,0x4,0x9c,0x14,0xfd,0x4b,0xc4,0x44,0x96,0xda,0xf8,0xd2,0x2f,0x1,0x3c,0x23,0xa6,0x12,0x60,0x93,0x33,0x6d,0x47,0x75,0x81,0x19,0xae,0x89,0xe9,0x69,0x81,0x25,0xfe,0xcc,0x89,0x82,0x2c,0xb,0x76,0x81,0x2b,0xa7,0xea,0x47,0xa5,0xaa,0x6a,0x79,0x0,0xb2,0xd7,0xa,0xe8,0x10,0x4b,0x35,0xf9,0x20,0xcb,0x58,0xd0,0xbb,0x35,0x81,0x4d,0x5d,0x23,0x50,0xe7,0xe8,0xd0,0x17,0xd1,0xef,0x2e,0x17,0x8d,0x4,0x15,0xd4,0xfc,0x74,0xd0,0x50,0xf5,0xae,0x77,0x69,0x78,0xc5,0xb0,0xd3,0x4f,0xc6,0xf6,0x77,0x98,0x10,0x82,0x1a,0x37,0x8c,0x52,0x4,0x2e,0xbf,0x16,0x61,0xae,0x80,0x4b,0x4,0x75,0xc7,0x7e,0x11,0x3,0x8b,0xc4,0x44,0x6c,0x56,0xd7,0x1,0x64,0xe,0xe4,0xb1,0xb1,0xa3,0x96,0xa9,0xd3,0xf3,0x67,0xdc,0x18,0x99,0x13,0x85,0x59,0x16,0xec,0x42,0x6,0x85,0xe7,0x3a,0xd2,0x72,0x4b,0xbd,0x79,0xae,0xf5,0x5a,0x2d,0xc5,0xa6,0x97,0x14,0xff,0x6e,0xc5,0x6a,0x1d,0x4f,0xf7,0x33,0x40,0xba,0x5c,0x34,0x13,0xb5,0xcf,0x30,0xc2,0x1a,0x4c,0x31,0x4c,0x92,0x33,0x68,0x98,0x22,0x37,0xaf,0x9f,0x9c,0x92,0xe7,0x92,0x2d,0x2f,0x34,0xbd,0x3b,0xb7,0x16,0x61,0xae,0x80,0x93,0x31,0x3c,0x59,0x9d,0x4d,0x69,0x5,0x74,0x24,0x44,0xf4,0x68,0x2b,0xc0,0x50,0x8b,0xdb,0xee,0x8,0x7a,0xe6,0x44,0x69,0x96,0xc5,0x91,0xc9,0xb4,0x4f,0x6f,0x79,0x2b,0xed,0xdf,0x96,0x0,0xcc,0x11,0x27,0x7b,0x31,0x2f,0xb7,0x27,0x5b,0x2e,0xe7,0xec,0xec,0x2,0x35,0x19,0x71,0xb0,0x2b,0x47,0xe8,0x56,0xe8,0x37,0x49,0x5f,0x59,0xec,0xb1,0xf1,0x97,0xfc,0x52,0x88,0x5,0x2,0x8e,0x3b,0x27,0x4d,0x4d,0xb7,0xfd,0xcf,0x1f,0xe7,0x7,0x60,0x8e,0x2b,0x62,0x22,0x2e,0xd8,0xf7,0xeb,0x4e,0x9f,0x93,0xff,0x4a,0x69,0xff,0xa6,0x57,0x40,0x9e,0xf2,0x9b,0x79,0x30,0xb1,0xbd,0x5c,0xd6,0xb4,0xc5,0x1e,0x3c,0x20,0x2e,0xef,0x17,0x28,0x50,0x20,0xdd,0x6,0x7b,0xcd,0x83,0xee,0x6c,0x52,0xed,0xf5,0x2,0x45,0x70,0x9f,0x88,0xc8,0x0,0xc9,0xeb,0x5c,0x12,0x11,0x3b,0x31,0x81,0x81,0x3e,0xc8,0xb2,0x4d,0x39,0x7,0x5b,0x8d,0xb,0x46,0x6,0xea,0x3a,0xcd,0x39,0x11,0x23,0xde,0x2a,0xff,0xa8,0x6b,0x82,0x4e,0xa4,0x99,0xc5,0xda,0xc2,0x27,0x31,0x9c,0xb7,0x46,0x94,0xb6,0xfd,0xa6,0xb3,0x94,0xb2,0xd0,0xfd,0x8b,0xfc,0xc0,0xdc,0xcf,0x0,0x1f,0x2b,0xfb,0x8b,0x54,0xb2,0x62,0x6e,0x94,0x8e,0xb0,0xc9,0xd,0x31,0x11,0x97,0x5,0xd3,0xeb,0x4b,0x58,0xb5,0x6b,0x17,0x4e,0xb0,0x6f,0xc5,0x13,0x78,0xa2,0x10,0x9c,0x60,0x91,0x45,0xe7,0x5e,0x27,0xb6,0xd3,0x87,0xa6,0x9d,0x69,0xe0,0x9a,0xb8,0xd2,0x42,0x58,0xd4,0xc0,0xa2,0x7d,0xe9,0x5e,0x33,0x82,0x57,0xac,0x7b,0xdd,0x0,0xcf,0xd9,0x2,0x6e,0x55,0xbf,0x28,0xf1,0xc3,0xda,0xe1,0xf2,0xfa,0x24,0xbe,0xd6,0x74,0xec,0x2b,0xa5,0x15,0x6c,0x38,0xc1,0xd9,0xbb,0x56,0xdc,0x7a,0x24,0xc3,0xb3,0xcf,0x35,0x15,0x69,0x26,0xf1,0xc9,0x1b,0x55,0x29,0x66,0x69,0x12,0x1,0x1d,0xf5,0xe8,0x39,0xaf,0x6d,0x72,0x3d,0x66,0xa5,0xc,0x70,0xef,0x4,0xb1,0x64,0x5a,0xfa,0x55,0x75,0x6,0xd0,0x5e,0x96,0x97,0xf6,0xda,0x2b,0xe8,0xb5,0x9f,0xcb,0x0,0x3b,0x26,0x46,0x20,0x9d,0x41,0xb,0xba,0xeb,0x98,0x18,0x98,0xd7,0x33,0xd,0x64,0xfb,0x8b,0x2c,0x79,0x83,0x3b,0x60,0x0,0x5c,0x1b,0xf5,0x3e,0xb6,0xe9,0x11,0x27,0x2e,0x78,0xef,0xb7,0x88,0x80,0x1a,0x35,0xdd,0xc5,0x9c,0x3b,0x8b,0x6a,0xc2,0x9f,0xeb,0xba,0x2c,0xf3,0xc4,0x74,0x98,0x4c,0xbd,0x80,0xae,0x78,0xf1,0x1b,0x60,0x86,0x59,0x79,0xc9,0x96,0xe6,0xf6,0x68,0xa8,0x97,0x50,0x65,0x93,0xeb,0x7b,0x6d,0xd3,0xe3,0x18,0x60,0x95,0x7d,0x6a,0xcc,0x6b,0x31,0x84,0x4b,0x2c,0x33,0xc1,0x5a,0xb5,0x2a,0x40,0x86,0x3a,0x6c,0xd6,0x2e,0xec,0x3a,0x31,0x85,0xde,0x48,0x44,0x6b,0x9c,0x13,0xf9,0xba,0xcd,0x53,0x65,0x20,0x26,0xcb,0xad,0xbf,0xf2,0xa2,0xd,0xec,0xb0,0x66,0x85,0x9e,0xcf,0xe8,0x69,0x6d,0x89,0x3f,0xd1,0x61,0xe3,0xb,0xbd,0xba,0x91,0xe7,0x8,0x28,0x88,0xf3,0xcc,0x99,0x44,0x56,0x88,0xb9,0x31,0x30,0xb9,0x63,0x60,0x8f,0x5d,0xab,0xf4,0xdb,0x12,0xb1,0xe5,0xee,0x49,0x6f,0xb6,0xa6,0xc5,0xbe,0xfb,0x1c,0xaa,0xa7,0xc0,0x15,0xd,0x21,0x98,0x57,0x93,0xeb,0x7b,0x6d,0xd3,0xa3,0x18,0x40,0x13,0xbc,0x4d,0x87,0x35,0x6f,0x8b,0x18,0xc0,0x62,0x67,0xa7,0x76,0x61,0xb5,0x88,0x61,0x6a,0xd6,0x12,0x74,0xec,0x14,0x35,0xdd,0x6f,0xa0,0xe,0x9b,0x38,0x43,0x4b,0xc,0x13,0x75,0xde,0xc2,0x16,0x16,0x34,0xc6,0xee,0x1,0x5d,0xb6,0xad,0x40,0x58,0xf3,0xee,0x8e,0x4,0x28,0x61,0x0,0x3b,0x2e,0x5f,0x7e,0xa5,0x1e,0x23,0xa2,0x2c,0x13,0x4f,0x8,0xa6,0xe8,0xd2,0x75,0xc3,0x3f,0x15,0xed,0x14,0x30,0x80,0x42,0xc4,0xc,0x13,0xd2,0xa9,0x2f,0xf6,0x78,0x6,0x60,0x91,0xbe,0x9d,0x5d,0x0,0xa0,0xa2,0xa,0xb,0x8e,0x80,0x2,0x99,0xe0,0xe6,0x15,0xf8,0xa,0x57,0x9d,0x3a,0xbe,0xc6,0x49,0xe6,0x78,0xad,0x6d,0x8a,0x24,0xed,0x3b,0xb2,0xe,0xa9,0x23,0x2e,0x8c,0x93,0x7a,0x9a,0x91,0x9e,0x7b,0x48,0x7,0x58,0x35,0x42,0xf4,0x8f,0xa4,0x6,0x60,0xbc,0x46,0xca,0x7a,0xe6,0x5b,0x5b,0x7,0x60,0xc2,0x3e,0x92,0x4c,0x6,0xb8,0x77,0x4b,0xba,0x7a,0x15,0xa4,0x53,0x89,0xed,0xe5,0x31,0x40,0xf6,0x32,0x96,0x11,0x31,0x53,0xc4,0x8c,0x54,0x62,0x87,0x1f,0x1b,0x73,0x5f,0xdb,0x24,0xbd,0x76,0xe3,0x32,0x0,0x9b,0x44,0xdc,0x98,0x4e,0x20,0x9,0xb5,0x76,0x8b,0x18,0xc0,0x1a,0xd1,0x95,0x0,0xa7,0x5,0x3a,0xc0,0xa9,0xa6,0x98,0xbd,0x31,0x54,0xc2,0x25,0xa6,0x3c,0x89,0x25,0xf3,0x5c,0x5a,0xca,0x5b,0xc3,0xcc,0x80,0x64,0xd7,0x2a,0x71,0x75,0x60,0x87,0x8c,0xd0,0xe4,0xce,0xd,0x60,0x75,0xc2,0xf8,0x2d,0x2b,0x40,0xa5,0x88,0xb8,0x73,0x29,0x23,0x70,0x87,0x99,0x3b,0xb3,0x4,0x94,0xcc,0x8b,0x7c,0x5f,0x29,0x39,0x2,0x86,0xa,0x13,0x2f,0xac,0x2f,0x56,0x69,0x99,0x96,0x58,0x94,0xb9,0x83,0xa9,0x88,0x5b,0x27,0xe6,0xc6,0x48,0x60,0x5f,0xa6,0x9e,0xc6,0x24,0x8c,0xa1,0x3,0x5c,0xd9,0xb5,0xb,0x99,0xa6,0x65,0xe5,0x16,0x3a,0x85,0xab,0x88,0x12,0xb4,0x4f,0x3b,0xdc,0xee,0x9d,0xec,0xaa,0x9a,0x72,0x1b,0x4f,0x6b,0xa,0x9e,0xf5,0x9a,0x5a,0x5a,0x56,0xad,0xb5,0x24,0x64,0x77,0xc4,0x99,0xba,0xd7,0xb4,0x9d,0xdc,0xe9,0xdd,0xaa,0x96,0x1f,0x20,0x5,0xa7,0x72,0x18,0xc0,0xab,0x3,0x50,0xf4,0x7a,0x34,0x47,0x25,0x9a,0x60,0xbd,0x84,0x1,0x9a,0x49,0x54,0x8c,0x55,0x62,0xd2,0xad,0x2f,0x86,0x84,0x59,0x7,0x1e,0xe3,0x28,0xed,0xf7,0xd6,0x39,0x61,0xdb,0xce,0x35,0xf,0x3e,0x23,0xab,0x6c,0xea,0x12,0xa5,0xd1,0x97,0x4,0x5e,0xc8,0x48,0x1d,0xbb,0xe2,0x21,0x4d,0x69,0x2a,0x1e,0x1b,0xd5,0xcd,0xcc,0x80,0xb5,0xc4,0x99,0x3c,0xa2,0xa5,0x59,0x4f,0xc3,0xc4,0x7d,0xfe,0x11,0xac,0xec,0x4,0xe,0x2a,0xc3,0xa4,0xfc,0x3e,0x73,0x87,0xdb,0x9b,0xc0,0x56,0x1a,0x8c,0xa1,0xc4,0x5f,0xe4,0x4c,0xb7,0xaf,0xbe,0x58,0x95,0x65,0x3a,0x94,0x61,0xeb,0x17,0x5,0x36,0xfe,0x1b,0x79,0x4d,0x53,0xbf,0xa6,0xc2,0xde,0x79,0x4e,0x1b,0x18,0x64,0x45,0x58,0x2a,0x30,0xc0,0x3c,0x57,0x8c,0x80,0x76,0x56,0xd1,0xf8,0x33,0x74,0xb3,0xf0,0xca,0xd4,0xf8,0x2b,0x32,0xc0,0x83,0x34,0x55,0xda,0x1c,0x2a,0x31,0xd5,0x3,0x69,0xf6,0xcd,0x18,0x4a,0x5a,0x9a,0x37,0xd3,0xd4,0x76,0x69,0xdf,0x8d,0xee,0xb,0x9e,0xc4,0x40,0x81,0x52,0x9d,0xc4,0xaa,0x53,0x50,0xa5,0xce,0xb8,0x2,0xf5,0x86,0xe9,0x6b,0x68,0x9d,0x84,0xfe,0x9f,0x62,0x8e,0xd3,0x27,0xbd,0x90,0x17,0xb2,0x42,0xc2,0x73,0x4d,0x6f,0x71,0xea,0x30,0x28,0xff,0x40,0xe6,0xf7,0x73,0xb,0x4c,0x54,0xa8,0x33,0xae,0x69,0x25,0xfb,0x96,0x8e,0xf4,0xf0,0x99,0x32,0x80,0xe5,0x68,0xed,0x24,0x16,0x5,0x6b,0x32,0x70,0x6c,0x56,0x73,0xb0,0xbe,0xa5,0x27,0x5f,0xcf,0x70,0xca,0x10,0xb8,0x51,0x71,0xf8,0x8b,0x3c,0x10,0x33,0xe2,0x84,0x5d,0x46,0x59,0x30,0x27,0x9b,0xc9,0x6f,0xe9,0x4f,0xe9,0xb6,0xbe,0x67,0xd7,0xf2,0x8c,0xf4,0x34,0xc7,0x75,0x57,0xed,0xb4,0x33,0x65,0xd0,0x2e,0x6b,0xea,0xdd,0xa6,0xfe,0x53,0x7a,0x50,0x22,0x56,0x88,0xe8,0xaa,0x92,0x6e,0x4e,0x1d,0x6,0x21,0xd8,0x90,0x7a,0xd1,0xb6,0xa1,0x62,0x2f,0x17,0x56,0x19,0xf6,0x31,0x40,0xc,0x6c,0xb2,0xa1,0xb2,0x22,0x3c,0x65,0x29,0x32,0x87,0xcf,0x91,0xd4,0xba,0xaf,0xc6,0x30,0xc4,0xea,0x9c,0x33,0x4,0x7a,0x2a,0xee,0xbe,0x4d,0x2c,0x9d,0x9f,0xd3,0xca,0x1d,0x61,0xd4,0xf0,0x62,0x96,0xd7,0xf4,0xed,0x52,0x4d,0x79,0xa,0x96,0xb5,0xe4,0xe6,0xa7,0x83,0xc4,0x5a,0xe6,0x28,0x99,0x3c,0x5e,0x79,0x6b,0x7b,0xd8,0x9a,0xf9,0xa2,0xd5,0xde,0x52,0xe2,0xf1,0x5a,0xff,0xa9,0x1c,0xe3,0x10,0x73,0xc9,0x86,0x12,0xb5,0x17,0x49,0x79,0x8,0x76,0x34,0x75,0xf7,0x14,0xe8,0xcb,0x7f,0x59,0xc0,0xf8,0x75,0x62,0xd7,0xa4,0x3f,0x25,0xab,0x24,0x21,0x2b,0x19,0x9b,0xb8,0x75,0x18,0x12,0xe3,0xf1,0x3a,0x75,0x5d,0x3d,0xbe,0x96,0x81,0x2,0x9a,0xee,0x94,0x67,0xc0,0x29,0x4b,0x51,0xc5,0xd1,0x61,0x3a,0x12,0x23,0x4d,0xa3,0xbe,0x2a,0x80,0x5a,0x2e,0x8b,0xbd,0x8,0x8f,0x61,0x0,0xeb,0x99,0x67,0x65,0xfd,0xab,0x4e,0x92,0x95,0xc0,0x4d,0xe6,0x65,0x94,0x7b,0x66,0x15,0x88,0xa8,0xb1,0xaa,0xed,0x9d,0x49,0x66,0x14,0x1b,0x2c,0x68,0xdf,0x6e,0x47,0xca,0x91,0x1d,0xa3,0xac,0xf4,0x2,0xc7,0x32,0xf5,0x63,0xa0,0xb9,0x57,0x5a,0xd2,0x8,0xdd,0x36,0xa4,0xd1,0x9a,0x1e,0xeb,0xc4,0xb6,0x96,0x74,0xa2,0x87,0xc1,0x5f,0xea,0x75,0xcb,0x73,0x3d,0x93,0xfb,0x25,0x8e,0x68,0x57,0x2,0x38,0x65,0x29,0x92,0xfa,0xe4,0xac,0x17,0x97,0xa5,0xd0,0xfd,0xc6,0xcb,0x9e,0xe5,0x3a,0xcb,0x2,0xa9,0xb5,0x27,0x7d,0xab,0x7b,0xb1,0x84,0x60,0xd6,0xac,0xb7,0xcf,0xa2,0xeb,0xd,0x50,0x23,0xde,0xe9,0x8f,0x54,0xd5,0xc4,0xca,0x31,0xd6,0xee,0x64,0xe8,0x5a,0x4b,0x4e,0xff,0x5d,0xde,0x94,0x69,0x63,0xaf,0x73,0x2f,0xfd,0x8e,0xe6,0xb4,0xd7,0x13,0xf7,0x6c,0xfa,0xd3,0xf0,0x24,0x9e,0x6a,0xd7,0xcd,0x0,0x23,0xea,0x8c,0xf4,0x38,0x7c,0x4f,0x14,0x65,0x3b,0xf9,0x7b,0xfa,0xd3,0xf0,0xfc,0xeb,0x12,0xc0,0xad,0xc3,0x70,0x2d,0x25,0xc0,0x4a,0x1,0x3,0xb8,0xe9,0xfc,0x2d,0x4f,0x14,0x41,0x59,0x82,0x7f,0xb6,0xbd,0x24,0x4a,0x35,0xe5,0x29,0x2f,0x64,0x55,0xe8,0x37,0x16,0xf7,0x16,0xb8,0xf4,0x94,0x75,0x59,0xce,0x67,0x80,0x7c,0x23,0x4f,0x7b,0xb0,0x58,0xc3,0xb4,0x6f,0xb,0x18,0x60,0x7,0xe8,0xc9,0xe5,0xe8,0xe9,0x3b,0xad,0x80,0x1,0x86,0xf2,0xc,0xef,0x1,0x2b,0xd4,0x94,0x5e,0xed,0x97,0x0,0xb3,0xb2,0xae,0x80,0x8e,0x71,0xde,0xcb,0xac,0xa4,0x5b,0x4b,0x1f,0x59,0x33,0x60,0x6f,0x8f,0x4,0xa0,0xe6,0xd1,0x1,0x8e,0x3c,0x28,0xea,0x8a,0x64,0x82,0xe7,0xb9,0xc,0xe0,0xa6,0xf3,0xbb,0x65,0x29,0xa6,0xb9,0x23,0x86,0xac,0xd0,0xa6,0x93,0xd0,0xaf,0x31,0xc0,0x95,0x67,0x7a,0xe7,0x88,0xe8,0xda,0x15,0xfa,0x8d,0xc5,0xad,0x73,0x29,0x51,0x84,0xb9,0xaa,0x47,0x40,0x25,0x6,0xe8,0x6a,0x2f,0x8d,0xef,0x16,0x28,0x85,0x89,0x7,0xf1,0x52,0xa,0xd6,0xc8,0x7d,0x9b,0x40,0x51,0x71,0x96,0x34,0x50,0xbd,0x40,0x7,0xd8,0x92,0x29,0x1b,0xe7,0x6,0x93,0xa7,0x6a,0xdb,0x6b,0xe3,0x0,0xad,0xa0,0x3,0x70,0x21,0x41,0xe5,0x17,0x9a,0x15,0xe0,0xd4,0x61,0x70,0xad,0x80,0xa7,0xd0,0xaf,0x13,0x94,0xca,0xac,0xa3,0x77,0x6b,0xbd,0xfe,0xc9,0x59,0x5c,0x29,0x12,0xf,0x35,0xc3,0x42,0x26,0x4a,0x72,0x9a,0xef,0x79,0x2b,0x7f,0x41,0x8d,0xb9,0xef,0xf3,0x94,0x40,0xe9,0xe9,0x4b,0xa,0x4f,0x3d,0xb7,0x0,0xeb,0xb2,0x23,0x20,0xe6,0x86,0x4b,0x46,0xc,0xd5,0x2e,0xf3,0x5b,0x1,0x77,0xfa,0x2b,0x1f,0x34,0xdd,0x3,0x62,0xad,0x78,0xdd,0xb2,0x2,0x69,0xce,0x8a,0xac,0x80,0x4f,0xd9,0xc0,0x6a,0xd0,0x90,0x50,0x8e,0xae,0x14,0x5d,0x78,0x4e,0x61,0x7d,0x71,0x57,0x99,0x4f,0x4b,0x8f,0x15,0x3a,0x5a,0x67,0x2d,0x53,0x2a,0xbb,0x7e,0xda,0xff,0xb2,0xb5,0x1c,0xa8,0x37,0x38,0x2e,0x3e,0x18,0x3,0xbc,0x72,0xc0,0xdc,0x61,0x5,0x33,0xf0,0xc6,0x46,0xb2,0x3c,0xd7,0xa4,0x9e,0x7e,0x6f,0xf4,0x2a,0x2f,0xb4,0x2c,0x5e,0x8f,0x72,0x12,0x5c,0xc2,0x4f,0xc1,0xfe,0x5f,0x8,0x21,0xfe,0x2a,0xfe,0x5b,0x8,0xf1,0x7f,0xe2,0x7,0x55,0x82,0xfc,0xab,0xa,0x3d,0xff,0x24,0xfe,0x4b,0x8,0xf1,0x57,0xf1,0xaf,0xe2,0x9f,0x72,0xaf,0xf9,0x67,0xf1,0x9f,0x42,0x88,0x3f,0xe7,0xbc,0xfd,0xf7,0x1b,0xf1,0xbf,0xef,0xf2,0xe6,0xde,0xcf,0x76,0x31,0x4b,0xde,0x4c,0x52,0xcd,0x10,0xe,0x7b,0xc2,0x2c,0x4d,0x71,0x4,0x59,0x65,0x30,0xa3,0xf8,0x84,0x6b,0xa4,0xd5,0x58,0xd1,0x8a,0x3d,0xe2,0xcd,0x9f,0x1f,0x72,0xcf,0x12,0x5b,0x4a,0xab,0xde,0xa1,0xb,0x74,0x35,0x9d,0xfe,0x5a,0x7b,0x3f,0xf9,0xb5,0x9e,0x18,0xe6,0x48,0x4f,0xfb,0xd,0x2,0x81,0x1,0x1e,0xb9,0xe4,0x46,0xa2,0xb8,0x5e,0x9a,0x42,0x8,0xea,0x2c,0x69,0x16,0x8a,0x2a,0x3e,0xe1,0x65,0x80,0x5d,0x22,0xa5,0xc9,0x78,0xf5,0x10,0x8f,0x93,0x6b,0x24,0x5d,0x47,0x23,0xa5,0xf0,0x65,0xe5,0xee,0xb5,0x42,0xfa,0x55,0x18,0x20,0xd0,0x63,0x19,0xc0,0x48,0x14,0xcf,0x4a,0x53,0x48,0x6d,0xa3,0x67,0xc7,0xc5,0x2a,0x67,0x4b,0x2f,0xfd,0x5f,0xb2,0xca,0x6,0x23,0x85,0x91,0xe9,0x7a,0x48,0x76,0xcd,0x15,0x5b,0x2c,0x71,0xaf,0xbd,0xb6,0xc5,0x96,0x0,0x66,0xb1,0xfc,0x4f,0xe5,0x2d,0xe0,0x8f,0x9c,0xd8,0x33,0x89,0x14,0xdd,0x29,0x23,0x70,0x8f,0xbe,0xe6,0x41,0xa7,0xb8,0xb4,0xa9,0x10,0xec,0xb2,0x2f,0x4,0x7b,0xc6,0x1b,0x44,0xb6,0x12,0x23,0xad,0xc0,0xed,0x39,0xc7,0x3d,0xf0,0x60,0xbc,0x21,0x10,0xff,0x32,0x4a,0xb1,0xab,0x27,0x8a,0xcf,0x18,0xec,0x10,0x3b,0x51,0xb9,0x28,0x87,0xd5,0x4d,0xfa,0xbf,0xb4,0x5e,0x3a,0xdc,0x28,0xcf,0xdb,0x1b,0x6,0xaa,0xb6,0xd6,0xed,0x38,0x2f,0x82,0xf8,0x9,0x2a,0x25,0x8a,0x1,0x8e,0x72,0xb2,0x55,0xa2,0x5c,0x6,0x78,0x4b,0xcc,0x3e,0xb1,0xf6,0x7e,0xce,0x6,0x43,0x60,0xa8,0x25,0x76,0xe3,0x8d,0x6,0x5a,0x35,0xad,0x8,0x2b,0x8c,0x7c,0x8f,0x81,0x56,0xe1,0xc2,0x4c,0x14,0x6f,0x19,0x68,0xf7,0x41,0x12,0x8f,0xe3,0x67,0x9d,0x40,0xe5,0xc,0x30,0x99,0xa5,0x1a,0x32,0x30,0x6b,0xfb,0xb,0xc1,0x4,0x2d,0x48,0xcb,0x98,0x78,0x96,0xb2,0x26,0x33,0x8a,0xb3,0xf7,0xd5,0xdf,0x10,0xb3,0x43,0xcc,0x4d,0xfe,0xdb,0x29,0xdc,0xd3,0xd9,0x3a,0x89,0x9b,0xb4,0x81,0xb6,0x32,0x4e,0xe3,0xa2,0x12,0x15,0x81,0xde,0x89,0x1,0x8a,0x9d,0xb5,0x1c,0xe9,0x18,0x55,0x5,0x6,0x90,0x79,0x3e,0x49,0x6a,0x49,0x6e,0xaf,0x7,0x29,0x1,0x1e,0x72,0x18,0xe0,0x5,0x11,0xb7,0x44,0xfa,0xbb,0x8c,0x2,0x3d,0x5,0x3,0xf4,0x65,0x5d,0xad,0x19,0xed,0x34,0x2f,0x2c,0x60,0x62,0x1f,0x1,0xbc,0xe4,0x8e,0x9a,0x10,0xd4,0xb8,0x53,0x67,0xb6,0x2f,0xb,0x2f,0xd1,0x1,0x16,0x73,0x19,0xe0,0x86,0x49,0x6e,0x2,0x3,0x3c,0x35,0x3,0x1c,0x59,0x40,0xe2,0xf0,0x31,0x4a,0x60,0xa0,0xcf,0x97,0x1,0x26,0x38,0x4e,0x42,0xa9,0xf2,0xb5,0xf3,0x40,0x81,0x2,0x5,0xa,0x14,0x28,0x50,0xa0,0x40,0x81,0x2,0x5,0xa,0x14,0x28,0x50,0xa0,0x40,0x81,0x2,0x5,0xa,0x14,0x28,0x50,0xa0,0x40,0x81,0x2,0x5,0xa,0x14,0x28,0x50,0xa0,0x40,0x81,0x2,0x5,0xa,0x14,0x28,0x50,0xa0,0x40,0x81,0x2,0x5,0xa,0x14,0x28,0x50,0xa0,0x40,0x81,0x2,0x5,0xa,0x14,0x28,0x50,0xa0,0x40,0x81,0x2,0x5,0xa,0x14,0x28,0x50,0xa0,0x40,0x81,0x2,0x5,0xa,0x14,0x28,0x50,0xa0,0x40,0x81,0x2,0x5,0xa,0x14,0x28,0xd0,0x7,0xa0,0xff,0x7,0x50,0x13,0xcb,0x3f,0x44,0x90,0xb7,0x37,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 -}; - - -static const unsigned char font_mono_png[]={ -0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x1,0x0,0x0,0x0,0x0,0x80,0x8,0x4,0x0,0x0,0x0,0x4e,0xbc,0x7f,0x81,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xdb,0xc,0x1e,0x0,0x2a,0x22,0x7b,0x10,0x6,0x2d,0x0,0x0,0x18,0xa4,0x49,0x44,0x41,0x54,0x78,0xda,0xed,0x9d,0x3f,0x68,0x6b,0x4b,0x7e,0xc7,0xc7,0xab,0x42,0xf,0x54,0xb8,0x30,0xc1,0xb,0x2a,0x5c,0xf8,0x81,0x2,0x2e,0x1c,0x70,0xc0,0x9,0xa,0xf8,0x81,0x17,0x5c,0xf8,0x81,0xb,0x2f,0x38,0xe0,0x80,0x3,0x2e,0x5c,0xb8,0x70,0xc0,0x1,0x13,0xbc,0xe0,0xe2,0x16,0x2e,0x6e,0xa1,0xc2,0x1,0x2f,0x38,0xe0,0xc2,0xb,0xe,0x68,0xc1,0x1,0x2f,0x68,0x41,0x1,0x6f,0x50,0x82,0x16,0x54,0x28,0xe0,0x80,0xa,0x2f,0xa8,0x50,0xa1,0x80,0x16,0x54,0xa8,0x50,0xa1,0x2c,0x9f,0x14,0xe7,0x9c,0x39,0xf3,0xef,0x1c,0x1d,0xd9,0xf7,0x3e,0xbf,0x77,0xdf,0xfc,0xe0,0xfa,0x5a,0x3f,0xcf,0x39,0x47,0x33,0xf3,0x3b,0x33,0xbf,0xdf,0xf7,0xf7,0x67,0x84,0xf0,0xe4,0x49,0x8,0x21,0xd8,0xe5,0xce,0xe0,0x94,0x68,0x53,0x32,0x78,0x77,0xec,0x4c,0xbf,0xd6,0x75,0xa5,0xd9,0xca,0x7d,0xa7,0xe0,0xda,0xf0,0x37,0x80,0xe,0x9b,0xc6,0xdf,0x37,0x79,0x1,0xc8,0xfe,0x2c,0xda,0xac,0x3a,0x9e,0xa3,0x3d,0x9f,0xae,0xf3,0xbb,0x34,0x83,0x7f,0x29,0xbd,0x78,0x55,0x4f,0xcd,0xab,0x1c,0x2d,0xd4,0xef,0x8f,0xfe,0xbf,0x10,0x42,0xb0,0xcf,0x80,0x1,0xfb,0xda,0x35,0x15,0x1a,0x94,0x79,0xca,0xd0,0x7,0x9b,0x47,0x99,0x21,0xbb,0xc6,0x97,0xec,0x71,0x4b,0x4f,0xef,0x1e,0xbb,0xc,0x29,0x8b,0xd4,0x6b,0x13,0xae,0x34,0x5b,0x39,0xee,0x24,0x84,0x10,0x7c,0xe0,0x4c,0xf9,0xb4,0x4d,0xc7,0xf8,0x7b,0x87,0xed,0xd9,0x9e,0xc5,0x19,0x97,0x4e,0xa1,0x55,0x9e,0xaf,0xe,0x6e,0xda,0x40,0x19,0x77,0x7e,0x55,0x4f,0xed,0xab,0xac,0x16,0xfa,0x53,0x5c,0x2,0x30,0x62,0x95,0x55,0x46,0xda,0x73,0x9f,0x58,0xa3,0x41,0xe5,0x75,0x2,0x50,0x65,0xc3,0x68,0x74,0xcf,0x86,0x10,0x6c,0x70,0x6f,0xf0,0x37,0xa8,0x8a,0xd4,0x6b,0xdd,0x57,0x3a,0x9e,0x60,0xdd,0x49,0x8,0x21,0xe8,0x51,0xd4,0x3e,0x1b,0x53,0xa3,0x7f,0xce,0xf2,0x2c,0x8a,0xf4,0x9c,0xd3,0xab,0x3c,0xdf,0x2d,0x0,0x8e,0x6b,0xf4,0x3b,0xbf,0xaa,0xa7,0xae,0xab,0x8c,0x16,0xfa,0x53,0x5c,0x2,0xd0,0x62,0x95,0x55,0x5a,0x5f,0xde,0x46,0x64,0x2f,0x61,0xa4,0x7f,0xce,0x74,0xd7,0x27,0x73,0x4a,0xac,0x16,0x7c,0x8f,0xc7,0xc4,0x25,0x0,0x5,0x46,0xc,0x28,0x18,0x2d,0xf7,0x40,0xdf,0x16,0x5c,0x3c,0x2e,0x18,0x31,0xe2,0x3c,0xf8,0xf4,0x13,0x75,0x8f,0x64,0x25,0xda,0x7f,0xb3,0xdf,0xce,0xe6,0x29,0xfb,0x33,0xd9,0x39,0x21,0xfd,0xbd,0xf8,0xd5,0x8c,0xc3,0xa3,0x75,0xc7,0xcd,0x11,0xbf,0x12,0x7f,0x37,0xf5,0xaa,0x6,0x13,0x6,0x5c,0x92,0x8b,0xb4,0x2,0x96,0x84,0x10,0x82,0xe5,0x48,0x3f,0x70,0x70,0x14,0x7a,0xd,0x27,0xdb,0x67,0x27,0xfd,0x8d,0xf8,0x83,0xf8,0x5f,0xf1,0x97,0x6,0xf7,0x6f,0xc5,0xef,0xc5,0xcf,0xd3,0x79,0xec,0x88,0x6f,0xc5,0xd7,0xe2,0xcf,0xc5,0xcf,0xe5,0x56,0xca,0x31,0xd7,0xe1,0x6f,0xd7,0x1c,0x29,0x4d,0x1f,0x68,0xf2,0x60,0xc,0x5c,0x6,0xde,0xeb,0x5,0x80,0x3c,0x3d,0x4b,0xaa,0xd3,0xb7,0x80,0x1d,0x5a,0x2c,0x52,0xa4,0x1d,0x75,0xc7,0xe6,0x8,0xc1,0x3c,0x7d,0xf2,0xa9,0x57,0xc1,0x16,0x39,0x8a,0xd4,0x23,0xa1,0xe0,0x96,0x43,0x21,0x84,0xe0,0x44,0x8e,0x8e,0xcd,0x61,0xfa,0x4a,0x92,0xa0,0x5d,0x30,0xfb,0x3a,0xa7,0x8d,0x54,0x95,0x73,0x4e,0xc,0xd5,0x3b,0xcf,0x88,0x55,0xc6,0x5a,0x4f,0x2d,0x1e,0xb5,0x40,0xe1,0x64,0x57,0xce,0x19,0x5,0xfa,0x2c,0xa,0xc1,0x22,0x5d,0xa5,0x61,0xa6,0xdb,0x39,0x1f,0xf1,0x7a,0x1,0xd8,0xb1,0xb5,0x2,0x5a,0x1c,0x28,0x9f,0xe,0xd5,0x35,0xca,0xd5,0x1d,0x47,0x7,0x3,0x21,0xdd,0x49,0xbd,0x2a,0xfa,0x5e,0xcb,0x91,0xbe,0xc0,0x1e,0x8f,0x42,0x8,0x41,0x5d,0xa,0x89,0xcd,0x79,0x27,0x1,0xa0,0xc0,0x98,0x65,0x8a,0x8c,0xd5,0xd7,0x85,0x6d,0xda,0x42,0xd0,0xd4,0x94,0x64,0x8b,0x17,0xcc,0xb5,0x10,0x2c,0xd2,0x57,0x17,0xc4,0x8a,0x10,0x54,0x38,0x99,0xf5,0x76,0xce,0x47,0xbc,0x5e,0x0,0xaa,0xb6,0x69,0xc8,0xa9,0xb1,0x38,0x9e,0x68,0x7f,0xb5,0xba,0xe3,0xec,0xa0,0x60,0x47,0x13,0x7,0xfb,0x2a,0xfb,0x1b,0x16,0x18,0x32,0xcf,0x2,0xc3,0x48,0xb4,0x1d,0x9c,0xf7,0x12,0x80,0xfd,0xe0,0x35,0xa0,0xa1,0x6d,0xbd,0xd7,0x7c,0x10,0x82,0x8b,0x68,0x7d,0x72,0xf3,0x9c,0x23,0xcf,0x3c,0x7d,0xca,0xea,0xfb,0x9f,0xf5,0x76,0xd9,0x1e,0x91,0x4d,0x0,0x28,0xd0,0x53,0xbf,0x81,0xdc,0x79,0x77,0x35,0x7d,0xa3,0x93,0x30,0x28,0xd3,0x36,0x97,0x3e,0xf3,0xd3,0xaf,0x62,0x29,0xb6,0x18,0x78,0xe0,0x88,0x63,0xcd,0xa2,0x37,0x38,0xf6,0x6e,0x9d,0x85,0xf3,0x9,0x4,0xa0,0x1a,0x6c,0x54,0x9c,0x6b,0x96,0x44,0x37,0xb4,0x2e,0x3a,0x69,0xbc,0x4,0xed,0x8b,0x13,0xc6,0xea,0xfe,0x9f,0xf5,0x76,0xd9,0x1e,0x91,0x51,0x0,0xe,0xb9,0x99,0xf5,0x5d,0xc9,0xae,0x5e,0x72,0x13,0xec,0xe0,0x49,0x57,0xb1,0x19,0xea,0x0,0x17,0xea,0xda,0xc6,0x33,0x5b,0xfa,0x6a,0xa7,0x72,0xbe,0x9b,0x15,0xc0,0x12,0xd2,0x3c,0x23,0x29,0x55,0x23,0xb9,0x1a,0x2d,0x29,0xda,0xe6,0x52,0xa,0xcf,0xb9,0x42,0xa,0x72,0x10,0xe9,0xbf,0x33,0xdd,0xce,0xc5,0x7b,0xad,0x0,0x3c,0x39,0x81,0xa1,0x74,0x1,0xc8,0xb8,0x5,0x8,0xc1,0x46,0x6c,0x60,0xba,0xb6,0x0,0x9a,0xa0,0x5a,0x1,0x42,0x90,0xa3,0xa7,0x23,0x84,0x26,0xe7,0x9d,0x4,0x60,0x2b,0xd6,0x83,0x78,0x89,0x90,0x52,0xe,0xa4,0x3e,0xf3,0x18,0x69,0x4d,0x4e,0x9e,0xa1,0xff,0xfc,0x24,0x60,0xcf,0xfd,0x29,0xf8,0x27,0xe9,0x1b,0xf1,0x6f,0x73,0x73,0x73,0x73,0x73,0x73,0xe2,0x37,0xe2,0x9b,0x19,0x79,0x7f,0xc,0xcd,0xa5,0x25,0xf1,0xc7,0xec,0x1c,0x8a,0xe2,0xeb,0xb9,0xff,0x9a,0xd9,0x48,0xfe,0x6f,0xf1,0x57,0xa1,0x59,0xf4,0xfb,0x44,0x4e,0xd0,0xc3,0xff,0x10,0x5f,0x4b,0x88,0xc9,0xd1,0x66,0xee,0xaf,0xe7,0xe6,0xe6,0xfe,0x6c,0xee,0x9f,0xe2,0x51,0x98,0xfb,0x93,0xf8,0x8d,0xf8,0x67,0xed,0x1e,0x16,0xe7,0x5d,0xe8,0x5b,0xf1,0x6b,0xf9,0xfb,0xbf,0x8a,0x6f,0xe5,0x4c,0xfc,0x36,0xfc,0xed,0xb7,0xca,0xec,0xd8,0xbc,0x5f,0x8a,0x5f,0xb0,0x48,0x51,0xfc,0x42,0xfc,0x4b,0xda,0x9b,0x75,0x1b,0x6d,0x8,0x1c,0x73,0x3b,0x23,0xef,0x86,0x5b,0xa,0x14,0xb8,0x8d,0x96,0xf4,0x4c,0x9c,0x33,0x3e,0x38,0xd1,0xba,0x81,0xc1,0x19,0x68,0x28,0x59,0x26,0x33,0x30,0xfc,0xcb,0x65,0x4,0x32,0xbb,0xcc,0x40,0xeb,0xc9,0x5,0x56,0xe8,0xb2,0x90,0xca,0x79,0x9f,0x15,0xe0,0x85,0x65,0xf9,0xb7,0x55,0x5e,0x74,0x94,0xc2,0x85,0x5c,0xa8,0x3c,0x89,0x81,0x5c,0xa4,0x7e,0xa5,0xac,0xb7,0x73,0xf2,0xa,0x54,0x19,0x33,0xa6,0x1a,0x19,0x29,0x99,0x38,0xb6,0xe3,0x9,0xa0,0x6b,0xb9,0x49,0x76,0xe8,0x6a,0x4a,0x96,0xd5,0x9d,0x84,0xe,0xa,0x56,0x95,0xa5,0xd3,0x68,0xe3,0x98,0xb8,0x1e,0x3,0xc3,0x3b,0x62,0x73,0xbe,0x13,0x20,0xc8,0x85,0x4,0x7a,0xf2,0xe4,0xc9,0x93,0xa7,0x1f,0x31,0x25,0x78,0xff,0xa7,0x46,0x66,0xb8,0xdc,0xc3,0x82,0x3,0x9a,0x8c,0x80,0x89,0x62,0xcd,0x3b,0x1e,0x60,0xa9,0x2a,0x56,0x1b,0x87,0x7,0x7d,0x85,0x3a,0x13,0xfa,0x7c,0x4c,0x6e,0xe5,0xb8,0x6a,0x57,0x51,0x33,0x77,0xed,0x5d,0xd7,0xf5,0xc9,0x76,0xf1,0xb0,0x42,0x9d,0x31,0x30,0xd4,0x21,0x66,0x43,0xdf,0x29,0xd3,0x1,0x6a,0xb1,0x7a,0xc7,0x2e,0x3,0x73,0xbf,0x17,0xc2,0x0,0xa1,0x6f,0x39,0xb6,0x26,0x65,0x91,0x3a,0x13,0xc6,0x69,0x23,0xe2,0x18,0xb3,0xc,0x41,0x25,0x76,0xd0,0x88,0xcb,0xfb,0x9f,0x25,0x32,0xc3,0x15,0xb,0x70,0x11,0xf,0xa4,0x66,0x95,0xdb,0xf,0x30,0x5,0xc0,0x6a,0x63,0x75,0xb7,0x48,0x9f,0x3,0x72,0xac,0xa9,0x20,0xcf,0x34,0x1,0x60,0x8b,0x31,0x7b,0x12,0xa2,0x9a,0xa8,0x60,0x4c,0xb2,0x5a,0xe4,0xd0,0xed,0x5f,0xd8,0x55,0xd1,0xd,0xa7,0x8e,0xbd,0x48,0x9f,0x32,0x39,0xce,0xe3,0x6f,0xc8,0x80,0x55,0x56,0x4d,0xfb,0xc3,0xb8,0xc7,0x26,0x63,0x1e,0x68,0xd3,0xd0,0xa0,0xec,0x4b,0xf3,0x79,0x56,0xdf,0x8c,0x31,0xcb,0x16,0x54,0x92,0x1c,0x40,0xa3,0xb5,0xc9,0x14,0x99,0x61,0x5f,0x36,0x72,0x9,0x80,0xd5,0x6a,0x9d,0x36,0x30,0x31,0x17,0x9d,0x29,0x5f,0xe9,0xca,0x65,0xdc,0x4d,0xb9,0x26,0x4f,0x4f,0x73,0x0,0x9d,0x99,0x10,0x71,0x82,0x0,0xc4,0x10,0x47,0xf8,0xbe,0x33,0x66,0xc5,0xba,0xfb,0x3e,0xcf,0xc0,0x84,0x7a,0xf8,0xf9,0x43,0xf0,0xd,0x29,0x30,0x4c,0x16,0x0,0x1b,0xce,0xa5,0x4d,0x8d,0x9,0x3b,0x9a,0x59,0x38,0x8a,0xe1,0xe6,0xcc,0xbd,0xcd,0x18,0x54,0x92,0x14,0x40,0xf3,0x29,0x76,0x13,0xa7,0x0,0x58,0xcb,0x69,0xc7,0x8a,0x3,0x20,0x92,0xd1,0x14,0x93,0xa7,0x63,0x4e,0x81,0x13,0x86,0xd5,0xaf,0x39,0xa6,0x66,0x5c,0xd3,0xd0,0x97,0xdb,0x4,0x1,0xb0,0xf1,0xbd,0x7b,0xc6,0xdc,0xb1,0x1f,0xfb,0xcc,0xd8,0xa3,0xcf,0xa6,0x86,0x79,0x36,0x59,0xa7,0x44,0x4b,0xdb,0x4a,0x9c,0x5b,0x80,0x63,0x5,0xbc,0xe0,0x74,0xba,0xcd,0xff,0x59,0xe6,0xac,0x41,0x1f,0x18,0x53,0x8b,0xc0,0xad,0x37,0x44,0x61,0x70,0x65,0xb,0x80,0xd3,0x63,0x3e,0x6f,0x9,0xc0,0x4b,0xf0,0x66,0x26,0x5b,0xaa,0x69,0x1c,0x17,0xd8,0x11,0x2e,0x92,0x76,0x88,0xe4,0x53,0x6,0x1,0xb0,0x3b,0xdc,0xa2,0xca,0x2e,0xf,0xc,0x64,0x2f,0x5a,0xd6,0x76,0x32,0x60,0x3e,0x88,0x2,0x98,0x3e,0x7d,0x8a,0xa7,0xf0,0x86,0x11,0x23,0x1e,0x14,0x78,0x19,0x87,0x23,0x28,0x47,0x85,0x11,0x23,0x2a,0x32,0xcc,0xe4,0x53,0x71,0x60,0x41,0x8,0xe6,0xb9,0x96,0x2b,0xd9,0x1b,0x4,0x20,0xc7,0x1,0x4f,0x8c,0x34,0x1,0xb0,0x3d,0xe6,0xf7,0xb4,0xd8,0xd6,0xde,0x1d,0xa8,0x5,0xd8,0xda,0x27,0x16,0x80,0xa1,0x25,0x6a,0xb,0xf1,0xf2,0x3c,0x93,0x0,0x10,0xbc,0xfb,0x31,0x9e,0xc8,0xc4,0xf4,0x37,0x42,0xc4,0x55,0xae,0x6f,0x3,0xd0,0x64,0x3d,0x41,0x0,0x3e,0xf2,0xc0,0x2,0x5,0x4e,0xdd,0xdf,0x4b,0xc1,0x1e,0x1f,0x58,0x60,0x81,0xc7,0x28,0x2c,0xf5,0x93,0x71,0x62,0x51,0x9c,0xbc,0x59,0x0,0xb4,0xa1,0x20,0x71,0x39,0xcd,0x71,0x4c,0x9b,0x1,0x17,0xb1,0x37,0x9c,0x12,0x3,0xe6,0x53,0x5,0xa0,0x6b,0xe3,0x7b,0x53,0x5,0x80,0x69,0xd0,0x69,0x82,0x0,0xc,0xad,0xef,0xdc,0xb,0xb6,0x2d,0x16,0x18,0xcb,0xef,0x9c,0x9b,0x2e,0x0,0xa1,0x26,0x72,0xc1,0x73,0x82,0x0,0x48,0x95,0x6d,0x8a,0x93,0xb7,0x17,0x79,0x3c,0x64,0x98,0xc9,0xa7,0xe2,0xbc,0x6a,0xba,0x67,0x11,0x80,0x24,0xa7,0x6a,0x89,0x9a,0x54,0xb1,0x10,0x82,0x2b,0x2e,0x92,0x77,0x73,0x21,0xb8,0x51,0x83,0xbc,0x33,0xaf,0x0,0xb,0xc6,0x35,0xf3,0x99,0x56,0x80,0xa6,0x5c,0xb5,0xee,0xa4,0xe2,0xfa,0x42,0x93,0x53,0x1a,0x91,0x56,0x41,0xcb,0xca,0x33,0xe8,0x53,0xa4,0xce,0x91,0x63,0xfa,0x72,0x49,0x8,0xbd,0xf2,0xfe,0x8d,0xb2,0x21,0xfa,0x6f,0x9b,0xa6,0x4c,0x9c,0x71,0x20,0xfe,0xb3,0x71,0x66,0x16,0x0,0x21,0x28,0xa8,0x6d,0x58,0xa4,0xcf,0x7c,0xca,0xa,0x50,0xa2,0xcf,0x1e,0x39,0x4a,0x76,0x1c,0xdd,0xc,0x3a,0xc0,0x4e,0x26,0x1d,0xe0,0x2c,0xd4,0x5b,0x5a,0xea,0xd2,0x4d,0x99,0xa,0x43,0x89,0x2a,0xd8,0x4a,0x60,0x8d,0x1d,0x4a,0x74,0x20,0xc2,0x40,0x58,0xa3,0xce,0x8,0x18,0x24,0xa,0x40,0x3f,0x7c,0x23,0xb7,0xc,0xf4,0xe2,0x3d,0x57,0x80,0x1a,0xb7,0x2c,0x8,0xc1,0xc2,0x2c,0x9c,0x59,0xb6,0x80,0x3b,0xb6,0xc9,0x91,0xe3,0x30,0xea,0x74,0xd0,0x96,0xa,0xa7,0x69,0xee,0xa,0xd6,0x69,0x0,0xa3,0x19,0x4,0xe0,0xd8,0xc2,0xb7,0x6a,0x99,0xac,0x80,0x3c,0x35,0xe0,0xc5,0xf4,0x2,0xa,0x41,0x31,0xda,0x2,0x84,0xe0,0x80,0x1e,0x40,0x14,0x53,0xcf,0xa1,0x15,0xe4,0xda,0xf,0xec,0x86,0x58,0xb0,0x9d,0x3a,0xc0,0x3c,0x4b,0xb4,0xdc,0xdf,0x4b,0x7e,0xfe,0x20,0xf7,0xee,0xf,0x9f,0x98,0x63,0xb,0xc0,0x22,0x35,0xc6,0xc0,0x20,0x42,0x26,0xb2,0x70,0x92,0x5,0xc0,0x56,0x2,0x6f,0x18,0x1,0x5d,0xae,0xf5,0x65,0x84,0x45,0x5e,0xa6,0xf9,0xab,0x78,0x8e,0xde,0x40,0x21,0x18,0x48,0x69,0x1e,0x24,0x8,0x40,0x9e,0x9e,0x16,0x9d,0x78,0x90,0xd,0x7,0x8,0x57,0x8f,0x8f,0xac,0xea,0x91,0xc5,0xe4,0xd8,0xd1,0x53,0x43,0x8c,0xa7,0x3d,0x73,0x46,0x5e,0xc1,0x1,0x7,0xec,0x92,0x17,0x82,0xbc,0x7c,0x4e,0x99,0xa2,0x10,0x1c,0x49,0xd1,0xcf,0x71,0xcd,0xd8,0xf6,0x38,0x3a,0x36,0x91,0xcf,0x64,0x5,0x7c,0x1e,0xdb,0x32,0xd5,0xc,0x4c,0x51,0xc5,0x2a,0xe9,0x2,0x40,0x81,0x55,0x4d,0x2b,0x30,0x22,0x1,0x1c,0x77,0xde,0x62,0x1c,0x5,0x70,0xb1,0xc7,0x38,0x1b,0x12,0x18,0x3e,0xeb,0x8c,0x66,0xa4,0xbc,0x71,0xcf,0x8,0x18,0xd3,0xd0,0xf5,0x79,0xe3,0x69,0x1,0x80,0xdb,0x53,0x36,0x8d,0x16,0x13,0x60,0x28,0x57,0x89,0x7b,0x86,0x40,0xd3,0x6,0x6c,0xbf,0x2c,0xf7,0x82,0xb,0x8,0xba,0xc8,0xa0,0x8b,0x2f,0xc5,0xa6,0x88,0x2b,0x4,0x92,0x17,0x26,0x5c,0x29,0x53,0x64,0x46,0x2,0xb8,0xae,0x79,0x95,0x2f,0xc0,0x93,0xa7,0x1f,0x1d,0xb1,0xc3,0x80,0x1,0x3b,0x42,0xb0,0x13,0x23,0xa8,0x94,0xe9,0x31,0xd4,0x82,0xc6,0x1f,0x64,0xf4,0xe0,0xda,0x17,0x98,0x53,0xf8,0x1d,0xf,0x7a,0x77,0x3a,0xc7,0xe1,0xbf,0xdb,0x8e,0x8c,0x46,0xb6,0x62,0xc5,0x33,0xe6,0xa,0xc1,0x6e,0xe4,0x11,0xe0,0x9,0x64,0x9a,0xfc,0x6e,0xec,0x27,0x8,0xc,0x4f,0xd5,0xfc,0xa4,0xcb,0x16,0x9b,0x74,0xc9,0xd3,0x51,0x42,0xc5,0x9e,0xd9,0x62,0x4d,0xd3,0xb2,0x8a,0x34,0x43,0xdc,0xf6,0xda,0x4,0xf5,0xbf,0xe4,0xa9,0x32,0x27,0x21,0xa1,0x2a,0x41,0x3c,0x85,0x2c,0xd2,0x4,0xba,0x4a,0xa2,0x4b,0x77,0x16,0x7c,0x53,0xdb,0xc6,0xf4,0xa4,0xef,0x6a,0xa8,0x36,0xe7,0x79,0x8e,0x2,0xe9,0x84,0xe0,0x4e,0x6e,0x68,0x45,0x9e,0xd5,0xdc,0x85,0xe0,0x7d,0x36,0xb8,0xcb,0xbc,0x44,0x3f,0x35,0x55,0x9c,0xc8,0xa9,0xa5,0x6c,0xe7,0xf9,0xd8,0xf6,0x9,0x95,0xe9,0x8f,0x42,0xb0,0xa0,0xe7,0x7f,0x84,0x10,0xca,0xb4,0x42,0x8,0xee,0x56,0xce,0x12,0x12,0xbb,0x66,0xe2,0x44,0xfa,0x94,0x24,0xdc,0x65,0xaa,0x17,0x7d,0xfa,0xd3,0x9d,0x93,0x90,0xe8,0x54,0x95,0xd3,0xf0,0xc0,0x25,0x39,0xb6,0xe3,0xa0,0xf2,0x37,0x84,0x7e,0x6e,0xb8,0xe2,0x10,0x38,0xd7,0x12,0x57,0xe3,0x27,0xd7,0x8d,0xa4,0x76,0x1c,0xdc,0xd,0x9e,0x8c,0x10,0xf7,0x60,0x5,0x98,0xd0,0xd1,0xd2,0x7a,0x9e,0x59,0xe7,0xc8,0x91,0xc5,0xb9,0xc9,0x85,0x1d,0x2d,0x39,0xb5,0x10,0x42,0xc2,0xa4,0xb8,0xc2,0xd,0x6c,0x3f,0x36,0x53,0xde,0xb,0xb7,0x3f,0x7c,0x8a,0x17,0x3d,0xeb,0xd3,0x1d,0x93,0x90,0xe0,0x54,0x95,0xd3,0x30,0xa,0x31,0x80,0xe1,0xdb,0x5,0xc0,0xa9,0x66,0x2f,0xf1,0xec,0x32,0x6a,0x39,0xd1,0x42,0x66,0x9e,0x99,0x50,0xb1,0xb8,0x38,0xfc,0xad,0x81,0xe,0x30,0x31,0x56,0xba,0x7d,0x5e,0x22,0xf8,0x48,0xf3,0xa9,0xb4,0xe9,0x66,0x72,0x59,0xbb,0xfc,0xd1,0x56,0x1b,0x57,0xa1,0x3,0xbb,0x38,0x2,0xe9,0xef,0x45,0xc6,0xa0,0x85,0x57,0x3e,0x7d,0x36,0x1b,0x48,0xc1,0x37,0x9b,0x76,0x85,0xe,0x6d,0x22,0x5e,0x80,0x11,0x55,0x3,0x13,0xc9,0x73,0x13,0x41,0x43,0x89,0x60,0xfa,0x83,0x69,0xd4,0xa,0x21,0x4,0x2b,0x34,0x6d,0x1b,0xdf,0xe6,0x6,0xd5,0x4e,0x38,0xd1,0x6b,0x9e,0xb0,0xc3,0x24,0x52,0x5,0x43,0x4d,0xa1,0x4e,0x9f,0x47,0x72,0x2a,0x84,0x9e,0x29,0xed,0xfc,0xf3,0x18,0x97,0xef,0xa6,0x1,0x18,0x5e,0x3d,0x47,0x8e,0x5e,0x8e,0x4b,0x6,0x41,0x5e,0x90,0x22,0x0,0x6d,0xd5,0x63,0x0,0x34,0xf4,0xac,0x21,0x60,0x39,0x74,0xc6,0x2a,0xd9,0xc5,0x94,0x78,0x8c,0xaf,0x4b,0x40,0x3c,0xb7,0x78,0x8,0xb4,0x81,0xd8,0x30,0x16,0x82,0x1c,0x4d,0x56,0x62,0x6d,0x20,0x99,0x1b,0x24,0xf0,0x72,0xa9,0x1,0x65,0x79,0x3a,0x4c,0xd8,0x64,0x4b,0xea,0x31,0xf7,0x7c,0x20,0x47,0x95,0xaa,0x9e,0x1d,0x95,0xe8,0x3,0xb0,0x53,0x17,0x1d,0x3,0x75,0xc1,0x80,0x9,0x8f,0x11,0x62,0x96,0x85,0xe3,0x90,0x7f,0xfb,0x2a,0x97,0x9e,0x60,0xb9,0x63,0x5f,0xc7,0x9,0x87,0x47,0xf3,0xea,0x19,0xdf,0xe7,0x9c,0x3a,0x45,0x72,0xec,0x68,0x2,0x30,0xd6,0x4b,0xb4,0xb0,0x43,0x8e,0x22,0xb5,0x68,0xf7,0x94,0x6d,0xe7,0xa5,0x5e,0xf,0xc7,0xdc,0xa9,0x8b,0xab,0x33,0xf9,0x2d,0x54,0xff,0x58,0x61,0x21,0xc2,0x4e,0x42,0x68,0xf9,0x84,0x55,0xae,0x8c,0xef,0x66,0x71,0x5d,0x5b,0x40,0x10,0xd3,0x14,0xa9,0x82,0x21,0x67,0x42,0x4e,0x8,0x72,0x54,0x55,0x83,0x2f,0x75,0x5,0x98,0xb6,0xab,0x71,0x46,0x83,0x25,0xf2,0x5c,0x2b,0x99,0x3c,0x53,0x39,0x59,0xee,0x93,0xa8,0x43,0x5b,0xee,0xd8,0xd7,0x71,0x4c,0xaf,0x9e,0xf1,0x7d,0x7a,0x66,0x46,0x23,0x84,0x7a,0xca,0x6d,0x34,0x9d,0x76,0xe6,0xb0,0x33,0xf2,0xe0,0xd9,0x88,0xc7,0x73,0x9,0x80,0x54,0xff,0x38,0xd,0x6a,0xd,0x84,0x5b,0x62,0x5d,0x8,0x1e,0x28,0x69,0xdf,0xd3,0xcd,0x7d,0x62,0x43,0x2f,0x79,0xc3,0x32,0x1d,0xf2,0x74,0xb5,0x15,0xa0,0xc5,0x7,0x96,0x58,0xa7,0xc1,0x84,0xb5,0x4c,0xeb,0xf1,0x54,0x1,0x8,0xfd,0xfa,0x14,0x64,0x68,0x45,0x6,0x4e,0x96,0xfb,0xa4,0xe8,0xd0,0xb9,0xc,0xe,0xda,0x14,0x8e,0xdb,0xab,0x97,0x2d,0xbb,0x98,0x5,0x1e,0xa2,0x29,0xca,0xe6,0x9e,0x65,0x9e,0x7b,0xad,0xe4,0x8c,0xed,0x8c,0x95,0xea,0x1f,0x1f,0xb9,0x96,0x51,0x15,0xf3,0x3c,0x53,0xb4,0x30,0x4e,0x27,0x37,0x4a,0xb,0xd3,0x92,0xc3,0x6a,0x21,0x8,0xa4,0xea,0x0,0x25,0xea,0x4c,0x18,0x72,0x9d,0xe4,0x47,0x9d,0x5d,0x0,0x5e,0x95,0x4,0x95,0xe5,0x3e,0x8e,0x36,0xd6,0xc4,0xbd,0x92,0xe3,0xf4,0xea,0x59,0x2,0xb9,0xe2,0x9e,0x5c,0xc5,0x15,0x84,0x1c,0xd6,0xee,0x14,0xb1,0xb9,0xe4,0x5a,0xea,0x9,0xb6,0x33,0x56,0xaa,0x7f,0x4c,0x94,0x51,0xbb,0x77,0xa9,0x9b,0x6e,0xae,0xb4,0x51,0x46,0x66,0x21,0x9d,0xcf,0xa0,0xaa,0x59,0x1,0x97,0x66,0x90,0x46,0x6,0x4e,0x96,0xfb,0x38,0xdb,0x18,0x13,0xf7,0x4a,0x8e,0xe5,0xd5,0xb,0xdf,0xa1,0x6d,0x21,0xe4,0xb4,0x9f,0xd1,0x64,0x45,0xbb,0xa,0x21,0x58,0x27,0xcf,0x66,0xbc,0xe0,0x33,0x2f,0x4,0xab,0x34,0x65,0x72,0x69,0x72,0x81,0x89,0x2b,0xe9,0xf6,0x4e,0x77,0xbd,0x7e,0xef,0x10,0x33,0x6d,0x58,0x1c,0x3,0xf5,0x31,0x36,0x79,0xb2,0x73,0x42,0x8b,0x76,0x67,0x6a,0x1b,0xfd,0x59,0xb6,0x3b,0xf6,0x75,0x1c,0xcb,0xab,0x17,0x9a,0x4c,0x7d,0x50,0x80,0x94,0x33,0xfa,0xc0,0x30,0xe2,0x80,0x10,0x3a,0x16,0xc8,0x13,0x43,0xa0,0x6f,0xc6,0x36,0x7d,0x69,0x2e,0x5,0x6d,0x58,0x4c,0xe,0x39,0xae,0x18,0xc5,0xf8,0x74,0x36,0x4e,0x88,0x75,0xf7,0x95,0xf0,0xb,0x77,0x1b,0xfd,0x59,0xb6,0x3b,0xf6,0x55,0x9c,0x1f,0x95,0x77,0xc2,0xe,0xe2,0x9f,0x0,0x3,0x6e,0xa4,0xcf,0x75,0x91,0x2a,0x23,0xe0,0x25,0x82,0x96,0xbc,0x17,0xf5,0xbb,0x9e,0x24,0x97,0x5d,0x90,0x90,0xa,0xae,0x21,0xa7,0x9d,0x70,0x4a,0xf7,0xe5,0x35,0x66,0x3e,0x46,0x42,0xbd,0x3,0x16,0xb9,0x91,0x11,0x9c,0x75,0x3e,0x50,0x20,0xcf,0x5e,0x72,0x91,0x3b,0x4f,0x99,0xa7,0x32,0x8b,0x2,0x1c,0x66,0x45,0xe,0x23,0x0,0x3b,0x2d,0x26,0x37,0x45,0x0,0x4e,0x18,0x53,0xa4,0xc8,0x58,0x9a,0x90,0x76,0x3e,0x46,0x72,0xd9,0xbb,0x42,0x7a,0x3c,0xb4,0x2c,0x11,0xf3,0x45,0x4e,0xd3,0x22,0xf7,0x8c,0x19,0xf3,0x28,0xd,0xb2,0x2,0xf7,0x8c,0x19,0xf1,0x51,0xea,0xea,0x9d,0x70,0xdb,0x78,0x50,0xc,0x2b,0x23,0x9d,0x35,0x84,0x7d,0x6b,0x6a,0xcd,0xf1,0x39,0x49,0x49,0x1c,0x8a,0xe2,0xdf,0xc5,0xaf,0xc5,0x57,0xe2,0x1b,0xf1,0xd5,0x9b,0xba,0xf1,0x53,0xf1,0x3b,0xf1,0x33,0xf1,0x33,0xf1,0x3b,0xf1,0x53,0xc9,0xfb,0x83,0xf8,0x7,0xad,0xcd,0x5f,0x84,0xa5,0x6e,0xfe,0x33,0x2c,0x7d,0x13,0xd3,0x57,0xe2,0xff,0xc2,0xdf,0xfe,0x47,0xfc,0x63,0xf2,0x50,0x6d,0xd3,0x51,0x3,0x25,0x35,0x80,0x64,0x41,0x8d,0xa7,0x23,0x4f,0x3f,0x49,0xf2,0x35,0x5d,0xdb,0x2c,0x1f,0x6b,0xed,0x49,0x9a,0x59,0x24,0xfd,0xe3,0xee,0xb2,0xb5,0x74,0xc3,0x34,0x28,0xad,0xec,0x3b,0x47,0xb4,0x54,0x97,0x8d,0xf5,0x56,0xd6,0xf8,0x40,0x81,0x2,0x97,0x32,0x7b,0x26,0x8,0x47,0x5b,0xa0,0xae,0x23,0xf6,0x14,0x39,0x90,0x31,0xc1,0x56,0x3a,0x2b,0x8,0xc1,0x3c,0xc7,0xc,0xed,0x32,0x58,0x29,0xef,0x74,0x45,0x75,0xe3,0xbc,0x61,0x5,0xb8,0xe5,0x94,0x7b,0xee,0x39,0x95,0xc1,0xee,0x29,0xf9,0x18,0x86,0x59,0xba,0xcc,0x83,0xec,0x45,0x89,0x16,0x6d,0x8e,0x95,0xf1,0x8f,0xae,0xa2,0x1c,0x64,0xf0,0x71,0x17,0x4f,0x1a,0xf7,0xb2,0xaa,0xd4,0xa6,0xe6,0xba,0xd9,0xa3,0x9e,0xa9,0xfb,0xce,0xf2,0xb1,0x2c,0x71,0xa7,0x4,0x37,0x84,0xc0,0x88,0xea,0x1f,0x77,0x97,0xad,0xd,0xa7,0xe0,0x24,0x9e,0x2,0x21,0xb8,0xa3,0x49,0xd9,0x51,0x57,0xf0,0x38,0x8e,0x9c,0xd,0xde,0x73,0x5,0x1a,0x1a,0x5,0x46,0x28,0x6b,0xf1,0x99,0x4,0xd6,0xd0,0x59,0xe9,0xac,0xf2,0x2f,0xe7,0x33,0x95,0x88,0x75,0x64,0x45,0x26,0x83,0xb1,0x29,0x2,0x50,0x67,0x95,0x1e,0x3d,0x56,0x35,0x3b,0xc5,0xc8,0xc7,0x70,0x0,0x53,0x0,0x3d,0x3e,0x6a,0xb5,0x44,0xcb,0xdc,0xd1,0x8f,0x7c,0xb1,0xb1,0x0,0x54,0xd9,0x13,0x82,0x12,0x1d,0x2a,0xf2,0x5d,0x39,0x92,0xf2,0x76,0xaa,0x39,0x1e,0x6a,0x9c,0x4c,0xef,0x7e,0x72,0xf9,0x58,0x3d,0x95,0x22,0x80,0x46,0x55,0xff,0x78,0x42,0xd9,0x5a,0xa4,0xae,0x7b,0x2d,0xd5,0x9e,0x8e,0xb,0xc,0x61,0x95,0x86,0xb2,0xbc,0x1f,0x8,0x21,0x4,0x7,0xb2,0x57,0x61,0x69,0x55,0x72,0x7a,0x42,0x15,0xcb,0x9c,0xc9,0xd4,0x91,0xc4,0x74,0x56,0x57,0x91,0xe8,0x64,0x9c,0x3d,0x6b,0x52,0xdc,0x54,0x1,0x78,0x62,0x89,0x26,0x4d,0x96,0x34,0x1,0xd0,0xf3,0x31,0x52,0x2a,0x9f,0x5a,0xf7,0xdb,0x97,0x6b,0x5d,0x64,0xf3,0x31,0x60,0x41,0x8,0x1e,0xd8,0x67,0x59,0xc2,0xba,0x25,0x86,0xe1,0xfb,0x53,0x55,0xe,0x36,0x58,0x60,0x12,0x5,0x2a,0xa4,0xa,0x40,0x62,0xf9,0x58,0x43,0x0,0xf2,0x3c,0xb3,0xa1,0xfb,0xc7,0x9d,0x65,0x6b,0x6d,0x2c,0xae,0x1a,0x97,0x7d,0xd4,0x9e,0xdc,0x8c,0xb7,0x9,0xca,0xf4,0xb9,0xe7,0x8e,0x96,0xd4,0x1,0x6a,0x54,0x28,0x90,0xa3,0xec,0xd8,0xc2,0xd6,0xb3,0x4f,0xdc,0xeb,0x72,0x20,0x5f,0x29,0x0,0x51,0x8d,0xf2,0x82,0x8e,0x43,0x6a,0xf9,0x18,0x89,0x4a,0x60,0x1a,0xc0,0x1e,0xb,0x0,0x42,0xb0,0x11,0xec,0xff,0xca,0x97,0xec,0x6,0xe,0x7,0xad,0x0,0xc2,0x21,0x8d,0x60,0xd0,0xa6,0x8,0x40,0x42,0xf9,0x58,0x96,0xa9,0x1a,0x71,0xc6,0x5b,0x66,0xd0,0xb7,0x5d,0xb6,0x56,0x7d,0xb7,0x14,0x99,0x6f,0x33,0x66,0xcc,0x83,0xa,0x2b,0xb1,0x13,0xe7,0x1f,0x8,0xc1,0x36,0x3d,0xe,0xb9,0xa1,0x1f,0xb9,0x4e,0x42,0x74,0x6e,0x4c,0x47,0xa,0x7a,0xb4,0x35,0x5d,0xc8,0xe4,0x89,0x4f,0x25,0x0,0x89,0x20,0xb3,0x63,0xbc,0x16,0x23,0x5d,0xc6,0x79,0x1f,0x59,0xc0,0xde,0x30,0xf1,0x5e,0xa6,0x99,0x81,0xda,0x7d,0xee,0xd8,0x21,0x4f,0x81,0x73,0xb,0x99,0x4,0x21,0x68,0xb1,0xa1,0xbb,0x56,0xb8,0xa1,0x12,0x58,0x92,0x4a,0xcb,0x47,0x4e,0xb2,0x74,0xdf,0x55,0x3e,0x16,0x80,0xb1,0x5a,0xf8,0x21,0x94,0xd9,0xb1,0x15,0xc3,0x63,0x97,0xad,0x75,0xed,0x71,0xeb,0xe4,0x28,0x50,0xd1,0x34,0x8d,0xa6,0xaa,0x26,0xf2,0x12,0xbc,0xd5,0xb1,0x97,0x4c,0x59,0x6,0xed,0xa4,0xea,0x89,0xee,0xae,0x4a,0x5d,0x7f,0xb2,0x8,0xc0,0x8d,0x95,0xc9,0x6b,0xf7,0xe2,0x86,0x3d,0x72,0x2c,0x70,0x27,0x83,0xe0,0xed,0xfb,0xc,0xcd,0xdf,0xec,0x7c,0x8c,0x4c,0x65,0xef,0xce,0xe9,0x0,0x23,0x1e,0xa5,0xbe,0xd5,0x8e,0xb7,0x80,0xd3,0x60,0x18,0x59,0x51,0xa6,0x6c,0x97,0x9e,0x10,0xec,0x29,0x4e,0x89,0x3c,0xe3,0x74,0x15,0x46,0x2a,0x77,0x9,0xe5,0x63,0x39,0xd3,0xe1,0x54,0x16,0xe8,0xb0,0x42,0x47,0xf7,0xf,0x98,0x65,0x6b,0x9d,0x53,0x30,0x31,0xed,0x5c,0x21,0x58,0xd1,0x31,0x40,0x5b,0x9,0x94,0xf7,0x97,0x25,0xe8,0x95,0x21,0x1c,0x49,0xad,0x3b,0x21,0x9d,0x55,0xd1,0x40,0xb2,0x8,0x40,0x89,0x21,0x47,0xe4,0xf5,0x5c,0x4a,0x4b,0xad,0xec,0x2,0x43,0x6e,0xed,0x1c,0x89,0xe9,0x89,0xa1,0x71,0x3e,0xc6,0x5b,0xed,0xe5,0x27,0xc6,0xa1,0x93,0xf6,0x5c,0xa9,0x5d,0x53,0x60,0xc2,0x6,0x15,0xc5,0x6c,0xd8,0xe,0xa2,0xf4,0xa6,0xa,0x80,0xab,0x42,0x2d,0x72,0x21,0xda,0xd4,0xde,0x92,0x43,0x21,0xd8,0xb7,0xc2,0x4f,0x49,0x9c,0x82,0x5b,0xe9,0x61,0x58,0xb,0x45,0x68,0xa4,0xbc,0x5,0xe7,0x46,0xbf,0x2e,0x75,0x33,0x50,0x8,0x72,0x94,0xa9,0xf3,0x14,0xc7,0xf6,0x48,0x25,0xf0,0x4e,0x8a,0x91,0x23,0x9d,0x95,0x2,0x87,0x51,0x52,0x5b,0xfa,0x34,0x29,0xcf,0x5f,0xa7,0x9,0x8c,0xe2,0xa7,0x7f,0x5f,0x1,0x93,0x6b,0x86,0xac,0x91,0x63,0x37,0xca,0x7a,0x95,0x6,0xc8,0xad,0x16,0xb8,0x74,0x1d,0x16,0x29,0x9f,0x26,0x0,0xae,0xf2,0xb1,0xb1,0x12,0xd8,0x94,0xb1,0x40,0xf2,0xd0,0x23,0xda,0x69,0xa9,0x5b,0x72,0xa,0x8e,0x18,0x46,0x70,0xd,0x67,0xd4,0x59,0xa0,0xc0,0xad,0x92,0x75,0x68,0x26,0x80,0x2d,0x85,0x35,0xbb,0xea,0x8a,0xf1,0x8,0xcf,0x9c,0x2b,0xfa,0x45,0x27,0x34,0x97,0xae,0x14,0x41,0x2f,0x87,0x85,0xa3,0x53,0x80,0xa0,0x2f,0xb,0x31,0x7b,0xe4,0x9c,0x1,0x13,0x1a,0x46,0xf4,0xc8,0x49,0x9c,0xa1,0x17,0xe,0xc4,0x72,0x2c,0xff,0x29,0x2,0xe0,0x2a,0x1f,0x8b,0xa2,0xf6,0x55,0xe5,0x1b,0x1a,0x29,0x67,0x1b,0x53,0xca,0xd1,0x75,0x4c,0x20,0x28,0x4c,0x97,0x54,0x12,0xcc,0x3e,0x8b,0x97,0xfc,0x87,0x3b,0xa7,0x6d,0x89,0xe7,0x94,0x94,0x4d,0xe9,0xde,0xd8,0xfd,0x3d,0xbd,0xdf,0xd4,0x24,0x6b,0xfd,0xe9,0x57,0x8,0xc1,0x39,0x43,0x86,0x5a,0x75,0x64,0x8b,0xa3,0xd8,0x17,0x4f,0x34,0x98,0x30,0xa1,0x41,0xdd,0x76,0xc4,0x7b,0x7a,0xa3,0x33,0x48,0x72,0x8a,0x56,0xfc,0x6d,0x5b,0x59,0x61,0x89,0xf1,0xb7,0xec,0xf8,0x41,0xc2,0xb3,0xf,0x68,0xb1,0xc4,0x12,0x2d,0xb9,0xd1,0x5a,0x1c,0x63,0x3d,0x8e,0x34,0xa1,0xee,0x8f,0x6d,0x9a,0x2a,0xc,0xc2,0xdd,0x7b,0x39,0xd1,0x5c,0xda,0xa4,0xc1,0x84,0xb1,0xda,0x26,0xdc,0xfe,0xd0,0xb4,0x9a,0xd4,0x30,0x36,0x36,0xe9,0xa5,0x4f,0x1c,0xfb,0x52,0xdf,0x49,0xd9,0xec,0x92,0xbc,0x8c,0x5a,0x9b,0x16,0x65,0xae,0xe8,0x53,0x96,0x77,0x6c,0x51,0x66,0xcc,0x63,0xcc,0x31,0xee,0x99,0xf,0x6d,0xb8,0xe9,0xf1,0x80,0x53,0xb1,0x65,0x5d,0xea,0x17,0xa8,0x32,0x8e,0x72,0xd8,0x42,0xa0,0xa8,0x5,0x4a,0x68,0x87,0x7d,0x1f,0xeb,0xec,0xbd,0xb0,0x10,0x24,0xc,0xa5,0x6d,0xee,0x88,0xc0,0xe1,0x3c,0x8c,0xdb,0xa9,0x4f,0xc5,0xd2,0x8c,0x83,0x67,0x28,0x70,0x26,0x87,0x6a,0x9b,0x67,0x8a,0x14,0xe3,0x28,0x25,0xee,0x39,0x65,0x9e,0x3c,0x17,0x5a,0x30,0xcc,0x86,0x3e,0xa1,0x3c,0xda,0xa,0xa0,0x11,0xab,0xbb,0x6d,0x55,0x2b,0x49,0xb2,0x64,0x9e,0xec,0x11,0x4d,0x2f,0x91,0x65,0xdc,0x79,0x42,0x8e,0x11,0x8b,0xa,0x9c,0x3d,0x21,0x7,0x4c,0x62,0xce,0x8c,0x2b,0xc0,0x2c,0xa0,0x25,0x7,0x4a,0xa6,0xff,0x8d,0xea,0xdb,0x13,0x82,0x53,0x3a,0x94,0xf5,0x42,0x72,0xd6,0x9d,0xed,0xb3,0xf7,0xce,0x68,0xb1,0xa2,0xd7,0x1e,0x62,0x3e,0xb0,0xea,0x65,0xc,0xde,0x19,0xd,0x4a,0x66,0xe4,0x9e,0xab,0x17,0x6c,0x51,0xb7,0xfc,0xde,0x39,0x5,0x32,0xdd,0x13,0x42,0x8,0xf6,0xac,0x52,0x94,0x2a,0x4,0x36,0x4f,0x97,0xd,0x63,0x82,0x97,0xa6,0x82,0x5f,0xb8,0x11,0x77,0xa9,0x80,0xd,0xdc,0xef,0xfc,0xac,0x9b,0x42,0xa2,0x0,0x9c,0xa9,0x2,0x20,0x4b,0x64,0x2c,0x52,0xa7,0xc5,0x84,0x9,0xcd,0x58,0x7,0x30,0xb4,0x8a,0x19,0xe,0x5e,0x2a,0xf2,0xac,0x68,0xdd,0x7d,0xe3,0x94,0xdf,0xae,0x6e,0x45,0x38,0xef,0x6c,0x9f,0xbd,0x97,0x1c,0x97,0xbb,0xa2,0x1c,0x4b,0xb1,0xe2,0x5c,0x91,0x6,0x5c,0xab,0xd1,0xfb,0x94,0xa9,0x59,0x7,0x4f,0x2e,0x2a,0x2e,0xae,0x84,0xf3,0x84,0xc,0xd4,0xf2,0x5a,0xf5,0xb4,0x85,0xa8,0x43,0x6e,0x16,0x1,0x60,0x9e,0x6e,0x54,0xeb,0x58,0xfa,0x2e,0x2a,0x9f,0x48,0x0,0x82,0x2d,0xa0,0x67,0x6c,0x1,0x70,0xab,0x70,0x4a,0x72,0x9d,0x71,0x5a,0x1,0xaf,0x5e,0x1,0x78,0xd4,0x2,0x3c,0xc9,0xfe,0xd5,0x53,0x4e,0xe3,0x7b,0x43,0x99,0x34,0x16,0xb9,0x89,0xa3,0xf7,0x29,0x53,0xb7,0x22,0x95,0x3,0x52,0x1c,0xa0,0xb4,0x69,0x3b,0x8a,0xdf,0xf5,0x64,0x6c,0xc2,0x6a,0x90,0x67,0x6b,0x14,0xae,0x1b,0xd3,0xe6,0xc4,0xbd,0xba,0x39,0x4,0xa0,0x62,0x24,0xa4,0xee,0xc6,0x29,0x99,0x6f,0x16,0x80,0x23,0xa9,0xf2,0xed,0x27,0x72,0x3a,0x76,0xa1,0xac,0x54,0x9d,0xd6,0x35,0xbc,0x34,0xa8,0x1b,0xdd,0xda,0xd5,0xd3,0x8d,0x1d,0x1e,0x0,0xdb,0x3,0x6e,0x75,0xdb,0x3a,0x7b,0xaf,0x2b,0xc1,0x9d,0xc4,0x33,0xfc,0x62,0x80,0xca,0x11,0xbd,0x1f,0x97,0xa7,0x79,0x71,0x3a,0x88,0x4b,0x3c,0x6a,0x8e,0x54,0x4b,0x0,0x28,0xd3,0x57,0x0,0xef,0x87,0xd0,0x89,0x8c,0x1,0x5a,0x6f,0xd3,0xd2,0x33,0x75,0x53,0x4,0x60,0x68,0xa8,0x94,0xcf,0x71,0x70,0xcc,0x54,0x2d,0xbf,0x6b,0x55,0x44,0x32,0xea,0x9e,0x71,0xce,0x88,0x81,0x96,0x84,0x62,0x71,0x66,0x34,0x6a,0x1c,0x2a,0x5f,0x91,0x1e,0x5d,0xb5,0x9e,0x1c,0x79,0x5e,0x34,0x9c,0xd0,0x56,0xa,0xf,0x6c,0x44,0x2f,0x58,0xa2,0xe3,0xfd,0xdd,0x71,0xf6,0xde,0x39,0x4f,0x14,0xc9,0xb1,0x99,0x7c,0x86,0x1f,0x1f,0x79,0x64,0x51,0x6f,0x23,0x37,0x25,0xe9,0x22,0xe1,0x24,0x4e,0xcb,0x30,0x26,0x6f,0x92,0xbc,0x5,0xb0,0x6b,0x1c,0x43,0x95,0x18,0xb6,0x41,0x51,0x73,0x65,0xa7,0x1e,0xf3,0x64,0xfa,0x32,0xec,0x38,0x9c,0x44,0x25,0x70,0x97,0xbe,0x1e,0x35,0x1d,0xc6,0x4c,0x7f,0xe2,0x58,0x67,0xf5,0xdc,0x50,0x97,0x0,0x1c,0x71,0x45,0x45,0x35,0x86,0xf4,0xa,0x14,0x9,0x8b,0xd5,0x76,0x50,0x73,0x58,0xee,0x45,0xc1,0x69,0x7c,0xd0,0xd7,0xd0,0x78,0xfd,0xec,0xbd,0x28,0x3f,0xb7,0xa1,0x3c,0xdd,0x38,0xc3,0x8f,0x1c,0x15,0x86,0x7a,0x9b,0x70,0xb9,0xae,0xa9,0x41,0xce,0xec,0x3b,0x8f,0x9e,0x94,0x31,0x8,0xb6,0x12,0xc8,0xba,0x59,0x99,0x20,0xa5,0x77,0x5a,0xc5,0x8d,0x54,0x1,0x68,0x71,0x40,0xde,0x9d,0xaa,0xfe,0x7e,0xb1,0xb8,0x54,0x99,0x30,0x76,0x4,0x85,0xdb,0x95,0xfb,0x80,0x3a,0x9b,0x94,0x95,0x1,0x2f,0xd2,0x35,0xaa,0xef,0x19,0x65,0x52,0x95,0xe5,0xee,0x36,0xbd,0xb3,0x5c,0xeb,0x45,0xd6,0x93,0x77,0x7c,0xab,0x85,0x9a,0x8d,0xb,0xf0,0xcc,0x85,0xe1,0xd6,0xb9,0xb4,0x7c,0x79,0x8b,0xb1,0xbf,0xc0,0x61,0x6,0x3e,0x99,0x5,0xa1,0x13,0x27,0x58,0xd,0xb1,0x9e,0x76,0xce,0xd7,0x3a,0x3d,0x26,0x4a,0x1d,0xa0,0x77,0x82,0x5e,0x39,0x62,0xc4,0x58,0x73,0xe8,0x97,0xe5,0x8,0xc6,0x56,0x8a,0xe3,0xc,0x3f,0xe8,0x93,0x13,0x22,0xb6,0x86,0xb9,0xd5,0xf,0x6d,0xd6,0x5d,0xc7,0x9a,0x58,0xac,0xa6,0x46,0xbe,0x58,0x67,0xef,0x65,0x17,0x0,0x16,0xb9,0x91,0x68,0x76,0x92,0x19,0x98,0x53,0xc2,0x4a,0x6b,0x8c,0x80,0xbe,0xe6,0xd1,0xb4,0xfc,0xe6,0x89,0xb,0x7e,0xdc,0x8b,0x5a,0x98,0x73,0x78,0xf5,0xfd,0xf2,0x35,0x4,0x4e,0x37,0xf5,0xe8,0x9a,0xf0,0xdc,0x83,0x96,0x2c,0x65,0x7d,0x43,0x89,0x25,0x23,0x70,0xf6,0x2a,0xea,0x95,0x3a,0x29,0x76,0xe5,0xbe,0x9b,0x50,0x9b,0x8d,0x33,0xce,0xed,0xd2,0x24,0xd3,0x6b,0x2,0x66,0x38,0x8d,0x2f,0x8b,0x0,0x50,0xb7,0xf2,0x5c,0x92,0x81,0xa0,0x8d,0xd9,0xce,0x34,0xf9,0xfe,0xc0,0xca,0xc6,0x48,0x1e,0x83,0x51,0x88,0xf6,0x80,0x5a,0xf4,0x33,0xdc,0x0,0x47,0xac,0xb3,0xca,0x48,0x5a,0x39,0x2d,0xe,0x3,0x38,0x4e,0x79,0x69,0xae,0xb4,0xca,0xc9,0x9b,0x9f,0x28,0x86,0xc0,0xd3,0x9b,0x26,0x7d,0x38,0x55,0x1d,0x5f,0x62,0xc4,0x13,0x23,0xc5,0x91,0xbd,0xce,0x90,0x35,0xd6,0x19,0xc5,0x68,0xb,0xd7,0xb4,0xa3,0x9f,0x4e,0x1b,0x69,0x87,0x73,0x65,0xf5,0x6b,0x2,0xc3,0x57,0xdb,0xa,0x9e,0x1c,0x13,0x96,0xe3,0x9a,0x11,0x23,0xee,0xa5,0x76,0x70,0x17,0x46,0x18,0x3c,0xcb,0xed,0x23,0x8,0x5c,0x59,0x93,0xef,0x6d,0x8d,0x3,0x6e,0xe3,0xf7,0x38,0x41,0x0,0x1e,0xa9,0x9,0x41,0x4d,0x29,0x23,0xd1,0xe6,0x3a,0xfa,0x69,0xad,0x0,0xeb,0x72,0x5,0x38,0xa,0x70,0x1,0x69,0x8e,0xfa,0x4a,0xaa,0x72,0xf8,0xda,0xda,0xc4,0x99,0xe5,0x98,0xed,0x33,0x78,0x5a,0x4c,0xe8,0x53,0x65,0x1c,0xab,0x95,0x96,0xaf,0xe3,0x92,0x7,0xe6,0xd9,0x82,0x18,0xe7,0x33,0xaa,0x9d,0xad,0xd1,0x67,0x8f,0x3d,0xfa,0xd1,0x7b,0xcb,0x3e,0x8f,0x8c,0xa9,0x9b,0xd1,0x91,0xda,0x9b,0xbb,0xcf,0x90,0x62,0x60,0xe4,0x4a,0x70,0x67,0x9d,0x11,0x6b,0xac,0x33,0x96,0x77,0xba,0xe7,0x30,0xfa,0xe9,0xd6,0x1,0xb2,0xe,0xce,0x95,0x12,0xc1,0x13,0xa9,0x8,0xf1,0xb9,0xf4,0xf9,0xb4,0x43,0x11,0x68,0x4b,0x90,0xb6,0x24,0xa5,0x3e,0xa6,0x89,0xd2,0x4e,0x2f,0xd7,0xe4,0xa8,0x15,0x64,0xd,0x43,0x8d,0x3,0xc3,0x9e,0x5e,0xa7,0xc1,0xd8,0x3e,0xbb,0x8c,0x9c,0xb2,0x33,0x76,0x19,0x72,0x4a,0x8f,0xbe,0xb6,0xf7,0xe9,0x2,0xe0,0x38,0x82,0xc5,0x3e,0x83,0x87,0x2,0x4b,0x4c,0x58,0x96,0x48,0x83,0xed,0xeb,0xe8,0xb1,0x44,0x9e,0x36,0x67,0xc9,0xf1,0xf8,0xec,0x1,0xc4,0xc0,0x30,0x8b,0xf4,0xb8,0x8a,0x10,0x89,0x4,0x1,0xa8,0xca,0xf4,0xcf,0xdd,0x18,0x53,0xe4,0x90,0xfb,0xe8,0xe7,0xa7,0x5e,0xc8,0x1e,0xd8,0x12,0x82,0x6d,0x1e,0xe4,0x1b,0xf1,0x2c,0xf1,0xb9,0x92,0x51,0x85,0x47,0x17,0x80,0x53,0x29,0x32,0x15,0xe3,0x4,0xad,0x1c,0x37,0x46,0xc5,0x40,0xa5,0x7e,0x8f,0xa3,0xc2,0x90,0x2d,0x0,0x9b,0xb4,0x79,0x51,0x85,0x80,0x1,0x5b,0xe,0x57,0xcf,0x1,0x2f,0x6a,0x5d,0x2f,0xca,0xc0,0x1,0xdb,0xc9,0xca,0x60,0xf2,0x1,0xc,0xe6,0x19,0x3c,0x5a,0x5,0x75,0xa7,0xaf,0x83,0xa,0x95,0x54,0x5,0x76,0x1f,0xd4,0x34,0x39,0x1e,0xe8,0x93,0xa7,0xe7,0xda,0x2,0xde,0x6f,0x81,0x2c,0xd0,0xe0,0x80,0x86,0x9e,0xb7,0xc7,0x2,0x27,0x7a,0x5d,0x5b,0x27,0x44,0x1a,0x64,0xa9,0xcd,0x7,0xff,0x2b,0xd3,0x72,0xef,0x38,0x76,0x2d,0xa7,0xc,0xa6,0x59,0x61,0xc8,0x95,0x3c,0x9d,0xe3,0x80,0xbe,0x62,0xb5,0x3f,0x73,0x65,0xe4,0x7,0xee,0xf0,0x1c,0xe4,0xf2,0x99,0xc8,0x1b,0x39,0x3,0x33,0xc8,0x14,0x69,0x6b,0x79,0x1b,0x48,0x9d,0xdc,0x3e,0xa7,0xb4,0xc9,0xbb,0xca,0x47,0xc9,0x2d,0x60,0xc0,0x1e,0x7b,0xc,0xe4,0xc2,0x7d,0xc4,0x99,0x10,0x9c,0xb9,0x82,0x37,0xde,0x53,0x4,0x56,0x19,0x6a,0x31,0xf5,0x1f,0x39,0xe1,0x82,0x31,0x2b,0x9c,0x28,0xb9,0x76,0xae,0xa8,0x80,0x6b,0x4e,0xa3,0x7c,0x1e,0x65,0xe2,0xaa,0xaa,0x37,0xcc,0x51,0xbf,0x27,0xc3,0xa4,0x48,0xf0,0xa7,0xa3,0x94,0x4e,0xba,0xa0,0x43,0x8f,0x8f,0x4a,0x91,0xb9,0x8e,0x5e,0xf9,0x92,0xf3,0xd8,0x64,0x9d,0x7d,0x5,0x48,0x15,0x9,0xdb,0xd7,0x51,0x1,0x36,0x99,0xe7,0xc1,0x3e,0xc9,0x23,0x49,0x9,0xfc,0x7e,0xaa,0x48,0x8b,0x34,0x29,0x71,0x16,0xef,0x4b,0xec,0x51,0x65,0xc8,0x9,0xcf,0xe6,0x9b,0x6c,0x75,0x71,0x99,0x1e,0x45,0x6,0xaa,0xfb,0xc3,0xda,0xe,0x5c,0x15,0x7d,0x4c,0xbf,0x9d,0xe3,0x40,0xa3,0x70,0x5,0x78,0x31,0xca,0xa0,0x16,0xb9,0x94,0x5b,0xc9,0xe,0x2f,0xfa,0xa,0xc0,0x88,0x25,0x3b,0x3c,0xd4,0xd0,0x1,0xb2,0x1c,0xc1,0x62,0x73,0xce,0x2c,0x5f,0xc7,0x3d,0xf7,0xe6,0x79,0x7e,0x3f,0x44,0xd,0xb9,0x10,0xe6,0x5,0x15,0x78,0x90,0x40,0x4b,0x29,0xd0,0x75,0x39,0x7,0xc3,0xeb,0xef,0xca,0x81,0xe9,0x6a,0x70,0xe3,0xb1,0x89,0xc8,0x3b,0xea,0xf7,0xd8,0x15,0x86,0xec,0xaa,0x5a,0xb6,0xe,0x70,0xc7,0x2e,0x85,0xa0,0x26,0x70,0x92,0xe,0xc0,0x88,0x22,0xd,0x3e,0x18,0x9b,0xc2,0x34,0x2b,0x20,0x93,0x4b,0x9c,0xe3,0xd0,0xc8,0x6b,0x88,0x2f,0x89,0xb8,0x97,0x56,0x80,0x5a,0x99,0x7e,0x18,0x26,0x8b,0x4d,0x49,0xda,0x8,0x33,0x55,0xd5,0xc,0x3d,0x1b,0x35,0xb4,0x2b,0xfa,0xd8,0x15,0x86,0xec,0x23,0x8e,0x6a,0x1c,0x1a,0xd3,0x78,0x4d,0xf,0x18,0x9b,0xe7,0x7f,0x92,0xe3,0x50,0x5a,0x1,0x27,0x4c,0x78,0xe4,0xd1,0xac,0x43,0xe4,0xc9,0x93,0x27,0x4f,0x9e,0x3c,0x4d,0xc5,0xc,0xf5,0xff,0x7f,0x1c,0x9d,0xee,0x32,0x91,0x98,0xd8,0x32,0x1f,0x95,0x8c,0x5b,0xdb,0x5c,0xd3,0x8e,0x56,0x37,0x4e,0x1a,0x8b,0xf,0x6d,0xd5,0xce,0x5,0xa1,0xae,0x38,0x30,0x62,0xfd,0x7d,0xc0,0x80,0xa,0x45,0x36,0xa5,0x66,0xa0,0x1c,0x13,0x1,0xce,0xe3,0x11,0x32,0x7f,0xf2,0x34,0x9b,0x1d,0xb0,0x24,0xcb,0x89,0x35,0xd5,0xbc,0x73,0x47,0xdb,0x1,0xab,0xac,0xaa,0xf0,0x8d,0xa2,0xea,0xd,0x15,0x8,0x53,0x9e,0xb,0x42,0x81,0x55,0x9,0xb0,0xc6,0xf1,0xaa,0x4d,0x36,0x29,0x52,0xd1,0xc4,0xc9,0x71,0x74,0x8d,0xa7,0xcf,0x3f,0xfd,0x1f,0x18,0x4d,0x4b,0x4e,0x48,0x14,0x80,0x4e,0x1c,0x5b,0xa2,0x9f,0xd7,0x11,0x9f,0xb,0xc2,0xb,0xc8,0xd8,0xdd,0xd9,0xe2,0x55,0x3d,0x7d,0x27,0x2,0x0,0xa5,0xa4,0x93,0x7c,0xa7,0x6e,0x1,0xd5,0xe0,0x9f,0xa7,0x1f,0xfe,0xa,0xd0,0xf7,0x3b,0xa9,0x27,0x4f,0x9e,0x3c,0x79,0xf2,0xe4,0xc9,0x93,0x27,0x4f,0x9e,0x3c,0x79,0xf2,0xe4,0xc9,0x93,0x27,0x4f,0x9e,0x3c,0x79,0xf2,0xe4,0xc9,0x93,0x27,0x4f,0x9e,0x3c,0x79,0xf2,0xe4,0xc9,0x93,0x27,0x4f,0x9e,0x3c,0x79,0xf2,0xe4,0xc9,0x93,0x27,0x4f,0x9e,0x3c,0x79,0xf2,0xe4,0xc9,0x93,0x27,0x4f,0x9e,0x3c,0x79,0xf2,0xe4,0xc9,0x93,0x27,0x4f,0x9e,0x3c,0x79,0xf2,0xe4,0xc9,0x93,0x27,0x4f,0x9e,0x3c,0x79,0xf2,0xe4,0xc9,0x93,0x27,0x4f,0x9e,0x3c,0x79,0xf2,0xf4,0xce,0xf4,0xff,0x58,0x4d,0x50,0xf3,0x40,0x3b,0xbb,0x2,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 -}; - - -static const unsigned char font_normal_png[]={ -0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x8,0x4,0x0,0x0,0x0,0xf6,0x7b,0x60,0xed,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0,0x2,0x62,0x4b,0x47,0x44,0x0,0xff,0x87,0x8f,0xcc,0xbf,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xdb,0xb,0x4,0x13,0x15,0x34,0x44,0xfe,0xef,0x82,0x0,0x0,0x15,0x5f,0x49,0x44,0x41,0x54,0x78,0xda,0xed,0x9d,0x31,0x68,0x24,0x49,0x77,0xc7,0xdf,0x7d,0x13,0x8c,0x61,0x82,0xe1,0x43,0x86,0x9,0x14,0xc8,0xb0,0x81,0x82,0xc5,0x88,0xf,0x5,0x32,0x28,0x50,0xa0,0x40,0x81,0x2,0x61,0xc4,0x87,0xe,0x74,0x66,0x2,0x19,0x64,0x50,0xb0,0x86,0xd,0x2e,0xd8,0x40,0xc1,0x6,0x1b,0xac,0x41,0xc1,0x1a,0x84,0x51,0x20,0x83,0xc,0xfa,0x40,0x98,0x9,0x36,0x50,0x20,0x8c,0xc,0xa,0x14,0x28,0x98,0x40,0x81,0x2,0x19,0x26,0x98,0x60,0x2,0x5,0x63,0x50,0x30,0xc1,0x4,0x3f,0x7,0x5d,0x53,0x5d,0x55,0xdd,0xd3,0xd2,0x6a,0xf7,0xcc,0xde,0xdd,0xff,0xdf,0xdc,0x9d,0xba,0xbb,0xba,0xa7,0xbb,0xfa,0xd7,0x55,0xef,0xbd,0x7a,0xd5,0xf7,0x3,0x26,0xfd,0x9e,0xf5,0x7,0xf7,0xdf,0x98,0x83,0x96,0x75,0xac,0x15,0xac,0xaf,0x5b,0xc7,0x36,0xed,0x24,0x39,0x76,0xd3,0xce,0xa2,0xf5,0x33,0xdb,0x2c,0x9c,0x3f,0x2d,0x53,0x3c,0xd3,0x73,0x8e,0x4a,0xaf,0xa7,0x78,0x9e,0x35,0xbb,0x31,0xec,0x31,0xd8,0x12,0x9e,0xf7,0xa1,0xf0,0xb,0xc5,0x33,0xc6,0xbf,0x19,0x1e,0xdd,0xb5,0x85,0x8a,0xeb,0x4b,0xcf,0x94,0x5e,0xfb,0x6b,0xeb,0xba,0xbf,0x9a,0x36,0xb0,0xa6,0xab,0x6d,0x7c,0x8d,0x6f,0xdb,0xa3,0x99,0x99,0x9d,0xda,0xb6,0x3f,0x66,0xdb,0x4e,0x93,0x73,0xe7,0x47,0x3c,0xfa,0x72,0x93,0x5f,0x9a,0x5c,0x2b,0xc9,0x93,0xdc,0xb6,0xe3,0xe0,0x9c,0xd9,0x9d,0x98,0xbf,0x9a,0xc9,0x71,0xd9,0x99,0x1,0xb,0x96,0x43,0x16,0x38,0xc,0xd6,0x4f,0xd9,0xa4,0xc3,0x7a,0x54,0xc6,0x38,0x63,0x33,0x5a,0xdf,0xe4,0x2c,0x29,0x51,0x2c,0x53,0x3c,0xd3,0x73,0x8e,0x4a,0xaf,0x27,0x3d,0xcf,0x2a,0x7d,0x56,0xa9,0xd1,0xa,0xce,0x1c,0x9e,0x97,0xc2,0x2f,0x14,0xcf,0x18,0xff,0x66,0x78,0xf4,0x5b,0x3e,0x56,0x5c,0x5f,0x7a,0xa6,0xf4,0xda,0x3f,0xf0,0xd6,0xfd,0xd5,0x64,0x40,0xb3,0x70,0x4d,0x17,0xcc,0x61,0x18,0xcb,0xc,0xdd,0xde,0x26,0x43,0x96,0x93,0x73,0xe7,0x77,0x30,0xc7,0x45,0xf2,0x4b,0x93,0x6b,0x25,0x29,0x79,0xcb,0x2,0xdd,0xc2,0x9d,0x27,0xf7,0x68,0x18,0x6b,0xdc,0x1,0x23,0x7f,0xe2,0x5f,0xdf,0x72,0xc5,0x46,0xe5,0x7e,0xbe,0xea,0xec,0xb3,0xf4,0xa8,0xbd,0xf8,0xe8,0x1e,0xb3,0x95,0xd7,0x74,0xe9,0xb7,0x9c,0x38,0x54,0xde,0x72,0x52,0x79,0x7,0x97,0x95,0x77,0x99,0x97,0xdc,0x80,0xa4,0x5e,0x36,0x20,0xc1,0xd3,0xc,0xe3,0x81,0xd,0x8c,0x3a,0xaf,0x2b,0xa,0x7e,0xf9,0x96,0xb,0x4f,0xfe,0xcf,0xe,0xad,0x47,0x16,0xb,0x37,0xb4,0xcd,0x1d,0x70,0xcf,0xb6,0xdf,0xf3,0x92,0x2d,0x63,0xea,0x53,0xaa,0x6b,0x52,0x29,0x3,0xe0,0x8a,0xf9,0xa9,0xfb,0xd3,0xf5,0x89,0x26,0xf7,0xb2,0x1a,0x94,0x8,0xf7,0xc5,0x6b,0xf7,0xbc,0xc2,0x78,0x15,0xbc,0x77,0xab,0xd1,0x6b,0x45,0x25,0x0,0x6b,0x5c,0x63,0x18,0xd7,0xac,0x15,0x4a,0x95,0x1,0x50,0x7e,0x17,0xf9,0xd6,0xe,0xc7,0x9c,0x46,0xf5,0x72,0xc2,0x39,0x9d,0xf8,0x1a,0xc,0x63,0xc8,0x42,0xc2,0x52,0x5a,0xf0,0x25,0x5b,0x5e,0xd3,0xa7,0x81,0xd1,0xe4,0xc1,0xa1,0x5,0xf7,0xc9,0x23,0xd8,0xe4,0x9e,0x25,0x8c,0x25,0xee,0x7d,0x73,0xf6,0x92,0x2d,0x4f,0x3,0x30,0x43,0x8d,0x1d,0xfa,0xee,0x4d,0x7e,0x1a,0x80,0xb8,0x3e,0xb6,0x83,0x77,0x92,0x8a,0xb6,0xe5,0x3d,0xef,0x30,0xde,0xf1,0xce,0x6f,0x39,0xe,0xb0,0x2d,0x3,0xa0,0xc9,0x8d,0xdf,0xd2,0xe4,0xd1,0xbd,0x28,0xcd,0x4a,0x0,0x6e,0xdc,0xfe,0xf2,0xab,0x3e,0x76,0xdb,0x1a,0xf4,0x93,0x4e,0xa7,0xc1,0x88,0x39,0x86,0xcc,0xa4,0x0,0xac,0xd3,0xe3,0x53,0x65,0xc1,0x97,0x6d,0x39,0x60,0x1f,0xe3,0x3d,0x7,0xfe,0xe7,0xd6,0xb9,0xa3,0x15,0x5c,0xec,0x8d,0x67,0x7d,0xcd,0x55,0xc4,0xd7,0x6e,0xa9,0x7e,0xc3,0x6f,0x58,0x7a,0x11,0x0,0x75,0x6,0x34,0x9e,0x1,0xc0,0x22,0x57,0x18,0x77,0xbc,0xa,0x8e,0xab,0x57,0x2,0x70,0xc9,0x7e,0x45,0x23,0x5e,0xe,0xc0,0x7,0xd7,0x6,0x54,0x5f,0xf5,0xe,0x47,0x18,0x47,0xec,0xf8,0x2d,0x6d,0xae,0x30,0x3a,0xc1,0x16,0x7,0x80,0x51,0xa3,0xcd,0xad,0x33,0x3c,0xca,0xa,0xbe,0x6c,0x4b,0x93,0x7b,0x56,0xb8,0xf7,0x68,0x81,0xb1,0xc5,0x25,0x35,0x7f,0xb1,0xf9,0x9b,0x5b,0x67,0xfc,0x15,0x5b,0xb6,0xb8,0x67,0x5,0xa3,0xe9,0x9a,0xea,0xaf,0x7,0x20,0xec,0x0,0xe2,0x37,0x39,0xde,0x97,0x96,0xec,0xb3,0xe2,0x1a,0xf2,0xac,0xe5,0x38,0x9e,0x8a,0xcb,0x2f,0xd5,0x2,0xe4,0x1d,0xc5,0xa,0xc6,0x72,0xd0,0xc5,0x5c,0xf0,0xe,0x63,0x87,0xab,0x22,0x0,0x59,0x93,0x3d,0x98,0x5a,0xf0,0x65,0x5b,0x8c,0x4d,0x46,0x81,0x55,0x90,0x5d,0xe0,0x3b,0x3e,0x7d,0x73,0x0,0x8c,0x5d,0x6,0xc0,0x83,0x6b,0xaa,0x8b,0x55,0xb3,0x88,0xb1,0x49,0xdf,0x1d,0xf9,0xa5,0x2d,0x40,0xd8,0x97,0x53,0x69,0x5e,0x1e,0x70,0xc7,0x9b,0xa0,0x4e,0x56,0x9f,0x0,0xe0,0x97,0xb2,0x1,0x66,0x3,0xeb,0x64,0x76,0xca,0x16,0xf,0xc0,0x2a,0x4d,0x8c,0x35,0xc7,0xdf,0x73,0xe,0x7d,0xde,0xe9,0xa7,0xdd,0xf2,0x29,0x5b,0xdf,0xb8,0xb,0x30,0x8c,0xfd,0xa0,0xe7,0x7d,0x74,0x1d,0xd1,0x8c,0xbb,0x27,0xb8,0x81,0xa0,0x8d,0x4b,0xf7,0x17,0xcb,0x4f,0xb7,0xe6,0xab,0x1,0x58,0x9,0xee,0x7f,0x96,0x5e,0x85,0x2d,0xff,0x3c,0x2f,0xe0,0xa5,0x0,0xbc,0xe3,0x83,0xb7,0x4b,0x7e,0x76,0x5b,0xf2,0x17,0xfc,0xe7,0x18,0x80,0xe,0x23,0xa0,0xe7,0x5c,0x86,0x62,0xc1,0x97,0x6d,0x99,0x7e,0xcb,0xd,0xae,0xbe,0xb1,0x11,0x68,0x18,0xaf,0x18,0x6,0x51,0x82,0x63,0x1a,0x34,0xbc,0x15,0x9c,0x3e,0xa6,0x74,0xff,0x53,0xe5,0x43,0x7f,0xbe,0xa,0x80,0x3a,0x3b,0x9c,0x7,0xf1,0x83,0xf,0xc1,0xbe,0x1a,0xcb,0x3c,0x94,0x1c,0x59,0x15,0x7,0x28,0x3,0x60,0xae,0xa4,0x2d,0x2a,0x2,0xd0,0xf5,0x86,0xfd,0xbc,0xf3,0x49,0xba,0xbe,0x3b,0xda,0xb,0xa3,0x3,0xc5,0x1b,0x29,0x16,0x7c,0xd9,0x96,0xe9,0x0,0x18,0xaf,0xdd,0x9b,0xf6,0xad,0xdc,0xc0,0xcc,0x99,0xdd,0xf5,0x7f,0xb7,0x38,0x63,0xc4,0x88,0xb3,0xc8,0xe4,0xb4,0xa9,0xfb,0x8b,0xe5,0x8b,0x56,0xc0,0x6b,0x77,0x5f,0x55,0x6e,0x60,0xdf,0x39,0x82,0x93,0x9a,0x7c,0x1d,0x1c,0x3f,0xe0,0x81,0x76,0x64,0x39,0x4c,0xee,0xe5,0xd1,0x41,0x18,0xde,0xdf,0x69,0x1,0x80,0xc9,0x11,0x8f,0x81,0x35,0x52,0xed,0x6,0x3e,0x6b,0xf9,0x81,0x49,0x28,0xf8,0x7,0xc5,0xc5,0x7f,0x67,0xda,0xb4,0x1f,0xed,0xcf,0x93,0xb1,0x0,0x3d,0xfe,0xdf,0xaa,0x1e,0xa6,0x8e,0xa1,0xfc,0x68,0x7f,0xc9,0x7,0x83,0x8a,0x8a,0x7,0xe,0xd2,0xf5,0x19,0x3b,0xb4,0xbe,0x61,0xd8,0xc0,0x6f,0x63,0x6a,0xe9,0x70,0x6d,0xd7,0x86,0x36,0xb6,0x73,0xb7,0xb6,0x63,0x97,0xb6,0x93,0x94,0xa9,0xd9,0xa6,0x3f,0xeb,0x86,0x75,0xfc,0x59,0x6e,0x6c,0x6c,0x6d,0xbf,0x96,0xef,0x99,0x56,0x7e,0xc6,0xe,0xac,0x6f,0xd8,0x83,0x1d,0xd9,0x5c,0x70,0x6d,0x7,0xb6,0x67,0x9f,0x5c,0x25,0xbc,0xb6,0x1b,0xc3,0x6,0xee,0x1a,0x72,0xf5,0x4b,0x2a,0xef,0xe1,0x89,0x1,0xa5,0xe9,0x43,0x44,0xe9,0x80,0x57,0x58,0x32,0xde,0x17,0xf,0x72,0x55,0xfd,0x42,0x78,0x5c,0xc3,0xe,0xed,0xda,0x2e,0xfd,0xbd,0x87,0x67,0xf9,0xeb,0xe8,0x97,0x7f,0xb2,0xff,0xb0,0x9f,0xec,0x2f,0x66,0x66,0xf6,0x67,0xfb,0xcf,0xc9,0x60,0x50,0x59,0x9f,0x5a,0xbd,0x5c,0x6,0xbd,0xe0,0x97,0x45,0xdc,0x1f,0x7d,0x34,0xd0,0x30,0x46,0xb4,0x19,0x25,0x25,0xe6,0xb8,0x76,0xe7,0x6a,0x70,0x17,0xf8,0x14,0xb3,0x6c,0xf1,0xd9,0x1b,0x92,0xf9,0x9e,0xf2,0xf2,0x33,0xdc,0xf1,0x9e,0x39,0x8c,0x16,0xfb,0xf4,0x83,0xbe,0x79,0x87,0x5b,0x6f,0x3c,0x76,0xd9,0xa3,0xc6,0x52,0xe1,0x1a,0x78,0x86,0xc5,0x5f,0x35,0xc,0x14,0xef,0x4b,0x7,0xbc,0xc2,0x92,0xf1,0xbe,0x78,0x90,0xab,0xea,0x17,0xc2,0xe3,0x8e,0x22,0xc3,0x3b,0x3e,0xb,0xd5,0x23,0x24,0xd3,0xac,0xea,0x14,0x89,0xf2,0x50,0x49,0xbe,0xde,0xe2,0x92,0x3b,0x2e,0xdc,0x45,0xc5,0x31,0xf1,0xd8,0x50,0xba,0xe0,0x67,0x1f,0x55,0x33,0x76,0xb8,0xf4,0xa1,0xa3,0xa2,0xc1,0x78,0x10,0xf8,0xd4,0xd9,0xd6,0x5d,0xef,0x6f,0xbf,0x29,0x79,0x38,0xe1,0xd6,0x23,0xf6,0x58,0xa3,0x7,0xdc,0x63,0xbc,0x8d,0xc2,0xd6,0x9b,0xde,0xd1,0x82,0x1a,0xc6,0x6a,0x12,0xd4,0x7e,0x1e,0x0,0xdf,0xcf,0xf2,0x18,0xd4,0x68,0xf1,0x31,0xdf,0x0,0x57,0xfe,0xc5,0xe8,0x31,0x76,0xb8,0x78,0x0,0x8a,0x7e,0x75,0x11,0x89,0x14,0x80,0xfb,0x4,0x80,0x4e,0xc4,0x60,0x1c,0x13,0x4f,0x43,0x94,0x5d,0x7a,0xde,0x1e,0xae,0xf2,0x92,0x17,0xb9,0x8e,0x46,0xe1,0x5a,0x6c,0x39,0x17,0x28,0xdd,0x53,0x56,0xbe,0x4f,0x83,0x21,0x6b,0x6e,0x5f,0xc3,0xd9,0xda,0xf3,0xdc,0x2,0xd7,0xde,0x69,0x5,0x63,0x8f,0x8f,0xfe,0xb8,0x59,0xae,0x5c,0x95,0x65,0x7b,0x7b,0x41,0xfc,0x0,0x17,0x6f,0x38,0x28,0x71,0xd0,0xe2,0xb5,0x16,0x17,0x40,0x2f,0x3a,0xae,0x7c,0x5f,0xba,0x76,0xd,0x5c,0x7b,0xdf,0xe4,0xb9,0x6b,0xa3,0x8,0x80,0x1b,0x1e,0x81,0x3b,0xff,0xeb,0x8b,0xd4,0xd8,0xf7,0xee,0xe9,0xc,0x73,0x61,0xb4,0xa3,0x3c,0xb2,0x56,0x44,0x22,0x5,0x60,0x99,0xdb,0xe8,0xd6,0xe3,0x4b,0x88,0x63,0xe2,0x31,0x0,0x43,0x9a,0x81,0x1b,0x98,0xf3,0x98,0x2,0x50,0xe3,0x9a,0x45,0x8c,0xb6,0xdf,0xde,0x63,0xc4,0xe,0xe6,0xf6,0xb4,0x4b,0xcb,0x9f,0xd1,0x77,0x70,0xf5,0x98,0x73,0x81,0x98,0xc,0x80,0xb1,0x8f,0x57,0xd6,0x58,0x8b,0x1e,0xca,0x63,0x90,0x45,0x70,0xce,0x3e,0x35,0x16,0x83,0x41,0x24,0x63,0x97,0x5b,0x5f,0xf6,0x4d,0x30,0xb2,0x31,0x1d,0x80,0xe,0x5b,0x18,0xab,0xc1,0x71,0xd3,0xf6,0xa5,0x6b,0xef,0xa8,0xf3,0xce,0xb5,0x47,0xcf,0x5f,0xfb,0x9c,0xc4,0x5e,0x1a,0xc9,0x55,0x67,0x23,0x35,0xd9,0xeb,0xf7,0xc0,0x63,0x78,0xcd,0xcf,0xd,0xb6,0xf2,0xc4,0x40,0xcb,0x28,0x69,0x84,0xc2,0x98,0x78,0xec,0x53,0x3f,0xb0,0xc4,0xac,0x7f,0x3,0x73,0x1e,0x53,0x50,0xb2,0xaa,0x9e,0xe5,0xb4,0xd0,0xf4,0xbe,0xe1,0xa0,0x64,0x7b,0x56,0x7e,0x91,0xa6,0xbb,0xd5,0x3e,0x75,0x86,0xac,0x50,0x7,0x1a,0xec,0xbb,0xb6,0x63,0x9c,0x4,0x83,0xc1,0x58,0xe1,0x9c,0x7b,0xf7,0xbe,0x4c,0xee,0x23,0xbc,0xb7,0x9a,0x5f,0x7b,0xeb,0x1f,0x7f,0x35,0x0,0xa3,0x24,0x56,0x30,0x7d,0x5f,0xba,0xd6,0x8,0x1e,0xd6,0xf3,0xd7,0x5a,0x9c,0xd3,0xe5,0xc2,0xe1,0x90,0x5e,0x75,0x8,0xc0,0x23,0xb,0xd4,0x53,0x0,0xc2,0xf7,0xfd,0xea,0x85,0x0,0x7c,0x4e,0xcc,0x90,0x30,0x26,0x1e,0x3f,0xa8,0x75,0xee,0xe9,0xbb,0x8e,0x25,0xe4,0x31,0x2e,0x37,0xcb,0x1d,0xd,0x8c,0x53,0xff,0x36,0xc6,0x7b,0xd2,0xed,0x93,0xf2,0xc6,0x1,0x7b,0x2e,0xb0,0xba,0xcb,0x6,0x7d,0x6,0x1c,0x1,0xb7,0xce,0xf4,0xcc,0x6,0x5a,0xe6,0xb9,0x4b,0x7e,0x73,0xd5,0x45,0xe9,0xca,0x0,0xc8,0xd7,0x36,0x82,0x4,0xb,0x22,0x94,0xe2,0xb5,0x51,0x30,0x26,0x5a,0xbd,0x2f,0x5d,0x7b,0x19,0x0,0x59,0xa7,0xfc,0xf3,0x14,0x34,0xeb,0xd4,0x39,0x74,0x70,0x3c,0xb2,0x10,0xa3,0x91,0x19,0x7c,0x93,0x1e,0xff,0xce,0xd,0x5e,0x14,0xbb,0x80,0x34,0x5a,0x9e,0x56,0x52,0x8b,0xb,0xee,0x82,0x7c,0x80,0x95,0x78,0xc8,0x21,0x5a,0x6a,0xec,0xf9,0xb3,0xe6,0x3c,0xc6,0xe5,0x3a,0xae,0xaa,0x8b,0x11,0xb9,0x6c,0x4f,0xba,0x7d,0x52,0x7e,0xdf,0x9b,0x94,0x73,0xf4,0x78,0x4b,0xb,0x73,0xfd,0xe4,0xa4,0xdc,0x7b,0x6a,0x7c,0x8c,0x1a,0xf2,0x5,0x6a,0x2c,0xba,0xfb,0xea,0x70,0x48,0x3d,0x7e,0x47,0xa2,0x3b,0x9d,0xf7,0xd5,0x9c,0xf9,0xf,0xd,0x1f,0x7a,0xd,0xd7,0xce,0x38,0x66,0x6,0x73,0xd0,0x55,0xed,0x8b,0xd7,0x5e,0xda,0x5,0x64,0x35,0x3e,0x2a,0x5,0xa0,0xcb,0x98,0x31,0x1d,0x57,0xb,0xbb,0x3c,0x32,0xf6,0xf8,0xfb,0x50,0xf0,0x5b,0x97,0x31,0xb3,0xea,0xad,0xe4,0xd4,0x8,0x4c,0xa3,0xe5,0xd3,0x47,0xd2,0x8a,0x31,0xf1,0x18,0x80,0x5,0x6a,0xbc,0xa,0x1a,0xa4,0x5a,0x29,0x0,0xcf,0xb1,0xbe,0xcb,0xb6,0x8f,0x2,0x2c,0xe6,0x38,0x61,0xe8,0xbc,0x80,0xdc,0x90,0xbc,0x6,0xce,0xa3,0x21,0xea,0x6b,0x60,0xe0,0xc0,0x69,0xd1,0x61,0xcc,0xd8,0xfb,0x2f,0xc5,0x3b,0x5d,0x72,0x11,0xfe,0x65,0xee,0x80,0x47,0x87,0x72,0xbc,0xd6,0xe2,0x94,0x47,0x70,0x9d,0x60,0xd5,0xbe,0x74,0xed,0x65,0x46,0xa0,0x61,0x7c,0xa,0x2,0xcd,0x5f,0xe0,0xb5,0x58,0x90,0x42,0xb8,0x1f,0xf8,0xca,0xa9,0x1b,0x98,0x46,0xcb,0xab,0x1,0x88,0x63,0xe2,0xb1,0x1b,0x78,0x9,0xc,0x9d,0x3b,0x17,0xf3,0xf8,0xfd,0xba,0x59,0xbf,0xe1,0x25,0xec,0x45,0x4f,0x78,0x70,0x23,0x53,0x5a,0x7e,0x4b,0xcb,0x1a,0x37,0xc0,0x63,0x79,0xae,0xc4,0xaf,0xe5,0x26,0xda,0xdc,0x3,0x7d,0xe,0xb8,0x70,0xcd,0x77,0x9b,0x7,0x37,0xbe,0xb6,0x19,0xf4,0x84,0x8b,0x9c,0x33,0x62,0xc4,0x79,0x90,0x80,0xda,0x3,0x60,0xc0,0x49,0x30,0x3a,0x57,0x2c,0x87,0xef,0xfe,0x4e,0x7d,0xe6,0x20,0x49,0xeb,0x95,0xc7,0xe8,0x36,0xdc,0x6f,0x16,0xcf,0x5d,0x4c,0x86,0x3d,0xf1,0xd1,0xbc,0x43,0xf7,0x10,0xee,0x7d,0x73,0xbd,0x13,0xe4,0xc,0xc4,0x49,0xb5,0x65,0x29,0xb4,0xeb,0xdc,0x70,0x1b,0xc5,0x6b,0xd3,0x96,0x3a,0xbb,0x9e,0x7,0x8e,0x7d,0x4b,0x9d,0xa6,0xcc,0x7f,0x11,0x0,0x79,0xe8,0x71,0xd9,0xfd,0xd0,0xa4,0x9f,0x6c,0x39,0x97,0xce,0x4a,0x72,0xde,0xbb,0x85,0xfc,0xf3,0xb8,0x1a,0x1f,0xd2,0xd4,0x64,0x36,0xdc,0x99,0x48,0x6e,0x6e,0x72,0xb1,0x5b,0xdc,0xb1,0x88,0xb1,0xcc,0xd8,0x3f,0xec,0x47,0x16,0x58,0xe0,0x91,0x66,0x10,0xfe,0x5d,0x64,0xc0,0x36,0xd,0x1a,0x6c,0x33,0x48,0x1e,0xed,0x2c,0x6f,0xfc,0xb6,0xb2,0x72,0x24,0x8f,0xdf,0x4a,0x7d,0x93,0xae,0x4b,0x74,0xbd,0x8d,0xd2,0x43,0xc2,0x73,0x17,0x93,0x61,0x1b,0x2e,0xd7,0x62,0x83,0x9e,0xf3,0x31,0xde,0xfb,0x48,0x64,0x27,0x70,0x2c,0xe3,0xa4,0xda,0x62,0xa,0x6d,0x96,0xbf,0xbd,0x16,0x58,0xfe,0xd3,0x2,0x76,0x2d,0xde,0xfb,0xcc,0xac,0x34,0x65,0xbe,0x14,0x80,0xfc,0x91,0xc6,0x51,0xe6,0xfc,0xaf,0x1e,0x3b,0x98,0x7b,0xc4,0x65,0xd3,0x15,0xa6,0x3,0xf0,0x8a,0xfd,0xa4,0x77,0xbf,0x70,0x11,0xc2,0x9a,0x4f,0x11,0x9d,0xbc,0x2b,0x3,0x2e,0xbd,0x5b,0x34,0xc3,0x85,0x8f,0x16,0xdc,0xb0,0x8a,0x51,0xe3,0x8c,0x8f,0xf4,0x13,0x0,0x3e,0x5,0xe1,0xdf,0x73,0xda,0xec,0x30,0xe2,0x1a,0xa3,0xed,0xcd,0x50,0x2,0xa4,0xae,0x7c,0xb9,0x21,0x30,0x60,0xc3,0x97,0x3,0x63,0xb7,0x30,0x5,0x24,0xb5,0x4c,0xda,0x1c,0x26,0x19,0x82,0xe9,0xb9,0x8b,0xc9,0xb0,0xc6,0x12,0x3,0x96,0x2,0x24,0x5f,0xf1,0x40,0xcd,0xb9,0x71,0x8b,0x53,0x92,0x6a,0x8b,0x29,0xb4,0x46,0x9f,0x19,0x56,0x3,0x33,0x7c,0x7a,0xc0,0x2e,0x37,0xad,0x9f,0xc8,0x98,0x2e,0x1b,0x74,0x38,0x2b,0xbc,0xa1,0xd3,0xc,0xb4,0xa7,0xcd,0xb6,0x3a,0x87,0xc1,0xc5,0x4c,0x2a,0xe8,0xcc,0xbd,0xd7,0x43,0x87,0xc2,0xa9,0xab,0x78,0x58,0xb,0x9a,0xcb,0x95,0xe0,0x26,0x6a,0x18,0x1f,0xd9,0xb,0x7e,0x33,0xeb,0x2,0xe,0xa3,0xf0,0xef,0x88,0x6,0x8f,0x2c,0x30,0x13,0xf8,0xc8,0x61,0xdb,0x33,0x89,0x6a,0x8c,0x9c,0x53,0xb6,0xc8,0x20,0x28,0xf7,0x26,0x78,0x64,0xd3,0xef,0xf1,0xac,0xc4,0x13,0x8a,0xf3,0x13,0xd3,0x64,0xd8,0x2c,0x63,0x8a,0x28,0x52,0x72,0xc3,0x3a,0xc6,0x76,0x90,0xd2,0x96,0x26,0xd5,0x16,0x53,0x68,0x8d,0x77,0xdc,0xbb,0x28,0x87,0x55,0xc6,0x6b,0x5a,0xbc,0xf7,0x61,0xb8,0x67,0x1,0x30,0x7d,0x56,0x4b,0x3e,0x70,0x10,0xe7,0xc2,0x56,0xe5,0xfb,0x84,0xcb,0x47,0xe6,0xa,0x47,0x6f,0xbb,0x20,0x65,0x97,0x35,0x97,0x36,0x7d,0xeb,0x1b,0xb0,0x26,0x17,0xbc,0xc6,0x78,0xcd,0x45,0xe4,0x20,0xd6,0xd9,0xe5,0x53,0x54,0xcd,0xe6,0x82,0xc2,0x9f,0xbc,0x2d,0x90,0x3,0xd0,0x8a,0x82,0x24,0xc5,0x87,0x94,0x1,0x0,0xb0,0x17,0x0,0x30,0x2e,0x1d,0xd,0x4d,0x7,0x84,0xca,0x6b,0x22,0xbe,0xb2,0x38,0x19,0x36,0x6b,0xf4,0x47,0x51,0x2,0xf8,0x1e,0xa7,0x18,0x9d,0xe0,0x71,0xa6,0x49,0xb5,0xc5,0x14,0xda,0x3d,0xe,0xd9,0xe3,0x80,0x9a,0x6f,0x5,0xcb,0x0,0xc8,0x74,0xe5,0x5b,0xf4,0x34,0x65,0x3e,0x89,0xe8,0x14,0x23,0xf2,0xe1,0xdf,0xc9,0xc0,0x41,0x65,0xaa,0x62,0x19,0x0,0x5b,0xee,0x6,0x49,0x3a,0x5,0x68,0xd0,0xe6,0x33,0x46,0x87,0x37,0xd4,0xc1,0x79,0x1f,0x30,0xc7,0xa,0x1d,0x8c,0xe,0x2b,0xcc,0xf9,0xe3,0x6e,0x39,0xa0,0x43,0x2d,0x49,0x3,0xcd,0xc2,0xbf,0x93,0xae,0x60,0xd2,0xb4,0xef,0x32,0xe2,0xee,0x19,0x5d,0x0,0x2e,0xf5,0x2a,0xef,0x2,0x56,0xb8,0xe6,0xa8,0x30,0x9,0x8c,0x27,0x7,0xad,0xd2,0x2e,0xa0,0x78,0xd4,0x1a,0x7d,0x16,0xe8,0x7,0x8f,0xa2,0xc9,0x90,0x39,0x9f,0x5,0x58,0x96,0x54,0x5b,0x4c,0xa1,0x1d,0x51,0xc7,0x78,0xc3,0x35,0x9f,0x9e,0xe8,0x2,0x96,0x3,0xfb,0x61,0x33,0x49,0x99,0x4f,0x22,0x3a,0xc5,0x88,0x7c,0xfe,0x77,0x61,0xe0,0xe0,0x99,0x0,0xe0,0x1f,0xf4,0x63,0x49,0x24,0x2f,0xeb,0xeb,0x57,0xdc,0x65,0x2d,0x31,0x60,0xd5,0x5b,0xc2,0x19,0x8,0x97,0xec,0x73,0x89,0x5,0x0,0x1c,0x30,0x62,0x9,0x63,0x91,0x7b,0xb6,0x92,0xf0,0x6f,0x8,0xc0,0xd7,0x1a,0x81,0x35,0xf6,0x39,0xab,0x30,0x2,0xa7,0xb5,0x0,0xe1,0xb9,0xcb,0x4c,0xc7,0x7,0x56,0x30,0x56,0x18,0x4,0xd9,0xd,0x27,0xdc,0x4,0xd9,0xbf,0xc5,0xa4,0xda,0x62,0xa,0x6d,0x36,0xcc,0xb5,0xc4,0xd0,0x77,0x55,0xd3,0x47,0x6d,0x97,0xe9,0x79,0x4,0x32,0x4f,0x61,0xe8,0x3a,0xae,0x24,0xa2,0x93,0x3e,0xe8,0xf0,0xef,0xc2,0xc0,0xc1,0xb3,0x0,0x68,0x3a,0x8b,0xbe,0xc1,0xe5,0xd4,0x60,0xf0,0x31,0xf7,0x3e,0xb9,0xf9,0x92,0x7b,0x9f,0x50,0xa,0xcb,0x2e,0x8c,0xbc,0x82,0xb1,0xe0,0x27,0x4f,0x9c,0x73,0x40,0x1f,0x2,0xf7,0x29,0xf,0xff,0xb6,0x83,0x2e,0xe0,0xdb,0xb8,0x81,0xc7,0x5f,0xd0,0x2,0x94,0x9d,0x3b,0x2d,0xf3,0xd9,0xbf,0xb1,0x7,0x3e,0xa1,0xc5,0x58,0x2,0x37,0x4d,0xa5,0x3c,0xa9,0xb6,0x98,0x42,0xbb,0x4c,0xf,0xb8,0x61,0xde,0x99,0x99,0xd5,0x79,0x1b,0xed,0x30,0xe0,0x5b,0x1d,0x8,0xa,0x1f,0x74,0xfa,0x77,0xad,0x12,0x80,0x71,0x14,0xef,0x9b,0xb8,0x74,0xe7,0xee,0x21,0x6f,0x4d,0x7d,0x6f,0xb6,0xdc,0x23,0x9e,0x54,0xc4,0xa6,0x2f,0xb7,0x92,0xe4,0xd8,0x2b,0x8c,0xf3,0xff,0x10,0x9,0xc,0x1f,0x74,0xf8,0x77,0x18,0xa8,0x2d,0x7,0xe0,0x20,0x18,0x6,0xce,0xfb,0xac,0xb6,0xaa,0xf5,0xbb,0x5a,0xe6,0xdd,0x8c,0x89,0xae,0x77,0xd1,0xc9,0xdd,0xf5,0xf4,0x41,0x17,0x46,0x8b,0xbe,0x93,0xe5,0x80,0x1,0x70,0xe7,0x82,0x1a,0x4d,0xce,0x83,0x21,0x9d,0x1d,0x7a,0xc0,0x5d,0x60,0x62,0xb5,0x23,0x8b,0x24,0x6c,0x7b,0x16,0xb9,0xf2,0x13,0x48,0xe2,0x76,0x69,0x8d,0xdb,0x60,0x7a,0xcc,0xbc,0x4b,0xa4,0x6a,0x5,0xb1,0x8d,0x2e,0x4f,0x4f,0x10,0xb7,0x8a,0x2c,0x81,0xb4,0x3d,0xb,0xcf,0xb9,0xca,0x2d,0xf0,0xe8,0x2,0x41,0x37,0x8c,0x82,0x11,0xbc,0x6c,0x80,0x6a,0x14,0x98,0xbf,0x5d,0x1f,0x18,0xa,0x3b,0xc4,0x71,0xd0,0x15,0xe6,0xe7,0x5e,0x67,0x50,0xf8,0xe5,0x4,0x80,0x5f,0x76,0xa9,0x32,0xa2,0xe2,0xdc,0xc1,0xc9,0x8d,0x5e,0x97,0x54,0xd0,0x1a,0x2d,0x8c,0x75,0xf7,0xf0,0xe,0x38,0xa4,0xce,0xa1,0x33,0x86,0xf6,0x59,0xc4,0xd8,0xf2,0xce,0xd1,0x1c,0xfd,0x60,0x44,0xf0,0x9e,0x78,0xfe,0xe3,0x66,0x92,0xba,0xb2,0xe3,0xce,0xf2,0xc0,0x2a,0xc6,0x9a,0xfb,0x85,0x6b,0xf6,0x9c,0x49,0xf8,0xf4,0x1d,0x3d,0xfd,0xb1,0x86,0xa7,0xa7,0x6c,0x64,0xdf,0x68,0x68,0xfa,0x34,0xae,0x70,0xc,0x3f,0x1e,0xa2,0xb6,0x8,0xc5,0x78,0x94,0x75,0xa3,0xe4,0xd5,0xbd,0xa,0x5e,0x87,0x12,0xdb,0xed,0xcb,0x1e,0x21,0x53,0xe2,0xcd,0x1b,0xdc,0x0,0x43,0x6f,0xd5,0x2e,0x71,0xf,0xde,0x31,0xc9,0xbe,0x3e,0x32,0x1f,0xc5,0xd3,0x8e,0x4a,0x72,0x7,0x4f,0x39,0xa4,0xee,0xc7,0xcd,0x8b,0x4b,0x93,0x1d,0x67,0x3a,0x4e,0xc0,0xb9,0x8f,0xf6,0xe,0xfd,0xbb,0xb0,0x19,0xbc,0xf1,0xe1,0xf7,0x34,0x4e,0x82,0xb9,0xcb,0x13,0x40,0xba,0xce,0x97,0xee,0xb9,0xe4,0xac,0xbb,0x20,0x59,0x74,0x92,0x49,0x18,0xf,0xbe,0x7e,0x1b,0x0,0xe2,0x6c,0xc0,0x87,0x12,0x1f,0x22,0x4e,0xfe,0x28,0x37,0x47,0xe3,0xb6,0xa7,0xed,0xc3,0x68,0xa1,0x33,0x5f,0x7c,0xf0,0x3d,0x57,0xdf,0x1e,0x80,0x26,0x3,0x1a,0xbe,0x2,0xef,0x19,0x3,0x43,0x2e,0x93,0xa4,0xc6,0x34,0x5,0x64,0x12,0x6d,0x5a,0x65,0xc0,0x2a,0x46,0xcb,0x37,0xc2,0x37,0xec,0x60,0xde,0xb7,0x37,0x1a,0xbc,0x75,0xc1,0x9f,0xec,0x3d,0xbc,0x72,0x95,0x1e,0xe7,0xe,0x56,0x65,0xe3,0x64,0x37,0xdb,0x29,0x49,0xe8,0x9a,0x38,0x4b,0xe7,0xae,0xf1,0x5e,0xe1,0x3c,0x1a,0x3e,0x81,0xa1,0x1f,0xc4,0x7e,0xe0,0x3e,0x48,0x97,0xcc,0x4c,0xd5,0xd,0xf,0xf1,0x98,0x3b,0xff,0x51,0x95,0x3b,0x76,0x5c,0xc4,0xa2,0x98,0x7e,0x51,0x3d,0x41,0x3c,0xae,0xa9,0xda,0x54,0x0,0xe2,0x6c,0xc0,0x75,0xfa,0xdc,0xf2,0x31,0xaa,0x81,0x69,0x0,0x34,0x4b,0x42,0x5c,0x59,0x54,0x24,0x77,0x61,0x43,0xc7,0xbe,0x58,0x5f,0xa7,0x39,0x6,0x93,0xe6,0xe3,0xda,0xcf,0x7d,0xcb,0x67,0xae,0xb7,0x1d,0x12,0xd3,0x26,0x4f,0x4f,0x8c,0xc5,0xe2,0x17,0x7a,0x8,0xc2,0x8f,0xe9,0x8f,0xd7,0xb8,0x9,0xbe,0x48,0x12,0xe6,0xe,0x8e,0x2b,0x1,0x30,0x66,0xd8,0x73,0x2d,0x47,0xba,0xaf,0xc1,0x85,0x7f,0xa8,0xe7,0x2c,0x45,0x47,0xd5,0x78,0xcd,0xb1,0x1b,0x6b,0x80,0x57,0x18,0x3b,0xbe,0xa1,0x9c,0xd,0xda,0x90,0xb,0xb6,0x30,0xf6,0xa2,0x24,0x8e,0xfb,0x28,0x51,0x2c,0x8f,0x19,0x3e,0xbf,0x5,0x8,0x73,0x81,0x28,0x49,0x5d,0x9,0xd1,0x99,0xe5,0xd0,0xb9,0x89,0x71,0x26,0x6f,0x9c,0xa8,0x5a,0xe3,0xd4,0xc7,0xf,0xd3,0x33,0x36,0x7d,0xb7,0x16,0xa6,0xda,0x4d,0x4b,0x11,0xf1,0xa1,0x60,0xa,0x66,0x4d,0x56,0xa9,0x5b,0xae,0x7a,0xca,0xf7,0xcf,0xf2,0xc1,0x55,0x56,0x1a,0x6d,0x2e,0xc6,0x7,0xc2,0x16,0x60,0x3f,0xa,0x89,0x86,0xb9,0x83,0x17,0xbc,0xa7,0xc6,0xfc,0x54,0x0,0xf2,0xa9,0xd1,0x71,0x17,0x50,0x8b,0x46,0x2f,0xca,0x8c,0xb2,0xdc,0xb1,0x6d,0x44,0x3,0x25,0x6f,0x78,0x1f,0xc4,0xd5,0x6b,0x85,0xdf,0x6b,0xbb,0x77,0xfe,0x4b,0x1,0xc8,0x9d,0xe7,0x2e,0x30,0x2a,0x78,0xf6,0xc5,0x6c,0xc0,0x34,0xa0,0x1b,0xe6,0xf2,0xc7,0xa9,0xea,0xb1,0x7b,0x3d,0x6d,0x9e,0xc0,0x42,0x64,0x33,0xa4,0x75,0xd9,0x4d,0xc7,0x2,0xde,0xf0,0x81,0xbd,0x20,0x4f,0x2e,0xd3,0xd8,0x35,0xe9,0xe5,0x93,0x42,0x7a,0x1c,0xb9,0x86,0x35,0x7,0x80,0x29,0x4d,0xe4,0xc8,0x7f,0xa0,0x69,0x9e,0x6e,0x14,0x69,0xb,0x73,0x7,0x5f,0x71,0x5,0xdc,0x95,0xa6,0x59,0x2e,0xd3,0xc0,0x58,0x77,0xe1,0xd6,0xd8,0x8,0xfc,0x54,0x31,0x78,0xb5,0x44,0x9d,0x3a,0x7b,0xee,0x9d,0x3f,0x63,0x9f,0x9a,0x7f,0xcb,0x8d,0xcb,0x20,0x14,0x73,0x47,0x1b,0x63,0xd7,0xb7,0xe,0x75,0xd6,0xe9,0xbb,0xfd,0x69,0x17,0x60,0x15,0x41,0xdf,0x16,0xb5,0x92,0x60,0x4e,0x71,0x2d,0xce,0x6,0x5c,0xa7,0x85,0xb1,0xed,0xc,0xd9,0xaa,0x56,0x65,0xcc,0x2,0x75,0xd7,0x86,0xe,0x58,0xf1,0x5d,0x6d,0x38,0xa,0x1b,0xa7,0xda,0x3d,0x3,0x80,0x3,0xf6,0xf8,0x98,0x64,0xf1,0x36,0x79,0x57,0x88,0x1,0x94,0x5b,0xb3,0x79,0x44,0x9a,0xe8,0x7d,0x2b,0xbb,0xed,0xf3,0xe8,0x9b,0x19,0x71,0xee,0xe0,0x6b,0xea,0xd4,0xd8,0xf0,0x43,0x45,0x61,0xf3,0xf9,0x99,0x11,0x63,0x6f,0x4a,0xc6,0x6e,0xe0,0xa8,0xe4,0x9d,0xc7,0x47,0xe1,0xc2,0xe3,0x5a,0xee,0x5d,0x9a,0xf7,0x73,0x14,0x72,0x8f,0x20,0x6b,0xf4,0xf3,0x8f,0x48,0x8c,0xb9,0xf2,0x61,0xa9,0xd4,0x8,0x2c,0x4b,0xfa,0x9e,0x64,0xe6,0x65,0x19,0x7e,0xb,0x4f,0x7a,0x40,0x71,0x36,0xe0,0x11,0x43,0xa0,0x5b,0xb0,0xba,0x8a,0x0,0xbc,0xe1,0x91,0xb1,0xeb,0x2a,0xb6,0x18,0x78,0x63,0x3b,0x4,0xe0,0xb,0x9c,0xf9,0xe9,0x4d,0xbc,0x95,0x44,0x1,0xcb,0x1,0xd8,0xa2,0xc7,0x2a,0x46,0xd3,0x7b,0xd4,0x3c,0xd3,0xd,0x8c,0x73,0x7,0xaf,0x18,0x33,0xe6,0xda,0xbd,0x75,0x71,0x2a,0xa5,0x96,0x5f,0x34,0x27,0xb0,0xcb,0xeb,0xc0,0x34,0x9b,0xf4,0xf1,0x1f,0x1d,0x9d,0x4f,0x7f,0x41,0xa7,0xed,0x86,0x1b,0x2e,0xc9,0x27,0x8e,0xa2,0x40,0xee,0x77,0xb2,0x6c,0x78,0xf,0xa9,0xe4,0x3b,0x88,0x79,0x53,0xf8,0xe0,0x6d,0xc8,0x89,0x9f,0x7f,0x1a,0x65,0xd4,0x7f,0xf,0x4b,0x83,0x43,0x86,0xe0,0x2c,0x81,0x1e,0x73,0xe4,0x5f,0xe2,0xa9,0x9e,0x9d,0x97,0x3,0x79,0x1e,0xa5,0x8a,0xe7,0xfe,0xf2,0x6e,0xd4,0x9c,0x66,0x5e,0xc7,0x1b,0xba,0x81,0xed,0xf2,0x26,0x31,0xdb,0x76,0x38,0xf1,0xff,0x9e,0xc4,0x18,0xf2,0x48,0x43,0x8b,0x79,0x8c,0x79,0x5f,0x87,0x8b,0xee,0x53,0x55,0x56,0x9a,0x37,0x35,0xcd,0x5a,0xc8,0xa7,0xba,0xdd,0x30,0x76,0x7f,0xd5,0xd8,0x74,0x63,0x87,0x9f,0xfd,0xb6,0xb2,0xa8,0xe6,0xad,0xeb,0x9a,0x1f,0x68,0x3b,0x6f,0xa6,0x19,0xc5,0xe,0x9f,0x1d,0x8,0xfa,0xb6,0x4b,0xd6,0x9f,0xde,0xf0,0xd9,0x19,0x83,0x47,0x6e,0x1c,0xec,0xc4,0xb9,0x78,0xf1,0xd4,0xc6,0xb8,0xf7,0x3d,0x72,0x86,0xd3,0x1c,0x93,0xf9,0xbf,0x93,0xef,0xe1,0x55,0xcf,0xc0,0xcb,0x1e,0xf0,0x27,0x9f,0x74,0x62,0x41,0xe2,0xd9,0xc4,0x5f,0x1e,0x39,0xcf,0x22,0xb3,0x4d,0x36,0xe9,0x30,0xe0,0x20,0x70,0x58,0x17,0x38,0x60,0x40,0x87,0xd,0x77,0xdd,0x4b,0xdc,0xd2,0x72,0xff,0xce,0xae,0xf4,0x96,0x25,0xf7,0xef,0x1c,0x99,0xae,0xb7,0x37,0x8e,0x39,0x4e,0xc6,0x19,0xcb,0x1f,0xf9,0x5,0x7b,0x9c,0xb3,0xeb,0x20,0xcf,0xa7,0xba,0xe5,0x93,0xe3,0xf3,0xe9,0xf0,0x75,0xb6,0x93,0xf,0xfc,0x12,0x44,0x35,0x27,0xb3,0x9d,0x72,0x0,0x36,0x7c,0xee,0x43,0xd2,0x2,0x3c,0x67,0xe9,0x6,0x8f,0xa7,0xcf,0x47,0xee,0x80,0x9e,0xcb,0x34,0xed,0xd1,0xc2,0x98,0x71,0x5c,0xb6,0xfc,0xf8,0xfe,0x3,0x43,0x36,0xb8,0x8a,0x8c,0xab,0xcf,0xbc,0xa3,0xce,0xad,0xf,0xb2,0xd6,0xb8,0x61,0x8f,0x3d,0x6e,0xbc,0x1b,0x16,0x4e,0x6d,0x8c,0xed,0xef,0x78,0x1a,0xf4,0x3a,0x17,0x18,0x17,0x49,0xb6,0x2b,0xa5,0x86,0xe1,0xa,0xe7,0x25,0x6e,0x5e,0xe8,0x2f,0x9f,0x73,0xc1,0xa6,0x2b,0xb3,0x2,0x1c,0x17,0x9c,0x5b,0xa3,0xce,0xb1,0x1f,0xb1,0xcc,0x3e,0xc3,0xd4,0x8d,0x10,0xe9,0xfa,0x7f,0x67,0xe6,0x1a,0xde,0xb0,0x9e,0xa1,0x4f,0x9d,0xbe,0x3,0xaf,0x6a,0x34,0x61,0x99,0x3,0xc6,0x1c,0xf8,0xfa,0x3a,0x8,0xbc,0xfe,0xdd,0xe4,0x41,0xef,0x42,0xf2,0xe5,0xe0,0x32,0x0,0xf2,0x2e,0xa0,0x64,0xa0,0x2e,0x3f,0xe8,0xc4,0xdb,0xe7,0x6b,0xa5,0x1f,0x46,0xed,0x46,0x8f,0x67,0xc0,0x5c,0x90,0xd4,0x7c,0x44,0xdb,0xd,0xc1,0x2c,0x7,0xef,0xa4,0xd1,0x60,0x8e,0x21,0x4b,0xd1,0xbb,0x38,0xa2,0xce,0x21,0xef,0x82,0x38,0xd5,0x2c,0x7d,0xfa,0x49,0xee,0x40,0xad,0x62,0xba,0x64,0xfe,0x38,0xb2,0x54,0xcb,0x3a,0x4f,0xcd,0xc0,0x6b,0xd1,0xf5,0x4d,0x31,0x53,0xfc,0xe5,0x1a,0xeb,0x5c,0xb8,0xf7,0xa9,0xc6,0x46,0xa1,0x5,0x78,0xcd,0x47,0x7a,0x9c,0xb2,0xf6,0xa2,0x16,0x20,0x9b,0x56,0x7a,0xe0,0x53,0xc6,0xab,0xc6,0x17,0xf6,0xe9,0xf8,0xf8,0xc4,0x7e,0xd0,0xa5,0x6c,0x5,0x6f,0xfb,0x64,0x92,0xcd,0x87,0x52,0x0,0x56,0x5d,0x17,0xb0,0xfa,0x5c,0x2f,0xc0,0x5c,0x14,0x3c,0xfb,0x9c,0xc2,0x7d,0xf4,0x69,0xe4,0xb2,0xb,0xad,0x25,0xff,0xdd,0x70,0x69,0x5c,0xa7,0x1c,0x92,0xcf,0xd3,0x9b,0xbc,0x5f,0xf1,0xbb,0xf8,0xc8,0xcf,0x1c,0x51,0xf,0x92,0x9b,0xe7,0xe9,0xd3,0x2f,0xa4,0x40,0x97,0x1,0x70,0xca,0x51,0xd0,0x5,0x18,0x87,0xc,0x7c,0xf4,0xbb,0x6a,0x6,0xde,0xe7,0x60,0x2,0x78,0xa,0xc0,0xe4,0x1e,0x16,0x30,0xe6,0xa2,0x8c,0xc3,0xd4,0x6,0xd8,0xfb,0xa,0x1b,0xe0,0x88,0x5,0x8c,0x5,0xff,0x6a,0x54,0xd9,0x0,0x1d,0xe6,0x7d,0x7a,0x78,0x3e,0xd5,0x6d,0x32,0x39,0x3e,0x2c,0xdf,0xe,0xd2,0xe4,0xbf,0xc2,0xb,0xc8,0x87,0x8,0xf6,0x30,0xf6,0x82,0x4,0xad,0xe9,0xfe,0x35,0xc9,0xb0,0xc5,0xd0,0xa5,0x34,0xf7,0x98,0xf5,0xde,0x75,0xf6,0x7e,0x75,0xb,0x59,0xb5,0xf7,0xd1,0xb4,0xc6,0x26,0x77,0xb4,0x69,0x73,0x97,0x7c,0x0,0xb5,0x2c,0xa,0xdf,0xe0,0x98,0xa1,0xf7,0x9d,0x63,0xc3,0xaa,0x6a,0x6,0xde,0x34,0xbf,0x3d,0xf4,0x97,0xaf,0x81,0x61,0x32,0xc7,0xf9,0x77,0xe2,0x6,0x7e,0x49,0xae,0xef,0xb4,0xb2,0x27,0x74,0xe9,0x60,0x1c,0x6,0x99,0x6e,0x13,0x0,0xb2,0x4f,0xc2,0xcc,0xbb,0x66,0xfb,0x33,0x37,0xc0,0x85,0x6f,0x92,0xcf,0x9c,0x69,0x74,0x1c,0xfd,0x6f,0xf,0x72,0x6b,0x3e,0x9d,0x4,0xa9,0xe5,0x17,0x3,0x20,0x6d,0x1,0xca,0x6d,0x80,0x72,0x0,0xd6,0x5c,0x62,0xd7,0x22,0xf8,0xb8,0xe0,0xe,0x43,0x1e,0xf8,0xc8,0xd,0x30,0x8e,0x72,0x66,0xb5,0x7c,0x37,0xcb,0xf,0x4c,0x3e,0x12,0xb9,0x6a,0xff,0x6a,0x7f,0x65,0x7f,0x63,0xff,0x63,0x66,0xff,0x64,0xff,0x55,0xf2,0xd9,0xb8,0x3f,0xe9,0xa3,0x7b,0xbf,0x3d,0xe5,0x0,0x9c,0xd8,0xbf,0xbb,0xc7,0xbe,0x66,0x3f,0xd9,0x3f,0x44,0xdf,0xfd,0xfb,0xf6,0x9f,0x91,0x44,0x9f,0xa7,0xfc,0x4e,0xc4,0x4b,0xe6,0xe5,0x4f,0xe6,0xc,0x76,0xa3,0xce,0xa1,0xcc,0xbb,0x4d,0x93,0x11,0x15,0x20,0xfe,0xce,0x96,0x3f,0x7c,0xd1,0x7b,0x38,0xf9,0x3a,0xe5,0x8f,0xee,0x5b,0x93,0x51,0x5b,0x12,0x2c,0xf9,0xba,0x99,0xd9,0x9f,0xdc,0x3f,0xe1,0x36,0xe9,0x3b,0x6a,0x1,0xac,0x10,0x5f,0x1a,0x71,0xc9,0x22,0x8b,0xde,0x85,0x3b,0x25,0x9d,0x2d,0xac,0xe5,0x37,0x66,0x4,0x66,0x76,0xc0,0xd0,0xfe,0x68,0x66,0x5d,0xfb,0x47,0x33,0xfb,0x17,0xfb,0x3b,0xfb,0x67,0xfb,0x37,0x33,0xeb,0xdb,0xff,0xda,0xdf,0xea,0x55,0xf9,0xed,0x1a,0x81,0x43,0xfb,0xa3,0x7b,0xf4,0x1d,0xfb,0x7b,0x55,0xc9,0xef,0xef,0x7f,0x1d,0xfb,0xdf,0xee,0x1f,0xd3,0xe3,0xff,0x7d,0xb6,0x0,0xd2,0xef,0xbc,0x5,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x1,0xa0,0x2a,0x10,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x0,0x54,0x5,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0x9,0x0,0x49,0x0,0x48,0x2,0x40,0x12,0x0,0x92,0x0,0x90,0x4,0x80,0x24,0x0,0x24,0x1,0x20,0xfd,0x9a,0xf5,0x7f,0x85,0x7e,0x45,0x72,0x0,0x5,0xae,0x92,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 -}; - - static const unsigned char frame_focus_png[]={ 0x89,0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,0x0,0x0,0xc,0x0,0x0,0x0,0xc,0x8,0x6,0x0,0x0,0x0,0x56,0x75,0x5c,0xe7,0x0,0x0,0x0,0x6,0x62,0x4b,0x47,0x44,0x0,0xff,0x0,0xff,0x0,0xff,0xa0,0xbd,0xa7,0x93,0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x7,0x74,0x49,0x4d,0x45,0x7,0xdf,0xa,0x14,0x3,0x18,0x33,0x85,0xfa,0x9b,0x25,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x43,0x6f,0x6d,0x6d,0x65,0x6e,0x74,0x0,0x43,0x72,0x65,0x61,0x74,0x65,0x64,0x20,0x77,0x69,0x74,0x68,0x20,0x47,0x49,0x4d,0x50,0x57,0x81,0xe,0x17,0x0,0x0,0x0,0x95,0x49,0x44,0x41,0x54,0x28,0xcf,0xbd,0xd2,0x31,0xe,0xc1,0x70,0x18,0x86,0xf1,0xdf,0xbf,0xe9,0xa0,0x8b,0xc1,0x35,0x48,0xec,0xb5,0xd8,0xb8,0x2,0x2b,0x37,0x70,0xd,0x2e,0xa0,0xe,0x62,0xab,0x85,0x5d,0xc2,0x35,0x9a,0x98,0xb0,0x60,0xa9,0x41,0x68,0xda,0xc9,0xb3,0x7d,0x5f,0xde,0xe7,0xcb,0x37,0xbc,0x61,0xb4,0xcc,0xdb,0xe8,0xa2,0x8f,0xe,0x82,0x4f,0x9e,0x28,0x70,0xc4,0x39,0x46,0xf,0x29,0x36,0xb8,0xf9,0x4d,0xb,0x73,0x84,0xb8,0xbc,0x9c,0x6d,0x17,0xc3,0x8b,0x6a,0x6e,0xe3,0xd5,0x2e,0xc3,0x34,0x2a,0xdf,0xb8,0xaa,0xe7,0x8a,0x4e,0x54,0xe,0x51,0x3,0x21,0x6a,0x1a,0xfc,0xb6,0xfe,0x22,0x3c,0x1a,0x64,0x1f,0x6f,0xa1,0x40,0xd2,0x40,0x68,0xa1,0x8,0xa3,0x65,0x9e,0x62,0x80,0x35,0xee,0x15,0xe1,0x4,0x33,0x1c,0x62,0x9c,0xca,0xe5,0xa4,0xa6,0x1a,0x7b,0x9c,0x5f,0xce,0xb,0x1e,0x5e,0x4b,0xa1,0xce,0xa0,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82 }; diff --git a/scene/resources/dynamic_font.cpp b/scene/resources/dynamic_font.cpp index 1edae01754..c3b40f7add 100644 --- a/scene/resources/dynamic_font.cpp +++ b/scene/resources/dynamic_font.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* dynamic_font.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifdef FREETYPE_ENABLED #include "dynamic_font.h" #include "os/file_access.h" @@ -38,11 +66,22 @@ void DynamicFontData::set_font_path(const String& p_path) { font_path=p_path; } +String DynamicFontData::get_font_path() const { + return font_path; +} + void DynamicFontData::set_force_autohinter(bool p_force) { force_autohinter=p_force; } +void DynamicFontData::_bind_methods() { + ObjectTypeDB::bind_method(_MD("set_font_path","path"),&DynamicFontData::set_font_path); + ObjectTypeDB::bind_method(_MD("get_font_path"),&DynamicFontData::get_font_path); + + ADD_PROPERTY(PropertyInfo(Variant::STRING,"font_path",PROPERTY_HINT_FILE,"*.ttf,*.otf"),_SCS("set_font_path"),_SCS("get_font_path")); +} + DynamicFontData::DynamicFontData() { @@ -232,7 +271,7 @@ Size2 DynamicFontAtSize::get_char_size(CharType p_char,CharType p_next,const Vec } -float DynamicFontAtSize::draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next,const Color& p_modulate,const Vector<Ref<DynamicFontAtSize> >& p_fallbacks) const { +float DynamicFontAtSize::draw_char(RID p_canvas_item, const Point2& p_pos, CharType p_char,CharType p_next,const Color& p_modulate,const Vector<Ref<DynamicFontAtSize> >& p_fallbacks) const { if (!valid) return 0; @@ -516,7 +555,7 @@ void DynamicFontAtSize::_update_char(CharType p_char) { if (tex.texture.is_null()) { tex.texture.instance(); - tex.texture->create_from_image(img,0/*Texture::FLAG_FILTER*/); + tex.texture->create_from_image(img,Texture::FLAG_VIDEO_SURFACE); } else { tex.texture->set_data(img); //update } @@ -647,7 +686,7 @@ bool DynamicFont::is_distance_field_hint() const{ return false; } -float DynamicFont::draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next,const Color& p_modulate) const { +float DynamicFont::draw_char(RID p_canvas_item, const Point2& p_pos, CharType p_char,CharType p_next,const Color& p_modulate) const { if (!data_at_size.is_valid()) return 0; diff --git a/scene/resources/dynamic_font.h b/scene/resources/dynamic_font.h index 1a46e1e468..9ad1b4edbf 100644 --- a/scene/resources/dynamic_font.h +++ b/scene/resources/dynamic_font.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* dynamic_font.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef DYNAMIC_FONT_H #define DYNAMIC_FONT_H @@ -32,10 +60,14 @@ friend class DynamicFont; Ref<DynamicFontAtSize> _get_dynamic_font_at_size(int p_size); +protected: + + static void _bind_methods(); public: void set_font_ptr(const uint8_t* p_font_mem,int p_font_mem_size); void set_font_path(const String& p_path); + String get_font_path() const; void set_force_autohinter(bool p_force); DynamicFontData(); @@ -111,7 +143,7 @@ public: Size2 get_char_size(CharType p_char,CharType p_next,const Vector<Ref<DynamicFontAtSize> >& p_fallbacks) const; - float draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next,const Color& p_modulate,const Vector<Ref<DynamicFontAtSize> >& p_fallbacks) const; + float draw_char(RID p_canvas_item, const Point2& p_pos, CharType p_char,CharType p_next,const Color& p_modulate,const Vector<Ref<DynamicFontAtSize> >& p_fallbacks) const; @@ -167,7 +199,7 @@ public: virtual bool is_distance_field_hint() const; - virtual float draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next=0,const Color& p_modulate=Color(1,1,1)) const; + virtual float draw_char(RID p_canvas_item, const Point2& p_pos, CharType p_char,CharType p_next=0,const Color& p_modulate=Color(1,1,1)) const; DynamicFont(); ~DynamicFont(); diff --git a/scene/resources/dynamic_font_stb.cpp b/scene/resources/dynamic_font_stb.cpp index 0b9f95da4f..456e6a5ee7 100644 --- a/scene/resources/dynamic_font_stb.cpp +++ b/scene/resources/dynamic_font_stb.cpp @@ -142,7 +142,7 @@ Size2 DynamicFontAtSize::get_char_size(CharType p_char,CharType p_next) const { } -float DynamicFontAtSize::draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next,const Color& p_modulate) const { +float DynamicFontAtSize::draw_char(RID p_canvas_item, const Point2& p_pos, CharType p_char,CharType p_next,const Color& p_modulate) const { const_cast<DynamicFontAtSize*>(this)->_update_char(p_char); @@ -455,7 +455,7 @@ bool DynamicFont::is_distance_field_hint() const{ return false; } -float DynamicFont::draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next,const Color& p_modulate) const { +float DynamicFont::draw_char(RID p_canvas_item, const Point2& p_pos, CharType p_char,CharType p_next,const Color& p_modulate) const { if (!data_at_size.is_valid()) return 0; diff --git a/scene/resources/dynamic_font_stb.h b/scene/resources/dynamic_font_stb.h index 6b72fb3703..136edff2fc 100644 --- a/scene/resources/dynamic_font_stb.h +++ b/scene/resources/dynamic_font_stb.h @@ -112,7 +112,7 @@ public: Size2 get_char_size(CharType p_char,CharType p_next=0) const; - float draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next=0,const Color& p_modulate=Color(1,1,1)) const; + float draw_char(RID p_canvas_item, const Point2& p_pos, CharType p_char,CharType p_next=0,const Color& p_modulate=Color(1,1,1)) const; @@ -152,7 +152,7 @@ public: virtual bool is_distance_field_hint() const; - virtual float draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next=0,const Color& p_modulate=Color(1,1,1)) const; + virtual float draw_char(RID p_canvas_item, const Point2& p_pos, CharType p_char,CharType p_next=0,const Color& p_modulate=Color(1,1,1)) const; DynamicFont(); ~DynamicFont(); diff --git a/scene/resources/font.cpp b/scene/resources/font.cpp index 0d8d224037..6ad8a95565 100644 --- a/scene/resources/font.cpp +++ b/scene/resources/font.cpp @@ -506,7 +506,7 @@ Ref<BitmapFont> BitmapFont::get_fallback() const{ return fallback; } -float BitmapFont::draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next,const Color& p_modulate) const { +float BitmapFont::draw_char(RID p_canvas_item, const Point2& p_pos, CharType p_char, CharType p_next, const Color& p_modulate) const { const Character * c = char_map.getptr(p_char); diff --git a/scene/resources/font.h b/scene/resources/font.h index 91f4874932..67836564cd 100644 --- a/scene/resources/font.h +++ b/scene/resources/font.h @@ -59,7 +59,7 @@ public: void draw(RID p_canvas_item, const Point2& p_pos, const String& p_text,const Color& p_modulate=Color(1,1,1),int p_clip_w=-1) const; void draw_halign(RID p_canvas_item, const Point2& p_pos, HAlign p_align,float p_width,const String& p_text,const Color& p_modulate=Color(1,1,1)) const; - virtual float draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next=0,const Color& p_modulate=Color(1,1,1)) const=0; + virtual float draw_char(RID p_canvas_item, const Point2& p_pos, CharType p_char, CharType p_next=0,const Color& p_modulate=Color(1,1,1)) const=0; Font(); @@ -155,7 +155,7 @@ public: void set_distance_field_hint(bool p_distance_field); bool is_distance_field_hint() const; - float draw_char(RID p_canvas_item, const Point2& p_pos, const CharType& p_char,const CharType& p_next=0,const Color& p_modulate=Color(1,1,1)) const; + float draw_char(RID p_canvas_item, const Point2& p_pos, CharType p_char,CharType p_next=0,const Color& p_modulate=Color(1,1,1)) const; BitmapFont(); ~BitmapFont(); diff --git a/scene/resources/gibberish_stream.cpp b/scene/resources/gibberish_stream.cpp index 9d67069a6c..73c135a913 100644 --- a/scene/resources/gibberish_stream.cpp +++ b/scene/resources/gibberish_stream.cpp @@ -29,6 +29,9 @@ #include "gibberish_stream.h" #include "servers/audio_server.h" +//TODO: This class needs to be adapted to the new AudioStream API, +// or dropped if nobody cares about fixing it :) (GH-3307) + #if 0 int AudioStreamGibberish::get_channel_count() const { diff --git a/scene/resources/gibberish_stream.h b/scene/resources/gibberish_stream.h index e06dc5eff2..7affb4bd4d 100644 --- a/scene/resources/gibberish_stream.h +++ b/scene/resources/gibberish_stream.h @@ -29,6 +29,9 @@ #ifndef GIBBERISH_STREAM_H #define GIBBERISH_STREAM_H +//TODO: This class needs to be adapted to the new AudioStream API, +// or dropped if nobody cares about fixing it :) (GH-3307) + #if 0 #include "scene/resources/audio_stream.h" #include "scene/resources/sample_library.h" diff --git a/scene/resources/height_map_shape.cpp b/scene/resources/height_map_shape.cpp deleted file mode 100644 index e7b53c92c2..0000000000 --- a/scene/resources/height_map_shape.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/*************************************************************************/ -/* height_map_shape.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "height_map_shape.h" - -HeightMapShape::HeightMapShape() -{ -} diff --git a/scene/resources/height_map_shape.h b/scene/resources/height_map_shape.h deleted file mode 100644 index 5494075107..0000000000 --- a/scene/resources/height_map_shape.h +++ /dev/null @@ -1,38 +0,0 @@ -/*************************************************************************/ -/* height_map_shape.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef HEIGHT_MAP_SHAPE_H -#define HEIGHT_MAP_SHAPE_H - -class HeightMapShape -{ -public: - HeightMapShape(); -}; - -#endif // HEIGHT_MAP_SHAPE_H diff --git a/scene/resources/mesh.cpp b/scene/resources/mesh.cpp index e6356d3366..a1a1f0a935 100644 --- a/scene/resources/mesh.cpp +++ b/scene/resources/mesh.cpp @@ -149,12 +149,6 @@ bool Mesh::_set(const StringName& p_name, const Variant& p_value) { return true; } - if (what=="custom_aabb") { - - surface_set_custom_aabb(idx,p_value); - return true; - } - return false; } diff --git a/scene/resources/packed_scene.cpp b/scene/resources/packed_scene.cpp index 5ac7946391..ac528e6659 100644 --- a/scene/resources/packed_scene.cpp +++ b/scene/resources/packed_scene.cpp @@ -1413,8 +1413,7 @@ NodePath SceneState::get_node_path(int p_idx,bool p_for_parent) const { } } - for(int i=0;i<base_path.get_name_count();i++) { - StringName sn = base_path.get_name(i); + for(int i=base_path.get_name_count()-1;i>=0;i--) { sub_path.insert(0,base_path.get_name(i)); } diff --git a/scene/resources/polygon_path_finder.cpp b/scene/resources/polygon_path_finder.cpp index 1a7dc56e40..d6d9cbc091 100644 --- a/scene/resources/polygon_path_finder.cpp +++ b/scene/resources/polygon_path_finder.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* polygon_path_finder.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "polygon_path_finder.h" #include "geometry.h" diff --git a/scene/resources/polygon_path_finder.h b/scene/resources/polygon_path_finder.h index b23dbd0bac..dcc38bfb9d 100644 --- a/scene/resources/polygon_path_finder.h +++ b/scene/resources/polygon_path_finder.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* polygon_path_finder.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef POLYGON_PATH_FINDER_H #define POLYGON_PATH_FINDER_H diff --git a/scene/resources/rich_text.cpp b/scene/resources/rich_text.cpp deleted file mode 100644 index 8acf5ff39b..0000000000 --- a/scene/resources/rich_text.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/*************************************************************************/ -/* rich_text.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "rich_text.h" - -RichText::RichText() -{ -} diff --git a/scene/resources/rich_text.h b/scene/resources/rich_text.h deleted file mode 100644 index c74a391b10..0000000000 --- a/scene/resources/rich_text.h +++ /dev/null @@ -1,38 +0,0 @@ -/*************************************************************************/ -/* rich_text.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef RICH_TEXT_H -#define RICH_TEXT_H - -class RichText -{ -public: - RichText(); -}; - -#endif // RICH_TEXT_H diff --git a/scene/resources/room.cpp b/scene/resources/room.cpp index d1fc614c90..f28220531b 100644 --- a/scene/resources/room.cpp +++ b/scene/resources/room.cpp @@ -52,7 +52,7 @@ void RoomBounds::set_geometry_hint(const DVector<Face3>& p_geometry_hint) { geometry_hint=p_geometry_hint; } -const DVector<Face3>& RoomBounds::get_geometry_hint() const { +DVector<Face3> RoomBounds::get_geometry_hint() const { return geometry_hint; } diff --git a/scene/resources/room.h b/scene/resources/room.h index 3ed41a3e61..dc5e284838 100644 --- a/scene/resources/room.h +++ b/scene/resources/room.h @@ -56,7 +56,7 @@ public: BSP_Tree get_bounds() const; void set_geometry_hint(const DVector<Face3>& geometry_hint); - const DVector<Face3>& get_geometry_hint() const; + DVector<Face3> get_geometry_hint() const; RoomBounds(); ~RoomBounds(); diff --git a/scene/resources/scene_format_text.cpp b/scene/resources/scene_format_text.cpp index f9f7f7807d..c7e2fc4e73 100644 --- a/scene/resources/scene_format_text.cpp +++ b/scene/resources/scene_format_text.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* scene_format_text.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "scene_format_text.h" #include "globals.h" @@ -1112,7 +1140,12 @@ void ResourceFormatSaverTextInstance::_find_resources(const Variant& p_variant,b } +static String _valprop(const String& p_name) { + if (p_name.find("\"")!=-1 || p_name.find("=")!=-1 || p_name.find(" ")!=-1) + return "\""+p_name.c_escape()+"\""; + return p_name; +} Error ResourceFormatSaverTextInstance::save(const String &p_path,const RES& p_resource,uint32_t p_flags) { @@ -1263,12 +1296,12 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path,const RES& p_re if ((PE->get().usage&PROPERTY_USAGE_STORE_IF_NONZERO && value.is_zero())||(PE->get().usage&PROPERTY_USAGE_STORE_IF_NONONE && value.is_one()) ) continue; - if (PE->get().type==Variant::OBJECT && value.is_zero()) + if (PE->get().type==Variant::OBJECT && value.is_zero() && (!PE->get().usage&PROPERTY_USAGE_STORE_IF_NULL)) continue; String vars; VariantWriter::write_to_string(value,vars,_write_resources,this); - f->store_string(name+" = "+vars+"\n"); + f->store_string(_valprop(name)+" = "+vars+"\n"); } @@ -1292,8 +1325,6 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path,const RES& p_re Vector<StringName> groups = state->get_node_groups(i); - if (instance.is_valid()) - print_line("for path "+String(path)+" instance "+instance->get_path()); String header="[node"; header+=" name=\""+String(name)+"\""; @@ -1344,7 +1375,7 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path,const RES& p_re String vars; VariantWriter::write_to_string(state->get_node_property_value(i,j),vars,_write_resources,this); - f->store_string(String(state->get_node_property_name(i,j))+" = "+vars+"\n"); + f->store_string(_valprop(String(state->get_node_property_name(i,j)))+" = "+vars+"\n"); } if (state->get_node_property_count(i)) { diff --git a/scene/resources/scene_format_text.h b/scene/resources/scene_format_text.h index 02436a6e2d..8dbfbfda48 100644 --- a/scene/resources/scene_format_text.h +++ b/scene/resources/scene_format_text.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* scene_format_text.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef SCENE_FORMAT_TEXT_H #define SCENE_FORMAT_TEXT_H diff --git a/scene/resources/theme.cpp b/scene/resources/theme.cpp index 2f4d37053e..92a6f0c0b9 100644 --- a/scene/resources/theme.cpp +++ b/scene/resources/theme.cpp @@ -34,6 +34,32 @@ Ref<Theme> Theme::default_theme; +void Theme::_emit_theme_changed() { + + emit_changed(); +} + +void Theme::_ref_font( Ref<Font> p_sc) { + + if (!font_refcount.has(p_sc)) { + font_refcount[p_sc]=1; + p_sc->connect("changed",this,"_emit_theme_changed"); + } else { + font_refcount[p_sc]+=1; + } +} + +void Theme::_unref_font(Ref<Font> p_sc) { + + ERR_FAIL_COND(!font_refcount.has(p_sc)); + font_refcount[p_sc]--; + if (font_refcount[p_sc]==0) { + p_sc->disconnect("changed",this,"_emit_theme_changed"); + font_refcount.erase(p_sc); + } +} + + bool Theme::_set(const StringName& p_name, const Variant& p_value) { String sname=p_name; @@ -81,13 +107,22 @@ bool Theme::_get(const StringName& p_name,Variant &r_ret) const { if (type=="icons") { - r_ret= get_icon(name,node_type); + if (!has_icon(name,node_type)) + r_ret=Ref<Texture>(); + else + r_ret= get_icon(name,node_type); } else if (type=="styles") { - r_ret= get_stylebox(name,node_type); + if (!has_stylebox(name,node_type)) + r_ret=Ref<StyleBox>(); + else + r_ret= get_stylebox(name,node_type); } else if (type=="fonts") { - r_ret= get_font(name,node_type); + if (!has_font(name,node_type)) + r_ret=Ref<Font>(); + else + r_ret= get_font(name,node_type); } else if (type=="colors") { r_ret= get_color(name,node_type); @@ -116,7 +151,7 @@ void Theme::_get_property_list( List<PropertyInfo> *p_list) const { while((key2=icon_map[*key].next(key2))) { - list.push_back( PropertyInfo( Variant::OBJECT, String()+*key+"/icons/"+*key2, PROPERTY_HINT_RESOURCE_TYPE, "Texture" ) ); + list.push_back( PropertyInfo( Variant::OBJECT, String()+*key+"/icons/"+*key2, PROPERTY_HINT_RESOURCE_TYPE, "Texture",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_STORE_IF_NULL ) ); } } @@ -128,7 +163,7 @@ void Theme::_get_property_list( List<PropertyInfo> *p_list) const { while((key2=style_map[*key].next(key2))) { - list.push_back( PropertyInfo( Variant::OBJECT, String()+*key+"/styles/"+*key2, PROPERTY_HINT_RESOURCE_TYPE, "StyleBox" ) ); + list.push_back( PropertyInfo( Variant::OBJECT, String()+*key+"/styles/"+*key2, PROPERTY_HINT_RESOURCE_TYPE, "StyleBox", PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_STORE_IF_NULL ) ); } } @@ -141,7 +176,7 @@ void Theme::_get_property_list( List<PropertyInfo> *p_list) const { while((key2=font_map[*key].next(key2))) { - list.push_back( PropertyInfo( Variant::OBJECT, String()+*key+"/fonts/"+*key2, PROPERTY_HINT_RESOURCE_TYPE, "Font" ) ); + list.push_back( PropertyInfo( Variant::OBJECT, String()+*key+"/fonts/"+*key2, PROPERTY_HINT_RESOURCE_TYPE, "Font",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_STORE_IF_NULL ) ); } } @@ -217,7 +252,7 @@ void Theme::set_default_font( const Ref<Font>& p_font ) { void Theme::set_icon(const StringName& p_name,const StringName& p_type,const Ref<Texture>& p_icon) { - ERR_FAIL_COND(p_icon.is_null()); +// ERR_FAIL_COND(p_icon.is_null()); bool new_value=!icon_map.has(p_type) || !icon_map[p_type].has(p_name); @@ -317,7 +352,7 @@ void Theme::get_shader_list(const StringName &p_type, List<StringName> *p_list) void Theme::set_stylebox(const StringName& p_name,const StringName& p_type,const Ref<StyleBox>& p_style) { - ERR_FAIL_COND(p_style.is_null()); +// ERR_FAIL_COND(p_style.is_null()); bool new_value=!style_map.has(p_type) || !style_map[p_type].has(p_name); @@ -380,11 +415,21 @@ void Theme::get_stylebox_types(List<StringName> *p_list) const { void Theme::set_font(const StringName& p_name,const StringName& p_type,const Ref<Font>& p_font) { - ERR_FAIL_COND(p_font.is_null()); +// ERR_FAIL_COND(p_font.is_null()); bool new_value=!font_map.has(p_type) || !font_map[p_type].has(p_name); + + if (!new_value) { + if (font_map[p_type][p_name].is_valid()) { + _unref_font(font_map[p_type][p_name]); + } + } font_map[p_type][p_name]=p_font; + if (p_font.is_valid()) { + _ref_font(p_font); + } + if (new_value) { _change_notify(); emit_changed();; @@ -411,6 +456,10 @@ void Theme::clear_font(const StringName& p_name,const StringName& p_type) { ERR_FAIL_COND(!font_map.has(p_type)); ERR_FAIL_COND(!font_map[p_type].has(p_name)); + if (font_map.has(p_type) && font_map[p_type].has(p_name) && font_map[p_type][p_name].is_valid()) { + _unref_font(font_map[p_type][p_name]); + } + font_map[p_type].erase(p_name); _change_notify(); emit_changed();; @@ -636,6 +685,11 @@ void Theme::_bind_methods() { ObjectTypeDB::bind_method(_MD("get_type_list","type"),&Theme::_get_type_list); + ObjectTypeDB::bind_method(_MD("_emit_theme_changed"),&Theme::_emit_theme_changed); + + + + ObjectTypeDB::bind_method("copy_default_theme",&Theme::copy_default_theme); ADD_PROPERTY(PropertyInfo(Variant::OBJECT,"default_font",PROPERTY_HINT_RESOURCE_TYPE,"Font"),_SCS("set_default_font"),_SCS("get_default_font")); diff --git a/scene/resources/theme.h b/scene/resources/theme.h index 9b84d0e8ad..1856bd4979 100644 --- a/scene/resources/theme.h +++ b/scene/resources/theme.h @@ -46,6 +46,15 @@ class Theme : public Resource { static Ref<Theme> default_theme; + + //keep a reference count to font, so each time the font changes, we emit theme changed too + Map< Ref<Font>, int> font_refcount; + + void _ref_font(Ref<Font> p_sc); + void _unref_font( Ref<Font> p_sc); + void _emit_theme_changed(); + + HashMap<StringName,HashMap<StringName,Ref<Texture>,StringNameHasher >, StringNameHasher > icon_map; HashMap<StringName,HashMap<StringName,Ref<StyleBox>,StringNameHasher >,StringNameHasher > style_map; HashMap<StringName,HashMap<StringName,Ref<Font>,StringNameHasher >,StringNameHasher > font_map; diff --git a/scene/resources/volume.cpp b/scene/resources/volume.cpp deleted file mode 100644 index 8e056158cb..0000000000 --- a/scene/resources/volume.cpp +++ /dev/null @@ -1,211 +0,0 @@ -/*************************************************************************/ -/* volume.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "volume.h" - -#if 0 -void Volume::_set(const String& p_name, const Variant& p_value) { - - - if (p_name.begins_with("shapes/")) { - - int idx=p_name.get_slice("/",1).to_int()-1; - ERR_FAIL_COND( idx != get_shape_count() ); - - Dictionary shape = p_value; - ERR_FAIL_COND( !shape.has("type") || !shape.has("data")); - String type = shape["type"]; - Variant data=shape["data"]; - Transform transform; - if (shape.has("transform")) - transform=shape["transform"]; - - if (type=="plane") - add_shape(SHAPE_PLANE,data,transform); - else if (type=="sphere") - add_shape(SHAPE_SPHERE,data,transform); - else if (type=="box") - add_shape(SHAPE_BOX,data,transform); - else if (type=="cylinder") - add_shape(SHAPE_CYLINDER,data,transform); - else if (type=="capsule") - add_shape(SHAPE_CAPSULE,data,transform); - else if (type=="convex_polygon") - add_shape(SHAPE_CONVEX_POLYGON,data,transform); - else if (type=="concave_polygon") - add_shape(SHAPE_CONCAVE_POLYGON,data,transform); - else { - ERR_FAIL(); - } - } -} - -Variant Volume::_get(const String& p_name) const { - - if (p_name.begins_with("shapes/")) { - - int idx=p_name.get_slice("/",1).to_int()-1; - ERR_FAIL_INDEX_V( idx, get_shape_count(), Variant() ); - - Dictionary shape; - - switch( get_shape_type(idx) ) { - - case SHAPE_PLANE: shape["type"]="plane"; break; - case SHAPE_SPHERE: shape["type"]="sphere"; break; - case SHAPE_BOX: shape["type"]="box"; break; - case SHAPE_CYLINDER: shape["type"]="cylinder"; break; - case SHAPE_CAPSULE: shape["type"]="capsule"; break; - case SHAPE_CONVEX_POLYGON: shape["type"]="convex_polygon"; break; - case SHAPE_CONCAVE_POLYGON: shape["type"]="concave_polygon"; break; - - } - - shape["transform"]=get_shape_transform(idx); - shape["data"]=get_shape(idx); - - return shape; - } - - return Variant(); -} - -void Volume::_get_property_list( List<PropertyInfo> *p_list) const { - - int count=get_shape_count(); - for(int i=0;i<count;i++) { - - p_list->push_back( PropertyInfo( Variant::DICTIONARY, "shapes/"+itos(i+1)) ); - } -} - - - - - -void Volume::add_shape(ShapeType p_shape_type, const Variant& p_data, const Transform& p_transform) { - - PhysicsServer::get_singleton()->volume_add_shape(volume,(PhysicsServer::ShapeType)p_shape_type,p_data,p_transform); - _change_notify(); -} - - -void Volume::add_plane_shape(const Plane& p_plane,const Transform& p_transform) { - - add_shape(SHAPE_PLANE, p_plane, p_transform ); -} - -void Volume::add_sphere_shape(float p_radius,const Transform& p_transform) { - - add_shape(SHAPE_SPHERE, p_radius, p_transform ); -} - -void Volume::add_box_shape(const Vector3& p_half_extents,const Transform& p_transform) { - - add_shape(SHAPE_BOX, p_half_extents, p_transform ); -} -void Volume::add_cylinder_shape(float p_radius, float p_height,const Transform& p_transform) { - - Dictionary d; - d["radius"]=p_radius; - d["height"]=p_height; - - add_shape(SHAPE_CYLINDER,d,p_transform); -} -void Volume::add_capsule_shape(float p_radius, float p_height,const Transform& p_transform) { - - Dictionary d; - d["radius"]=p_radius; - d["height"]=p_height; - - add_shape(SHAPE_CAPSULE,d,p_transform); -} - - -int Volume::get_shape_count() const { - - return PhysicsServer::get_singleton()->volume_get_shape_count(volume); -} - -Volume::ShapeType Volume::get_shape_type(int p_shape) const { - - return (ShapeType)PhysicsServer::get_singleton()->volume_get_shape_type(volume,p_shape); -} - -Transform Volume::get_shape_transform(int p_shape) const { - - return PhysicsServer::get_singleton()->volume_get_shape_transform(volume,p_shape); -} - -Variant Volume::get_shape(int p_shape) const { - - return PhysicsServer::get_singleton()->volume_get_shape(volume,p_shape); -} - -void Volume::_bind_methods() { - - ObjectTypeDB::bind_method(_MD("add_shape","type","data","transform"),&Volume::add_shape,DEFVAL( Transform() )); - ObjectTypeDB::bind_method(_MD("add_plane_shape","plane","transform"),&Volume::add_plane_shape,DEFVAL( Transform() )); - ObjectTypeDB::bind_method(_MD("add_sphere_shape"),&Volume::add_sphere_shape,DEFVAL( Transform() )); - ObjectTypeDB::bind_method(_MD("add_box_shape","radius","transform"),&Volume::add_box_shape,DEFVAL( Transform() )); - ObjectTypeDB::bind_method(_MD("add_cylinder_shape","radius","height","transform"),&Volume::add_cylinder_shape,DEFVAL( Transform() )); - ObjectTypeDB::bind_method(_MD("add_capsule_shape","radius","height","transform"),&Volume::add_capsule_shape,DEFVAL( Transform() )); - ObjectTypeDB::bind_method(_MD("get_shape_count"),&Volume::get_shape_count); - ObjectTypeDB::bind_method(_MD("get_shape_type","shape_idx"),&Volume::get_shape_type); - ObjectTypeDB::bind_method(_MD("get_shape_transform","shape_idx"),&Volume::get_shape_transform); - ObjectTypeDB::bind_method(_MD("get_shape","shape_idx"),&Volume::get_shape); - - BIND_CONSTANT( SHAPE_PLANE ); - BIND_CONSTANT( SHAPE_SPHERE ); - BIND_CONSTANT( SHAPE_BOX ); - BIND_CONSTANT( SHAPE_CYLINDER ); - BIND_CONSTANT( SHAPE_CAPSULE ); - BIND_CONSTANT( SHAPE_CONVEX_POLYGON ); - BIND_CONSTANT( SHAPE_CONCAVE_POLYGON ); - -} - -RID Volume::get_rid() { - - return volume; -} - -Volume::Volume() { - - volume= PhysicsServer::get_singleton()->volume_create(); - -} - - -Volume::~Volume() { - - PhysicsServer::get_singleton()->free(volume); -} - - -#endif diff --git a/scene/resources/volume.h b/scene/resources/volume.h deleted file mode 100644 index f03e48f1d9..0000000000 --- a/scene/resources/volume.h +++ /dev/null @@ -1,86 +0,0 @@ -/*************************************************************************/ -/* volume.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef VOLUME_H -#define VOLUME_H - -#include "resource.h" - -#if 0 -#include "servers/physics_server.h" -/** - @author Juan Linietsky <reduzio@gmail.com> -*/ -class Volume : public Resource { - - OBJ_TYPE( Volume, Resource ); - RID volume; - -protected: - - bool _set(const StringName& p_name, const Variant& p_value); - bool _get(const StringName& p_name,Variant &r_ret) const; - void _get_property_list( List<PropertyInfo> *p_list) const; - - static void _bind_methods(); -public: - - enum ShapeType { - SHAPE_PLANE = PhysicsServer::SHAPE_PLANE, ///< plane:"plane" - SHAPE_SPHERE = PhysicsServer::SHAPE_SPHERE, ///< float:"radius" - SHAPE_BOX = PhysicsServer::SHAPE_BOX, ///< vec3:"extents" - SHAPE_CYLINDER = PhysicsServer::SHAPE_CYLINDER, ///< dict(float:"radius", float:"height"):cylinder - SHAPE_CAPSULE = PhysicsServer::SHAPE_CAPSULE, ///< dict(float:"radius", float:"height"):capsule - SHAPE_CONVEX_POLYGON = PhysicsServer::SHAPE_CONVEX_POLYGON, ///< array of planes:"planes" - SHAPE_CONCAVE_POLYGON = PhysicsServer::SHAPE_CONCAVE_POLYGON, ///< vector3 array:"triangles" - }; - - void add_shape(ShapeType p_shape_type, const Variant& p_data, const Transform& p_transform=Transform ()); - - void add_plane_shape(const Plane& p_plane,const Transform& p_transform); - void add_sphere_shape(float p_radius,const Transform& p_transform); - void add_box_shape(const Vector3& p_half_extents,const Transform& p_transform); - void add_cylinder_shape(float p_radius, float p_height,const Transform& p_transform); - void add_capsule_shape(float p_radius, float p_height,const Transform& p_transform); - - int get_shape_count() const; - ShapeType get_shape_type(int p_shape) const; - Transform get_shape_transform(int p_shape) const; - Variant get_shape(int p_shape) const; - - virtual RID get_rid(); - - Volume(); - ~Volume(); - -}; - -VARIANT_ENUM_CAST( Volume::ShapeType ); - -#endif -#endif diff --git a/servers/audio/audio_rb_resampler.cpp b/servers/audio/audio_rb_resampler.cpp index d07d55f1b5..aa4fca3a62 100644 --- a/servers/audio/audio_rb_resampler.cpp +++ b/servers/audio/audio_rb_resampler.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* audio_rb_resampler.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "audio_rb_resampler.h" diff --git a/servers/audio/audio_rb_resampler.h b/servers/audio/audio_rb_resampler.h index 3c08c79797..22643e4e82 100644 --- a/servers/audio/audio_rb_resampler.h +++ b/servers/audio/audio_rb_resampler.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* audio_rb_resampler.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef AUDIO_RB_RESAMPLER_H #define AUDIO_RB_RESAMPLER_H @@ -37,6 +65,7 @@ public: _FORCE_INLINE_ void flush() { rb_read_pos=0; rb_write_pos=0; + offset=0; } _FORCE_INLINE_ bool is_ready() const{ diff --git a/servers/audio/audio_server_sw.cpp b/servers/audio/audio_server_sw.cpp index 8b5b5e4f46..853714be2a 100644 --- a/servers/audio/audio_server_sw.cpp +++ b/servers/audio/audio_server_sw.cpp @@ -388,7 +388,7 @@ void AudioServerSW::sample_set_data(RID p_sample, const DVector<uint8_t>& p_buff AUDIO_LOCK sample_manager->sample_set_data(p_sample,p_buffer); } -const DVector<uint8_t> AudioServerSW::sample_get_data(RID p_sample) const { +DVector<uint8_t> AudioServerSW::sample_get_data(RID p_sample) const { AUDIO_LOCK return sample_manager->sample_get_data(p_sample); } diff --git a/servers/audio/audio_server_sw.h b/servers/audio/audio_server_sw.h index 8d3d992e2b..fda952fa94 100644 --- a/servers/audio/audio_server_sw.h +++ b/servers/audio/audio_server_sw.h @@ -126,7 +126,7 @@ public: const void* sample_get_data_ptr(RID p_sample) const; virtual void sample_set_data(RID p_sample, const DVector<uint8_t>& p_buffer); - virtual const DVector<uint8_t> sample_get_data(RID p_sample) const; + virtual DVector<uint8_t> sample_get_data(RID p_sample) const; virtual void sample_set_mix_rate(RID p_sample,int p_rate); virtual int sample_get_mix_rate(RID p_sample) const; diff --git a/servers/audio/reverb_buffers_sw.cpp b/servers/audio/reverb_buffers_sw.cpp deleted file mode 100644 index 04bc056313..0000000000 --- a/servers/audio/reverb_buffers_sw.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/*************************************************************************/ -/* reverb_buffers_sw.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "reverb_buffers_sw.h" - -ReverbBuffersSW::ReverbBuffersSW() -{ -} diff --git a/servers/audio/reverb_buffers_sw.h b/servers/audio/reverb_buffers_sw.h deleted file mode 100644 index f5885e6ee8..0000000000 --- a/servers/audio/reverb_buffers_sw.h +++ /dev/null @@ -1,38 +0,0 @@ -/*************************************************************************/ -/* reverb_buffers_sw.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef REVERB_BUFFERS_SW_H -#define REVERB_BUFFERS_SW_H - -class ReverbBuffersSW -{ -public: - ReverbBuffersSW(); -}; - -#endif // REVERB_BUFFERS_SW_H diff --git a/servers/audio/voice_rb_sw.cpp b/servers/audio/voice_rb_sw.cpp deleted file mode 100644 index 8d12e5085d..0000000000 --- a/servers/audio/voice_rb_sw.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/*************************************************************************/ -/* voice_rb_sw.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "voice_rb_sw.h" -/* -VoiceRBSW::VoiceRBSW() -{ -} -*/ diff --git a/servers/audio_server.h b/servers/audio_server.h index c56820dcbb..50194af4a5 100644 --- a/servers/audio_server.h +++ b/servers/audio_server.h @@ -169,7 +169,7 @@ public: virtual void sample_set_signed_data(RID p_sample, const DVector<float>& p_buffer); virtual void sample_set_data(RID p_sample, const DVector<uint8_t>& p_buffer)=0; - virtual const DVector<uint8_t> sample_get_data(RID p_sample) const=0; + virtual DVector<uint8_t> sample_get_data(RID p_sample) const=0; virtual void sample_set_mix_rate(RID p_sample,int p_rate)=0; virtual int sample_get_mix_rate(RID p_sample) const=0; diff --git a/servers/physics/constraint_sw.cpp b/servers/physics/constraint_sw.cpp deleted file mode 100644 index ce0e1e6963..0000000000 --- a/servers/physics/constraint_sw.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/*************************************************************************/ -/* constraint_sw.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "constraint_sw.h" - diff --git a/servers/physics/gjk_epa.cpp b/servers/physics/gjk_epa.cpp index f76f8c646a..71d6fee2ab 100644 --- a/servers/physics/gjk_epa.cpp +++ b/servers/physics/gjk_epa.cpp @@ -1,14 +1,31 @@ -/*************************************************/ -/* gjk_epa.cpp */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* gjk_epa.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "gjk_epa.h" /*************** Bullet's GJK-EPA2 IMPLEMENTATION *******************/ diff --git a/servers/physics/gjk_epa.h b/servers/physics/gjk_epa.h index 23f51d66c4..78afd3149f 100644 --- a/servers/physics/gjk_epa.h +++ b/servers/physics/gjk_epa.h @@ -1,14 +1,31 @@ -/*************************************************/ -/* gjk_epa.h */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* gjk_epa.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef GJK_EPA_H #define GJK_EPA_H diff --git a/servers/physics/joints/cone_twist_joint_sw.cpp b/servers/physics/joints/cone_twist_joint_sw.cpp index d97d8c599f..5f1dde4e20 100644 --- a/servers/physics/joints/cone_twist_joint_sw.cpp +++ b/servers/physics/joints/cone_twist_joint_sw.cpp @@ -1,3 +1,37 @@ +/*************************************************************************/ +/* cone_twist_joint_sw.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +/* +Adapted to Godot from the Bullet library. +See corresponding header file for licensing info. +*/ + #include "cone_twist_joint_sw.h" static void plane_space(const Vector3& n, Vector3& p, Vector3& q) { diff --git a/servers/physics/joints/cone_twist_joint_sw.h b/servers/physics/joints/cone_twist_joint_sw.h index 63502d2036..653259071d 100644 --- a/servers/physics/joints/cone_twist_joint_sw.h +++ b/servers/physics/joints/cone_twist_joint_sw.h @@ -1,9 +1,35 @@ -#ifndef CONE_TWIST_JOINT_SW_H -#define CONE_TWIST_JOINT_SW_H - -#include "servers/physics/joints_sw.h" -#include "servers/physics/joints/jacobian_entry_sw.h" +/*************************************************************************/ +/* cone_twist_joint_sw.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ +/* +Adapted to Godot from the Bullet library. +*/ /* Bullet Continuous Collision Detection and Physics Library @@ -22,6 +48,12 @@ subject to the following restrictions: Written by: Marcus Hennix */ +#ifndef CONE_TWIST_JOINT_SW_H +#define CONE_TWIST_JOINT_SW_H + +#include "servers/physics/joints_sw.h" +#include "servers/physics/joints/jacobian_entry_sw.h" + ///ConeTwistJointSW can be used to simulate ragdoll joints (upper arm, leg etc) diff --git a/servers/physics/joints/generic_6dof_joint_sw.cpp b/servers/physics/joints/generic_6dof_joint_sw.cpp index decc379461..06015a5228 100644 --- a/servers/physics/joints/generic_6dof_joint_sw.cpp +++ b/servers/physics/joints/generic_6dof_joint_sw.cpp @@ -1,3 +1,37 @@ +/*************************************************************************/ +/* generic_6dof_joint_sw.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +/* +Adapted to Godot from the Bullet library. +See corresponding header file for licensing info. +*/ + #include "generic_6dof_joint_sw.h" diff --git a/servers/physics/joints/generic_6dof_joint_sw.h b/servers/physics/joints/generic_6dof_joint_sw.h index 7f762e51a2..47ef43156d 100644 --- a/servers/physics/joints/generic_6dof_joint_sw.h +++ b/servers/physics/joints/generic_6dof_joint_sw.h @@ -1,3 +1,36 @@ +/*************************************************************************/ +/* generic_6dof_joint_sw.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +/* +Adapted to Godot from the Bullet library. +*/ + #ifndef GENERIC_6DOF_JOINT_SW_H #define GENERIC_6DOF_JOINT_SW_H diff --git a/servers/physics/joints/hinge_joint_sw.cpp b/servers/physics/joints/hinge_joint_sw.cpp index 37b73f64c7..035407065c 100644 --- a/servers/physics/joints/hinge_joint_sw.cpp +++ b/servers/physics/joints/hinge_joint_sw.cpp @@ -1,3 +1,37 @@ +/*************************************************************************/ +/* hinge_joint_sw.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +/* +Adapted to Godot from the Bullet library. +See corresponding header file for licensing info. +*/ + #include "hinge_joint_sw.h" static void plane_space(const Vector3& n, Vector3& p, Vector3& q) { diff --git a/servers/physics/joints/hinge_joint_sw.h b/servers/physics/joints/hinge_joint_sw.h index 4f6cdaf799..f87c2ac4c5 100644 --- a/servers/physics/joints/hinge_joint_sw.h +++ b/servers/physics/joints/hinge_joint_sw.h @@ -1,3 +1,36 @@ +/*************************************************************************/ +/* hinge_joint_sw.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +/* +Adapted to Godot from the Bullet library. +*/ + #ifndef HINGE_JOINT_SW_H #define HINGE_JOINT_SW_H diff --git a/servers/physics/joints/jacobian_entry_sw.cpp b/servers/physics/joints/jacobian_entry_sw.cpp deleted file mode 100644 index faa3cf15c4..0000000000 --- a/servers/physics/joints/jacobian_entry_sw.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "jacobian_entry_sw.h" - diff --git a/servers/physics/joints/jacobian_entry_sw.h b/servers/physics/joints/jacobian_entry_sw.h index 16fa034215..b7ab58f16b 100644 --- a/servers/physics/joints/jacobian_entry_sw.h +++ b/servers/physics/joints/jacobian_entry_sw.h @@ -1,3 +1,36 @@ +/*************************************************************************/ +/* jacobian_entry_sw.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +/* +Adapted to Godot from the Bullet library. +*/ + #ifndef JACOBIAN_ENTRY_SW_H #define JACOBIAN_ENTRY_SW_H diff --git a/servers/physics/joints/pin_joint_sw.cpp b/servers/physics/joints/pin_joint_sw.cpp index 229863fb7b..013d750b4f 100644 --- a/servers/physics/joints/pin_joint_sw.cpp +++ b/servers/physics/joints/pin_joint_sw.cpp @@ -1,3 +1,37 @@ +/*************************************************************************/ +/* pin_joint_sw.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +/* +Adapted to Godot from the Bullet library. +See corresponding header file for licensing info. +*/ + #include "pin_joint_sw.h" bool PinJointSW::setup(float p_step) { diff --git a/servers/physics/joints/pin_joint_sw.h b/servers/physics/joints/pin_joint_sw.h index dae6e7d5f2..4ef134fe73 100644 --- a/servers/physics/joints/pin_joint_sw.h +++ b/servers/physics/joints/pin_joint_sw.h @@ -1,3 +1,36 @@ +/*************************************************************************/ +/* pin_joint_sw.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +/* +Adapted to Godot from the Bullet library. +*/ + #ifndef PIN_JOINT_SW_H #define PIN_JOINT_SW_H diff --git a/servers/physics/joints/slider_joint_sw.cpp b/servers/physics/joints/slider_joint_sw.cpp index faa6875378..a9072e5de3 100644 --- a/servers/physics/joints/slider_joint_sw.cpp +++ b/servers/physics/joints/slider_joint_sw.cpp @@ -1,3 +1,37 @@ +/*************************************************************************/ +/* slider_joint_sw.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +/* +Adapted to Godot from the Bullet library. +See corresponding header file for licensing info. +*/ + #include "slider_joint_sw.h" //----------------------------------------------------------------------------- diff --git a/servers/physics/joints/slider_joint_sw.h b/servers/physics/joints/slider_joint_sw.h index 517bb5e6bc..9ee6c83800 100644 --- a/servers/physics/joints/slider_joint_sw.h +++ b/servers/physics/joints/slider_joint_sw.h @@ -1,3 +1,36 @@ +/*************************************************************************/ +/* slider_joint_sw.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +/* +Adapted to Godot from the Bullet library. +*/ + #ifndef SLIDER_JOINT_SW_H #define SLIDER_JOINT_SW_H diff --git a/servers/physics/joints_sw.cpp b/servers/physics/joints_sw.cpp deleted file mode 100644 index 7f7df31534..0000000000 --- a/servers/physics/joints_sw.cpp +++ /dev/null @@ -1,450 +0,0 @@ -/*************************************************************************/ -/* joints_sw.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "joints_sw.h" -#include "space_sw.h" - -#if 0 - -//based on chipmunk joint constraints - -/* Copyright (c) 2007 Scott Lembcke - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -static inline real_t k_scalar(Body2DSW *a,Body2DSW *b,const Vector2& rA, const Vector2& rB, const Vector2& n) { - - - real_t value=0; - - - { - value+=a->get_inv_mass(); - real_t rcn = rA.cross(n); - value+=a->get_inv_inertia() * rcn * rcn; - } - - if (b) { - - value+=b->get_inv_mass(); - real_t rcn = rB.cross(n); - value+=b->get_inv_inertia() * rcn * rcn; - } - - return value; - -} - - -bool PinJoint2DSW::setup(float p_step) { - - Space2DSW *space = A->get_space(); - ERR_FAIL_COND_V(!space,false;) - rA = A->get_transform().xform(anchor_A); - rB = B?B->get_transform().xform(anchor_B):anchor_B; - - Vector2 delta = rB - rA; - - rA-= A->get_transform().get_origin(); - if (B) - rB-=B->get_transform().get_origin(); - - - real_t jdist = delta.length(); - correct=false; - if (jdist==0) - return false; // do not correct - - correct=true; - - n = delta / jdist; - - // calculate mass normal - mass_normal = 1.0f/k_scalar(A, B, rA, rB, n); - - // calculate bias velocity - //real_t maxBias = joint->constraint.maxBias; - bias = -(get_bias()==0?space->get_constraint_bias():get_bias())*(1.0/p_step)*(jdist-dist); - bias = CLAMP(bias, -get_max_bias(), +get_max_bias()); - - // compute max impulse - jn_max = get_max_force() * p_step; - - // apply accumulated impulse - Vector2 j = n * jn_acc; - A->apply_impulse(rA,-j); - if (B) - B->apply_impulse(rB,j); - - return true; -} - - -static inline Vector2 -relative_velocity(Body2DSW *a, Body2DSW *b, Vector2 rA, Vector2 rB){ - Vector2 sum = a->get_linear_velocity() -rA.tangent() * a->get_angular_velocity(); - if (b) - return (b->get_linear_velocity() -rB.tangent() * b->get_angular_velocity()) - sum; - else - return -sum; -} - -static inline real_t -normal_relative_velocity(Body2DSW *a, Body2DSW *b, Vector2 rA, Vector2 rB, Vector2 n){ - return relative_velocity(a, b, rA, rB).dot(n); -} - - -void PinJoint2DSW::solve(float p_step){ - - if (!correct) - return; - - Vector2 ln = n; - - // compute relative velocity - real_t vrn = normal_relative_velocity(A,B, rA, rB, ln); - - // compute normal impulse - real_t jn = (bias - vrn)*mass_normal; - real_t jnOld = jn_acc; - jn_acc = CLAMP(jnOld + jn,-jn_max,jn_max); //cpfclamp(jnOld + jn, -joint->jnMax, joint->jnMax); - jn = jn_acc - jnOld; - - Vector2 j = jn*ln; - - A->apply_impulse(rA,-j); - if (B) - B->apply_impulse(rB,j); - -} - - -PinJoint2DSW::PinJoint2DSW(const Vector2& p_pos,Body2DSW* p_body_a,Body2DSW* p_body_b) : Joint2DSW(_arr,p_body_b?2:1) { - - A=p_body_a; - B=p_body_b; - anchor_A = p_body_a->get_inv_transform().xform(p_pos); - anchor_B = p_body_b?p_body_b->get_inv_transform().xform(p_pos):p_pos; - - jn_acc=0; - dist=0; - - p_body_a->add_constraint(this,0); - if (p_body_b) - p_body_b->add_constraint(this,1); - -} - -PinJoint2DSW::~PinJoint2DSW() { - - if (A) - A->remove_constraint(this); - if (B) - B->remove_constraint(this); - -} - -////////////////////////////////////////////// -////////////////////////////////////////////// -////////////////////////////////////////////// - - -static inline void -k_tensor(Body2DSW *a, Body2DSW *b, Vector2 r1, Vector2 r2, Vector2 *k1, Vector2 *k2) -{ - // calculate mass matrix - // If I wasn't lazy and wrote a proper matrix class, this wouldn't be so gross... - real_t k11, k12, k21, k22; - real_t m_sum = a->get_inv_mass() + b->get_inv_mass(); - - // start with I*m_sum - k11 = m_sum; k12 = 0.0f; - k21 = 0.0f; k22 = m_sum; - - // add the influence from r1 - real_t a_i_inv = a->get_inv_inertia(); - real_t r1xsq = r1.x * r1.x * a_i_inv; - real_t r1ysq = r1.y * r1.y * a_i_inv; - real_t r1nxy = -r1.x * r1.y * a_i_inv; - k11 += r1ysq; k12 += r1nxy; - k21 += r1nxy; k22 += r1xsq; - - // add the influnce from r2 - real_t b_i_inv = b->get_inv_inertia(); - real_t r2xsq = r2.x * r2.x * b_i_inv; - real_t r2ysq = r2.y * r2.y * b_i_inv; - real_t r2nxy = -r2.x * r2.y * b_i_inv; - k11 += r2ysq; k12 += r2nxy; - k21 += r2nxy; k22 += r2xsq; - - // invert - real_t determinant = k11*k22 - k12*k21; - ERR_FAIL_COND(determinant== 0.0); - - real_t det_inv = 1.0f/determinant; - *k1 = Vector2( k22*det_inv, -k12*det_inv); - *k2 = Vector2(-k21*det_inv, k11*det_inv); -} - -static _FORCE_INLINE_ Vector2 -mult_k(const Vector2& vr, const Vector2 &k1, const Vector2 &k2) -{ - return Vector2(vr.dot(k1), vr.dot(k2)); -} - -bool GrooveJoint2DSW::setup(float p_step) { - - - // calculate endpoints in worldspace - Vector2 ta = A->get_transform().xform(A_groove_1); - Vector2 tb = A->get_transform().xform(A_groove_2); - Space2DSW *space=A->get_space(); - - // calculate axis - Vector2 n = -(tb - ta).tangent().normalized(); - real_t d = ta.dot(n); - - xf_normal = n; - rB = B->get_transform().basis_xform(B_anchor); - - // calculate tangential distance along the axis of rB - real_t td = (B->get_transform().get_origin() + rB).cross(n); - // calculate clamping factor and rB - if(td <= ta.cross(n)){ - clamp = 1.0f; - rA = ta - A->get_transform().get_origin(); - } else if(td >= tb.cross(n)){ - clamp = -1.0f; - rA = tb - A->get_transform().get_origin(); - } else { - clamp = 0.0f; - //joint->r1 = cpvsub(cpvadd(cpvmult(cpvperp(n), -td), cpvmult(n, d)), a->p); - rA = ((-n.tangent() * -td) + n*d) - A->get_transform().get_origin(); - } - - // Calculate mass tensor - k_tensor(A, B, rA, rB, &k1, &k2); - - // compute max impulse - jn_max = get_max_force() * p_step; - - // calculate bias velocity -// cpVect delta = cpvsub(cpvadd(b->p, joint->r2), cpvadd(a->p, joint->r1)); -// joint->bias = cpvclamp(cpvmult(delta, -joint->constraint.biasCoef*dt_inv), joint->constraint.maxBias); - - - Vector2 delta = (B->get_transform().get_origin() +rB) - (A->get_transform().get_origin() + rA); - gbias=(delta*-(get_bias()==0?space->get_constraint_bias():get_bias())*(1.0/p_step)).clamped(get_max_bias()); - - // apply accumulated impulse - A->apply_impulse(rA,-jn_acc); - B->apply_impulse(rB,jn_acc); - - correct=true; - return true; -} - -void GrooveJoint2DSW::solve(float p_step){ - - - // compute impulse - Vector2 vr = relative_velocity(A, B, rA,rB); - - Vector2 j = mult_k(gbias-vr, k1, k2); - Vector2 jOld = jn_acc; - j+=jOld; - - jn_acc = (((clamp * j.cross(xf_normal)) > 0) ? j : xf_normal.project(j)).clamped(jn_max); - - j = jn_acc - jOld; - - A->apply_impulse(rA,-j); - B->apply_impulse(rB,j); -} - - -GrooveJoint2DSW::GrooveJoint2DSW(const Vector2& p_a_groove1,const Vector2& p_a_groove2, const Vector2& p_b_anchor, Body2DSW* p_body_a,Body2DSW* p_body_b) : Joint2DSW(_arr,2) { - - A=p_body_a; - B=p_body_b; - - A_groove_1 = A->get_inv_transform().xform(p_a_groove1); - A_groove_2 = A->get_inv_transform().xform(p_a_groove2); - B_anchor=B->get_inv_transform().xform(p_b_anchor); - A_groove_normal = -(A_groove_2 - A_groove_1).normalized().tangent(); - - A->add_constraint(this,0); - B->add_constraint(this,1); - -} - -GrooveJoint2DSW::~GrooveJoint2DSW() { - - A->remove_constraint(this); - B->remove_constraint(this); -} - - -////////////////////////////////////////////// -////////////////////////////////////////////// -////////////////////////////////////////////// - - -bool DampedSpringJoint2DSW::setup(float p_step) { - - rA = A->get_transform().basis_xform(anchor_A); - rB = B->get_transform().basis_xform(anchor_B); - - Vector2 delta = (B->get_transform().get_origin() + rB) - (A->get_transform().get_origin() + rA) ; - real_t dist = delta.length(); - - if (dist) - n=delta/dist; - else - n=Vector2(); - - real_t k = k_scalar(A, B, rA, rB, n); - n_mass = 1.0f/k; - - target_vrn = 0.0f; - v_coef = 1.0f - Math::exp(-damping*(p_step)*k); - - // apply spring force - real_t f_spring = (rest_length - dist) * stiffness; - Vector2 j = n * f_spring*(p_step); - - A->apply_impulse(rA,-j); - B->apply_impulse(rB,j); - - - return true; -} - -void DampedSpringJoint2DSW::solve(float p_step) { - - // compute relative velocity - real_t vrn = normal_relative_velocity(A, B, rA, rB, n) - target_vrn; - - // compute velocity loss from drag - // not 100% certain this is derived correctly, though it makes sense - real_t v_damp = -vrn*v_coef; - target_vrn = vrn + v_damp; - Vector2 j=n*v_damp*n_mass; - - A->apply_impulse(rA,-j); - B->apply_impulse(rB,j); - -} - -void DampedSpringJoint2DSW::set_param(Physics2DServer::DampedStringParam p_param, real_t p_value) { - - switch(p_param) { - - case Physics2DServer::DAMPED_STRING_REST_LENGTH: { - - rest_length=p_value; - } break; - case Physics2DServer::DAMPED_STRING_DAMPING: { - - damping=p_value; - } break; - case Physics2DServer::DAMPED_STRING_STIFFNESS: { - - stiffness=p_value; - } break; - } - -} - -real_t DampedSpringJoint2DSW::get_param(Physics2DServer::DampedStringParam p_param) const{ - - switch(p_param) { - - case Physics2DServer::DAMPED_STRING_REST_LENGTH: { - - return rest_length; - } break; - case Physics2DServer::DAMPED_STRING_DAMPING: { - - return damping; - } break; - case Physics2DServer::DAMPED_STRING_STIFFNESS: { - - return stiffness; - } break; - } - - ERR_FAIL_V(0); -} - - -DampedSpringJoint2DSW::DampedSpringJoint2DSW(const Vector2& p_anchor_a,const Vector2& p_anchor_b, Body2DSW* p_body_a,Body2DSW* p_body_b) : Joint2DSW(_arr,2) { - - - A=p_body_a; - B=p_body_b; - anchor_A = A->get_inv_transform().xform(p_anchor_a); - anchor_B = B->get_inv_transform().xform(p_anchor_b); - - rest_length=p_anchor_a.distance_to(p_anchor_b); - stiffness=20; - damping=1.5; - - - A->add_constraint(this,0); - B->add_constraint(this,1); - -} - -DampedSpringJoint2DSW::~DampedSpringJoint2DSW() { - - A->remove_constraint(this); - B->remove_constraint(this); - -} - - -#endif diff --git a/servers/physics/joints_sw.h b/servers/physics/joints_sw.h index c42baae961..b54c655ea1 100644 --- a/servers/physics/joints_sw.h +++ b/servers/physics/joints_sw.h @@ -33,7 +33,6 @@ #include "body_sw.h" - class JointSW : public ConstraintSW { @@ -45,122 +44,4 @@ public: }; -#if 0 -class PinJointSW : public JointSW { - - union { - struct { - BodySW *A; - BodySW *B; - }; - - BodySW *_arr[2]; - }; - - Vector2 anchor_A; - Vector2 anchor_B; - real_t dist; - real_t jn_acc; - real_t jn_max; - real_t max_distance; - real_t mass_normal; - real_t bias; - - Vector2 rA,rB; - Vector2 n; //normal - bool correct; - - -public: - - virtual PhysicsServer::JointType get_type() const { return PhysicsServer::JOINT_PIN; } - - virtual bool setup(float p_step); - virtual void solve(float p_step); - - - PinJointSW(const Vector2& p_pos,BodySW* p_body_a,BodySW* p_body_b=NULL); - ~PinJointSW(); -}; - - -class GrooveJointSW : public JointSW { - - union { - struct { - BodySW *A; - BodySW *B; - }; - - BodySW *_arr[2]; - }; - - Vector2 A_groove_1; - Vector2 A_groove_2; - Vector2 A_groove_normal; - Vector2 B_anchor; - Vector2 jn_acc; - Vector2 gbias; - real_t jn_max; - real_t clamp; - Vector2 xf_normal; - Vector2 rA,rB; - Vector2 k1,k2; - - - bool correct; - -public: - - virtual PhysicsServer::JointType get_type() const { return PhysicsServer::JOINT_GROOVE; } - - virtual bool setup(float p_step); - virtual void solve(float p_step); - - - GrooveJointSW(const Vector2& p_a_groove1,const Vector2& p_a_groove2, const Vector2& p_b_anchor, BodySW* p_body_a,BodySW* p_body_b); - ~GrooveJointSW(); -}; - - -class DampedSpringJointSW : public JointSW { - - union { - struct { - BodySW *A; - BodySW *B; - }; - - BodySW *_arr[2]; - }; - - - Vector2 anchor_A; - Vector2 anchor_B; - - real_t rest_length; - real_t damping; - real_t stiffness; - - Vector2 rA,rB; - Vector2 n; - real_t n_mass; - real_t target_vrn; - real_t v_coef; - -public: - - virtual PhysicsServer::JointType get_type() const { return PhysicsServer::JOINT_DAMPED_SPRING; } - - virtual bool setup(float p_step); - virtual void solve(float p_step); - - void set_param(PhysicsServer::DampedStringParam p_param, real_t p_value); - real_t get_param(PhysicsServer::DampedStringParam p_param) const; - - DampedSpringJointSW(const Vector2& p_anchor_a,const Vector2& p_anchor_b, BodySW* p_body_a,BodySW* p_body_b); - ~DampedSpringJointSW(); -}; -#endif - -#endif // JOINTS__SW_H +#endif // JOINTS_SW_H diff --git a/servers/physics_2d/broad_phase_2d_hash_grid.cpp b/servers/physics_2d/broad_phase_2d_hash_grid.cpp index 6a52d5fe5b..953c87021f 100644 --- a/servers/physics_2d/broad_phase_2d_hash_grid.cpp +++ b/servers/physics_2d/broad_phase_2d_hash_grid.cpp @@ -29,6 +29,8 @@ #include "broad_phase_2d_hash_grid.h" #include "globals.h" +#define LARGE_ELEMENT_FI 1.01239812 + void BroadPhase2DHashGrid::_pair_attempt(Element *p_elem, Element* p_with) { Map<Element*,PairData*>::Element *E=p_elem->paired.find(p_with); @@ -102,6 +104,26 @@ void BroadPhase2DHashGrid::_check_motion(Element *p_elem) { void BroadPhase2DHashGrid::_enter_grid( Element* p_elem, const Rect2& p_rect,bool p_static) { + + Vector2 sz = (p_rect.size/cell_size*LARGE_ELEMENT_FI); //use magic number to avoid floating point issues + if (sz.width*sz.height > large_object_min_surface) { + //large object, do not use grid, must check against all elements + for (Map<ID,Element>::Element *E=element_map.front();E;E=E->next()) { + if (E->key()==p_elem->self) + continue; // do not pair against itself + if (E->get().owner == p_elem->owner) + continue; + if (E->get()._static && p_static) + continue; + + _pair_attempt(p_elem,&E->get()); + } + + + large_elements[p_elem].inc(); + return; + } + Point2i from = (p_rect.pos/cell_size).floor(); Point2i to = ((p_rect.pos+p_rect.size)/cell_size).floor(); @@ -174,12 +196,40 @@ void BroadPhase2DHashGrid::_enter_grid( Element* p_elem, const Rect2& p_rect,boo } + //pair separatedly with large elements + + for (Map<Element*,RC>::Element *E=large_elements.front();E;E=E->next()) { + + if (E->key()==p_elem) + continue; // do not pair against itself + if (E->key()->owner == p_elem->owner) + continue; + if (E->key()->_static && p_static) + continue; + + _pair_attempt(E->key(),p_elem); + } } void BroadPhase2DHashGrid::_exit_grid( Element* p_elem, const Rect2& p_rect,bool p_static) { + Vector2 sz = (p_rect.size/cell_size*LARGE_ELEMENT_FI); + if (sz.width*sz.height > large_object_min_surface) { + + //unpair all elements, instead of checking all, just check what is already paired, so we at least save from checking static vs static + for (Map<Element*,PairData*>::Element *E=p_elem->paired.front();E;E=E->next()) { + + _unpair_attempt(p_elem,E->key()); + } + + if (large_elements[p_elem].dec()==0) { + large_elements.erase(p_elem); + } + return; + } + Point2i from = (p_rect.pos/cell_size).floor(); Point2i to = ((p_rect.pos+p_rect.size)/cell_size).floor(); @@ -274,6 +324,20 @@ void BroadPhase2DHashGrid::_exit_grid( Element* p_elem, const Rect2& p_rect,bool } + + for (Map<Element*,RC>::Element *E=large_elements.front();E;E=E->next()) { + if (E->key()==p_elem) + continue; // do not pair against itself + if (E->key()->owner == p_elem->owner) + continue; + if (E->key()->_static && p_static) + continue; + + //unpair from large elements + _unpair_attempt(p_elem,E->key()); + } + + } @@ -526,6 +590,28 @@ int BroadPhase2DHashGrid::cull_segment(const Vector2& p_from, const Vector2& p_t } + for (Map<Element*,RC>::Element *E=large_elements.front();E;E=E->next()) { + + if (cullcount>=p_max_results) + break; + if (E->key()->pass==pass) + continue; + + E->key()->pass=pass; + +// if (use_aabb && !p_aabb.intersects(E->key()->aabb)) +// continue; + + if (!E->key()->aabb.intersects_segment(p_from,p_to)) + continue; + + p_results[cullcount]=E->key()->owner; + p_result_indices[cullcount]=E->key()->subindex; + cullcount++; + + + } + return cullcount; } @@ -547,6 +633,27 @@ int BroadPhase2DHashGrid::cull_aabb(const Rect2& p_aabb,CollisionObject2DSW** p_ } + for (Map<Element*,RC>::Element *E=large_elements.front();E;E=E->next()) { + + if (cullcount>=p_max_results) + break; + if (E->key()->pass==pass) + continue; + + E->key()->pass=pass; + + if (!p_aabb.intersects(E->key()->aabb)) + continue; + +// if (!E->key()->aabb.intersects_segment(p_from,p_to)) +// continue; + + p_results[cullcount]=E->key()->owner; + p_result_indices[cullcount]=E->key()->subindex; + cullcount++; + + + } return cullcount; } @@ -581,6 +688,7 @@ BroadPhase2DHashGrid::BroadPhase2DHashGrid() { hash_table = memnew_arr( PosBin*, hash_table_size); cell_size = GLOBAL_DEF("physics_2d/cell_size",128); + large_object_min_surface = GLOBAL_DEF("physics_2d/large_object_surface_treshold_in_cells",512); for(int i=0;i<hash_table_size;i++) hash_table[i]=NULL; diff --git a/servers/physics_2d/broad_phase_2d_hash_grid.h b/servers/physics_2d/broad_phase_2d_hash_grid.h index bda5ea21cf..561d488484 100644 --- a/servers/physics_2d/broad_phase_2d_hash_grid.h +++ b/servers/physics_2d/broad_phase_2d_hash_grid.h @@ -55,8 +55,26 @@ class BroadPhase2DHashGrid : public BroadPhase2DSW { }; + struct RC { + + int ref; + + _FORCE_INLINE_ int inc() { + ref++; + return ref; + } + _FORCE_INLINE_ int dec() { + ref--; + return ref; + } + + _FORCE_INLINE_ RC() { + ref=0; + } + }; Map<ID,Element> element_map; + Map<Element*,RC> large_elements; ID current; @@ -86,6 +104,7 @@ class BroadPhase2DHashGrid : public BroadPhase2DSW { Map<PairKey,PairData> pair_map; int cell_size; + int large_object_min_surface; PairCallback pair_callback; void *pair_userdata; @@ -127,23 +146,7 @@ class BroadPhase2DHashGrid : public BroadPhase2DSW { }; - struct RC { - - int ref; - - _FORCE_INLINE_ int inc() { - ref++; - return ref; - } - _FORCE_INLINE_ int dec() { - ref--; - return ref; - } - _FORCE_INLINE_ RC() { - ref=0; - } - }; struct PosBin { diff --git a/servers/physics_2d/collision_solver_2d_sat.cpp b/servers/physics_2d/collision_solver_2d_sat.cpp index f22b676304..a6d12bdada 100644 --- a/servers/physics_2d/collision_solver_2d_sat.cpp +++ b/servers/physics_2d/collision_solver_2d_sat.cpp @@ -77,6 +77,7 @@ _FORCE_INLINE_ static void _generate_contacts_point_edge(const Vector2 * p_point struct _generate_contacts_Pair { + bool a; int idx; float d; _FORCE_INLINE_ bool operator <(const _generate_contacts_Pair& l) const { return d< l.d; } @@ -89,12 +90,14 @@ _FORCE_INLINE_ static void _generate_contacts_edge_edge(const Vector2 * p_points ERR_FAIL_COND( p_point_count_B != 2 ); // circle is actually a 4x3 matrix #endif - +# if 0 Vector2 rel_A=p_points_A[1]-p_points_A[0]; Vector2 rel_B=p_points_B[1]-p_points_B[0]; Vector2 t = p_collector->normal.tangent(); + print_line("tangent: "+t); + real_t dA[2]={t.dot(p_points_A[0]),t.dot(p_points_A[1])}; Vector2 pA[2]={p_points_A[0],p_points_A[1]}; @@ -201,41 +204,55 @@ _FORCE_INLINE_ static void _generate_contacts_edge_edge(const Vector2 * p_points } } +#endif + +#if 1 -#if 0 - Vector2 axis = rel_A.normalized(); - Vector2 axis_B = rel_B.normalized(); - if (axis.dot(axis_B)<0) - axis_B=-axis_B; - axis=(axis+axis_B)*0.5; - Vector2 normal_A = axis.tangent(); - real_t dA = normal_A.dot(p_points_A[0]); - Vector2 normal_B = rel_B.tangent().normalized(); - real_t dB = normal_A.dot(p_points_B[0]); - Vector2 A[4]={ normal_A.plane_project(dA,p_points_B[0]), normal_A.plane_project(dA,p_points_B[1]), p_points_A[0], p_points_A[1] }; - Vector2 B[4]={ p_points_B[0], p_points_B[1], normal_B.plane_project(dB,p_points_A[0]), normal_B.plane_project(dB,p_points_A[1]) }; + Vector2 n = p_collector->normal; + Vector2 t = n.tangent(); + real_t dA = n.dot(p_points_A[0]); + real_t dB = n.dot(p_points_B[0]); _generate_contacts_Pair dvec[4]; - for(int i=0;i<4;i++) { - dvec[i].d=axis.dot(p_points_A[0]-A[i]); - dvec[i].idx=i; - } + + dvec[0].d=t.dot(p_points_A[0]); + dvec[0].a=true; + dvec[0].idx=0; + dvec[1].d=t.dot(p_points_A[1]); + dvec[1].a=true; + dvec[1].idx=1; + dvec[2].d=t.dot(p_points_B[0]); + dvec[2].a=false; + dvec[2].idx=0; + dvec[3].d=t.dot(p_points_B[1]); + dvec[3].a=false; + dvec[3].idx=1; SortArray<_generate_contacts_Pair> sa; sa.sort(dvec,4); for(int i=1;i<=2;i++) { - Vector2 a = A[i]; - Vector2 b = B[i]; - if (p_collector->normal.dot(a) > p_collector->normal.dot(b)-CMP_EPSILON) - continue; - p_collector->call(a,b); + if (dvec[i].a) { + Vector2 a = p_points_A[dvec[i].idx]; + Vector2 b = n.plane_project(dB,a); + if (n.dot(a) > n.dot(b)-CMP_EPSILON) + continue; + p_collector->call(a,b); + } else { + Vector2 b = p_points_B[dvec[i].idx]; + Vector2 a = n.plane_project(dA,b); + if (n.dot(a) > n.dot(b)-CMP_EPSILON) + continue; + p_collector->call(a,b); + } } + + #elif 0 Vector2 axis = rel_A.normalized(); //make an axis Vector2 axis_B = rel_B.normalized(); diff --git a/servers/physics_2d/constraint_2d_sw.cpp b/servers/physics_2d/constraint_2d_sw.cpp deleted file mode 100644 index 2f681e8590..0000000000 --- a/servers/physics_2d/constraint_2d_sw.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/*************************************************************************/ -/* constraint_2d_sw.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "constraint_2d_sw.h" - diff --git a/servers/physics_2d/physics_2d_server_wrap_mt.cpp b/servers/physics_2d/physics_2d_server_wrap_mt.cpp index c5f023f162..3e8b284b9b 100644 --- a/servers/physics_2d/physics_2d_server_wrap_mt.cpp +++ b/servers/physics_2d/physics_2d_server_wrap_mt.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* physics_2d_server_wrap_mt.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "physics_2d_server_wrap_mt.h" #include "os/os.h" diff --git a/servers/physics_2d/physics_2d_server_wrap_mt.h b/servers/physics_2d/physics_2d_server_wrap_mt.h index 891c45addf..fd98da2d9c 100644 --- a/servers/physics_2d/physics_2d_server_wrap_mt.h +++ b/servers/physics_2d/physics_2d_server_wrap_mt.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* physics_2d_server_wrap_mt.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef PHYSICS2DSERVERWRAPMT_H #define PHYSICS2DSERVERWRAPMT_H diff --git a/servers/server_wrap_mt_common.h b/servers/server_wrap_mt_common.h index 149e9ec4f9..dd9d603852 100644 --- a/servers/server_wrap_mt_common.h +++ b/servers/server_wrap_mt_common.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* server_wrap_mt_common.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #define FUNC0R(m_r,m_type)\ virtual m_r m_type() { \ diff --git a/servers/spatial_sound/spatial_sound_server_sw.cpp b/servers/spatial_sound/spatial_sound_server_sw.cpp index d87d05dc4d..dc15d61afa 100644 --- a/servers/spatial_sound/spatial_sound_server_sw.cpp +++ b/servers/spatial_sound/spatial_sound_server_sw.cpp @@ -1,14 +1,31 @@ -/*************************************************/ -/* spatial_sound_server_sw.cpp */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* spatial_sound_server_sw.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "spatial_sound_server_sw.h" #include "os/os.h" #include "servers/audio/audio_filter_sw.h" diff --git a/servers/spatial_sound/spatial_sound_server_sw.h b/servers/spatial_sound/spatial_sound_server_sw.h index a8ae7beb59..b4295bf145 100644 --- a/servers/spatial_sound/spatial_sound_server_sw.h +++ b/servers/spatial_sound/spatial_sound_server_sw.h @@ -1,14 +1,31 @@ -/*************************************************/ -/* spatial_sound_server_sw.h */ -/*************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/*************************************************/ -/* Source code within this file is: */ -/* (c) 2007-2016 Juan Linietsky, Ariel Manzur */ -/* All Rights Reserved. */ -/*************************************************/ - +/*************************************************************************/ +/* spatial_sound_server_sw.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef SPATIAL_SOUND_SERVER_SW_H #define SPATIAL_SOUND_SERVER_SW_H diff --git a/servers/visual/shader_compiler.cpp b/servers/visual/shader_compiler.cpp deleted file mode 100644 index ee5dae5ae2..0000000000 --- a/servers/visual/shader_compiler.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/*************************************************************************/ -/* shader_compiler.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "shader_compiler.h" - diff --git a/servers/visual/shader_compiler.h b/servers/visual/shader_compiler.h deleted file mode 100644 index 29561b2145..0000000000 --- a/servers/visual/shader_compiler.h +++ /dev/null @@ -1,142 +0,0 @@ -/*************************************************************************/ -/* shader_compiler.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef SHADER_COMPILER_H -#define SHADER_COMPILER_H - -#include "map.h" -#include "list.h" -#include "vector.h" -#if 0 -class ShaderSyntax { -public: - - - enum DataType { - TYPE_BOOL, - TYPE_FLOAT, - TYPE_VEC3, - TYPE_TRANSFORM, - TYPE_TEXTURE - }; - - enum Operator { - OP_ASSIGN, - OP_ADD, - OP_SUB, - OP_MUL, - OP_DIV, - OP_NEG, - OP_CMP_EQ, - OP_CMP_NEQ, - OP_CMP_LEQ, - OP_CMP_GEQ, - OP_CMP_OR, - OP_CMP_AND, - OP_CALL - }; - - struct Node { - - enum Type { - TYPE_PROGRAM, - TYPE_FUNCTION, - TYPE_BLOCK, - TYPE_VARIABLE, - TYPE_OPERATOR, - TYPE_IF, - }; - - Node * parent; - Type type; - - virtual ~Node() {} - }; - - - struct OperatorNode : public Node { - - Operator op; - Vector<Node*> arguments; - OperatorNode() { type=TYPE_OPERATOR; } - }; - - struct VariableNode : public Node { - - StringName variable; - VariableNode() { type=TYPE_VARIABLE; } - }; - - struct BlockNode : public Node { - - Map<StringName,DataType> variables; - List<Node*> subnodes; - BlockNode() { type=TYPE_BLOCK; } - }; - - struct ConditionalNode : public Node { - - Node *test; - Node *do_if; - Node *do_else; - ConditionalNode() { type=TYPE_CONDITIONAL; } - }; - - - struct FunctionNode : public Node { - - struct Argument { - - StringName name; - DataType type; - }; - - Vector<Argument> arguments; - Node *body; - - FunctionNode() { type=TYPE_FUNCTION; } - - }; - - - struct ProgramNode : public Node { - - Vector<FunctionNode*> functions; - Node *body; - - ProgramNode() { type=TYPE_PROGRAM; } - }; - - - - - ShaderCompiler(); -}; - -#endif // SHADER_COMPILER_H -#endif diff --git a/servers/visual/shader_graph.cpp b/servers/visual/shader_graph.cpp deleted file mode 100644 index 7fe949bec3..0000000000 --- a/servers/visual/shader_graph.cpp +++ /dev/null @@ -1,455 +0,0 @@ -/*************************************************************************/ -/* shader_graph.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "shader_graph.h" - -#if 0 - - -struct _ConnectionKey { - - int node; - int slot; - - _FORCE_INLINE_ _ConnectionKey(int p_node=0,int p_slot=0) { node=p_node; slot=p_slot; } - - _FORCE_INLINE_ bool operator<(const _ConnectionKey& p_other) const { - - if (node<p_other.node) - return true; - else if (node>p_other.node) - return false; - else - return slot<p_other.slot; - } -}; - -Error ShaderGraph::generate(ShaderCodeGenerator * p_generator) const { - - Map<int,Node>::Element *E = node_map.front(); - int i=0; - while(E) { - - E->get().order=i++; - E->get().out_valid=false; - E->get().in_valid=false; - E=E->next(); - } - - int worst_case=connections.size() * connections.size(); // worst bubble case - int iterations=0; - int swaps; - - do { - swaps=0; - const List<Connection>::Element *E=connections.front(); - - while(E) { - - const Connection &c = E->get(); - - const Node *src = &node_map[c.src_id]; - const Node *dst = &node_map[c.dst_id]; - - if (src->order > dst->order) { - - SWAP(src->order, dst->order); - swaps++; - } - - E=E->next(); - } - - - iterations++; - - } while (iterations<=worst_case && swaps>0); - - ERR_FAIL_COND_V( swaps != 0 , ERR_CYCLIC_LINK ); - - //node array - Vector<const Node*> nodes; - nodes.resize(node_map.size()); - - E = node_map.front(); - while(E) { - - ERR_FAIL_INDEX_V( E->get().order, nodes.size(), ERR_BUG); - nodes[E->get().order]=&E->get(); - E=E->next(); - } - - //connection set - - Map<_ConnectionKey,int> in_connection_map; - Map<_ConnectionKey,List<int> > out_connection_map; - Map<_ConnectionKey,int> in_node_map; - Map<_ConnectionKey,List<int> > out_node_map; - - const List<Connection>::Element *CE=connections.front(); - i=0; - while(CE) { - const Connection &c = CE->get(); - - _ConnectionKey in_k; - in_k.node=node_map[c.dst_id].order; - in_k.slot=c.dst_slot; - in_connection_map[in_k]=i; - in_node_map[in_k]=node_map[c.src_id].order; - - _ConnectionKey out_k; - out_k.node=node_map[c.src_id].order; - out_k.slot=c.src_slot; - if (!out_connection_map.has(out_k)) - out_connection_map[out_k]=List<int>(); - out_connection_map[out_k].push_back(i); - if(!out_node_map.has(out_k)) - out_node_map[out_k]=List<int>(); - out_node_map[out_k].push_back(node_map[c.dst_id].order); - - i++; - CE=CE->next(); - } - - // validate nodes if they are connected to an output - - for(int i=nodes.size()-1;i>=0;i--) { - - if (VisualServer::shader_get_output_count(nodes[i]->type)==0) { - // an actual graph output - - _ConnectionKey in_k; - in_k.node=nodes[i]->order; - in_k.slot=0; - - if (in_node_map.has(in_k)) { - nodes[i]->out_valid=true; - } - } else { - // regular node - - bool valid=false; - for(int j=0;j<VS::shader_get_output_count(nodes[i]->type);j++) { - - _ConnectionKey key(nodes[i]->order,j); - - if (out_node_map.has(key)) { - for(List<int>::Element *CE=out_node_map[key].front();CE;CE=CE->next()) { - - int to_node=CE->get(); - ERR_CONTINUE(to_node<0 || to_node >=nodes.size()); - if (nodes[to_node]->out_valid) { - valid=true; - break; - } - - - } - } - if (valid) - break; - - } - - nodes[i]->out_valid=valid; - } - } - - // validate nodes if they are connected to an input - - for(int i=0;i<nodes.size();i++) { - - if (VisualServer::shader_get_input_count(nodes[i]->type)==0) { - // an actual graph input - - int out_count=VisualServer::shader_get_output_count(nodes[i]->type); - - - for(int j=0;j<out_count;j++) { - - _ConnectionKey out_k; - out_k.node=nodes[i]->order; - out_k.slot=j; - if (out_node_map.has(out_k)) { - nodes[i]->in_valid=true; - break; - } - } - - } else { - // regular node - // this is very important.. for a node to be valid, all its inputs need to be valid - bool valid=true; - for(int j=0;j<VS::shader_get_input_count(nodes[i]->type);j++) { - - - bool in_valid=false; - _ConnectionKey key(nodes[i]->order,j); - if (in_node_map.has(key)) { - - int from_node=in_node_map[key]; - ERR_CONTINUE(from_node<0 || from_node>=nodes.size()); - if (nodes[from_node]->in_valid) - in_valid=true; - - } - - if (!in_valid) { - valid=false; - break; - } - - } - - nodes[i]->in_valid=valid; - } - } - - // write code - - p_generator->begin(); - - for(int i=0;i<nodes.size();i++) { - - - if (!nodes[i]->out_valid || !nodes[i]->in_valid) // valid in both ways - continue; // skip node - - Vector<int> in_indices; - in_indices.resize(VS::shader_get_input_count(nodes[i]->type)); - Vector<int> out_indices; - Vector<int> out_slot_indices; - - for(int j=0;j<in_indices.size();j++) { - - _ConnectionKey key(nodes[i]->order,j); - if (in_connection_map.has(key)) - in_indices[j]=in_connection_map[key]; - else - in_indices[j]=-1; - } - - for(int j=0;j<VS::shader_get_output_count(nodes[i]->type);j++) { - - _ConnectionKey key(nodes[i]->order,j); - if (out_connection_map.has(key)) { - for(List<int>::Element *CE=out_connection_map[key].front();CE;CE=CE->next()) { - - out_indices.push_back(CE->get()); - out_slot_indices.push_back(j); - } - } - } - - Error err = p_generator->add_node(nodes[i]->type,i,nodes[i]->id,nodes[i]->param,in_indices,out_indices,out_slot_indices); - ERR_FAIL_COND_V( err, err ); - } - - p_generator->end(); - - - return OK; -} - -void ShaderGraph::node_add(VS::ShaderNodeType p_type,int p_id) { - - - ERR_FAIL_COND( node_map.has(p_id ) ); - ERR_FAIL_INDEX( p_type, VS::NODE_TYPE_MAX ); - Node node; - - node.type=p_type; - node.id=p_id; - node.x=0; - node.y=0; - - node_map[p_id]=node; - -} - -void ShaderGraph::node_set_pos(int p_id, int p_x,int p_y) { - - ERR_FAIL_COND(!node_map.has(p_id)); - node_map[p_id].x=p_x; - node_map[p_id].y=p_y; -} -int ShaderGraph::node_get_pos_x(int p_id) const { - - ERR_FAIL_COND_V(!node_map.has(p_id),-1); - return node_map[p_id].x; -} -int ShaderGraph::node_get_pos_y(int p_id) const { - - ERR_FAIL_COND_V(!node_map.has(p_id),-1); - return node_map[p_id].y; -} - -void ShaderGraph::node_remove(int p_id) { - - ERR_FAIL_COND(!node_map.has(p_id)); - - //erase connections associated with node - List<Connection>::Element *N,*E=connections.front(); - while(E) { - N=E->next(); - const Connection &c = E->get(); - if (c.src_id==p_id || c.dst_id==p_id) { - - connections.erase(E); - } - E=N; - } - - node_map.erase(p_id); -} - -void ShaderGraph::node_change_type(int p_id, VS::ShaderNodeType p_type) { - - ERR_FAIL_COND(!node_map.has(p_id)); - node_map[p_id].type=p_type; - node_map[p_id].param=Variant(); - -} - -void ShaderGraph::node_set_param(int p_id, const Variant& p_value) { - - ERR_FAIL_COND(!node_map.has(p_id)); - node_map[p_id].param=p_value; -} - -void ShaderGraph::get_node_list(List<int> *p_node_list) const { - - Map<int,Node>::Element *E = node_map.front(); - - while(E) { - - p_node_list->push_back(E->key()); - E=E->next(); - } -} - - -VS::ShaderNodeType ShaderGraph::node_get_type(int p_id) const { - - ERR_FAIL_COND_V(!node_map.has(p_id),VS::NODE_TYPE_MAX); - return node_map[p_id].type; -} - -Variant ShaderGraph::node_get_param(int p_id) const { - - ERR_FAIL_COND_V(!node_map.has(p_id),Variant()); - return node_map[p_id].param; -} - - -Error ShaderGraph::connect(int p_src_id,int p_src_slot, int p_dst_id,int p_dst_slot) { - - ERR_FAIL_COND_V(p_src_id==p_dst_id, ERR_INVALID_PARAMETER); - ERR_FAIL_COND_V(!node_map.has(p_src_id), ERR_INVALID_PARAMETER); - ERR_FAIL_COND_V(!node_map.has(p_dst_id), ERR_INVALID_PARAMETER); - VisualServer::ShaderNodeType type_src=node_map[p_src_id].type; - VisualServer::ShaderNodeType type_dst=node_map[p_dst_id].type; - ERR_FAIL_INDEX_V( p_src_slot, VisualServer::shader_get_output_count(type_src), ERR_INVALID_PARAMETER ); - ERR_FAIL_INDEX_V( p_dst_slot, VisualServer::shader_get_input_count(type_dst), ERR_INVALID_PARAMETER ); - ERR_FAIL_COND_V(VisualServer::shader_is_output_vector(type_src,p_src_slot) != VisualServer::shader_is_input_vector(type_dst,p_dst_slot), ERR_INVALID_PARAMETER ); - - - List<Connection>::Element *E=connections.front(); - while(E) { - const Connection &c = E->get(); - ERR_FAIL_COND_V(c.dst_slot==p_dst_slot && c.dst_id == p_dst_id, ERR_ALREADY_EXISTS); - - E=E->next(); - } - - Connection c; - c.src_slot=p_src_slot; - c.src_id=p_src_id; - c.dst_slot=p_dst_slot; - c.dst_id=p_dst_id; - - connections.push_back(c); - - return OK; -} - -bool ShaderGraph::is_connected(int p_src_id,int p_src_slot, int p_dst_id,int p_dst_slot) const { - - const List<Connection>::Element *E=connections.front(); - while(E) { - const Connection &c = E->get(); - if (c.dst_slot==p_dst_slot && c.dst_id == p_dst_id && c.src_slot==p_src_slot && c.src_id == p_src_id) - return true; - - E=E->next(); - } - - return false; -} - -void ShaderGraph::disconnect(int p_src_id,int p_src_slot, int p_dst_id,int p_dst_slot) { - - List<Connection>::Element *N,*E=connections.front(); - while(E) { - N=E->next(); - const Connection &c = E->get(); - if (c.src_slot==p_src_slot && c.src_id==p_src_id && c.dst_slot==p_dst_slot && c.dst_id == p_dst_id) { - - connections.erase(E); - } - E=N; - } - - -} - - -void ShaderGraph::clear() { - - connections.clear(); - node_map.clear(); -} - -List<ShaderGraph::Connection> ShaderGraph::get_connection_list() const { - - return connections; - -} - -ShaderGraph::ShaderGraph() { - - -} - - -ShaderGraph::~ShaderGraph() { - -} - - -#endif diff --git a/servers/visual/shader_graph.h b/servers/visual/shader_graph.h deleted file mode 100644 index 41df0f60f1..0000000000 --- a/servers/visual/shader_graph.h +++ /dev/null @@ -1,109 +0,0 @@ -/*************************************************************************/ -/* shader_graph.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ - -#if 0 - -/** - @author Juan Linietsky <reduzio@gmail.com> -*/ - -#include "servers/visual_server.h" -#include "map.h" - - -class ShaderCodeGenerator { -public: - - virtual void begin()=0; - virtual Error add_node(VS::ShaderNodeType p_type,int p_node_pos,int p_id,const Variant& p_param,const Vector<int>& p_in_connections,const Vector<int>& p_out_connections,const Vector<int>& p_out_connection_outputs)=0; - virtual void end()=0; - - virtual ~ShaderCodeGenerator() {} -}; - -class ShaderGraph { -public: - - - struct Connection { - - int src_id; - int src_slot; - int dst_id; - int dst_slot; - }; - -private: - struct Node { - - int16_t x,y; - VS::ShaderNodeType type; - Variant param; - int id; - mutable int order; // used for sorting - mutable bool out_valid; - mutable bool in_valid; - }; - - Map<int,Node> node_map; - - List<Connection> connections; - -public: - - Error generate(ShaderCodeGenerator * p_generator) const; - - void node_add(VS::ShaderNodeType p_type,int p_id); - void node_remove(int p_id); - void node_change_type(int p_id, VS::ShaderNodeType p_type); - void node_set_param(int p_id, const Variant& p_value); - - void node_set_pos(int p_id, int p_x,int p_y); - int node_get_pos_x(int p_id) const; - int node_get_pos_y(int p_id) const; - - void get_node_list(List<int> *p_node_list) const; - void get_sorted_node_list(List<int> *p_node_list) const; - VS::ShaderNodeType node_get_type(int p_id) const; - Variant node_get_param(int p_id) const; - - Error connect(int p_src_id,int p_src_slot, int p_dst_id,int p_dst_slot); - bool is_connected(int p_src_id,int p_src_slot, int p_dst_id,int p_dst_slot) const; - void disconnect(int p_src_id,int p_src_slot, int p_dst_id,int p_dst_slot); - - void clear(); - - List<Connection> get_connection_list() const; - - - ShaderGraph(); - ~ShaderGraph(); - -}; -#endif diff --git a/servers/visual/visual_server_raster.h b/servers/visual/visual_server_raster.h index dcaac6e8d2..0480d9f5cb 100644 --- a/servers/visual/visual_server_raster.h +++ b/servers/visual/visual_server_raster.h @@ -32,7 +32,7 @@ #include "servers/visual_server.h" #include "servers/visual/rasterizer.h" -#include "balloon_allocator.h" +#include "allocators.h" #include "octree.h" /** diff --git a/tools/doc/doc_data.cpp b/tools/doc/doc_data.cpp index 0c4751979c..e3689cf13d 100644 --- a/tools/doc/doc_data.cpp +++ b/tools/doc/doc_data.cpp @@ -36,6 +36,21 @@ #include "io/compression.h" #include "scene/resources/theme.h" +struct _ConstantComparator { + + inline bool operator()(const DocData::ConstantDoc &a, const DocData::ConstantDoc &b) const { + String left_a = a.name.find("_") == -1 ? a.name : a.name.substr(0, a.name.find("_")); + String left_b = b.name.find("_") == -1 ? b.name : b.name.substr(0, b.name.find("_")); + if (left_a == left_b) // If they have the same prefix + if (a.value == b.value) + return a.name < b.name; // Sort by name if the values are the same + else + return a.value < b.value; // Sort by value otherwise + else + return left_a < left_b; // Sort by name if the prefixes aren't the same + } +}; + void DocData::merge_from(const DocData& p_data) { for( Map<String,ClassDoc>::Element *E=class_list.front();E;E=E->next()) { @@ -942,6 +957,8 @@ Error DocData::save(const String& p_path) { _write_string(f,1,"</description>"); _write_string(f,1,"<methods>"); + c.methods.sort(); + for(int i=0;i<c.methods.size();i++) { MethodDoc &m=c.methods[i]; @@ -984,6 +1001,8 @@ Error DocData::save(const String& p_path) { if (c.properties.size()) { _write_string(f,1,"<members>"); + c.properties.sort(); + for(int i=0;i<c.properties.size();i++) { @@ -999,6 +1018,8 @@ Error DocData::save(const String& p_path) { if (c.signals.size()) { + c.signals.sort(); + _write_string(f,1,"<signals>"); for(int i=0;i<c.signals.size();i++) { @@ -1025,6 +1046,8 @@ Error DocData::save(const String& p_path) { _write_string(f,1,"<constants>"); + c.constants.sort_custom<_ConstantComparator>(); + for(int i=0;i<c.constants.size();i++) { ConstantDoc &k=c.constants[i]; @@ -1037,6 +1060,9 @@ Error DocData::save(const String& p_path) { _write_string(f,1,"</constants>"); if (c.theme_properties.size()) { + + c.theme_properties.sort(); + _write_string(f,1,"<theme_items>"); for(int i=0;i<c.theme_properties.size();i++) { diff --git a/tools/doc/doc_data.h b/tools/doc/doc_data.h index d1aebff4ce..7996071c74 100644 --- a/tools/doc/doc_data.h +++ b/tools/doc/doc_data.h @@ -67,6 +67,9 @@ public: String name; String type; String description; + bool operator<(const PropertyDoc& p_prop) const { + return name<p_prop.name; + } }; struct ClassDoc { diff --git a/tools/editor/animation_editor.cpp b/tools/editor/animation_editor.cpp index 08b90b5408..dd3c3fee32 100644 --- a/tools/editor/animation_editor.cpp +++ b/tools/editor/animation_editor.cpp @@ -754,7 +754,7 @@ void AnimationKeyEditor::_menu_track(int p_type) { undo_redo->add_undo_method(animation.ptr(),"track_set_interpolation_type",idx,animation->track_get_interpolation_type(idx)); if (animation->track_get_type(idx)==Animation::TYPE_VALUE) { - undo_redo->add_undo_method(animation.ptr(),"value_track_set_continuous",idx,animation->value_track_is_continuous(idx)); + undo_redo->add_undo_method(animation.ptr(),"value_track_set_update_mode",idx,animation->value_track_get_update_mode(idx)); } @@ -918,7 +918,7 @@ void AnimationKeyEditor::_menu_track(int p_type) { pos=animation->get_length(); timeline_pos=pos; track_pos->update(); - emit_signal("timeline_changed",pos); + emit_signal("timeline_changed",pos,true); } break; case TRACK_MENU_PREV_STEP: { @@ -934,7 +934,7 @@ void AnimationKeyEditor::_menu_track(int p_type) { pos=0; timeline_pos=pos; track_pos->update(); - emit_signal("timeline_changed",pos); + emit_signal("timeline_changed",pos,true); } break; @@ -1169,8 +1169,9 @@ void AnimationKeyEditor::_track_editor_draw() { get_icon("InterpCubic","EditorIcons") }; Ref<Texture> cont_icon[3]={ + get_icon("TrackContinuous","EditorIcons"), get_icon("TrackDiscrete","EditorIcons"), - get_icon("TrackContinuous","EditorIcons") + get_icon("TrackTrigger","EditorIcons") }; Ref<Texture> type_icon[3]={ get_icon("KeyValue","EditorIcons"), @@ -1442,15 +1443,15 @@ void AnimationKeyEditor::_track_editor_draw() { if (animation->track_get_type(idx)==Animation::TYPE_VALUE) { - int continuous = animation->value_track_is_continuous(idx)?1:0; + int umode = animation->value_track_get_update_mode(idx); icon_ofs.x-=hsep; icon_ofs.x-=down_icon->get_width(); te->draw_texture(down_icon,icon_ofs); icon_ofs.x-=hsep; - icon_ofs.x-=cont_icon[continuous]->get_width(); - te->draw_texture(cont_icon[continuous],icon_ofs); + icon_ofs.x-=cont_icon[umode]->get_width(); + te->draw_texture(cont_icon[umode],icon_ofs); } else { icon_ofs.x -= hsep*2 + cont_icon[0]->get_width() + down_icon->get_width(); @@ -1626,8 +1627,8 @@ void AnimationKeyEditor::_track_menu_selected(int p_idx) { ERR_FAIL_INDEX(cont_editing,animation->get_track_count()); undo_redo->create_action(TTR("Anim Track Change Value Mode")); - undo_redo->add_do_method(animation.ptr(),"value_track_set_continuous",cont_editing,p_idx); - undo_redo->add_undo_method(animation.ptr(),"value_track_set_continuous",cont_editing,animation->value_track_is_continuous(cont_editing)); + undo_redo->add_do_method(animation.ptr(),"value_track_set_update_mode",cont_editing,p_idx); + undo_redo->add_undo_method(animation.ptr(),"value_track_set_update_mode",cont_editing,animation->value_track_get_update_mode(cont_editing)); undo_redo->commit_action(); } @@ -1820,8 +1821,9 @@ void AnimationKeyEditor::_track_editor_input_event(const InputEvent& p_input) { get_icon("InterpCubic","EditorIcons") }; Ref<Texture> cont_icon[3]={ + get_icon("TrackContinuous","EditorIcons"), get_icon("TrackDiscrete","EditorIcons"), - get_icon("TrackContinuous","EditorIcons") + get_icon("TrackTrigger","EditorIcons") }; Ref<Texture> type_icon[3]={ get_icon("KeyValue","EditorIcons"), @@ -1972,7 +1974,7 @@ void AnimationKeyEditor::_track_editor_input_event(const InputEvent& p_input) { click.click=ClickOver::CLICK_DRAG_TIMELINE; click.at=Point2(mb.x,mb.y); click.to=click.at; - emit_signal("timeline_changed",pos); + emit_signal("timeline_changed",pos,false); } @@ -2184,8 +2186,8 @@ void AnimationKeyEditor::_track_editor_input_event(const InputEvent& p_input) { track_menu->clear(); track_menu->set_size(Point2(1,1)); - static const char *cont_name[3]={"Discrete","Continuous"}; - for(int i=0;i<2;i++) { + String cont_name[3]={TTR("Continuous"),TTR("Discrete"),TTR("Trigger")}; + for(int i=0;i<3;i++) { track_menu->add_icon_item(cont_icon[i],cont_name[i]); } @@ -2594,7 +2596,7 @@ void AnimationKeyEditor::_track_editor_input_event(const InputEvent& p_input) { } timeline_pos=pos; - emit_signal("timeline_changed",pos); + emit_signal("timeline_changed",pos,true); @@ -2920,6 +2922,7 @@ void AnimationKeyEditor::_notification(int p_what) { edit_button->connect("pressed",this,"_toggle_edit_curves"); loop->set_icon(get_icon("Loop","EditorIcons")); + loop_interpolation->set_icon(get_icon("LoopInterpolation","EditorIcons")); curve_edit->connect("transition_changed",this,"_curve_transition_changed"); //edit_button->add_color_override("font_color",get_color("font_color","Tree")); @@ -2940,8 +2943,9 @@ void AnimationKeyEditor::_notification(int p_what) { get_icon("InterpCubic","EditorIcons") }; Ref<Texture> cont_icon[3]={ + get_icon("TrackContinuous","EditorIcons"), get_icon("TrackDiscrete","EditorIcons"), - get_icon("TrackContinuous","EditorIcons") + get_icon("TrackTrigger","EditorIcons") }; //right_data_size_cache = remove_icon->get_width() + move_up_icon->get_width() + move_down_icon->get_width() + down_icon->get_width() *2 + interp_icon[0]->get_width() + cont_icon[0]->get_width() + add_key_icon->get_width() + hsep*11; @@ -3009,6 +3013,7 @@ void AnimationKeyEditor::_update_menu() { length->set_val(animation->get_length()); loop->set_pressed(animation->has_loop()); + loop_interpolation->set_pressed(animation->has_loop_interpolation()); step->set_val(animation->get_step()); } @@ -3311,7 +3316,7 @@ int AnimationKeyEditor::_confirm_insert(InsertData p_id,int p_last_track) { created=true; undo_redo->create_action(TTR("Anim Insert Track & Key")); - bool continuous=false; + Animation::UpdateMode update_mode=Animation::UPDATE_DISCRETE; if (p_id.type==Animation::TYPE_VALUE) { //wants a new tack @@ -3324,16 +3329,21 @@ int AnimationKeyEditor::_confirm_insert(InsertData p_id,int p_last_track) { PropertyInfo h = _find_hint_for_track(animation->get_track_count()-1,np); animation->remove_track(animation->get_track_count()-1); //hack - - continuous = - h.type==Variant::REAL || + if ( h.type==Variant::REAL || h.type==Variant::VECTOR2 || h.type==Variant::RECT2 || h.type==Variant::VECTOR3 || h.type==Variant::_AABB || h.type==Variant::QUAT || h.type==Variant::COLOR || - h.type==Variant::TRANSFORM ; + h.type==Variant::TRANSFORM ) { + + update_mode=Animation::UPDATE_CONTINUOUS; + } + + if (h.usage&PROPERTY_USAGE_ANIMATE_AS_TRIGGER) { + update_mode=Animation::UPDATE_TRIGGER; + } } } @@ -3342,7 +3352,7 @@ int AnimationKeyEditor::_confirm_insert(InsertData p_id,int p_last_track) { undo_redo->add_do_method(animation.ptr(),"add_track",p_id.type); undo_redo->add_do_method(animation.ptr(),"track_set_path",p_id.track_idx,p_id.path); if (p_id.type==Animation::TYPE_VALUE) - undo_redo->add_do_method(animation.ptr(),"value_track_set_continuous",p_id.track_idx,continuous); + undo_redo->add_do_method(animation.ptr(),"value_track_set_update_mode",p_id.track_idx,update_mode); } else { undo_redo->create_action(TTR("Anim Insert Key")); @@ -3459,6 +3469,21 @@ void AnimationKeyEditor::_animation_loop_changed() { } +void AnimationKeyEditor::_animation_loop_interpolation_changed() { + + if (updating) + return; + + if (!animation.is_null()) { + + undo_redo->create_action(TTR("Change Anim Loop Interpolation")); + undo_redo->add_do_method(animation.ptr(),"set_loop_interpolation",loop_interpolation->is_pressed()); + undo_redo->add_undo_method(animation.ptr(),"set_loop_interpolation",!loop_interpolation->is_pressed()); + undo_redo->commit_action(); + } + +} + void AnimationKeyEditor::_create_value_item(int p_type) { @@ -3536,7 +3561,7 @@ void AnimationKeyEditor::_insert_delay() { pos=animation->get_length(); timeline_pos=pos; track_pos->update(); - emit_signal("timeline_changed",pos); + emit_signal("timeline_changed",pos,true); } insert_queue=false; } @@ -3744,6 +3769,7 @@ void AnimationKeyEditor::_bind_methods() { ObjectTypeDB::bind_method(_MD("_animation_loop_changed"),&AnimationKeyEditor::_animation_loop_changed); + ObjectTypeDB::bind_method(_MD("_animation_loop_interpolation_changed"),&AnimationKeyEditor::_animation_loop_interpolation_changed); ObjectTypeDB::bind_method(_MD("_animation_len_changed"),&AnimationKeyEditor::_animation_len_changed); ObjectTypeDB::bind_method(_MD("_create_value_item"),&AnimationKeyEditor::_create_value_item); ObjectTypeDB::bind_method(_MD("_pane_drag"),&AnimationKeyEditor::_pane_drag); @@ -3759,7 +3785,7 @@ void AnimationKeyEditor::_bind_methods() { ADD_SIGNAL( MethodInfo("resource_selected", PropertyInfo( Variant::OBJECT, "res"),PropertyInfo( Variant::STRING, "prop") ) ); ADD_SIGNAL( MethodInfo("keying_changed" ) ); - ADD_SIGNAL( MethodInfo("timeline_changed", PropertyInfo(Variant::REAL,"pos") ) ); + ADD_SIGNAL( MethodInfo("timeline_changed", PropertyInfo(Variant::REAL,"pos"), PropertyInfo(Variant::BOOL,"drag") ) ); ADD_SIGNAL( MethodInfo("animation_len_changed", PropertyInfo(Variant::REAL,"len") ) ); ADD_SIGNAL( MethodInfo("animation_step_changed", PropertyInfo(Variant::REAL,"step") ) ); ADD_SIGNAL( MethodInfo("key_edited", PropertyInfo(Variant::INT,"track"), PropertyInfo(Variant::INT,"key") ) ); @@ -3854,6 +3880,12 @@ AnimationKeyEditor::AnimationKeyEditor() { hb->add_child(loop); loop->set_tooltip(TTR("Enable/Disable looping in animation.")); + loop_interpolation = memnew( ToolButton ); + loop_interpolation->set_toggle_mode(true); + loop_interpolation->connect("pressed",this,"_animation_loop_interpolation_changed"); + hb->add_child(loop_interpolation); + loop_interpolation->set_tooltip(TTR("Enable/Disable interpolation when looping animation.")); + hb->add_child( memnew( VSeparator ) ); menu_add_track = memnew( MenuButton ); diff --git a/tools/editor/animation_editor.h b/tools/editor/animation_editor.h index 413c73b4b9..c8de1d87c1 100644 --- a/tools/editor/animation_editor.h +++ b/tools/editor/animation_editor.h @@ -173,6 +173,7 @@ class AnimationKeyEditor : public VBoxContainer { //MenuButton *menu; SpinBox *length; Button *loop; + Button *loop_interpolation; bool keying; ToolButton *edit_button; ToolButton *move_up_button; @@ -238,6 +239,7 @@ class AnimationKeyEditor : public VBoxContainer { void _animation_len_changed(float p_len); void _animation_loop_changed(); + void _animation_loop_interpolation_changed(); void _step_changed(float p_len); struct InsertData { diff --git a/tools/editor/array_property_edit.cpp b/tools/editor/array_property_edit.cpp index 1ff6e644d7..b6219ce67b 100644 --- a/tools/editor/array_property_edit.cpp +++ b/tools/editor/array_property_edit.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* array_property_edit.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "array_property_edit.h" #include "editor_node.h" diff --git a/tools/editor/array_property_edit.h b/tools/editor/array_property_edit.h index 948b2a71a3..a2aa24c8ed 100644 --- a/tools/editor/array_property_edit.h +++ b/tools/editor/array_property_edit.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* array_property_edit.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef ARRAY_PROPERTY_EDIT_H #define ARRAY_PROPERTY_EDIT_H diff --git a/tools/editor/asset_library_editor_plugin.cpp b/tools/editor/asset_library_editor_plugin.cpp index c571310ded..a2448921d7 100644 --- a/tools/editor/asset_library_editor_plugin.cpp +++ b/tools/editor/asset_library_editor_plugin.cpp @@ -227,11 +227,12 @@ void EditorAssetLibraryItemDescription::_preview_click(int p_id) { } } -void EditorAssetLibraryItemDescription::configure(const String& p_title,int p_asset_id,const String& p_category,int p_category_id,const String& p_author,int p_author_id,int p_rating,const String& p_cost,int p_version,const String& p_version_string,const String& p_description,const String& p_download_url,const String& p_browse_url) { +void EditorAssetLibraryItemDescription::configure(const String& p_title,int p_asset_id,const String& p_category,int p_category_id,const String& p_author,int p_author_id,int p_rating,const String& p_cost,int p_version,const String& p_version_string,const String& p_description,const String& p_download_url,const String& p_browse_url,const String& p_sha256_hash) { asset_id=p_asset_id; title=p_title; download_url=p_download_url; + sha256=p_sha256_hash; item->configure(p_title,p_asset_id,p_category,p_category_id,p_author,p_author_id,p_rating,p_cost); description->clear(); description->add_text("Version: "+p_version_string+"\n"); @@ -358,9 +359,12 @@ void EditorAssetLibraryItemDownload::_http_download_completed(int p_status, int if (p_code!=200) { error_text=("Request failed, return code: "+itos(p_code)); status->set_text("Failed: "+itos(p_code)); - } else { - - //all good + } else if(sha256 != "") { + String download_sha256 = FileAccess::get_sha256(download->get_download_file()); + if(sha256 != download_sha256) { + error_text="Bad download hash, assuming file has been tampered with.\nExpected: " + sha256 + "\nGot: " + download_sha256; + status->set_text("Failed sha256 hash check"); + } } } break; @@ -384,15 +388,15 @@ void EditorAssetLibraryItemDownload::_http_download_completed(int p_status, int } -void EditorAssetLibraryItemDownload::configure(const String& p_title,int p_asset_id,const Ref<Texture>& p_preview, const String& p_download_url) { +void EditorAssetLibraryItemDownload::configure(const String& p_title,int p_asset_id,const Ref<Texture>& p_preview, const String& p_download_url, const String& p_sha256_hash) { title->set_text(p_title); icon->set_texture(p_preview); asset_id=p_asset_id; if (!p_preview.is_valid()) icon->set_texture(get_icon("GodotAssetDefault","EditorIcons")); - host=p_download_url; + sha256=p_sha256_hash; asset_installer->connect("confirmed",this,"_close"); dismiss->set_normal_texture( get_icon("Close","EditorIcons")); _make_request(); @@ -604,7 +608,7 @@ void EditorAssetLibrary::_install_asset() { EditorAssetLibraryItemDownload * download = memnew( EditorAssetLibraryItemDownload ); downloads_hb->add_child(download); - download->configure(description->get_title(),description->get_asset_id(),description->get_preview_icon(),description->get_download_url()); + download->configure(description->get_title(),description->get_asset_id(),description->get_preview_icon(),description->get_download_url(),description->get_sha256()); } @@ -624,6 +628,12 @@ const char* EditorAssetLibrary::sort_text[SORT_MAX]={ "Updated" }; +const char* EditorAssetLibrary::support_key[SUPPORT_MAX]={ + "official", + "community", + "testing" +}; + void EditorAssetLibrary::_select_author(int p_id) { @@ -832,14 +842,43 @@ void EditorAssetLibrary::_request_image(ObjectID p_for,String p_image_url,ImageT void EditorAssetLibrary::_repository_changed(int p_repository_id) { host=repository->get_item_metadata(p_repository_id); print_line(".." + host); - _api_request("configure", REQUESTING_CONFIG); + if(templates_only) { + _api_request("configure", REQUESTING_CONFIG, "?type=project"); + } else { + _api_request("configure", REQUESTING_CONFIG); + } +} + +void EditorAssetLibrary::_support_toggled(int p_support) { + support->get_popup()->set_item_checked(p_support, !support->get_popup()->is_item_checked(p_support)); + _search(); +} + +void EditorAssetLibrary::_rerun_search(int p_ignore) { + _search(); } void EditorAssetLibrary::_search(int p_page) { String args; - args=String()+"?sort="+sort_key[sort->get_selected()]; + if(templates_only) { + args += "?type=project&"; + } else { + args += "?"; + } + args+=String()+"sort="+sort_key[sort->get_selected()]; + + + String support_list; + for(int i = 0; i < SUPPORT_MAX; i++) { + if(support->get_popup()->is_item_checked(i)) { + support_list += String(support_key[i]) + "+"; + } + } + if(support_list != String()) { + args += "&support=" + support_list.substr(0, support_list.length() - 1); + } if (categories->get_selected()>0) { @@ -1134,6 +1173,7 @@ void EditorAssetLibrary::_http_request_completed(int p_status, int p_code, const ERR_FAIL_COND(!r.has("cost")); ERR_FAIL_COND(!r.has("description")); ERR_FAIL_COND(!r.has("download_url")); + ERR_FAIL_COND(!r.has("download_hash")); ERR_FAIL_COND(!r.has("browse_url")); if (description) { @@ -1145,7 +1185,7 @@ void EditorAssetLibrary::_http_request_completed(int p_status, int p_code, const description->popup_centered_minsize(); description->connect("confirmed",this,"_install_asset"); - description->configure(r["title"],r["asset_id"],category_map[r["category_id"]],r["category_id"],r["author"],r["author_id"],r["rating"],r["cost"],r["version"],r["version_string"],r["description"],r["download_url"],r["browse_url"]); + description->configure(r["title"],r["asset_id"],category_map[r["category_id"]],r["category_id"],r["author"],r["author_id"],r["rating"],r["cost"],r["version"],r["version_string"],r["description"],r["download_url"],r["browse_url"], r["download_hash"]); /*item->connect("asset_selected",this,"_select_asset"); item->connect("author_selected",this,"_select_author"); item->connect("category_selected",this,"_category_selected");*/ @@ -1231,6 +1271,8 @@ void EditorAssetLibrary::_bind_methods() { ObjectTypeDB::bind_method("_asset_open",&EditorAssetLibrary::_asset_open); ObjectTypeDB::bind_method("_asset_file_selected",&EditorAssetLibrary::_asset_file_selected); ObjectTypeDB::bind_method("_repository_changed",&EditorAssetLibrary::_repository_changed); + ObjectTypeDB::bind_method("_support_toggled",&EditorAssetLibrary::_support_toggled); + ObjectTypeDB::bind_method("_rerun_search",&EditorAssetLibrary::_rerun_search); } @@ -1298,9 +1340,11 @@ EditorAssetLibrary::EditorAssetLibrary(bool p_templates_only) { search_hb2->add_child(sort); sort->set_h_size_flags(SIZE_EXPAND_FILL); + sort->connect("item_selected", this, "_rerun_search"); reverse = memnew( ToolButton ); reverse->set_toggle_mode(true); + reverse->connect("toggled", this, "_rerun_search"); //reverse->set_text(TTR("Reverse")); search_hb2->add_child(reverse); @@ -1314,6 +1358,7 @@ EditorAssetLibrary::EditorAssetLibrary(bool p_templates_only) { search_hb2->add_child(categories); categories->set_h_size_flags(SIZE_EXPAND_FILL); //search_hb2->add_spacer(); + categories->connect("item_selected", this, "_rerun_search"); search_hb2->add_child(memnew(VSeparator)); @@ -1340,6 +1385,7 @@ EditorAssetLibrary::EditorAssetLibrary(bool p_templates_only) { support->get_popup()->add_check_item(TTR("Testing"),SUPPORT_TESTING); support->get_popup()->set_item_checked(SUPPORT_OFFICIAL,true); support->get_popup()->set_item_checked(SUPPORT_COMMUNITY,true); + support->get_popup()->connect("item_pressed",this,"_support_toggled"); ///////// diff --git a/tools/editor/asset_library_editor_plugin.h b/tools/editor/asset_library_editor_plugin.h index 6a6e29338f..89663aa00b 100644 --- a/tools/editor/asset_library_editor_plugin.h +++ b/tools/editor/asset_library_editor_plugin.h @@ -111,6 +111,7 @@ class EditorAssetLibraryItemDescription : public ConfirmationDialog { int asset_id; String download_url; String title; + String sha256; Ref<Texture> icon; void _link_click(const String& p_url); @@ -120,13 +121,14 @@ protected: static void _bind_methods(); public: - void configure(const String& p_title,int p_asset_id,const String& p_category,int p_category_id,const String& p_author,int p_author_id,int p_rating,const String& p_cost,int p_version,const String& p_version_string,const String& p_description,const String& p_download_url,const String& p_browse_url); + void configure(const String& p_title,int p_asset_id,const String& p_category,int p_category_id,const String& p_author,int p_author_id,int p_rating,const String& p_cost,int p_version,const String& p_version_string,const String& p_description,const String& p_download_url,const String& p_browse_url,const String& p_sha256_hash); void add_preview(int p_id, bool p_video,const String& p_url); String get_title() { return title; } Ref<Texture> get_preview_icon() { return icon; } String get_download_url() { return download_url; } int get_asset_id() { return asset_id; } + String get_sha256() { return sha256; } EditorAssetLibraryItemDescription(); }; @@ -146,6 +148,7 @@ class EditorAssetLibraryItemDownload : public PanelContainer { AcceptDialog *download_error; HTTPRequest *download; String host; + String sha256; Label *status; int prev_status; @@ -166,7 +169,7 @@ protected: public: int get_asset_id() { return asset_id; } - void configure(const String& p_title,int p_asset_id,const Ref<Texture>& p_preview, const String& p_download_url); + void configure(const String& p_title,int p_asset_id,const Ref<Texture>& p_preview, const String& p_download_url, const String& p_sha256_hash); EditorAssetLibraryItemDownload(); }; @@ -210,7 +213,8 @@ class EditorAssetLibrary : public PanelContainer { enum Support { SUPPORT_OFFICIAL, SUPPORT_COMMUNITY, - SUPPORT_TESTING + SUPPORT_TESTING, + SUPPORT_MAX }; enum SortOrder { @@ -225,6 +229,7 @@ class EditorAssetLibrary : public PanelContainer { static const char* sort_key[SORT_MAX]; static const char* sort_text[SORT_MAX]; + static const char* support_key[SUPPORT_MAX]; ///MainListing @@ -288,11 +293,13 @@ class EditorAssetLibrary : public PanelContainer { void _manage_plugins(); void _search(int p_page=0); + void _rerun_search(int p_ignore); void _api_request(const String& p_request, RequestType p_request_type, const String &p_arguments=""); void _http_request_completed(int p_status, int p_code, const StringArray& headers, const ByteArray& p_data); void _http_download_completed(int p_status, int p_code, const StringArray& headers, const ByteArray& p_data); void _repository_changed(int p_repository_id); + void _support_toggled(int p_support); friend class EditorAssetLibraryItemDescription; friend class EditorAssetLibraryItem; diff --git a/tools/editor/code_editor.cpp b/tools/editor/code_editor.cpp index be5d9c47ff..644478923c 100644 --- a/tools/editor/code_editor.cpp +++ b/tools/editor/code_editor.cpp @@ -30,6 +30,7 @@ #include "editor_settings.h" #include "scene/gui/margin_container.h" #include "scene/gui/separator.h" +#include "scene/resources/dynamic_font.h" #include "os/keyboard.h" void GotoLineDialog::popup_find_line(TextEdit *p_edit) { @@ -974,6 +975,48 @@ FindReplaceDialog::FindReplaceDialog() { /*** CODE EDITOR ****/ +void CodeTextEditor::_text_editor_input_event(const InputEvent& p_event) { + + if (p_event.type==InputEvent::MOUSE_BUTTON) { + + const InputEventMouseButton& mb=p_event.mouse_button; + + if (mb.pressed && mb.mod.command) { + + if (mb.button_index==BUTTON_WHEEL_UP) { + + font_resize_val+=1; + + if (font_resize_timer->get_time_left()==0) + font_resize_timer->start(); + + } else if (mb.button_index==BUTTON_WHEEL_DOWN) { + + font_resize_val-=1; + + if (font_resize_timer->get_time_left()==0) + font_resize_timer->start(); + } + } + } else if (p_event.type==InputEvent::KEY) { + + const InputEventKey& k=p_event.key; + + if (k.pressed && k.mod.command) { + + if (k.scancode==KEY_0) { // reset source font size to default + + Ref<DynamicFont> font = text_editor->get_font("font"); + + if (font.is_valid()) { + EditorSettings::get_singleton()->set("global/source_font_size",14); + font->set_size(14); + } + } + } + } +} + void CodeTextEditor::_line_col_changed() { String text = String()+TTR("Line:")+" "+itos(text_editor->cursor_get_line()+1)+", "+TTR("Col:")+" "+itos(text_editor->cursor_get_column()); @@ -1011,6 +1054,22 @@ void CodeTextEditor::_complete_request() { text_editor->code_complete(strs); } +void CodeTextEditor::_font_resize_timeout() { + + Ref<DynamicFont> font = text_editor->get_font("font"); + + if (font.is_valid()) { + int size=font->get_size()+font_resize_val; + + if (size>=8 && size<=96) { + EditorSettings::get_singleton()->set("global/source_font_size",size); + font->set_size(size); + } + + font_resize_val=0; + } +} + void CodeTextEditor::set_error(const String& p_error) { if (p_error!="") { @@ -1026,15 +1085,15 @@ void CodeTextEditor::_update_font() { // FONTS String editor_font = EDITOR_DEF("text_editor/font", ""); - bool font_overrode = false; + bool font_overridden = false; if (editor_font!="") { Ref<Font> fnt = ResourceLoader::load(editor_font); if (fnt.is_valid()) { text_editor->add_font_override("font",fnt); - font_overrode = true; + font_overridden = true; } } - if(!font_overrode) + if(!font_overridden) text_editor->add_font_override("font",get_font("source","EditorFonts")); } @@ -1078,12 +1137,14 @@ void CodeTextEditor::_notification(int p_what) { void CodeTextEditor::_bind_methods() { + ObjectTypeDB::bind_method("_text_editor_input_event",&CodeTextEditor::_text_editor_input_event); ObjectTypeDB::bind_method("_line_col_changed",&CodeTextEditor::_line_col_changed); ObjectTypeDB::bind_method("_text_changed",&CodeTextEditor::_text_changed); ObjectTypeDB::bind_method("_on_settings_change",&CodeTextEditor::_on_settings_change); ObjectTypeDB::bind_method("_text_changed_idle_timeout",&CodeTextEditor::_text_changed_idle_timeout); ObjectTypeDB::bind_method("_code_complete_timer_timeout",&CodeTextEditor::_code_complete_timer_timeout); ObjectTypeDB::bind_method("_complete_request",&CodeTextEditor::_complete_request); + ObjectTypeDB::bind_method("_font_resize_timeout",&CodeTextEditor::_font_resize_timeout); } CodeTextEditor::CodeTextEditor() { @@ -1139,6 +1200,7 @@ CodeTextEditor::CodeTextEditor() { line_col->set_valign(Label::VALIGN_CENTER); + text_editor->connect("input_event", this,"_text_editor_input_event"); text_editor->connect("cursor_changed", this,"_line_col_changed"); text_editor->connect("text_changed", this,"_text_changed"); text_editor->connect("request_completion", this,"_complete_request"); @@ -1151,5 +1213,12 @@ CodeTextEditor::CodeTextEditor() { code_complete_timer->connect("timeout", this,"_code_complete_timer_timeout"); + font_resize_val=0; + font_resize_timer = memnew(Timer); + add_child(font_resize_timer); + font_resize_timer->set_one_shot(true); + font_resize_timer->set_wait_time(0.07); + font_resize_timer->connect("timeout", this, "_font_resize_timeout"); + EditorSettings::get_singleton()->connect("settings_changed",this,"_on_settings_change"); } diff --git a/tools/editor/code_editor.h b/tools/editor/code_editor.h index 2e1bf46c02..bdfd295ded 100644 --- a/tools/editor/code_editor.h +++ b/tools/editor/code_editor.h @@ -202,22 +202,27 @@ class CodeTextEditor : public VBoxContainer { Timer *code_complete_timer; bool enable_complete_timer; + Timer *font_resize_timer; + int font_resize_val; + Label *error; void _on_settings_change(); void _update_font(); void _complete_request(); + void _font_resize_timeout(); + + void _text_editor_input_event(const InputEvent& p_event); + protected: void set_error(const String& p_error); - virtual void _load_theme_settings() {} virtual void _validate_script()=0; virtual void _code_complete_script(const String& p_code, List<String>* r_options) {}; - void _text_changed_idle_timeout(); void _code_complete_timer_timeout(); void _text_changed(); @@ -225,7 +230,6 @@ protected: void _notification(int); static void _bind_methods(); - public: TextEdit *get_text_edit() { return text_editor; } diff --git a/tools/editor/connections_dialog.cpp b/tools/editor/connections_dialog.cpp index 8847654ad7..faaae4360b 100644 --- a/tools/editor/connections_dialog.cpp +++ b/tools/editor/connections_dialog.cpp @@ -309,7 +309,7 @@ ConnectDialog::ConnectDialog() { tree = memnew(SceneTreeEditor(false)); - vbc_left->add_margin_child(TTR("Conect To Node:"),tree,true); + vbc_left->add_margin_child(TTR("Connect To Node:"),tree,true); diff --git a/tools/editor/default_saver.cpp b/tools/editor/default_saver.cpp deleted file mode 100644 index 611232e04b..0000000000 --- a/tools/editor/default_saver.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/*************************************************************************/ -/* default_saver.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ diff --git a/tools/editor/default_saver.h b/tools/editor/default_saver.h deleted file mode 100644 index 2b1a1edb23..0000000000 --- a/tools/editor/default_saver.h +++ /dev/null @@ -1,35 +0,0 @@ -/*************************************************************************/ -/* default_saver.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef DEFAULT_SAVER_H -#define DEFAULT_SAVER_H - - - - -#endif // DEFAULT_SAVER_H diff --git a/tools/editor/dependency_editor.cpp b/tools/editor/dependency_editor.cpp index 6ad7704815..ad2eb57f00 100644 --- a/tools/editor/dependency_editor.cpp +++ b/tools/editor/dependency_editor.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* dependency_editor.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "dependency_editor.h" #include "os/file_access.h" #include "scene/gui/margin_container.h" diff --git a/tools/editor/dependency_editor.h b/tools/editor/dependency_editor.h index c372025ca0..60758f8f4e 100644 --- a/tools/editor/dependency_editor.h +++ b/tools/editor/dependency_editor.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* dependency_editor.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef DEPENDENCY_EDITOR_H #define DEPENDENCY_EDITOR_H diff --git a/tools/editor/editor_asset_installer.cpp b/tools/editor/editor_asset_installer.cpp index 2967abbc0a..ec36773d8d 100644 --- a/tools/editor/editor_asset_installer.cpp +++ b/tools/editor/editor_asset_installer.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_asset_installer.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "editor_asset_installer.h" #include "io/zip_io.h" #include "os/dir_access.h" diff --git a/tools/editor/editor_asset_installer.h b/tools/editor/editor_asset_installer.h index 713c5f14f1..d6e71dbb3c 100644 --- a/tools/editor/editor_asset_installer.h +++ b/tools/editor/editor_asset_installer.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_asset_installer.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef EDITORASSETINSTALLER_H #define EDITORASSETINSTALLER_H diff --git a/tools/editor/editor_data.h b/tools/editor/editor_data.h index 79843c4df5..319155655d 100644 --- a/tools/editor/editor_data.h +++ b/tools/editor/editor_data.h @@ -34,7 +34,6 @@ #include "list.h" #include "undo_redo.h" #include "pair.h" -#include "default_saver.h" class EditorHistory { diff --git a/tools/editor/editor_dir_dialog.cpp b/tools/editor/editor_dir_dialog.cpp index 395c4ba680..a6e231cf18 100644 --- a/tools/editor/editor_dir_dialog.cpp +++ b/tools/editor/editor_dir_dialog.cpp @@ -30,6 +30,7 @@ #include "os/os.h" #include "os/keyboard.h" #include "tools/editor/editor_settings.h" +#include "tools/editor/editor_file_system.h" void EditorDirDialog::_update_dir(TreeItem* p_item) { @@ -77,6 +78,11 @@ void EditorDirDialog::_update_dir(TreeItem* p_item) { void EditorDirDialog::reload() { + if (!is_visible()) { + must_reload=true; + return; + } + tree->clear(); TreeItem *root = tree->create_item(); root->set_metadata(0,"res://"); @@ -84,13 +90,24 @@ void EditorDirDialog::reload() { root->set_text(0,"/"); _update_dir(root); _item_collapsed(root); + must_reload=false; + } + void EditorDirDialog::_notification(int p_what) { if (p_what==NOTIFICATION_ENTER_TREE) { reload(); tree->connect("item_collapsed",this,"_item_collapsed",varray(),CONNECT_DEFERRED); + EditorFileSystem::get_singleton()->connect("filesystem_changed",this,"reload"); + + } + + if (p_what==NOTIFICATION_VISIBILITY_CHANGED) { + if (must_reload && is_visible()) { + reload(); + } } } @@ -198,6 +215,7 @@ void EditorDirDialog::_bind_methods() { ObjectTypeDB::bind_method(_MD("_item_collapsed"),&EditorDirDialog::_item_collapsed); ObjectTypeDB::bind_method(_MD("_make_dir"),&EditorDirDialog::_make_dir); ObjectTypeDB::bind_method(_MD("_make_dir_confirm"),&EditorDirDialog::_make_dir_confirm); + ObjectTypeDB::bind_method(_MD("reload"),&EditorDirDialog::reload); ADD_SIGNAL(MethodInfo("dir_selected",PropertyInfo(Variant::STRING,"dir"))); } @@ -238,4 +256,8 @@ EditorDirDialog::EditorDirDialog() { get_ok()->set_text(TTR("Choose")); + must_reload=false; + + + } diff --git a/tools/editor/editor_dir_dialog.h b/tools/editor/editor_dir_dialog.h index 1c2593219c..69f9850c30 100644 --- a/tools/editor/editor_dir_dialog.h +++ b/tools/editor/editor_dir_dialog.h @@ -53,6 +53,10 @@ class EditorDirDialog : public ConfirmationDialog { void _make_dir_confirm(); void ok_pressed(); + + bool must_reload; + + protected: void _notification(int p_what); diff --git a/tools/editor/editor_file_dialog.cpp b/tools/editor/editor_file_dialog.cpp index e631aad7f6..a55c835787 100644 --- a/tools/editor/editor_file_dialog.cpp +++ b/tools/editor/editor_file_dialog.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_file_dialog.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "editor_file_dialog.h" #include "scene/gui/label.h" #include "scene/gui/center_container.h" @@ -70,35 +98,64 @@ void EditorFileDialog::_unhandled_input(const InputEvent& p_event) { if (p_event.type==InputEvent::KEY && is_window_modal_on_top()) { - const InputEventKey &k=p_event.key; + if (p_event.key.pressed) { - if (k.pressed) { + bool handled=false; - bool handled=true; - - switch (k.scancode) { - - case KEY_H: { - - if (k.mod.command) { - - bool show=!show_hidden_files; - set_show_hidden_files(show); - EditorSettings::get_singleton()->set("file_dialog/show_hidden_files",show); - } else { - handled=false; - } - - } break; - case KEY_F5: { - - invalidate(); - } break; - default: { handled=false; } + if (ED_IS_SHORTCUT("file_dialog/go_back", p_event)) { + _go_back(); + handled=true; + } + if (ED_IS_SHORTCUT("file_dialog/go_forward", p_event)) { + _go_forward(); + handled=true; + } + if (ED_IS_SHORTCUT("file_dialog/go_up", p_event)) { + _go_up(); + handled=true; + } + if (ED_IS_SHORTCUT("file_dialog/refresh", p_event)) { + invalidate(); + handled=true; + } + if (ED_IS_SHORTCUT("file_dialog/toggle_hidden_files", p_event)) { + bool show=!show_hidden_files; + set_show_hidden_files(show); + EditorSettings::get_singleton()->set("file_dialog/show_hidden_files",show); + handled=true; + } + if (ED_IS_SHORTCUT("file_dialog/toggle_favorite", p_event)) { + _favorite_toggled(favorite->is_pressed()); + handled=true; + } + if (ED_IS_SHORTCUT("file_dialog/toggle_mode", p_event)) { + if (mode_thumbnails->is_pressed()) { + set_display_mode(DISPLAY_LIST); + } else { + set_display_mode(DISPLAY_THUMBNAILS); + } + handled=true; + } + if (ED_IS_SHORTCUT("file_dialog/create_folder", p_event)) { + _make_dir(); + handled=true; + } + if (ED_IS_SHORTCUT("file_dialog/focus_path", p_event)) { + dir->grab_focus(); + handled=true; + } + if (ED_IS_SHORTCUT("file_dialog/mode_favorite_up", p_event)) { + _favorite_move_up(); + handled=true; + } + if (ED_IS_SHORTCUT("file_dialog/mode_favorite_down", p_event)) { + _favorite_move_down(); + handled=true; } - if (handled) + if (handled) { accept_event(); + } } } } @@ -352,7 +409,7 @@ void EditorFileDialog::_action_pressed() { } - if (dir_access->file_exists(f)) { + if (dir_access->file_exists(f) && !disable_overwrite_warning) { confirm_save->set_text(TTR("File Exists, Overwrite?")); confirm_save->popup_centered(Size2(200,80)); } else { @@ -508,6 +565,11 @@ void EditorFileDialog::update_file_list() { } } + if (dirs.find("..")==NULL) { + //may happen if lacking permissions + dirs.push_back(".."); + } + dirs.sort_custom<NoCaseComparator>(); files.sort_custom<NoCaseComparator>(); @@ -1129,6 +1191,8 @@ void EditorFileDialog::_bind_methods() { ObjectTypeDB::bind_method(_MD("set_display_mode","mode"),&EditorFileDialog::set_display_mode); ObjectTypeDB::bind_method(_MD("get_display_mode"),&EditorFileDialog::get_display_mode); ObjectTypeDB::bind_method(_MD("_thumbnail_result"),&EditorFileDialog::_thumbnail_result); + ObjectTypeDB::bind_method(_MD("set_disable_overwrite_warning","disable"),&EditorFileDialog::set_disable_overwrite_warning); + ObjectTypeDB::bind_method(_MD("is_overwrite_warning_disabled"),&EditorFileDialog::is_overwrite_warning_disabled); ObjectTypeDB::bind_method(_MD("_recent_selected"),&EditorFileDialog::_recent_selected); ObjectTypeDB::bind_method(_MD("_go_back"),&EditorFileDialog::_go_back); @@ -1202,12 +1266,23 @@ void EditorFileDialog::_save_to_recent() { } +void EditorFileDialog::set_disable_overwrite_warning(bool p_disable) { + + disable_overwrite_warning=p_disable; +} + +bool EditorFileDialog::is_overwrite_warning_disabled() const{ + + return disable_overwrite_warning; +} + + EditorFileDialog::EditorFileDialog() { show_hidden_files=default_show_hidden_files; display_mode=default_display_mode; local_history_pos=0; - + disable_overwrite_warning=false; VBoxContainer *vbc = memnew( VBoxContainer ); add_child(vbc); set_child_rect(vbc); @@ -1215,6 +1290,18 @@ EditorFileDialog::EditorFileDialog() { mode=MODE_SAVE_FILE; set_title(TTR("Save a File")); + ED_SHORTCUT("file_dialog/go_back", TTR("Go Back"), KEY_MASK_ALT|KEY_LEFT); + ED_SHORTCUT("file_dialog/go_forward", TTR("Go Forward"), KEY_MASK_ALT|KEY_RIGHT); + ED_SHORTCUT("file_dialog/go_up", TTR("Go Up"), KEY_MASK_ALT|KEY_UP); + ED_SHORTCUT("file_dialog/refresh", TTR("Refresh"), KEY_MASK_CMD|KEY_F5); // ctrl + f5 else it launches the game as well.. + ED_SHORTCUT("file_dialog/toggle_hidden_files", TTR("Toggle Hidden Files"), KEY_MASK_CMD|KEY_H); + ED_SHORTCUT("file_dialog/toggle_favorite", TTR("Toggle Favorite"), KEY_MASK_ALT|KEY_F); + ED_SHORTCUT("file_dialog/toggle_mode", TTR("Toggle Mode"), KEY_MASK_ALT|KEY_V); + ED_SHORTCUT("file_dialog/create_folder", TTR("Create Folder"), KEY_MASK_CMD|KEY_N); + ED_SHORTCUT("file_dialog/focus_path", TTR("Focus Path"), KEY_MASK_CMD|KEY_D); + ED_SHORTCUT("file_dialog/mode_favorite_up", TTR("Mode Favorite Up"), KEY_MASK_CMD|KEY_UP); + ED_SHORTCUT("file_dialog/mode_favorite_down", TTR("Mode Favorite Down"), KEY_MASK_CMD|KEY_DOWN); + HBoxContainer *pathhb = memnew( HBoxContainer ); dir_prev = memnew( ToolButton ); @@ -1433,4 +1520,5 @@ EditorLineEditFileChooser::EditorLineEditFileChooser() { dialog->connect("dir_selected",this,"_chosen"); dialog->connect("files_selected",this,"_chosen"); + } diff --git a/tools/editor/editor_file_dialog.h b/tools/editor/editor_file_dialog.h index a8f62a5226..14683856c0 100644 --- a/tools/editor/editor_file_dialog.h +++ b/tools/editor/editor_file_dialog.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* file_dialog.h */ +/* editor_file_dialog.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -26,8 +26,6 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ - - #ifndef EDITORFILEDIALOG_H #define EDITORFILEDIALOG_H @@ -132,6 +130,7 @@ private: bool show_hidden_files; DisplayMode display_mode; + bool disable_overwrite_warning; bool invalidated; void update_dir(); @@ -218,6 +217,9 @@ public: void invalidate(); + void set_disable_overwrite_warning(bool p_disable); + bool is_overwrite_warning_disabled() const; + EditorFileDialog(); ~EditorFileDialog(); diff --git a/tools/editor/editor_fonts.cpp b/tools/editor/editor_fonts.cpp index 7ec22a4068..47891eef6c 100644 --- a/tools/editor/editor_fonts.cpp +++ b/tools/editor/editor_fonts.cpp @@ -157,12 +157,18 @@ void editor_register_fonts(Ref<Theme> p_theme) { p_theme->set_font("doc_source","EditorFonts",df_doc_code); + if (editor_is_hidpi()) { //replace default theme Ref<Texture> di; Ref<StyleBox> ds; fill_default_theme(p_theme,df,df_doc,di,ds,true); + } else { + Ref<Texture> di; + Ref<StyleBox> ds; + fill_default_theme(p_theme,df,df_doc,di,ds,false); + } } diff --git a/tools/editor/editor_import_export.cpp b/tools/editor/editor_import_export.cpp index f9b9c0b41c..357d139c04 100644 --- a/tools/editor/editor_import_export.cpp +++ b/tools/editor/editor_import_export.cpp @@ -861,9 +861,11 @@ Error EditorExportPlatform::export_project_files(EditorExportSaveFunction p_func Ref<ResourceImportMetadata> imd = memnew( ResourceImportMetadata ); //imd->set_editor(); + for (List<StringName>::Element *F=atlas_images.front();F;F=F->next()) { imd->add_source(EditorImportPlugin::validate_source_path(F->get()),FileAccess::get_md5(F->get())); + } diff --git a/tools/editor/editor_initialize_ssl.cpp b/tools/editor/editor_initialize_ssl.cpp index e0602a88c7..c0b55b302f 100644 --- a/tools/editor/editor_initialize_ssl.cpp +++ b/tools/editor/editor_initialize_ssl.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_initialize_ssl.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "editor_initialize_ssl.h" #include "certs_compressed.h" #include "io/stream_peer_ssl.h" diff --git a/tools/editor/editor_initialize_ssl.h b/tools/editor/editor_initialize_ssl.h index 4eaf387a0a..082d546832 100644 --- a/tools/editor/editor_initialize_ssl.h +++ b/tools/editor/editor_initialize_ssl.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_initialize_ssl.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef EDITOR_INITIALIZE_SSL_H #define EDITOR_INITIALIZE_SSL_H diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp index 1132db5991..0f8ddafb20 100644 --- a/tools/editor/editor_node.cpp +++ b/tools/editor/editor_node.cpp @@ -29,8 +29,7 @@ #include "version.h" #include "editor_node.h" #include "print_string.h" -#include "editor_icons.h" -#include "editor_fonts.h" +#include "editor_themes.h" #include "editor_help.h" #include "core/io/resource_saver.h" @@ -206,6 +205,18 @@ void EditorNode::_unhandled_input(const InputEvent& p_event) { case KEY_F6: _menu_option_confirm(RUN_PLAY_SCENE,true); break; //case KEY_F7: _menu_option_confirm(RUN_PAUSE,true); break; case KEY_F8: _menu_option_confirm(RUN_STOP,true); break;*/ + case KEY_TAB: + if (p_event.key.mod.command) { + int current_tab = editor_data.get_edited_scene(); + int tab_offset = 1; + if (p_event.key.mod.shift) + tab_offset = -1; + int next_tab = current_tab + tab_offset; + next_tab = next_tab >= 0 ? next_tab : editor_data.get_edited_scene_count() - 1; + next_tab %= editor_data.get_edited_scene_count(); + _scene_tab_changed(next_tab); + } + break; } } @@ -743,100 +754,6 @@ void EditorNode::_set_scene_metadata(const String& p_file) { } -static Error _fix_object_paths(Object* obj, Node* root, String save_path) { - - Globals* g = Globals::get_singleton(); - - String import_dir = root->get_meta("__editor_import_file__"); - import_dir = import_dir.get_base_dir(); - import_dir = DirAccess::normalize_path(import_dir); - if (import_dir[import_dir.length()-1] != '/') { - import_dir = import_dir + "/"; - }; - - String resource_dir = DirAccess::normalize_path(g->get_resource_path()); - if (resource_dir[resource_dir.length()-1] != '/') { - resource_dir = resource_dir + "/"; - }; - - - List<PropertyInfo> list; - obj->get_property_list(&list, false); - - List<PropertyInfo>::Element *E = list.front(); - - while (E) { - - Variant v = obj->get(E->get().name); - if (v.get_type() == Variant::OBJECT) { - - Ref<Resource> res = (RefPtr)v; - if (res.is_null()) { - E = E->next(); - continue; - } - - if (res->get_path() != "") { - - String res_path = res->get_path(); - res_path = Globals::get_singleton()->globalize_path(res_path); - res_path = DirAccess::normalize_path(res_path); - - if (res_path.find(resource_dir) != 0) { - - // path of resource is not inside engine's resource path - - String new_path; - - if (res_path.find(import_dir) == 0) { - - // path of resource is relative to path of import file - new_path = save_path + "/" + res_path.substr(import_dir.length(), res_path.length() - import_dir.length()); - - } else { - - // path of resource is not relative to import file - new_path = save_path + "/" + res_path.get_file(); - }; - - res->set_path(g->localize_path(new_path)); - DirAccess* d = DirAccess::create(DirAccess::ACCESS_RESOURCES); - d->make_dir_recursive(new_path.get_base_dir()); - printf("copying from %ls to %ls\n", res_path.c_str(), new_path.c_str()); - Error err = d->copy(res_path, new_path); - memdelete(d); - ERR_FAIL_COND_V(err != OK, err); - } - - } else { - - _fix_object_paths(res.operator->(), root, save_path); - }; - }; - - - E = E->next(); - }; - - return OK; -}; - -static Error _fix_imported_scene_paths(Node* node, Node* root, String save_path) { - - if (node == root || node->get_owner() == root) { - Error e = _fix_object_paths(node, root, save_path); - ERR_FAIL_COND_V(e != OK, e); - }; - - for (int i=0; i<node->get_child_count(); i++) { - - Error e = _fix_imported_scene_paths(node->get_child(i), root, save_path); - ERR_FAIL_COND_V(e != OK, e); - }; - - return OK; -}; - bool EditorNode::_find_and_save_resource(RES res,Map<RES,bool>& processed,int32_t flags) { @@ -1253,7 +1170,6 @@ void EditorNode::_dialog_action(String p_file) { } break; case FILE_RUN_SCRIPT: { - print_line("RUN: "+p_file); Ref<Script> scr = ResourceLoader::load(p_file,"Script",true); if (scr.is_null()) { add_io_error("Script Failed to Load:\n"+p_file); @@ -1397,7 +1313,6 @@ void EditorNode::_dialog_action(String p_file) { ret = unzGoToFirstFile(pkg); EditorProgress p("ltask",TTR("Loading Export Templates"),fc); - print_line("BEGIN IMPORT"); fc=0; @@ -1427,7 +1342,6 @@ void EditorNode::_dialog_action(String p_file) { file=file.get_file(); p.step(TTR("Importing:")+" "+file,fc); - print_line("IMPORT "+file); FileAccess *f = FileAccess::open(EditorSettings::get_singleton()->get_settings_path()+"/templates/"+file,FileAccess::WRITE); @@ -2215,7 +2129,7 @@ void EditorNode::_menu_option_confirm(int p_option,bool p_confirmed) { String existing; if (extensions.size()) { String root_name(get_edited_scene()->get_name()); - existing=root_name+"."+extensions.front()->get().to_lower(); + existing=root_name+".tscn";//+extensions.front()->get().to_lower(); } file->set_current_path(existing); @@ -3038,6 +2952,9 @@ void EditorNode::remove_editor_plugin(EditorPlugin *p_editor) { //singleton->main_editor_tabs->add_tab(p_editor->get_name()); singleton->editor_table.erase(p_editor); } + p_editor->make_visible(false); + p_editor->clear(); + singleton->editor_plugins_over->get_plugins_list().erase(p_editor); singleton->remove_child(p_editor); singleton->editor_data.remove_editor_plugin( p_editor ); @@ -3090,7 +3007,7 @@ void EditorNode::set_addon_plugin_enabled(const String& p_addon,bool p_enabled) if (!p_enabled) { EditorPlugin *addon = plugin_addons[p_addon]; - editor_data.remove_editor_plugin( addon ); + remove_editor_plugin(addon); memdelete(addon); //bye plugin_addons.erase(p_addon); _update_addon_config(); @@ -3646,7 +3563,6 @@ Error EditorNode::load_scene(const String& p_scene, bool p_ignore_broken_deps,bo load_errors->clear(); String lpath = Globals::get_singleton()->localize_path(p_scene); - print_line("LOCAL PATH: "+lpath+" from "+p_scene); if (!lpath.begins_with("res://")) { current_option=-1; @@ -4293,7 +4209,6 @@ void EditorNode::_dock_select_input(const InputEvent& p_input) { dock_slot[dock_popup_selected]->set_current_tab(0); } - print_line("performing reparent"); dock_slot[nrect]->add_child(dock); dock_popup_selected=nrect; dock_slot[nrect]->set_current_tab(dock_slot[nrect]->get_tab_count()-1); @@ -4706,9 +4621,9 @@ void EditorNode::_update_layouts_menu() { editor_layouts->set_size(Vector2()); editor_layouts->add_shortcut(ED_SHORTCUT("layout/save",TTR("Save Layout")), SETTINGS_LAYOUT_SAVE); - editor_layouts->add_shortcut(ED_SHORTCUT("layout/load",TTR("Load Layout")), SETTINGS_LAYOUT_DELETE); + editor_layouts->add_shortcut(ED_SHORTCUT("layout/delete",TTR("Delete Layout")), SETTINGS_LAYOUT_DELETE); editor_layouts->add_separator(); - editor_layouts->add_shortcut(ED_SHORTCUT("property_editor/reset",TTR("Default")), SETTINGS_LAYOUT_DEFAULT); + editor_layouts->add_shortcut(ED_SHORTCUT("layout/default",TTR("Default")), SETTINGS_LAYOUT_DEFAULT); Ref<ConfigFile> config; config.instance(); @@ -5267,7 +5182,6 @@ EditorNode::EditorNode() { EditorSettings::create(); { int dpi_mode = EditorSettings::get_singleton()->get("global/hidpi_mode"); - print_line("DPI MODE: "+itos(dpi_mode)); if (dpi_mode==0) { editor_set_hidpi( OS::get_singleton()->get_screen_dpi(0) > 150 ); } else if (dpi_mode==2) { @@ -5318,38 +5232,18 @@ EditorNode::EditorNode() { ObjectTypeDB::set_type_enabled("CollisionShape",true); ObjectTypeDB::set_type_enabled("CollisionShape2D",true); ObjectTypeDB::set_type_enabled("CollisionPolygon2D",true); - //ObjectTypeDB::set_type_enabled("BodyVolumeConvexPolygon",true); + + Control *theme_base = memnew( Control ); + add_child(theme_base); + theme_base->set_area_as_parent_rect(); gui_base = memnew( Panel ); - add_child(gui_base); + theme_base->add_child(gui_base); gui_base->set_area_as_parent_rect(); - - theme = Ref<Theme>( memnew( Theme ) ); - gui_base->set_theme( theme ); - editor_register_icons(theme); - editor_register_fonts(theme); - - //theme->set_icon("folder","EditorFileDialog",Theme::get_default()->get_icon("folder","EditorFileDialog")); - //theme->set_color("files_disabled","EditorFileDialog",Color(0,0,0,0.7)); - - String global_font = EditorSettings::get_singleton()->get("global/custom_font"); - if (global_font!="") { - Ref<Font> fnt = ResourceLoader::load(global_font); - if (fnt.is_valid()) { - theme->set_default_theme_font(fnt); - } - } - - Ref<StyleBoxTexture> focus_sbt=memnew( StyleBoxTexture ); - focus_sbt->set_texture(theme->get_icon("EditorFocus","EditorIcons")); - for(int i=0;i<4;i++) { - focus_sbt->set_margin_size(Margin(i),16); - focus_sbt->set_default_margin(Margin(i),16); - } - focus_sbt->set_draw_center(false); - theme->set_stylebox("EditorFocus","EditorStyles",focus_sbt); - + theme_base->set_theme( create_default_theme() ); + theme = create_editor_theme(); + gui_base->set_theme(theme); resource_preview = memnew( EditorResourcePreview ); add_child(resource_preview); @@ -5635,8 +5529,8 @@ EditorNode::EditorNode() { p->add_submenu_item(TTR("Convert To.."),"Export"); pm_export->add_item(TTR("Translatable Strings.."),FILE_DUMP_STRINGS); pm_export->add_separator(); - pm_export->add_item(TTR("MeshLibrary.."),FILE_EXPORT_MESH_LIBRARY); - pm_export->add_item(TTR("TileSet.."),FILE_EXPORT_TILESET); + pm_export->add_shortcut(ED_SHORTCUT("editor/convert_to_MeshLibrary", TTR("MeshLibrary..")), FILE_EXPORT_MESH_LIBRARY); + pm_export->add_shortcut(ED_SHORTCUT("editor/convert_to_TileSet", TTR("TileSet..")), FILE_EXPORT_TILESET); pm_export->connect("item_pressed",this,"_menu_option"); p->add_separator(); @@ -6540,12 +6434,12 @@ EditorNode::EditorNode() { { List<StringName> tl; StringName ei = "EditorIcons"; - gui_base->get_theme()->get_icon_list(ei,&tl); + theme_base->get_theme()->get_icon_list(ei,&tl); for(List<StringName>::Element *E=tl.front();E;E=E->next()) { if (!ObjectTypeDB::type_exists(E->get())) continue; - icon_type_cache[E->get()]=gui_base->get_theme()->get_icon(E->get(),ei); + icon_type_cache[E->get()]=theme_base->get_theme()->get_icon(E->get(),ei); } } diff --git a/tools/editor/editor_node.h b/tools/editor/editor_node.h index 7023c6c174..bea973a357 100644 --- a/tools/editor/editor_node.h +++ b/tools/editor/editor_node.h @@ -65,7 +65,6 @@ #include "tools/editor/editor_log.h" #include "tools/editor/scene_tree_dock.h" #include "tools/editor/resources_dock.h" -#include "tools/editor/optimized_save_dialog.h" #include "tools/editor/editor_run_script.h" #include "tools/editor/editor_run_native.h" @@ -693,6 +692,7 @@ public: static void unregister_editor_types(); Control *get_gui_base() { return gui_base; } + Control *get_theme_base() { return gui_base->get_parent_control(); } static void add_io_error(const String& p_error); diff --git a/tools/editor/editor_plugin_settings.cpp b/tools/editor/editor_plugin_settings.cpp index 1a6be05af3..5342007e6d 100644 --- a/tools/editor/editor_plugin_settings.cpp +++ b/tools/editor/editor_plugin_settings.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_plugin_settings.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "editor_plugin_settings.h" #include "scene/gui/margin_container.h" #include "io/config_file.h" diff --git a/tools/editor/editor_plugin_settings.h b/tools/editor/editor_plugin_settings.h index 4f3c5b8268..4a982e40e2 100644 --- a/tools/editor/editor_plugin_settings.h +++ b/tools/editor/editor_plugin_settings.h @@ -1,10 +1,37 @@ +/*************************************************************************/ +/* editor_plugin_settings.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef EDITORPLUGINSETTINGS_H #define EDITORPLUGINSETTINGS_H #include "scene/gui/dialogs.h" #include "property_editor.h" -#include "optimized_save_dialog.h" #include "undo_redo.h" #include "editor_data.h" diff --git a/tools/editor/editor_resource_preview.cpp b/tools/editor/editor_resource_preview.cpp index 05b935f26c..8975c0ec35 100644 --- a/tools/editor/editor_resource_preview.cpp +++ b/tools/editor/editor_resource_preview.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_resource_preview.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "editor_resource_preview.h" #include "editor_settings.h" #include "os/file_access.h" diff --git a/tools/editor/editor_resource_preview.h b/tools/editor/editor_resource_preview.h index 13c3d51313..63dc5c3dd3 100644 --- a/tools/editor/editor_resource_preview.h +++ b/tools/editor/editor_resource_preview.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_resource_preview.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef EDITORRESOURCEPREVIEW_H #define EDITORRESOURCEPREVIEW_H diff --git a/tools/editor/editor_run_script.cpp b/tools/editor/editor_run_script.cpp index d34cac1530..765f36d3bc 100644 --- a/tools/editor/editor_run_script.cpp +++ b/tools/editor/editor_run_script.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_run_script.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "editor_run_script.h" #include "editor_node.h" diff --git a/tools/editor/editor_run_script.h b/tools/editor/editor_run_script.h index 8dbefced7f..144fad5ab1 100644 --- a/tools/editor/editor_run_script.h +++ b/tools/editor/editor_run_script.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_run_script.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef EDITOR_RUN_SCRIPT_H #define EDITOR_RUN_SCRIPT_H diff --git a/tools/editor/editor_selection.cpp b/tools/editor/editor_selection.cpp deleted file mode 100644 index f3fbdba907..0000000000 --- a/tools/editor/editor_selection.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/*************************************************************************/ -/* editor_selection.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "editor_selection.h" - diff --git a/tools/editor/editor_selection.h b/tools/editor/editor_selection.h deleted file mode 100644 index d238d86567..0000000000 --- a/tools/editor/editor_selection.h +++ /dev/null @@ -1,32 +0,0 @@ -/*************************************************************************/ -/* editor_selection.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef EDITOR_SELECTION_H -#define EDITOR_SELECTION_H - -#endif // EDITOR_SELECTION_H diff --git a/tools/editor/editor_settings.cpp b/tools/editor/editor_settings.cpp index 0d0008fcb8..457aecba4a 100644 --- a/tools/editor/editor_settings.cpp +++ b/tools/editor/editor_settings.cpp @@ -63,7 +63,6 @@ bool EditorSettings::_set(const StringName& p_name, const Variant& p_value) { Array arr=p_value; ERR_FAIL_COND_V(arr.size() && arr.size()&1,true); - print_line("shortcuts: "+Variant(arr).get_construct_string()); for(int i=0;i<arr.size();i+=2) { String name = arr[i]; @@ -381,7 +380,7 @@ void EditorSettings::create() { singleton->save_changed_setting=true; singleton->config_file_path=config_file_path; singleton->settings_path=config_path+"/"+config_dir; - singleton->_load_defaults(extra_config); + singleton->_load_defaults(extra_config); singleton->setup_language(); singleton->setup_network(); singleton->list_text_editor_themes(); @@ -399,14 +398,11 @@ String EditorSettings::get_settings_path() const { void EditorSettings::setup_language() { String lang = get("global/editor_language"); - print_line("LANG IS "+lang); if (lang=="en") return; //none to do for(int i=0;i<translations.size();i++) { - print_line("TESTING "+translations[i]->get_locale()); if (translations[i]->get_locale()==lang) { - print_line("ok translation"); TranslationServer::get_singleton()->set_tool_translation(translations[i]); break; } @@ -515,9 +511,13 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { set("global/font_size",14); hints["global/font_size"]=PropertyInfo(Variant::INT,"global/font_size",PROPERTY_HINT_RANGE,"10,40,1",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); set("global/source_font_size",14); - hints["global/source_font_size"]=PropertyInfo(Variant::INT,"global/source_font_size",PROPERTY_HINT_RANGE,"10,40,1",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); + hints["global/source_font_size"]=PropertyInfo(Variant::INT,"global/source_font_size",PROPERTY_HINT_RANGE,"8,96,1",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); set("global/custom_font",""); hints["global/custom_font"]=PropertyInfo(Variant::STRING,"global/custom_font",PROPERTY_HINT_GLOBAL_FILE,"*.fnt",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); + set("global/custom_theme",""); + hints["global/custom_theme"]=PropertyInfo(Variant::STRING,"global/custom_theme",PROPERTY_HINT_GLOBAL_FILE,"*.res,*.tres,*.theme",PROPERTY_USAGE_DEFAULT|PROPERTY_USAGE_RESTART_IF_CHANGED); + + set("global/autoscan_project_path",""); hints["global/autoscan_project_path"]=PropertyInfo(Variant::STRING,"global/autoscan_project_path",PROPERTY_HINT_GLOBAL_DIR); set("global/default_project_path",""); @@ -563,6 +563,8 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { hints["scenetree_editor/duplicate_node_name_num_separator"]=PropertyInfo(Variant::INT,"scenetree_editor/duplicate_node_name_num_separator",PROPERTY_HINT_ENUM, "None,Space,Underscore,Dash"); //set("scenetree_editor/display_old_action_buttons",false); set("scenetree_editor/start_create_dialog_fully_expanded",false); + set("scenetree_editor/draw_relationship_lines",false); + set("scenetree_editor/relationship_line_color",Color::html("464646")); set("gridmap_editor/pick_distance", 5000.0); @@ -581,7 +583,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { set("3d_editor/zoom_modifier",4); hints["3d_editor/zoom_modifier"]=PropertyInfo(Variant::INT,"3d_editor/zoom_modifier",PROPERTY_HINT_ENUM,"None,Shift,Alt,Meta,Ctrl"); set("3d_editor/emulate_numpad",false); - set("3d_editor/trackpad_hint", false); + set("3d_editor/emulate_3_button_mouse", false); set("2d_editor/bone_width",5); set("2d_editor/bone_color1",Color(1.0,1.0,1.0,0.9)); @@ -672,6 +674,9 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) { void EditorSettings::_load_default_text_editor_theme() { set("text_editor/background_color",Color::html("3b000000")); + set("text_editor/completion_background_color", Color::html("2C2A32")); + set("text_editor/completion_selected_color", Color::html("434244")); + set("text_editor/completion_existing_color", Color::html("21dfdfdf")); set("text_editor/caret_color",Color::html("aaaaaa")); set("text_editor/line_number_color",Color::html("66aaaaaa")); set("text_editor/text_color",Color::html("aaaaaa")); @@ -705,7 +710,6 @@ void EditorSettings::notify_changes() { sml = OS::get_singleton()->get_main_loop()->cast_to<SceneTree>(); if (!sml) { - print_line("not SML"); return; } @@ -905,6 +909,9 @@ bool EditorSettings::_save_text_editor_theme(String p_file) { String theme_section = "color_theme"; Ref<ConfigFile> cf = memnew( ConfigFile ); // hex is better? cf->set_value(theme_section, "background_color", ((Color)get("text_editor/background_color")).to_html()); + cf->set_value(theme_section, "completion_background_color", ((Color)get("text_editor/completion_background_color")).to_html()); + cf->set_value(theme_section, "completion_selected_color", ((Color)get("text_editor/completion_selected_color")).to_html()); + cf->set_value(theme_section, "completion_existing_color", ((Color)get("text_editor/completion_existing_color")).to_html()); cf->set_value(theme_section, "caret_color", ((Color)get("text_editor/caret_color")).to_html()); cf->set_value(theme_section, "line_number_color", ((Color)get("text_editor/line_number_color")).to_html()); cf->set_value(theme_section, "text_color", ((Color)get("text_editor/text_color")).to_html()); diff --git a/scene/gui/custom_button.cpp b/tools/editor/editor_themes.cpp index a70af05418..44e21aee85 100644 --- a/scene/gui/custom_button.cpp +++ b/tools/editor/editor_themes.cpp @@ -1,5 +1,5 @@ /*************************************************************************/ -/* custom_button.cpp */ +/* editor_themes.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -26,15 +26,52 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#include "custom_button.h" -CustomButton::CustomButton() +#include "editor_themes.h" +#include "editor_icons.h" +#include "editor_fonts.h" +#include "editor_settings.h" +#include "core/io/resource_loader.h" + +Ref<Theme> create_default_theme() { -} + Ref<Theme> theme = Ref<Theme>( memnew( Theme ) ); + editor_register_fonts(theme); + editor_register_icons(theme); -CustomButton::~CustomButton() -{ + Ref<StyleBoxTexture> focus_sbt=memnew( StyleBoxTexture ); + focus_sbt->set_texture(theme->get_icon("EditorFocus","EditorIcons")); + for(int i=0;i<4;i++) { + focus_sbt->set_margin_size(Margin(i),16); + focus_sbt->set_default_margin(Margin(i),16); + } + focus_sbt->set_draw_center(false); + theme->set_stylebox("EditorFocus","EditorStyles",focus_sbt); + + return theme; } +Ref<Theme> create_editor_theme() +{ + Ref<Theme> theme = NULL; + String custom_theme = EditorSettings::get_singleton()->get("global/custom_theme"); + if (custom_theme!="") { + theme = ResourceLoader::load(custom_theme); + } + + if (theme.is_null() || !theme.is_valid()) { + theme = create_default_theme(); + } + + String global_font = EditorSettings::get_singleton()->get("global/custom_font"); + if (global_font!="") { + Ref<Font> fnt = ResourceLoader::load(global_font); + if (fnt.is_valid()) { + theme->set_default_theme_font(fnt); + } + } + + return theme; +} diff --git a/drivers/chibi/cp_file_access_wrapper.cpp b/tools/editor/editor_themes.h index 8ccde3735c..dbff8b3079 100644 --- a/drivers/chibi/cp_file_access_wrapper.cpp +++ b/tools/editor/editor_themes.h @@ -1,5 +1,5 @@ /*************************************************************************/ -/* cp_file_access_wrapper.cpp */ +/* editor_themes.h */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ @@ -26,10 +26,13 @@ /* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ -#include "cp_file_access_wrapper.h" +#ifndef EDITOR_THEMES_H +#define EDITOR_THEMES_H +#include "scene/resources/theme.h" -//CPFileAccessWrapper* (*CPFileAccessWrapper::create)()=0; - +Ref<Theme> create_default_theme(); +Ref<Theme> create_editor_theme(); +#endif diff --git a/tools/editor/editor_vu.cpp b/tools/editor/editor_vu.cpp deleted file mode 100644 index 7a133c9736..0000000000 --- a/tools/editor/editor_vu.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/*************************************************************************/ -/* editor_vu.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "editor_vu.h" - diff --git a/tools/editor/editor_vu.h b/tools/editor/editor_vu.h deleted file mode 100644 index 78fe3eda86..0000000000 --- a/tools/editor/editor_vu.h +++ /dev/null @@ -1,32 +0,0 @@ -/*************************************************************************/ -/* editor_vu.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef EDITOR_VU_H -#define EDITOR_VU_H - -#endif // EDITOR_VU_H diff --git a/tools/editor/fileserver/editor_file_server.cpp b/tools/editor/fileserver/editor_file_server.cpp index ea95e4da1c..c464e10fc2 100644 --- a/tools/editor/fileserver/editor_file_server.cpp +++ b/tools/editor/fileserver/editor_file_server.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_file_server.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "editor_file_server.h" #include "io/marshalls.h" #include "io/marshalls.h" diff --git a/tools/editor/fileserver/editor_file_server.h b/tools/editor/fileserver/editor_file_server.h index 587b2c4fdb..fcb3d8546c 100644 --- a/tools/editor/fileserver/editor_file_server.h +++ b/tools/editor/fileserver/editor_file_server.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_file_server.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef EDITOR_FILE_SERVER_H #define EDITOR_FILE_SERVER_H diff --git a/tools/editor/icons/2x/icon_cone_twist_joint.png b/tools/editor/icons/2x/icon_cone_twist_joint.png Binary files differnew file mode 100644 index 0000000000..3aeba5855d --- /dev/null +++ b/tools/editor/icons/2x/icon_cone_twist_joint.png diff --git a/tools/editor/icons/2x/icon_generic_6_d_o_f_joint.png b/tools/editor/icons/2x/icon_generic_6_d_o_f_joint.png Binary files differnew file mode 100644 index 0000000000..506c873376 --- /dev/null +++ b/tools/editor/icons/2x/icon_generic_6_d_o_f_joint.png diff --git a/tools/editor/icons/2x/icon_hinge_joint.png b/tools/editor/icons/2x/icon_hinge_joint.png Binary files differnew file mode 100644 index 0000000000..b888102573 --- /dev/null +++ b/tools/editor/icons/2x/icon_hinge_joint.png diff --git a/tools/editor/icons/2x/icon_interpolated_camera.png b/tools/editor/icons/2x/icon_interpolated_camera.png Binary files differnew file mode 100644 index 0000000000..e4551a84ce --- /dev/null +++ b/tools/editor/icons/2x/icon_interpolated_camera.png diff --git a/tools/editor/icons/2x/icon_loop_interpolation.png b/tools/editor/icons/2x/icon_loop_interpolation.png Binary files differnew file mode 100644 index 0000000000..6009b50300 --- /dev/null +++ b/tools/editor/icons/2x/icon_loop_interpolation.png diff --git a/tools/editor/icons/2x/icon_rating_no_star.png b/tools/editor/icons/2x/icon_rating_no_star.png Binary files differindex 0d0c893938..f855fd8b56 100644 --- a/tools/editor/icons/2x/icon_rating_no_star.png +++ b/tools/editor/icons/2x/icon_rating_no_star.png diff --git a/tools/editor/icons/2x/icon_tool_button.png b/tools/editor/icons/2x/icon_tool_button.png Binary files differnew file mode 100644 index 0000000000..091fa8334f --- /dev/null +++ b/tools/editor/icons/2x/icon_tool_button.png diff --git a/tools/editor/icons/2x/icon_track_trigger.png b/tools/editor/icons/2x/icon_track_trigger.png Binary files differnew file mode 100644 index 0000000000..c04d47f9a4 --- /dev/null +++ b/tools/editor/icons/2x/icon_track_trigger.png diff --git a/tools/editor/icons/icon_cone_twist_joint.png b/tools/editor/icons/icon_cone_twist_joint.png Binary files differnew file mode 100644 index 0000000000..bbf93f2f71 --- /dev/null +++ b/tools/editor/icons/icon_cone_twist_joint.png diff --git a/tools/editor/icons/icon_generic_6_d_o_f_joint.png b/tools/editor/icons/icon_generic_6_d_o_f_joint.png Binary files differnew file mode 100644 index 0000000000..00ba76c098 --- /dev/null +++ b/tools/editor/icons/icon_generic_6_d_o_f_joint.png diff --git a/tools/editor/icons/icon_hinge_joint.png b/tools/editor/icons/icon_hinge_joint.png Binary files differnew file mode 100644 index 0000000000..246ca1ba42 --- /dev/null +++ b/tools/editor/icons/icon_hinge_joint.png diff --git a/tools/editor/icons/icon_interpolated_camera.png b/tools/editor/icons/icon_interpolated_camera.png Binary files differnew file mode 100644 index 0000000000..c66724f513 --- /dev/null +++ b/tools/editor/icons/icon_interpolated_camera.png diff --git a/tools/editor/icons/icon_loop_interpolation.png b/tools/editor/icons/icon_loop_interpolation.png Binary files differnew file mode 100644 index 0000000000..488b33316e --- /dev/null +++ b/tools/editor/icons/icon_loop_interpolation.png diff --git a/tools/editor/icons/icon_rating_no_star.png b/tools/editor/icons/icon_rating_no_star.png Binary files differindex d4085330ce..e7421bdb13 100644 --- a/tools/editor/icons/icon_rating_no_star.png +++ b/tools/editor/icons/icon_rating_no_star.png diff --git a/tools/editor/icons/icon_tool_button.png b/tools/editor/icons/icon_tool_button.png Binary files differnew file mode 100644 index 0000000000..b2f3f6103f --- /dev/null +++ b/tools/editor/icons/icon_tool_button.png diff --git a/tools/editor/icons/icon_track_trigger.png b/tools/editor/icons/icon_track_trigger.png Binary files differnew file mode 100644 index 0000000000..e89f95561a --- /dev/null +++ b/tools/editor/icons/icon_track_trigger.png diff --git a/tools/editor/icons/source/icon_cone_twist_joint.svg b/tools/editor/icons/source/icon_cone_twist_joint.svg new file mode 100644 index 0000000000..4799deb1d5 --- /dev/null +++ b/tools/editor/icons/source/icon_cone_twist_joint.svg @@ -0,0 +1,93 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="16" + viewBox="0 0 16 16" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_area.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + sodipodi:docname="icon_cone_twist_joint.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="22.627417" + inkscape:cx="8.6908051" + inkscape:cy="11.390572" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-midpoints="true" + inkscape:snap-smooth-nodes="true" + inkscape:object-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1036.3622)"> + <path + style="opacity:1;fill:none;fill-opacity:0.99607843;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="M 8 2 L 2 11 A 6 3 0 0 0 5 13.597656 A 6 3 0 0 0 11 13.597656 A 6 3 0 0 0 14 11 L 8 2 z " + transform="translate(0,1036.3622)" + id="path4172" /> + <ellipse + style="opacity:1;fill:none;fill-opacity:0.99607843;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4177" + cx="8" + cy="1047.3622" + rx="6" + ry="3" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 8,1039.3622 0,8" + id="path4179" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_generic_6_d_o_f_joint.svg b/tools/editor/icons/source/icon_generic_6_d_o_f_joint.svg new file mode 100644 index 0000000000..485040c6dc --- /dev/null +++ b/tools/editor/icons/source/icon_generic_6_d_o_f_joint.svg @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="16" + viewBox="0 0 16 16" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_area.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + sodipodi:docname="icon_generic_6_dof_joint.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="22.627417" + inkscape:cx="8.4723042" + inkscape:cy="10.441783" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-midpoints="true" + inkscape:snap-smooth-nodes="true" + inkscape:object-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1036.3622)"> + <path + style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" + d="m 3,1042.3622 10,5" + id="path4241" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:#fc9c9c;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:0.99607843;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:0.99607843" + d="m 8,1050.3622 0,-12" + id="path4243" + inkscape:connector-curvature="0" /> + <path + inkscape:connector-curvature="0" + id="path4245" + d="m 3,1047.3622 10,-5" + style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843" + sodipodi:nodetypes="cc" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_hinge_joint.svg b/tools/editor/icons/source/icon_hinge_joint.svg new file mode 100644 index 0000000000..767feac9d5 --- /dev/null +++ b/tools/editor/icons/source/icon_hinge_joint.svg @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="16" + viewBox="0 0 16 16" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_area.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + sodipodi:docname="icon_hinge_joint.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="22.627417" + inkscape:cx="8.5772937" + inkscape:cy="8.9985765" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-midpoints="true" + inkscape:snap-smooth-nodes="true" + inkscape:object-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1036.3622)"> + <path + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 4,1045.3622 a 3,2.9999826 0 0 0 -3,3 3,2.9999826 0 0 0 3,3 3,2.9999826 0 0 0 3,-3 3,2.9999826 0 0 0 -3,-3 z m 0,2 a 1.0000231,1.0000174 0 0 1 1,1 1.0000231,1.0000174 0 0 1 -1,1 1.0000231,1.0000174 0 0 1 -1,-1 1.0000231,1.0000174 0 0 1 1,-1 z" + id="path4145" + inkscape:connector-curvature="0" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fc9c9c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="M 7.2832031 1.328125 A 1.0001 1.0001 0 0 0 6.4023438 1.8398438 L 2.7128906 8.2304688 C 3.1188799 8.0916963 3.5469997 8 4 8 C 4.3704308 8 4.722062 8.0678727 5.0625 8.1621094 L 8.1347656 2.8398438 A 1.0001 1.0001 0 0 0 7.2832031 1.328125 z " + transform="translate(0,1036.3622)" + id="path4147" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#fc9c9c;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 4,1050.3622 10,0" + id="path4149" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_interpolated_camera.svg b/tools/editor/icons/source/icon_interpolated_camera.svg new file mode 100644 index 0000000000..16fc731c12 --- /dev/null +++ b/tools/editor/icons/source/icon_interpolated_camera.svg @@ -0,0 +1,259 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="16" + viewBox="0 0 16 16" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_camera.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + sodipodi:docname="icon_interpolated_camera.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32" + inkscape:cx="8.5491949" + inkscape:cy="8.618964" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + showguides="true"> + <inkscape:grid + type="xygrid" + id="grid3336" + empspacing="4" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1036.3622)"> + <rect + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4144" + width="10" + height="5.0000172" + x="1" + y="1039.3622" /> + <rect + y="1037.3622" + x="3" + height="9.0000172" + width="6" + id="rect4146" + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4148" + cx="3" + cy="1039.3622" + r="2" /> + <circle + r="2" + cy="1044.3622" + cx="3" + id="circle4150" + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle4152" + cx="9" + cy="1039.3622" + r="2" /> + <circle + r="2" + cy="1044.3622" + cx="9" + id="circle4154" + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <path + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="m 12,1040.3622 0,3 3,1 0,-5 z" + id="rect4156" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccccc" /> + <rect + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4141" + width="1" + height="4" + x="6" + y="1047.3622" + ry="0" /> + <rect + ry="0" + y="1047.3622" + x="7" + height="1.0000174" + width="1" + id="rect4143" + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4145" + width="1" + height="1.0000174" + x="7" + y="1049.3622" + ry="0" /> + <rect + ry="0" + y="1048.3622" + x="8" + height="1.0000174" + width="1" + id="rect4147" + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + ry="0" + y="1047.3622" + x="3" + height="4" + width="1" + id="rect4149" + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + ry="0" + y="1048.3622" + x="10" + height="2.0000174" + width="1" + id="rect4157" + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4159" + width="1" + height="1.0000174" + x="11" + y="1047.3622" + ry="0" /> + <rect + ry="0" + y="1050.3622" + x="11" + height="1.0000174" + width="1" + id="rect4161" + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4163" + width="1" + height="2.0000174" + x="12" + y="1048.3622" + ry="0" /> + <path + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4165" + sodipodi:type="arc" + sodipodi:cx="8" + sodipodi:cy="1048.3622" + sodipodi:rx="1" + sodipodi:ry="1" + sodipodi:start="3.1415927" + sodipodi:end="0" + d="m 7,1048.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z" /> + <path + d="m 7,-1049.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z" + sodipodi:end="0" + sodipodi:start="3.1415927" + sodipodi:ry="1" + sodipodi:rx="1" + sodipodi:cy="-1049.3622" + sodipodi:cx="8" + sodipodi:type="arc" + id="path4167" + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + transform="scale(1,-1)" /> + <path + transform="scale(1,-1)" + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4169" + sodipodi:type="arc" + sodipodi:cx="11" + sodipodi:cy="-1050.3622" + sodipodi:rx="1" + sodipodi:ry="1" + sodipodi:start="3.1415927" + sodipodi:end="0" + d="m 10,-1050.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z" /> + <path + d="m 11,-1050.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z" + sodipodi:end="0" + sodipodi:start="3.1415927" + sodipodi:ry="1" + sodipodi:rx="1" + sodipodi:cy="-1050.3622" + sodipodi:cx="12" + sodipodi:type="arc" + id="path4171" + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + transform="scale(1,-1)" /> + <path + d="m 10,1048.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z" + sodipodi:end="0" + sodipodi:start="3.1415927" + sodipodi:ry="1" + sodipodi:rx="1" + sodipodi:cy="1048.3622" + sodipodi:cx="11" + sodipodi:type="arc" + id="path4173" + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <path + style="opacity:1;fill:#fc9c9c;fill-opacity:1;stroke:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4175" + sodipodi:type="arc" + sodipodi:cx="12" + sodipodi:cy="1048.3622" + sodipodi:rx="1" + sodipodi:ry="1" + sodipodi:start="3.1415927" + sodipodi:end="0" + d="m 11,1048.3622 a 1,1 0 0 1 1,-1 1,1 0 0 1 1,1 l -1,0 z" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_loop_interpolation.svg b/tools/editor/icons/source/icon_loop_interpolation.svg new file mode 100644 index 0000000000..3733acb253 --- /dev/null +++ b/tools/editor/icons/source/icon_loop_interpolation.svg @@ -0,0 +1,111 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="16" + viewBox="0 0 16 16" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_loop_interpolation.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + sodipodi:docname="icon_loop_interpolation.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32" + inkscape:cx="3.8522581" + inkscape:cy="6.9411054" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="false" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + inkscape:snap-midpoints="true" + inkscape:snap-smooth-nodes="true" + inkscape:object-nodes="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1036.3622)"> + <g + id="layer1-8" + inkscape:label="Layer 1" + transform="matrix(0,-1,1,0,-1021.3622,1033.3622)" /> + <circle + style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4155" + cx="3" + cy="1048.3622" + r="2" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="M 4 3 A 2 2 0 0 0 2.2675781 4 A 2 2 0 0 0 2.0019531 5 L 2 5 L 2 5.046875 L 2 12 L 4 12 L 4 7 L 4 5 L 6 5 L 6 3 L 4 3 z " + transform="translate(0,1036.3622)" + id="path4157" /> + <path + style="fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 6,1037.3622 0,6 4,-3 z" + id="path4159" + inkscape:connector-curvature="0" /> + <circle + r="2" + cy="1040.3622" + cx="13" + id="circle4161" + style="opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <path + style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" + d="M 12 4 L 12 9 L 12 11 L 10 11 L 10 13 L 12 13 A 2 2 0 0 0 13.732422 12 A 2 2 0 0 0 13.998047 11 L 14 11 L 14 4 L 12 4 z " + transform="translate(0,1036.3622)" + id="path4163" /> + <path + inkscape:connector-curvature="0" + id="path4165" + d="m 10,1045.3622 0,6 -4,-3 z" + style="fill:#e0e0e0;fill-opacity:0.99607843;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_rating_no_star.svg b/tools/editor/icons/source/icon_rating_no_star.svg index 123f524ed3..09a9efa112 100644 --- a/tools/editor/icons/source/icon_rating_no_star.svg +++ b/tools/editor/icons/source/icon_rating_no_star.svg @@ -29,8 +29,8 @@ inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="32" - inkscape:cx="6.994096" - inkscape:cy="8.2713563" + inkscape:cx="6.5847936" + inkscape:cy="10.189102" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" @@ -47,10 +47,10 @@ inkscape:window-x="0" inkscape:window-y="27" inkscape:window-maximized="1" - inkscape:object-paths="true" - inkscape:snap-intersection-paths="true" - inkscape:object-nodes="true" - inkscape:snap-smooth-nodes="true"> + inkscape:object-paths="false" + inkscape:snap-intersection-paths="false" + inkscape:object-nodes="false" + inkscape:snap-smooth-nodes="false"> <inkscape:grid type="xygrid" id="grid3336" @@ -64,7 +64,7 @@ <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> + <dc:title /> </cc:Work> </rdf:RDF> </metadata> @@ -73,15 +73,16 @@ inkscape:groupmode="layer" id="layer1" transform="translate(0,-1036.3622)"> - <path - style="opacity:1;fill:#ffe484;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" - d="M 8.0000004,1038.0862 5.62591,1042.1835 1,1043.2813 l 3.2360991,3.4074 -0.3586608,4.6735 4.1388649,-1.9766 4.1572048,1.9421 -0.395342,-4.6532 3.221834,-3.3932 -4.625909,-1.0978 -2.3740906,-4.0973 z" - id="path4254" - inkscape:connector-curvature="0" /> - <path - inkscape:connector-curvature="0" - id="path4182" - d="M 8.0000004,1038.0862 5.62591,1042.1835 1,1043.2813 l 3.2360991,3.4074 -0.3586608,4.6735 4.1388649,-1.9766 4.1572048,1.9421 -0.395342,-4.6532 3.221834,-3.3932 -4.625909,-1.0978 -2.3740906,-4.0973 z" - style="opacity:1;fill:#000000;fill-opacity:0.23529412;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <g + id="layer1-7" + inkscape:label="Layer 1" + style="fill:#c3ae65;fill-opacity:1"> + <path + id="path4254-1" + transform="translate(0,1036.3622)" + d="M 8,1.7246094 5.625,5.8222656 1,6.9199219 4.2363281,10.326172 3.8769531,15 8.015625,13.023438 12.173828,14.964844 11.777344,10.3125 15,6.9199219 10.375,5.8222656 8,1.7246094 Z M 8,4 l 1.6582031,2.7773438 3.2324219,0.7441406 -2.25,2.3007812 0.275391,3.1542964 L 8.0117188,11.660156 5.1191406,13 5.3710938,9.8320312 3.109375,7.5214844 6.3417969,6.7773438 8,4 Z" + style="opacity:1;fill:#c3ae65;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + inkscape:connector-curvature="0" /> + </g> </g> </svg> diff --git a/tools/editor/icons/source/icon_tool_button.svg b/tools/editor/icons/source/icon_tool_button.svg new file mode 100644 index 0000000000..1c5176c8c9 --- /dev/null +++ b/tools/editor/icons/source/icon_tool_button.svg @@ -0,0 +1,94 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="16" + viewBox="0 0 16 16" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_button.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + sodipodi:docname="icon_tool_button.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32" + inkscape:cx="8.173168" + inkscape:cy="9.7479984" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1"> + <inkscape:grid + type="xygrid" + id="grid3336" + empspacing="4" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1036.3622)"> + <path + style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + d="M 1 3 L 1 11 L 15 11 L 15 3 L 1 3 z M 11 4 A 3 3 0 0 1 13.826172 6 L 11 6 A 1 1 0 0 0 10 7 A 1 1 0 0 0 11 8 L 13.824219 8 A 3 3 0 0 1 11 10 A 3 3 0 0 1 8.1757812 8 L 3 8 A 1 1 0 0 1 2 7 A 1 1 0 0 1 3 6 L 8.1738281 6 A 3 3 0 0 1 11 4 z " + transform="translate(0,1036.3622)" + id="rect4139" /> + <rect + transform="scale(1,-1)" + style="opacity:1;fill:#a5efac;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4160" + width="14" + height="2.0000522" + x="1" + y="-1049.3622" /> + <rect + y="-1049.3622" + x="1" + height="2.0000522" + width="14" + id="rect4142" + style="opacity:1;fill:#000000;fill-opacity:0.07843138;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + transform="scale(1,-1)" /> + </g> +</svg> diff --git a/tools/editor/icons/source/icon_track_trigger.svg b/tools/editor/icons/source/icon_track_trigger.svg new file mode 100644 index 0000000000..9c13791f70 --- /dev/null +++ b/tools/editor/icons/source/icon_track_trigger.svg @@ -0,0 +1,109 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="16" + height="8" + viewBox="0 0 16 8" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + inkscape:export-filename="/home/djrm/Projects/godot/tools/editor/icons/icon_track_trigger.png" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" + sodipodi:docname="icon_track_trigger.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="32" + inkscape:cx="0.93634514" + inkscape:cy="3.5256605" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="true" + units="px" + inkscape:snap-bbox="true" + inkscape:bbox-paths="true" + inkscape:bbox-nodes="true" + inkscape:snap-bbox-edge-midpoints="true" + inkscape:snap-bbox-midpoints="true" + inkscape:snap-object-midpoints="true" + inkscape:snap-center="true" + inkscape:window-width="1920" + inkscape:window-height="1016" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="1" + showguides="true" + inkscape:snap-smooth-nodes="true" + inkscape:object-nodes="true" + inkscape:object-paths="true" + inkscape:snap-intersection-paths="true"> + <inkscape:grid + type="xygrid" + id="grid3336" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-1044.3622)"> + <circle + r="1" + cy="1048.3622" + cx="11" + id="circle4232" + style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle4234" + cx="14" + cy="1046.3622" + r="1" /> + <rect + style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4169" + width="6" + height="2" + x="1" + y="1045.3622" /> + <rect + style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4171" + width="2" + height="3.9999826" + x="3" + y="1047.3622" /> + <circle + style="opacity:1;fill:#e0e0e0;fill-opacity:1;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle4173" + cx="8" + cy="1050.3622" + r="1" /> + </g> +</svg> diff --git a/tools/editor/inspector_dock.cpp b/tools/editor/inspector_dock.cpp index 57d19c3ec8..7b06761e53 100644 --- a/tools/editor/inspector_dock.cpp +++ b/tools/editor/inspector_dock.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* inspector_dock.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "inspector_dock.h" #if 0 diff --git a/tools/editor/inspector_dock.h b/tools/editor/inspector_dock.h index 90f043aba8..40c153e2d4 100644 --- a/tools/editor/inspector_dock.h +++ b/tools/editor/inspector_dock.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* inspector_dock.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef INSPECTOR_DOCK_H #define INSPECTOR_DOCK_H diff --git a/tools/editor/io_plugins/editor_export_scene.cpp b/tools/editor/io_plugins/editor_export_scene.cpp index dff41a59ed..acbbf8c737 100644 --- a/tools/editor/io_plugins/editor_export_scene.cpp +++ b/tools/editor/io_plugins/editor_export_scene.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_export_scene.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "editor_export_scene.h" #include "io/resource_loader.h" #include "io/resource_saver.h" diff --git a/tools/editor/io_plugins/editor_export_scene.h b/tools/editor/io_plugins/editor_export_scene.h index 134da6c234..2c7fe9a1ab 100644 --- a/tools/editor/io_plugins/editor_export_scene.h +++ b/tools/editor/io_plugins/editor_export_scene.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_export_scene.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef EDITOR_EXPORT_SCENE_H #define EDITOR_EXPORT_SCENE_H diff --git a/tools/editor/io_plugins/editor_font_import_plugin.cpp b/tools/editor/io_plugins/editor_font_import_plugin.cpp index d5e6e3077e..70bc44ba7d 100644 --- a/tools/editor/io_plugins/editor_font_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -102,6 +102,7 @@ public: bool disable_filter; bool round_advance; + bool premultiply_alpha; @@ -167,6 +168,8 @@ public: round_advance=p_value; else if (n=="advanced/disable_filter") disable_filter=p_value; + else if (n=="advanced/premultiply_alpha") + premultiply_alpha=p_value; else return false; @@ -235,6 +238,8 @@ public: r_ret=round_advance; else if (n=="advanced/disable_filter") r_ret=disable_filter; + else if (n=="advanced/premultiply_alpha") + r_ret=premultiply_alpha; else return false; @@ -297,6 +302,7 @@ public: p_list->push_back(PropertyInfo(Variant::BOOL,"advanced/round_advance")); p_list->push_back(PropertyInfo(Variant::BOOL,"advanced/disable_filter")); + p_list->push_back(PropertyInfo(Variant::BOOL,"advanced/premultiply_alpha")); } @@ -336,6 +342,7 @@ public: font_mode=FONT_BITMAP; round_advance=true; disable_filter=false; + premultiply_alpha=false; } @@ -368,6 +375,7 @@ public: round_advance=true; disable_filter=false; + premultiply_alpha=false; } @@ -489,18 +497,22 @@ class EditorFontImportDialog : public ConfirmationDialog { Image img = tex->get_data(); f->store_line("static const int _builtin_font_img_width="+itos(img.get_width())+";"); - f->store_line("static const int _builtin_font_img_height="+itos(img.get_height())+";"); - f->store_line("static const unsigned char _builtin_font_img_data["+itos(img.get_width()*img.get_height()*2)+"]={"); - for(int i=0;i<img.get_height();i++) { + f->store_line("static const int _builtin_font_img_height="+itos(img.get_height())+";"); - for(int j=0;j<img.get_width();j++) { + String fname = p_font.basename()+".sv.png"; + ResourceSaver::save(fname,tex); + Vector<uint8_t> data=FileAccess::get_file_as_array(fname); - Color c = img.get_pixel(j,i); - int v = CLAMP(((c.r+c.g+c.b)/3.0)*255,0,255); - int a = CLAMP(c.a*255,0,255); - f->store_line(itos(v)+","+itos(a)+","); - } + f->store_line("static const int _builtin_font_img_data_size="+itos(data.size())+";"); + f->store_line("static const unsigned char _builtin_font_img_data["+itos(data.size())+"]={"); + + + + for(int i=0;i<data.size();i++) { + + f->store_line(itos(data[i])+","); + } f->store_line("};"); @@ -524,6 +536,16 @@ class EditorFontImportDialog : public ConfirmationDialog { dest->get_line_edit()->set_text(dest->get_line_edit()->get_text().get_base_dir() + "/" + source->get_line_edit()->get_text().get_file().basename() + ".fnt" ); } + if (dest->get_line_edit()->get_text().extension() == dest->get_line_edit()->get_text()) { + dest->get_line_edit()->set_text(dest->get_line_edit()->get_text() + ".fnt"); + } + + if (dest->get_line_edit()->get_text().extension().to_lower() != "fnt") { + error_dialog->set_text(TTR("Invalid file extension.\nPlease use .fnt.")); + error_dialog->popup_centered(Size2(200,100)); + return; + } + Ref<ResourceImportMetadata> rimd = get_rimd(); if (rimd.is_null()) { @@ -1528,12 +1550,30 @@ Ref<BitmapFont> EditorFontImportPlugin::generate_font(const Ref<ResourceImportMe } + if (from->has_option("advanced/premultiply_alpha") && bool(from->get_option("advanced/premultiply_alpha"))) { + + DVector<uint8_t> data = atlas.get_data(); + int dl = data.size(); + { + DVector<uint8_t>::Write w = data.write(); + + for(int i=0;i<dl;i+=4) { + + w[i+0]= uint8_t(int(w[i+0])*int(w[i+3])/255); + w[i+1]= uint8_t(int(w[i+1])*int(w[i+3])/255); + w[i+2]= uint8_t(int(w[i+2])*int(w[i+3])/255); + } + } + + atlas=Image(res_size.x,res_size.y,0,Image::FORMAT_RGBA,data); + } if (from->has_option("color/monochrome") && bool(from->get_option("color/monochrome"))) { atlas.convert(Image::FORMAT_GRAYSCALE_ALPHA); } + if (0) { //debug the texture Ref<ImageTexture> atlast = memnew( ImageTexture ); diff --git a/tools/editor/io_plugins/editor_import_collada.cpp b/tools/editor/io_plugins/editor_import_collada.cpp index 80cd54756e..363cba3678 100644 --- a/tools/editor/io_plugins/editor_import_collada.cpp +++ b/tools/editor/io_plugins/editor_import_collada.cpp @@ -2077,6 +2077,7 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones animation->add_track(Animation::TYPE_TRANSFORM); int track = animation->get_track_count() -1; animation->track_set_path( track , path ); + animation->track_set_imported( track , true ); //helps merging later Vector<float> snapshots = base_snapshots; @@ -2229,6 +2230,7 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones animation->add_track(Animation::TYPE_TRANSFORM); int track = animation->get_track_count() -1; animation->track_set_path( track , path ); + animation->track_set_imported( track , true ); //helps merging later Transform xform = cn->compute_transform(collada); @@ -2284,8 +2286,11 @@ void ColladaImport::create_animation(int p_clip, bool p_make_tracks_in_all_bones animation->add_track(Animation::TYPE_VALUE); int track = animation->get_track_count() -1; + path = path +":"+at.param; animation->track_set_path( track , path ); + animation->track_set_imported( track , true ); //helps merging later + for(int i=0;i<at.keys.size();i++) { @@ -2376,6 +2381,7 @@ Node* EditorSceneImporterCollada::import_scene(const String& p_path, uint32_t p_ state.create_animations(p_flags&IMPORT_ANIMATION_FORCE_ALL_TRACKS_IN_ALL_CLIPS); AnimationPlayer *ap = memnew( AnimationPlayer ); + ap->set_name("animations"); for(int i=0;i<state.animations.size();i++) { String name; if (state.animations[i]->get_name()=="") diff --git a/tools/editor/io_plugins/editor_mesh_import_plugin.cpp b/tools/editor/io_plugins/editor_mesh_import_plugin.cpp index c20515f0f3..095c56a373 100644 --- a/tools/editor/io_plugins/editor_mesh_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_mesh_import_plugin.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_mesh_import_plugin.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "editor_mesh_import_plugin.h" #include "tools/editor/editor_file_dialog.h" diff --git a/tools/editor/io_plugins/editor_mesh_import_plugin.h b/tools/editor/io_plugins/editor_mesh_import_plugin.h index ed30d69e18..d200603e6a 100644 --- a/tools/editor/io_plugins/editor_mesh_import_plugin.h +++ b/tools/editor/io_plugins/editor_mesh_import_plugin.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_mesh_import_plugin.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef EDITOR_MESH_IMPORT_PLUGIN_H #define EDITOR_MESH_IMPORT_PLUGIN_H diff --git a/tools/editor/io_plugins/editor_scene_import_plugin.cpp b/tools/editor/io_plugins/editor_scene_import_plugin.cpp index f346306f61..c7d92a9658 100644 --- a/tools/editor/io_plugins/editor_scene_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_scene_import_plugin.cpp @@ -30,6 +30,7 @@ #include "globals.h" #include "tools/editor/editor_node.h" #include "scene/resources/packed_scene.h" +#include "scene/resources/box_shape.h" #include "os/file_access.h" #include "scene/3d/path.h" #include "scene/animation/animation_player.h" @@ -1068,12 +1069,14 @@ const EditorSceneImportDialog::FlagInfo EditorSceneImportDialog::scene_flag_name {EditorSceneImportPlugin::SCENE_FLAG_IMPORT_ANIMATIONS,("Actions"),"Import Animations",true}, {EditorSceneImportPlugin::SCENE_FLAG_COMPRESS_GEOMETRY,("Actions"),"Compress Geometry",false}, {EditorSceneImportPlugin::SCENE_FLAG_GENERATE_TANGENT_ARRAYS,("Actions"),"Force Generation of Tangent Arrays",false}, - {EditorSceneImportPlugin::SCENE_FLAG_DETECT_ALPHA,("Materials"),"Set Alpha in Materials (-alpha)",true}, - {EditorSceneImportPlugin::SCENE_FLAG_DETECT_VCOLOR,("Materials"),"Set Vert. Color in Materials (-vcol)",true}, {EditorSceneImportPlugin::SCENE_FLAG_LINEARIZE_DIFFUSE_TEXTURES,("Actions"),"SRGB->Linear Of Diffuse Textures",false}, {EditorSceneImportPlugin::SCENE_FLAG_CONVERT_NORMALMAPS_TO_XY,("Actions"),"Convert Normal Maps to XY",true}, {EditorSceneImportPlugin::SCENE_FLAG_SET_LIGHTMAP_TO_UV2_IF_EXISTS,("Actions"),"Set Material Lightmap to UV2 if Tex2Array Exists",true}, - {EditorSceneImportPlugin::SCENE_FLAG_CREATE_COLLISIONS,("Create"),"Create Collisions (-col},-colonly)",true}, + {EditorSceneImportPlugin::SCENE_FLAG_MERGE_KEEP_MATERIALS,("Merge"),"Keep Materials after first import (delete them for re-import).",true}, + {EditorSceneImportPlugin::SCENE_FLAG_MERGE_KEEP_EXTRA_ANIM_TRACKS,("Merge"),"Keep user-added Animation tracks.",true}, + {EditorSceneImportPlugin::SCENE_FLAG_DETECT_ALPHA,("Materials"),"Set Alpha in Materials (-alpha)",true}, + {EditorSceneImportPlugin::SCENE_FLAG_DETECT_VCOLOR,("Materials"),"Set Vert. Color in Materials (-vcol)",true}, + {EditorSceneImportPlugin::SCENE_FLAG_CREATE_COLLISIONS,("Create"),"Create Collisions and/or Rigid Bodies (-col,-colonly,-rigid)",true}, {EditorSceneImportPlugin::SCENE_FLAG_CREATE_PORTALS,("Create"),"Create Portals (-portal)",true}, {EditorSceneImportPlugin::SCENE_FLAG_CREATE_ROOMS,("Create"),"Create Rooms (-room)",true}, {EditorSceneImportPlugin::SCENE_FLAG_SIMPLIFY_ROOMS,("Create"),"Simplify Rooms",false}, @@ -1745,6 +1748,49 @@ Node* EditorSceneImportPlugin::_fix_node(Node *p_node,Node *p_root,Map<Ref<Mesh> colshape->set_owner(sb->get_owner()); } + } else if (p_flags&SCENE_FLAG_CREATE_COLLISIONS && _teststr(name,"rigid") && p_node->cast_to<MeshInstance>()) { + + if (isroot) + return p_node; + + // get mesh instance and bounding box + MeshInstance *mi = p_node->cast_to<MeshInstance>(); + AABB aabb = mi->get_aabb(); + + // create a new rigid body collision node + RigidBody * rigid_body = memnew( RigidBody ); + Node * col = rigid_body; + ERR_FAIL_COND_V(!col,NULL); + + // remove node name postfix + col->set_name(_fixstr(name,"rigid")); + // get mesh instance xform matrix to the rigid body collision node + col->cast_to<Spatial>()->set_transform(mi->get_transform()); + // save original node by duplicating it into a new instance and correcting the name + Node * mesh = p_node->duplicate(); + mesh->set_name(_fixstr(name,"rigid")); + // reset the xform matrix of the duplicated node so it can inherit parent node xform + mesh->cast_to<Spatial>()->set_transform(Transform(Matrix3())); + // reparent the new mesh node to the rigid body collision node + p_node->add_child(mesh); + mesh->set_owner(p_node->get_owner()); + // replace the original node with the rigid body collision node + p_node->replace_by(col); + memdelete(p_node); + p_node=col; + + // create an alias for the rigid body collision node + RigidBody *rb = col->cast_to<RigidBody>(); + // create a new Box collision shape and set the right extents + Ref<BoxShape> shape = memnew( BoxShape ); + shape->set_extents(aabb.get_size() * 0.5); + CollisionShape *colshape = memnew( CollisionShape); + colshape->set_name("shape"); + colshape->set_shape(shape); + // reparent the new collision shape to the rigid body collision node + rb->add_child(colshape); + colshape->set_owner(p_node->get_owner()); + } else if (p_flags&SCENE_FLAG_CREATE_COLLISIONS &&_teststr(name,"col") && p_node->cast_to<MeshInstance>()) { @@ -2411,6 +2457,138 @@ void EditorSceneImportPlugin::_optimize_animations(Node *scene, float p_max_lin_ } +void EditorSceneImportPlugin::_find_resources_to_merge(Node *scene, Node *node, bool p_merge_material, Map<String, Ref<Material> > &materials, bool p_merge_anims, Map<String,Ref<Animation> >& merged_anims,Set<Ref<Mesh> > &tested_meshes) { + + if (node->get_owner()!=scene) + return; + + String path = scene->get_path_to(node); + + if (p_merge_anims && node->cast_to<AnimationPlayer>()) { + + AnimationPlayer *ap = node->cast_to<AnimationPlayer>(); + List<StringName> anims; + ap->get_animation_list(&anims); + for (List<StringName>::Element *E=anims.front();E;E=E->next()) { + Ref<Animation> anim = ap->get_animation(E->get()); + Ref<Animation> clone; + + bool has_user_tracks=false; + + for(int i=0;i<anim->get_track_count();i++) { + + if (!anim->track_is_imported(i)) { + has_user_tracks=true; + break; + } + } + + if (has_user_tracks) { + + clone = anim->duplicate(); + for(int i=0;i<clone->get_track_count();i++) { + if (clone->track_is_imported(i)) { + clone->remove_track(i); + i--; + } + } + + merged_anims[path+"::"+String(E->get())]=clone; + } + } + } + + + + if (p_merge_material && node->cast_to<MeshInstance>()) { + MeshInstance *mi=node->cast_to<MeshInstance>(); + Ref<Mesh> mesh = mi->get_mesh(); + if (mesh.is_valid() && mesh->get_name()!=String() && !tested_meshes.has(mesh)) { + + for(int i=0;i<mesh->get_surface_count();i++) { + Ref<Material> material = mesh->surface_get_material(i); + materials[mesh->get_name()+":surf:"+mesh->surface_get_name(i)]=material; + } + + tested_meshes.insert(mesh); + } + } + + + + for(int i=0;i<node->get_child_count();i++) { + _find_resources_to_merge(scene,node->get_child(i),p_merge_material,materials,p_merge_anims,merged_anims,tested_meshes); + } + +} + + +void EditorSceneImportPlugin::_merge_found_resources(Node *scene, Node *node, bool p_merge_material, const Map<String, Ref<Material> > &materials, bool p_merge_anims, const Map<String,Ref<Animation> >& merged_anims, Set<Ref<Mesh> > &tested_meshes) { + + if (node->get_owner()!=scene) + return; + + String path = scene->get_path_to(node); + + if (node->cast_to<AnimationPlayer>()) { + + AnimationPlayer *ap = node->cast_to<AnimationPlayer>(); + List<StringName> anims; + ap->get_animation_list(&anims); + for (List<StringName>::Element *E=anims.front();E;E=E->next()) { + Ref<Animation> anim = ap->get_animation(E->get()); + + String anim_path = path+"::"+String(E->get()); + + if (merged_anims.has(anim_path)) { + + Ref<Animation> user_tracks = merged_anims[anim_path]; + for(int i=0;i<user_tracks->get_track_count();i++) { + + int idx = anim->get_track_count(); + anim->add_track(user_tracks->track_get_type(i)); + anim->track_set_path(idx,user_tracks->track_get_path(i)); + anim->track_set_interpolation_type(idx,user_tracks->track_get_interpolation_type(i)); + for(int j=0;j<user_tracks->track_get_key_count(i);j++) { + + float ofs = user_tracks->track_get_key_time(i,j); + float trans = user_tracks->track_get_key_transition(i,j); + Variant value = user_tracks->track_get_key_value(i,j); + + anim->track_insert_key(idx,ofs,value,trans); + } + } + } + } + } + + + + if (node->cast_to<MeshInstance>()) { + MeshInstance *mi=node->cast_to<MeshInstance>(); + Ref<Mesh> mesh = mi->get_mesh(); + if (mesh.is_valid() && mesh->get_name()!=String() && !tested_meshes.has(mesh)) { + + for(int i=0;i<mesh->get_surface_count();i++) { + String sname = mesh->get_name()+":surf:"+mesh->surface_get_name(i); + + if (materials.has(sname)) { + mesh->surface_set_material(i,materials[sname]); + } + } + + tested_meshes.insert(mesh); + } + } + + + + for(int i=0;i<node->get_child_count();i++) { + _merge_found_resources(scene,node->get_child(i),p_merge_material,materials,p_merge_anims,merged_anims,tested_meshes); + } + +} + Error EditorSceneImportPlugin::import2(Node *scene, const String& p_dest_path, const Ref<ResourceImportMetadata>& p_from) { Error err=OK; @@ -2462,6 +2640,28 @@ Error EditorSceneImportPlugin::import2(Node *scene, const String& p_dest_path, c _filter_tracks(scene,animation_filter); + if (scene_flags&(SCENE_FLAG_MERGE_KEEP_MATERIALS|SCENE_FLAG_MERGE_KEEP_EXTRA_ANIM_TRACKS) && FileAccess::exists(p_dest_path)) { + //must merge! + + Ref<PackedScene> pscene = ResourceLoader::load(p_dest_path,"PackedScene",true); + if (pscene.is_valid()) { + + Node *instance = pscene->instance(); + if (instance) { + Map<String,Ref<Animation> > merged_anims; + Map<String,Ref<Material> > merged_materials; + Set<Ref<Mesh> > tested_meshes; + + _find_resources_to_merge(instance,instance,scene_flags&SCENE_FLAG_MERGE_KEEP_MATERIALS,merged_materials,scene_flags&SCENE_FLAG_MERGE_KEEP_EXTRA_ANIM_TRACKS,merged_anims,tested_meshes); + tested_meshes.clear(); + _merge_found_resources(instance,instance,scene_flags&SCENE_FLAG_MERGE_KEEP_MATERIALS,merged_materials,scene_flags&SCENE_FLAG_MERGE_KEEP_EXTRA_ANIM_TRACKS,merged_anims,tested_meshes); + + memdelete(instance); + } + + } + + } /// BEFORE ANYTHING, RUN SCRIPT diff --git a/tools/editor/io_plugins/editor_scene_import_plugin.h b/tools/editor/io_plugins/editor_scene_import_plugin.h index 8a2d30f1f6..c31d3a33d3 100644 --- a/tools/editor/io_plugins/editor_scene_import_plugin.h +++ b/tools/editor/io_plugins/editor_scene_import_plugin.h @@ -116,6 +116,10 @@ class EditorSceneImportPlugin : public EditorImportPlugin { void _tag_import_paths(Node *p_scene,Node *p_node); + void _find_resources_to_merge(Node *scene, Node *node, bool p_merge_material, Map<String,Ref<Material> >&materials, bool p_merge_anims, Map<String,Ref<Animation> >& merged_anims, Set<Ref<Mesh> > &tested_meshes); + void _merge_found_resources(Node *scene, Node *node, bool p_merge_material, const Map<String, Ref<Material> > &materials, bool p_merge_anims, const Map<String,Ref<Animation> >& merged_anims, Set<Ref<Mesh> > &tested_meshes); + + public: enum SceneFlags { @@ -134,6 +138,9 @@ public: SCENE_FLAG_CREATE_NAVMESH=1<<17, SCENE_FLAG_DETECT_LIGHTMAP_LAYER=1<<18, + SCENE_FLAG_MERGE_KEEP_MATERIALS=1<<20, + SCENE_FLAG_MERGE_KEEP_EXTRA_ANIM_TRACKS=1<<21, + SCENE_FLAG_REMOVE_NOIMP=1<<24, SCENE_FLAG_IMPORT_ANIMATIONS=1<<25, SCENE_FLAG_COMPRESS_GEOMETRY=1<<26, @@ -144,6 +151,7 @@ public: }; + virtual String get_name() const; virtual String get_visible_name() const; virtual void import_dialog(const String& p_from=""); diff --git a/tools/editor/io_plugins/editor_scene_importer_fbxconv.cpp b/tools/editor/io_plugins/editor_scene_importer_fbxconv.cpp index 0c388b91ca..ac3c4637c2 100644 --- a/tools/editor/io_plugins/editor_scene_importer_fbxconv.cpp +++ b/tools/editor/io_plugins/editor_scene_importer_fbxconv.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_scene_importer_fbxconv.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "editor_scene_importer_fbxconv.h" #include "os/file_access.h" #include "os/os.h" diff --git a/tools/editor/io_plugins/editor_scene_importer_fbxconv.h b/tools/editor/io_plugins/editor_scene_importer_fbxconv.h index 261b072b04..b0cbc07ba3 100644 --- a/tools/editor/io_plugins/editor_scene_importer_fbxconv.h +++ b/tools/editor/io_plugins/editor_scene_importer_fbxconv.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_scene_importer_fbxconv.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef EDITOR_SCENE_IMPORTER_FBXCONV_H #define EDITOR_SCENE_IMPORTER_FBXCONV_H diff --git a/tools/editor/io_plugins/editor_texture_import_plugin.cpp b/tools/editor/io_plugins/editor_texture_import_plugin.cpp index 1fa7a50515..16ea803da4 100644 --- a/tools/editor/io_plugins/editor_texture_import_plugin.cpp +++ b/tools/editor/io_plugins/editor_texture_import_plugin.cpp @@ -1312,21 +1312,30 @@ Error EditorTextureImportPlugin::import2(const String& p_path, const Ref<Resourc ERR_CONTINUE( !source_map.has(i) ); for (List<int>::Element *E=source_map[i].front();E;E=E->next()) { - String apath = p_path.get_base_dir().plus_file(from->get_source_path(E->get()).get_file().basename()+".atex"); + String apath; + String spath = from->get_source_path(E->get()).get_file(); + + if (p_external) { + apath = p_path.get_base_dir().plus_file(spath.basename()+"."+from->get_source_path(E->get()).md5_text()+".atex"); + } else { + apath = p_path.get_base_dir().plus_file(spath.basename()+".atex"); + } Ref<AtlasTexture> at; if (ResourceCache::has(apath)) { + at = Ref<AtlasTexture>( ResourceCache::get(apath)->cast_to<AtlasTexture>() ); } else { at = Ref<AtlasTexture>( memnew( AtlasTexture ) ); + } at->set_region(region); at->set_margin(margin); at->set_path(apath); atlases[E->get()]=at; - print_line("Atlas Tex: "+apath); + } } if (ResourceCache::has(p_path)) { diff --git a/tools/editor/multi_node_edit.cpp b/tools/editor/multi_node_edit.cpp index b5bae82ae0..4d27b8e349 100644 --- a/tools/editor/multi_node_edit.cpp +++ b/tools/editor/multi_node_edit.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* multi_node_edit.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "multi_node_edit.h" #include "editor_node.h" @@ -7,9 +35,15 @@ bool MultiNodeEdit::_set(const StringName& p_name, const Variant& p_value){ if (!es) return false; + String name = p_name; + + if (name=="scripts/script") { // script/script set is intercepted at object level (check Variant Object::get() ) ,so use a different name + name="script/script"; + } + UndoRedo *ur=EditorNode::get_singleton()->get_undo_redo(); - ur->create_action(TTR("MultiNode Set")+" "+String(p_name)); + ur->create_action(TTR("MultiNode Set")+" "+String(name)); for (const List<NodePath>::Element *E=nodes.front();E;E=E->next()) { if (!es->has_node(E->get())) @@ -19,10 +53,13 @@ bool MultiNodeEdit::_set(const StringName& p_name, const Variant& p_value){ if (!n) continue; - ur->add_do_property(n,p_name,p_value); - ur->add_undo_property(n,p_name,n->get(p_name)); + ur->add_do_property(n,name,p_value); + ur->add_undo_property(n,name,n->get(name)); + } + ur->add_do_method(EditorNode::get_singleton()->get_property_editor(),"refresh"); + ur->add_undo_method(EditorNode::get_singleton()->get_property_editor(),"refresh"); ur->commit_action(); return true; @@ -34,6 +71,11 @@ bool MultiNodeEdit::_get(const StringName& p_name,Variant &r_ret) const { if (!es) return false; + String name=p_name; + if (name=="scripts/script") { // script/script set is intercepted at object level (check Variant Object::get() ) ,so use a different name + name="script/script"; + } + for (const List<NodePath>::Element *E=nodes.front();E;E=E->next()) { if (!es->has_node(E->get())) @@ -44,7 +86,7 @@ bool MultiNodeEdit::_get(const StringName& p_name,Variant &r_ret) const { continue; bool found; - r_ret=n->get(p_name,&found); + r_ret=n->get(name,&found); if (found) return true; @@ -79,6 +121,8 @@ void MultiNodeEdit::_get_property_list( List<PropertyInfo> *p_list) const{ for(List<PropertyInfo>::Element *F=plist.front();F;F=F->next()) { + if (F->get().name=="script/script") + continue; //added later manually, since this is intercepted before being set (check Variant Object::get() ) if (!usage.has(F->get().name)) { PLData pld; pld.uses=0; @@ -100,6 +144,8 @@ void MultiNodeEdit::_get_property_list( List<PropertyInfo> *p_list) const{ } } + p_list->push_back(PropertyInfo(Variant::OBJECT,"scripts/script",PROPERTY_HINT_RESOURCE_TYPE,"Script")); + } diff --git a/tools/editor/multi_node_edit.h b/tools/editor/multi_node_edit.h index 5a0cabf4be..fd50dc5bf4 100644 --- a/tools/editor/multi_node_edit.h +++ b/tools/editor/multi_node_edit.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* multi_node_edit.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef MULTI_NODE_EDIT_H #define MULTI_NODE_EDIT_H @@ -13,6 +41,7 @@ class MultiNodeEdit : public Reference { PropertyInfo info; }; + protected: bool _set(const StringName& p_name, const Variant& p_value); diff --git a/tools/editor/optimized_save_dialog.cpp b/tools/editor/optimized_save_dialog.cpp deleted file mode 100644 index 4814b3b021..0000000000 --- a/tools/editor/optimized_save_dialog.cpp +++ /dev/null @@ -1,28 +0,0 @@ -/*************************************************************************/ -/* optimized_save_dialog.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ diff --git a/tools/editor/optimized_save_dialog.h b/tools/editor/optimized_save_dialog.h deleted file mode 100644 index bdc36eddc1..0000000000 --- a/tools/editor/optimized_save_dialog.h +++ /dev/null @@ -1,34 +0,0 @@ -/*************************************************************************/ -/* optimized_save_dialog.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef OPTIMIZED_SAVE_DIALOG_H -#define OPTIMIZED_SAVE_DIALOG_H - - - -#endif // OPTIMIZED_SAVE_DIALOG_H diff --git a/tools/editor/plugins/animation_data_editor_plugin.cpp b/tools/editor/plugins/animation_data_editor_plugin.cpp deleted file mode 100644 index a73c75056b..0000000000 --- a/tools/editor/plugins/animation_data_editor_plugin.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/*************************************************************************/ -/* animation_data_editor_plugin.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "animation_data_editor_plugin.h" - -AnimationDataEditorPlugin::AnimationDataEditorPlugin() -{ -} diff --git a/tools/editor/plugins/animation_data_editor_plugin.h b/tools/editor/plugins/animation_data_editor_plugin.h deleted file mode 100644 index 0a12638474..0000000000 --- a/tools/editor/plugins/animation_data_editor_plugin.h +++ /dev/null @@ -1,38 +0,0 @@ -/*************************************************************************/ -/* animation_data_editor_plugin.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef ANIMATION_DATA_EDITOR_PLUGIN_H -#define ANIMATION_DATA_EDITOR_PLUGIN_H - -class AnimationDataEditorPlugin -{ -public: - AnimationDataEditorPlugin(); -}; - -#endif // ANIMATION_DATA_EDITOR_PLUGIN_H diff --git a/tools/editor/plugins/animation_player_editor_plugin.cpp b/tools/editor/plugins/animation_player_editor_plugin.cpp index 4bbcb396af..10c7bf79a3 100644 --- a/tools/editor/plugins/animation_player_editor_plugin.cpp +++ b/tools/editor/plugins/animation_player_editor_plugin.cpp @@ -952,7 +952,7 @@ void AnimationPlayerEditor::_animation_duplicate() { } -void AnimationPlayerEditor::_seek_value_changed(float p_value) { +void AnimationPlayerEditor::_seek_value_changed(float p_value,bool p_set) { if (updating || !player || player->is_playing()) { return; @@ -980,7 +980,7 @@ void AnimationPlayerEditor::_seek_value_changed(float p_value) { pos=anim->get_length(); } - if (player->is_valid()) { + if (player->is_valid() && !p_set) { float cpos = player->get_current_animation_pos(); player->seek_delta(pos,pos-cpos); @@ -988,6 +988,7 @@ void AnimationPlayerEditor::_seek_value_changed(float p_value) { player->seek(pos,true); } + key_editor->set_anim_pos(pos); updating=true; @@ -1078,6 +1079,7 @@ void AnimationPlayerEditor::_editor_load(){ void AnimationPlayerEditor::_animation_key_editor_anim_len_changed(float p_len) { + frame->set_max(p_len); } @@ -1092,7 +1094,7 @@ void AnimationPlayerEditor::_animation_key_editor_anim_step_changed(float p_len) } -void AnimationPlayerEditor::_animation_key_editor_seek(float p_pos) { +void AnimationPlayerEditor::_animation_key_editor_seek(float p_pos,bool p_drag) { if (!is_visible()) return; @@ -1102,7 +1104,11 @@ void AnimationPlayerEditor::_animation_key_editor_seek(float p_pos) { if (player->is_playing() ) return; - frame->set_val(p_pos); + updating=true; + frame->set_val(p_pos); + updating=false; + _seek_value_changed(p_pos,!p_drag); + EditorNode::get_singleton()->get_property_editor()->refresh(); @@ -1254,7 +1260,7 @@ void AnimationPlayerEditor::_bind_methods() { ObjectTypeDB::bind_method(_MD("_animation_edit"),&AnimationPlayerEditor::_animation_edit); ObjectTypeDB::bind_method(_MD("_animation_resource_edit"),&AnimationPlayerEditor::_animation_resource_edit); ObjectTypeDB::bind_method(_MD("_dialog_action"),&AnimationPlayerEditor::_dialog_action); - ObjectTypeDB::bind_method(_MD("_seek_value_changed"),&AnimationPlayerEditor::_seek_value_changed); + ObjectTypeDB::bind_method(_MD("_seek_value_changed"),&AnimationPlayerEditor::_seek_value_changed,DEFVAL(true)); ObjectTypeDB::bind_method(_MD("_animation_player_changed"),&AnimationPlayerEditor::_animation_player_changed); ObjectTypeDB::bind_method(_MD("_blend_edited"),&AnimationPlayerEditor::_blend_edited); // ObjectTypeDB::bind_method(_MD("_seek_frame_changed"),&AnimationPlayerEditor::_seek_frame_changed); @@ -1350,19 +1356,23 @@ AnimationPlayerEditor::AnimationPlayerEditor(EditorNode *p_editor) { add_anim = memnew( ToolButton ); + ED_SHORTCUT("animation_player_editor/add_animation", TTR("Create new animation in player.")); + add_anim->set_shortcut(ED_GET_SHORTCUT("animation_player_editor/add_animation")); add_anim->set_tooltip(TTR("Create new animation in player.")); hb->add_child(add_anim); load_anim = memnew( ToolButton ); + ED_SHORTCUT("animation_player_editor/load_from_disk", TTR("Load animation from disk.")); + add_anim->set_shortcut(ED_GET_SHORTCUT("animation_player_editor/load_from_disk")); load_anim->set_tooltip(TTR("Load an animation from disk.")); hb->add_child(load_anim); save_anim = memnew(MenuButton); save_anim->set_tooltip(TTR("Save the current animation")); - save_anim->get_popup()->add_item(TTR("Save"), ANIM_SAVE); - save_anim->get_popup()->add_item(TTR("Save As.."), ANIM_SAVE_AS); + save_anim->get_popup()->add_shortcut(ED_SHORTCUT("animation_player_editor/save", TTR("Save")), ANIM_SAVE); + save_anim->get_popup()->add_shortcut(ED_SHORTCUT("animation_player_editor/save_as", TTR("Save As")), ANIM_SAVE_AS); save_anim->set_focus_mode(Control::FOCUS_NONE); hb->add_child(save_anim); @@ -1372,15 +1382,21 @@ AnimationPlayerEditor::AnimationPlayerEditor(EditorNode *p_editor) { duplicate_anim = memnew( ToolButton ); hb->add_child(duplicate_anim); + ED_SHORTCUT("animation_player_editor/duplicate_animation", TTR("Duplicate Animation")); + duplicate_anim->set_shortcut(ED_GET_SHORTCUT("animation_player_editor/duplicate_animation")); duplicate_anim->set_tooltip(TTR("Duplicate Animation")); rename_anim = memnew( ToolButton ); hb->add_child(rename_anim); + ED_SHORTCUT("animation_player_editor/rename_animation", TTR("Rename Animation")); + rename_anim->set_shortcut(ED_GET_SHORTCUT("animation_player_editor/rename_animation")); rename_anim->set_tooltip(TTR("Rename Animation")); remove_anim = memnew( ToolButton ); hb->add_child(remove_anim); + ED_SHORTCUT("animation_player_editor/remove_animation", TTR("Remove Animation")); + remove_anim->set_shortcut(ED_GET_SHORTCUT("animation_player_editor/remove_animation")); remove_anim->set_tooltip(TTR("Remove Animation")); @@ -1402,8 +1418,8 @@ AnimationPlayerEditor::AnimationPlayerEditor(EditorNode *p_editor) { tool_anim = memnew( MenuButton); //tool_anim->set_flat(false); tool_anim->set_tooltip(TTR("Animation Tools")); - tool_anim->get_popup()->add_item(TTR("Copy Animation"),TOOL_COPY_ANIM); - tool_anim->get_popup()->add_item(TTR("Paste Animation"),TOOL_PASTE_ANIM); + tool_anim->get_popup()->add_shortcut(ED_SHORTCUT("animation_player_editor/copy_animation", TTR("Copy Animation")),TOOL_COPY_ANIM); + tool_anim->get_popup()->add_shortcut(ED_SHORTCUT("animation_player_editor/paste_animation", TTR("Paste Animation")),TOOL_PASTE_ANIM); //tool_anim->get_popup()->add_separator(); //tool_anim->get_popup()->add_item("Edit Anim Resource",TOOL_PASTE_ANIM); hb->add_child(tool_anim); @@ -1487,8 +1503,8 @@ AnimationPlayerEditor::AnimationPlayerEditor(EditorNode *p_editor) { animation->connect("item_selected", this,"_animation_selected",Vector<Variant>(),true); resource_edit_anim->connect("pressed", this,"_animation_resource_edit"); file->connect("file_selected", this,"_dialog_action"); - frame->connect("value_changed", this, "_seek_value_changed",Vector<Variant>(),true); - scale->connect("text_entered", this, "_scale_changed",Vector<Variant>(),true); + frame->connect("value_changed", this, "_seek_value_changed",Vector<Variant>(),true); + scale->connect("text_entered", this, "_scale_changed",Vector<Variant>(),true); diff --git a/tools/editor/plugins/animation_player_editor_plugin.h b/tools/editor/plugins/animation_player_editor_plugin.h index 3f3cda25b2..b0c930b66e 100644 --- a/tools/editor/plugins/animation_player_editor_plugin.h +++ b/tools/editor/plugins/animation_player_editor_plugin.h @@ -145,7 +145,7 @@ class AnimationPlayerEditor : public VBoxContainer { void _scale_changed(const String& p_scale); void _dialog_action(String p_file); void _seek_frame_changed(const String& p_frame); - void _seek_value_changed(float p_value); + void _seek_value_changed(float p_value, bool p_set=false); void _blend_editor_next_changed(const int p_idx); void _list_changed(); @@ -158,7 +158,7 @@ class AnimationPlayerEditor : public VBoxContainer { void _animation_player_changed(Object *p_pl); - void _animation_key_editor_seek(float p_pos); + void _animation_key_editor_seek(float p_pos, bool p_drag); void _animation_key_editor_anim_len_changed(float p_new); void _animation_key_editor_anim_step_changed(float p_len); diff --git a/tools/editor/plugins/baked_light_baker.cpp b/tools/editor/plugins/baked_light_baker.cpp index b6bb774364..1962f81e87 100644 --- a/tools/editor/plugins/baked_light_baker.cpp +++ b/tools/editor/plugins/baked_light_baker.cpp @@ -1,4 +1,31 @@ - +/*************************************************************************/ +/* baked_light_baker.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "baked_light_baker.h" #include <stdlib.h> #include <cmath> diff --git a/tools/editor/plugins/baked_light_baker.h b/tools/editor/plugins/baked_light_baker.h index 5c172f79c6..d0fddf5563 100644 --- a/tools/editor/plugins/baked_light_baker.h +++ b/tools/editor/plugins/baked_light_baker.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* baked_light_baker.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef BAKED_LIGHT_BAKER_H #define BAKED_LIGHT_BAKER_H diff --git a/tools/editor/plugins/baked_light_baker_cmpxchg.cpp b/tools/editor/plugins/baked_light_baker_cmpxchg.cpp index 42d3fc5276..c581995916 100644 --- a/tools/editor/plugins/baked_light_baker_cmpxchg.cpp +++ b/tools/editor/plugins/baked_light_baker_cmpxchg.cpp @@ -1,4 +1,31 @@ - +/*************************************************************************/ +/* baked_light_baker_cmpxchg.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "typedefs.h" diff --git a/tools/editor/plugins/baked_light_editor_plugin.cpp b/tools/editor/plugins/baked_light_editor_plugin.cpp index 3e7d7b63a1..df76f28ae0 100644 --- a/tools/editor/plugins/baked_light_editor_plugin.cpp +++ b/tools/editor/plugins/baked_light_editor_plugin.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* baked_light_editor_plugin.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "baked_light_editor_plugin.h" #include "scene/gui/box_container.h" #include "scene/3d/mesh_instance.h" diff --git a/tools/editor/plugins/baked_light_editor_plugin.h b/tools/editor/plugins/baked_light_editor_plugin.h index 27ab88d70b..4985d7513e 100644 --- a/tools/editor/plugins/baked_light_editor_plugin.h +++ b/tools/editor/plugins/baked_light_editor_plugin.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* baked_light_editor_plugin.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef BAKED_LIGHT_EDITOR_PLUGIN_H #define BAKED_LIGHT_EDITOR_PLUGIN_H diff --git a/tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp b/tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp index 14a61d46b5..5ed9f8ab5f 100644 --- a/tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +++ b/tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* collision_polygon_2d_editor_plugin.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "collision_polygon_2d_editor_plugin.h" #include "canvas_item_editor_plugin.h" diff --git a/tools/editor/plugins/collision_polygon_2d_editor_plugin.h b/tools/editor/plugins/collision_polygon_2d_editor_plugin.h index f34405b355..982ba35fe8 100644 --- a/tools/editor/plugins/collision_polygon_2d_editor_plugin.h +++ b/tools/editor/plugins/collision_polygon_2d_editor_plugin.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* collision_polygon_2d_editor_plugin.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef COLLISION_POLYGON_2D_EDITOR_PLUGIN_H #define COLLISION_POLYGON_2D_EDITOR_PLUGIN_H diff --git a/tools/editor/plugins/collision_shape_2d_editor_plugin.cpp b/tools/editor/plugins/collision_shape_2d_editor_plugin.cpp index 296362447f..d0cd73dcad 100644 --- a/tools/editor/plugins/collision_shape_2d_editor_plugin.cpp +++ b/tools/editor/plugins/collision_shape_2d_editor_plugin.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* collision_shape_2d_editor_plugin.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "collision_shape_2d_editor_plugin.h" #include "canvas_item_editor_plugin.h" diff --git a/tools/editor/plugins/collision_shape_2d_editor_plugin.h b/tools/editor/plugins/collision_shape_2d_editor_plugin.h index 75e9b68ea7..1ee81eda43 100644 --- a/tools/editor/plugins/collision_shape_2d_editor_plugin.h +++ b/tools/editor/plugins/collision_shape_2d_editor_plugin.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* collision_shape_2d_editor_plugin.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef COLLISION_SHAPE_2D_EDITOR_PLUGIN_H #define COLLISION_SHAPE_2D_EDITOR_PLUGIN_H diff --git a/tools/editor/plugins/color_ramp_editor_plugin.cpp b/tools/editor/plugins/color_ramp_editor_plugin.cpp index 267f3aa5bd..cb7f6a1809 100644 --- a/tools/editor/plugins/color_ramp_editor_plugin.cpp +++ b/tools/editor/plugins/color_ramp_editor_plugin.cpp @@ -1,7 +1,31 @@ -/* - * color_ramp_editor_plugin.cpp - */ - +/*************************************************************************/ +/* color_ramp_editor_plugin.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "color_ramp_editor_plugin.h" #include "spatial_editor_plugin.h" #include "canvas_item_editor_plugin.h" diff --git a/tools/editor/plugins/color_ramp_editor_plugin.h b/tools/editor/plugins/color_ramp_editor_plugin.h index 02d691239f..300a9030b9 100644 --- a/tools/editor/plugins/color_ramp_editor_plugin.h +++ b/tools/editor/plugins/color_ramp_editor_plugin.h @@ -1,7 +1,31 @@ -/* - * color_ramp_editor_plugin.h - */ - +/*************************************************************************/ +/* color_ramp_editor_plugin.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef TOOLS_EDITOR_PLUGINS_COLOR_RAMP_EDITOR_PLUGIN_H_ #define TOOLS_EDITOR_PLUGINS_COLOR_RAMP_EDITOR_PLUGIN_H_ diff --git a/tools/editor/plugins/control_editor_plugin.cpp b/tools/editor/plugins/control_editor_plugin.cpp deleted file mode 100644 index 9dff5e6ce4..0000000000 --- a/tools/editor/plugins/control_editor_plugin.cpp +++ /dev/null @@ -1,825 +0,0 @@ -/*************************************************************************/ -/* control_editor_plugin.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#if 0 -#include "control_editor_plugin.h" -#include "print_string.h" -#include "editor_node.h" -#include "os/keyboard.h" -#include "scene/main/viewport.h" - -void ControlEditor::_add_control(Control *p_control,const EditInfo& p_info) { - - if (controls.has(p_control)) - return; - - controls.insert(p_control,p_info); - p_control->call_deferred("connect","visibility_changed",this,"_visibility_changed",varray(p_control->get_instance_ID())); -} - -void ControlEditor::_remove_control(Control *p_control) { - - p_control->call_deferred("disconnect","visibility_changed",this,"_visibility_changed"); - controls.erase(p_control); -} -void ControlEditor::_clear_controls(){ - - while(controls.size()) - _remove_control(controls.front()->key()); -} - -void ControlEditor::_visibility_changed(ObjectID p_control) { - - Object *c = ObjectDB::get_instance(p_control); - if (!c) - return; - Control *ct = c->cast_to<Control>(); - if (!ct) - return; - - _remove_control(ct); -} - - -void ControlEditor::_node_removed(Node *p_node) { - - Control *control = (Control*)p_node; //not a good cast, but safe - if (controls.has(control)) - _remove_control(control); - - if (current_window==p_node) { - _clear_controls(); - } - update(); -} - -// slow as hell -Control* ControlEditor::_select_control_at_pos(const Point2& p_pos,Node* p_node) { - - for (int i=p_node->get_child_count()-1;i>=0;i--) { - - Control *r=_select_control_at_pos(p_pos,p_node->get_child(i)); - if (r) - return r; - } - - Control *c=p_node->cast_to<Control>(); - - if (c) { - Rect2 rect = c->get_window_rect(); - if (c->get_window()==current_window) { - rect.pos=transform.xform(rect.pos).floor(); - } - if (rect.has_point(p_pos)) - return c; - } - - return NULL; -} - - -void ControlEditor::_key_move(const Vector2& p_dir, bool p_snap) { - - if (drag!=DRAG_NONE) - return; - - Vector2 motion=p_dir; - if (p_snap) - motion*=snap_val->get_text().to_double(); - - undo_redo->create_action("Edit Control"); - for(ControlMap::Element *E=controls.front();E;E=E->next()) { - Control *control = E->key(); - undo_redo->add_do_method(control,"set_pos",control->get_pos()+motion); - undo_redo->add_undo_method(control,"set_pos",control->get_pos()); - } - undo_redo->commit_action(); -} - - -void ControlEditor::_input_event(InputEvent p_event) { - - if (p_event.type==InputEvent::MOUSE_BUTTON) { - - const InputEventMouseButton &b=p_event.mouse_button; - - if (b.button_index==BUTTON_RIGHT) { - - if (controls.size() && drag!=DRAG_NONE) { - //cancel drag - for(ControlMap::Element *E=controls.front();E;E=E->next()) { - Control *control = E->key(); - control->set_pos(E->get().drag_pos); - control->set_size(E->get().drag_size); - } - - } else if (b.pressed) { - popup->set_pos(Point2(b.x,b.y)); - popup->popup(); - } - return; - } - //if (!controls.size()) - // return; - - if (b.button_index!=BUTTON_LEFT) - return; - - if (!b.pressed) { - - if (drag!=DRAG_NONE) { - - if (undo_redo) { - - undo_redo->create_action("Edit Control"); - for(ControlMap::Element *E=controls.front();E;E=E->next()) { - Control *control = E->key(); - undo_redo->add_do_method(control,"set_pos",control->get_pos()); - undo_redo->add_do_method(control,"set_size",control->get_size()); - undo_redo->add_undo_method(control,"set_pos",E->get().drag_pos); - undo_redo->add_undo_method(control,"set_size",E->get().drag_size); - } - undo_redo->commit_action(); - } - - drag=DRAG_NONE; - - } - return; - } - - - if (controls.size()==1) { - //try single control edit - Control *control = controls.front()->key(); - ERR_FAIL_COND(!current_window); - - Rect2 rect=control->get_window_rect(); - Point2 ofs=Point2();//get_global_pos(); - Rect2 draw_rect=Rect2(rect.pos-ofs,rect.size); - Point2 click=Point2(b.x,b.y); - click = transform.affine_inverse().xform(click); - Size2 handle_size=Size2(handle_len,handle_len); - - drag = DRAG_NONE; - - if (Rect2(draw_rect.pos-handle_size,handle_size).has_point(click)) - drag=DRAG_TOP_LEFT; - else if (Rect2(draw_rect.pos+draw_rect.size,handle_size).has_point(click)) - drag=DRAG_BOTTOM_RIGHT; - else if(Rect2(draw_rect.pos+Point2(draw_rect.size.width,-handle_size.y),handle_size).has_point(click)) - drag=DRAG_TOP_RIGHT; - else if (Rect2(draw_rect.pos+Point2(-handle_size.x,draw_rect.size.height),handle_size).has_point(click)) - drag=DRAG_BOTTOM_LEFT; - else if (Rect2(draw_rect.pos+Point2(Math::floor((draw_rect.size.width-handle_size.x)/2.0),-handle_size.height),handle_size).has_point(click)) - drag=DRAG_TOP; - else if( Rect2(draw_rect.pos+Point2(-handle_size.width,Math::floor((draw_rect.size.height-handle_size.y)/2.0)),handle_size).has_point(click)) - drag=DRAG_LEFT; - else if ( Rect2(draw_rect.pos+Point2(Math::floor((draw_rect.size.width-handle_size.x)/2.0),draw_rect.size.height),handle_size).has_point(click)) - drag=DRAG_BOTTOM; - else if( Rect2(draw_rect.pos+Point2(draw_rect.size.width,Math::floor((draw_rect.size.height-handle_size.y)/2.0)),handle_size).has_point(click)) - drag=DRAG_RIGHT; - - if (drag!=DRAG_NONE) { - drag_from=click; - controls[control].drag_pos=control->get_pos(); - controls[control].drag_size=control->get_size(); - controls[control].drag_limit=drag_from+controls[control].drag_size-control->get_minimum_size(); - return; - } - - - } - - //multi control edit - - Point2 click=Point2(b.x,b.y); - Node* scene = get_scene()->get_root_node()->cast_to<EditorNode>()->get_edited_scene(); - if (!scene) - return; - /* - if (current_window) { - //no window.... ? - click-=current_window->get_scroll(); - }*/ - Control *c=_select_control_at_pos(click, scene); - - Node* n = c; - while ((n && n != scene && n->get_owner() != scene) || (n && !n->is_type("Control"))) { - n = n->get_parent(); - }; - c = n->cast_to<Control>(); - - - if (b.mod.control) { //additive selection - - if (!c) - return; //nothing to add - - if (current_window && controls.size() && c->get_window()!=current_window) - return; //cant multiple select from multiple windows - - if (!controls.size()) - current_window=c->get_window(); - - if (controls.has(c)) { - //already in here, erase it - _remove_control(c); - update(); - return; - } - - //check parents! - Control *parent = c->get_parent()->cast_to<Control>(); - - while(parent) { - - if (controls.has(parent)) - return; //a parent is already selected, so this is pointless - parent=parent->get_parent()->cast_to<Control>(); - } - - //check childrens of everything! - List<Control*> to_erase; - - for(ControlMap::Element *E=controls.front();E;E=E->next()) { - parent = E->key()->get_parent()->cast_to<Control>(); - while(parent) { - if (parent==c) { - to_erase.push_back(E->key()); - break; - } - parent=parent->get_parent()->cast_to<Control>(); - } - } - - while(to_erase.size()) { - _remove_control(to_erase.front()->get()); - to_erase.pop_front(); - } - - _add_control(c,EditInfo()); - update(); - } else { - //regular selection - if (!c) { - _clear_controls(); - update(); - return; - } - - if (!controls.has(c)) { - _clear_controls(); - current_window=c->get_window(); - _add_control(c,EditInfo()); - //reselect - if (get_scene()->is_editor_hint()) { - get_scene()->get_root_node()->call("edit_node",c); - } - - } - - - - for(ControlMap::Element *E=controls.front();E;E=E->next()) { - - EditInfo &ei=E->get(); - Control *control=E->key(); - ei.drag_pos=control->get_pos(); - ei.drag_size=control->get_size(); - ei.drag_limit=drag_from+ei.drag_size-control->get_minimum_size(); - } - - drag=DRAG_ALL; - drag_from=click; - update(); - } - - } - - if (p_event.type==InputEvent::MOUSE_MOTION) { - - const InputEventMouseMotion &m=p_event.mouse_motion; - - if (drag==DRAG_NONE || !current_window) - return; - - for(ControlMap::Element *E=controls.front();E;E=E->next()) { - - Control *control = E->key(); - Point2 control_drag_pos=E->get().drag_pos; - Point2 control_drag_size=E->get().drag_size; - Point2 control_drag_limit=E->get().drag_limit; - - Point2 pos=Point2(m.x,m.y); - pos = transform.affine_inverse().xform(pos); - - switch(drag) { - case DRAG_ALL: { - - control->set_pos( snapify(control_drag_pos+(pos-drag_from)) ); - } break; - case DRAG_RIGHT: { - - control->set_size( snapify(Size2(control_drag_size.width+(pos-drag_from).x,control_drag_size.height)) ); - } break; - case DRAG_BOTTOM: { - - control->set_size( snapify(Size2(control_drag_size.width,control_drag_size.height+(pos-drag_from).y)) ); - } break; - case DRAG_BOTTOM_RIGHT: { - - control->set_size( snapify(control_drag_size+(pos-drag_from)) ); - } break; - case DRAG_TOP_LEFT: { - - if(pos.x>control_drag_limit.x) - pos.x=control_drag_limit.x; - if(pos.y>control_drag_limit.y) - pos.y=control_drag_limit.y; - - Point2 old_size = control->get_size(); - Point2 new_pos = snapify(control_drag_pos+(pos-drag_from)); - Point2 new_size = old_size + (control->get_pos() - new_pos); - - control->set_pos( new_pos ); - control->set_size( new_size ); - } break; - case DRAG_TOP: { - - if(pos.y>control_drag_limit.y) - pos.y=control_drag_limit.y; - - Point2 old_size = control->get_size(); - Point2 new_pos = snapify(control_drag_pos+Point2(0,pos.y-drag_from.y)); - Point2 new_size = old_size + (control->get_pos() - new_pos); - - control->set_pos( new_pos ); - control->set_size( new_size ); - } break; - case DRAG_LEFT: { - - if(pos.x>control_drag_limit.x) - pos.x=control_drag_limit.x; - - Point2 old_size = control->get_size(); - Point2 new_pos = snapify(control_drag_pos+Point2(pos.x-drag_from.x,0)); - Point2 new_size = old_size + (control->get_pos() - new_pos); - - control->set_pos( new_pos ); - control->set_size( new_size ); - - } break; - case DRAG_TOP_RIGHT: { - - if(pos.y>control_drag_limit.y) - pos.y=control_drag_limit.y; - - Point2 old_size = control->get_size(); - Point2 new_pos = snapify(control_drag_pos+Point2(0,pos.y-drag_from.y)); - - float new_size_y = Point2( old_size + (control->get_pos() - new_pos)).y; - float new_size_x = snapify(control_drag_size+Point2(pos.x-drag_from.x,0)).x; - - control->set_pos( new_pos ); - control->set_size( Point2(new_size_x, new_size_y) ); - } break; - case DRAG_BOTTOM_LEFT: { - - if(pos.x>control_drag_limit.x) - pos.x=control_drag_limit.x; - - Point2 old_size = control->get_size(); - Point2 new_pos = snapify(control_drag_pos+Point2(pos.x-drag_from.x,0)); - - float new_size_y = snapify(control_drag_size+Point2(0,pos.y-drag_from.y)).y; - float new_size_x = Point2( old_size + (control->get_pos() - new_pos)).x; - - control->set_pos( new_pos ); - control->set_size( Point2(new_size_x, new_size_y) ); - - - } break; - - default:{} - } - } - } - - if (p_event.type==InputEvent::KEY) { - - const InputEventKey &k=p_event.key; - - if (k.pressed) { - - if (k.scancode==KEY_UP) - _key_move(Vector2(0,-1),k.mod.shift); - else if (k.scancode==KEY_DOWN) - _key_move(Vector2(0,1),k.mod.shift); - else if (k.scancode==KEY_LEFT) - _key_move(Vector2(-1,0),k.mod.shift); - else if (k.scancode==KEY_RIGHT) - _key_move(Vector2(1,0),k.mod.shift); - } - - } - - -} - - -bool ControlEditor::get_remove_list(List<Node*> *p_list) { - - for(ControlMap::Element *E=controls.front();E;E=E->next()) { - - p_list->push_back(E->key()); - } - - return !p_list->empty(); -} - -void ControlEditor::_update_scroll(float) { - - if (updating_scroll) - return; - - if (!current_window) - return; - - Point2 ofs; - ofs.x=h_scroll->get_val(); - ofs.y=v_scroll->get_val(); - -// current_window->set_scroll(-ofs); - - transform=Matrix32(); - - transform.scale_basis(Size2(zoom,zoom)); - transform.elements[2]=-ofs*zoom; - - - RID viewport = editor->get_scene_root()->get_viewport(); - - VisualServer::get_singleton()->viewport_set_global_canvas_transform(viewport,transform); - - update(); - -} - -void ControlEditor::_notification(int p_what) { - - if (p_what==NOTIFICATION_PROCESS) { - - for(ControlMap::Element *E=controls.front();E;E=E->next()) { - - Control *control = E->key(); - Rect2 r=control->get_window_rect(); - if (r != E->get().last_rect ) { - update(); - E->get().last_rect=r; - } - } - - } - - if (p_what==NOTIFICATION_CHILDREN_CONFIGURED) { - - get_scene()->connect("node_removed",this,"_node_removed"); - } - - if (p_what==NOTIFICATION_DRAW) { - - // TODO fetch the viewport? - /* - if (!control) { - h_scroll->hide(); - v_scroll->hide(); - return; - } - */ - _update_scrollbars(); - - if (!current_window) - return; - - for(ControlMap::Element *E=controls.front();E;E=E->next()) { - - Control *control = E->key(); - - Rect2 rect=control->get_window_rect(); - RID ci=get_canvas_item(); - VisualServer::get_singleton()->canvas_item_set_clip(ci,true); - Point2 ofs=Point2();//get_global_pos(); - Rect2 draw_rect=Rect2(rect.pos-ofs,rect.size); - draw_rect.pos = transform.xform(draw_rect.pos); - Color light_edit_color=Color(1.0,0.8,0.8); - Color dark_edit_color=Color(0.4,0.1,0.1); - Size2 handle_size=Size2(handle_len,handle_len); - -#define DRAW_RECT( m_rect, m_color )\ -VisualServer::get_singleton()->canvas_item_add_rect(ci,m_rect,m_color); - -#define DRAW_EMPTY_RECT( m_rect, m_color )\ - DRAW_RECT( Rect2(m_rect.pos,Size2(m_rect.size.width,1)), m_color );\ - DRAW_RECT(Rect2(Point2(m_rect.pos.x,m_rect.pos.y+m_rect.size.height-1),Size2(m_rect.size.width,1)), m_color);\ - DRAW_RECT(Rect2(m_rect.pos,Size2(1,m_rect.size.height)), m_color);\ - DRAW_RECT(Rect2(Point2(m_rect.pos.x+m_rect.size.width-1,m_rect.pos.y),Size2(1,m_rect.size.height)), m_color); - -#define DRAW_BORDER_RECT( m_rect, m_border_color,m_color )\ - DRAW_RECT( m_rect, m_color );\ - DRAW_EMPTY_RECT( m_rect, m_border_color ); - - DRAW_EMPTY_RECT( draw_rect.grow(2), light_edit_color ); - DRAW_EMPTY_RECT( draw_rect.grow(1), dark_edit_color ); - - if (controls.size()==1) { - DRAW_BORDER_RECT( Rect2(draw_rect.pos-handle_size,handle_size), light_edit_color,dark_edit_color ); - DRAW_BORDER_RECT( Rect2(draw_rect.pos+draw_rect.size,handle_size), light_edit_color,dark_edit_color ); - DRAW_BORDER_RECT( Rect2(draw_rect.pos+Point2(draw_rect.size.width,-handle_size.y),handle_size), light_edit_color,dark_edit_color ); - DRAW_BORDER_RECT( Rect2(draw_rect.pos+Point2(-handle_size.x,draw_rect.size.height),handle_size), light_edit_color,dark_edit_color ); - - DRAW_BORDER_RECT( Rect2(draw_rect.pos+Point2(Math::floor((draw_rect.size.width-handle_size.x)/2.0),-handle_size.height),handle_size), light_edit_color,dark_edit_color ); - DRAW_BORDER_RECT( Rect2(draw_rect.pos+Point2(-handle_size.width,Math::floor((draw_rect.size.height-handle_size.y)/2.0)),handle_size), light_edit_color,dark_edit_color ); - DRAW_BORDER_RECT( Rect2(draw_rect.pos+Point2(Math::floor((draw_rect.size.width-handle_size.x)/2.0),draw_rect.size.height),handle_size), light_edit_color,dark_edit_color ); - DRAW_BORDER_RECT( Rect2(draw_rect.pos+Point2(draw_rect.size.width,Math::floor((draw_rect.size.height-handle_size.y)/2.0)),handle_size), light_edit_color,dark_edit_color ); - } - - //DRAW_EMPTY_RECT( Rect2( current_window->get_scroll()-Point2(1,1), get_size()+Size2(2,2)), Color(0.8,0.8,1.0,0.8) ); - E->get().last_rect = rect; - } - } -} - -void ControlEditor::edit(Control *p_control) { - - drag=DRAG_NONE; - - _clear_controls(); - _add_control(p_control,EditInfo()); - current_window=p_control->get_window(); - update(); - -} - - -void ControlEditor::_find_controls_span(Node *p_node, Rect2& r_rect) { - - if (!editor->get_scene()) - return; - - if (p_node!=editor->get_edited_scene() && p_node->get_owner()!=editor->get_edited_scene()) - return; - - if (p_node->cast_to<Control>()) { - Control *c = p_node->cast_to<Control>(); - if (c->get_viewport() != editor->get_viewport()->get_viewport()) - return; //bye, it's in another viewport - - if (!c->get_parent_control()) { - - Rect2 span = c->get_subtree_span_rect(); - r_rect.merge(span); - } - } - - for(int i=0;i<p_node->get_child_count();i++) { - - _find_controls_span(p_node->get_child(i),r_rect); - } -} - -void ControlEditor::_update_scrollbars() { - - - if (!editor->get_scene()) { - h_scroll->hide(); - v_scroll->hide(); - return; - } - - updating_scroll=true; - - - Size2 size = get_size(); - Size2 hmin = h_scroll->get_minimum_size(); - Size2 vmin = v_scroll->get_minimum_size(); - - v_scroll->set_begin( Point2(size.width - vmin.width, 0) ); - v_scroll->set_end( Point2(size.width, size.height) ); - - h_scroll->set_begin( Point2( 0, size.height - hmin.height) ); - h_scroll->set_end( Point2(size.width-vmin.width, size.height) ); - - - Rect2 local_rect = Rect2(Point2(),get_size()-Size2(vmin.width,hmin.height)); - - Rect2 control_rect=local_rect; - if (editor->get_edited_scene()) - _find_controls_span(editor->get_edited_scene(),control_rect); - control_rect.pos*=zoom; - control_rect.size*=zoom; - - /* - for(ControlMap::Element *E=controls.front();E;E=E->next()) { - - Control *control = E->key(); - Rect2 r = control->get_window()->get_subtree_span_rect(); - if (E==controls.front()) { - control_rect = r.merge(local_rect); - } else { - control_rect = control_rect.merge(r); - } - } - - */ - Point2 ofs; - - - if (control_rect.size.height <= local_rect.size.height) { - - v_scroll->hide(); - ofs.y=0; - } else { - - v_scroll->show(); - v_scroll->set_min(control_rect.pos.y); - v_scroll->set_max(control_rect.pos.y+control_rect.size.y); - v_scroll->set_page(local_rect.size.y); - ofs.y=-v_scroll->get_val(); - } - - if (control_rect.size.width <= local_rect.size.width) { - - h_scroll->hide(); - ofs.x=0; - } else { - - h_scroll->show(); - h_scroll->set_min(control_rect.pos.x); - h_scroll->set_max(control_rect.pos.x+control_rect.size.x); - h_scroll->set_page(local_rect.size.x); - ofs.x=-h_scroll->get_val(); - } - -// transform=Matrix32(); - transform.elements[2]=ofs*zoom; - RID viewport = editor->get_scene_root()->get_viewport(); - VisualServer::get_singleton()->viewport_set_global_canvas_transform(viewport,transform); - -// transform.scale_basis(Vector2(zoom,zoom)); - updating_scroll=false; - -} - - -Point2i ControlEditor::snapify(const Point2i& p_pos) const { - - bool active=popup->is_item_checked(0); - int snap = snap_val->get_text().to_int(); - - if (!active || snap<1) - return p_pos; - - Point2i pos=p_pos; - pos.x-=pos.x%snap; - pos.y-=pos.y%snap; - return pos; - - -} -void ControlEditor::_popup_callback(int p_op) { - - switch(p_op) { - - case SNAP_USE: { - - popup->set_item_checked(0,!popup->is_item_checked(0)); - } break; - case SNAP_CONFIGURE: { - snap_dialog->popup_centered(Size2(200,85)); - } break; - } -} - -void ControlEditor::_bind_methods() { - - ObjectTypeDB::bind_method("_input_event",&ControlEditor::_input_event); - ObjectTypeDB::bind_method("_node_removed",&ControlEditor::_node_removed); - ObjectTypeDB::bind_method("_update_scroll",&ControlEditor::_update_scroll); - ObjectTypeDB::bind_method("_popup_callback",&ControlEditor::_popup_callback); - ObjectTypeDB::bind_method("_visibility_changed",&ControlEditor::_visibility_changed); -} - -ControlEditor::ControlEditor(EditorNode *p_editor) { - - editor=p_editor; - h_scroll = memnew( HScrollBar ); - v_scroll = memnew( VScrollBar ); - - add_child(h_scroll); - add_child(v_scroll); - h_scroll->connect("value_changed", this,"_update_scroll",Vector<Variant>(),true); - v_scroll->connect("value_changed", this,"_update_scroll",Vector<Variant>(),true); - - - updating_scroll=false; - set_focus_mode(FOCUS_ALL); - handle_len=10; - - popup=memnew( PopupMenu ); - popup->add_check_item("Use Snap"); - popup->add_item("Configure Snap.."); - add_child(popup); - - snap_dialog = memnew( ConfirmationDialog ); - snap_dialog->get_ok()->hide(); - snap_dialog->get_cancel()->set_text("Close"); - add_child(snap_dialog); - - Label *l = memnew(Label); - l->set_text("Snap:"); - l->set_pos(Point2(5,5)); - snap_dialog->add_child(l); - - snap_val=memnew(LineEdit); - snap_val->set_text("5"); - snap_val->set_anchor(MARGIN_RIGHT,ANCHOR_END); - snap_val->set_begin(Point2(15,25)); - snap_val->set_end(Point2(10,25)); - snap_dialog->add_child(snap_val); - - popup->connect("item_pressed", this,"_popup_callback"); - current_window=NULL; - - zoom=0.5; -} - - -void ControlEditorPlugin::edit(Object *p_object) { - - control_editor->set_undo_redo(&get_undo_redo()); - control_editor->edit(p_object->cast_to<Control>()); -} - -bool ControlEditorPlugin::handles(Object *p_object) const { - - return p_object->is_type("Control"); -} - -void ControlEditorPlugin::make_visible(bool p_visible) { - - if (p_visible) { - control_editor->show(); - control_editor->set_process(true); - } else { - - control_editor->hide(); - control_editor->set_process(false); - } - -} - -ControlEditorPlugin::ControlEditorPlugin(EditorNode *p_node) { - - editor=p_node; - control_editor = memnew( ControlEditor(editor) ); - editor->get_viewport()->add_child(control_editor); - control_editor->set_area_as_parent_rect(); - control_editor->hide(); - - - -} - - -ControlEditorPlugin::~ControlEditorPlugin() -{ -} - - -#endif diff --git a/tools/editor/plugins/control_editor_plugin.h b/tools/editor/plugins/control_editor_plugin.h deleted file mode 100644 index 6234698ee8..0000000000 --- a/tools/editor/plugins/control_editor_plugin.h +++ /dev/null @@ -1,141 +0,0 @@ -/*************************************************************************/ -/* control_editor_plugin.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef CONTROL_EDITOR_PLUGIN_H -#define CONTROL_EDITOR_PLUGIN_H - -#include "tools/editor/editor_plugin.h" -#include "tools/editor/editor_node.h" -/** - @author Juan Linietsky <reduzio@gmail.com> -*/ - -#if 0 -class ControlEditor : public Control { - - OBJ_TYPE(ControlEditor, Control ); - - EditorNode *editor; - - enum { - SNAP_USE, - SNAP_CONFIGURE - }; - - enum DragType { - DRAG_NONE, - DRAG_LEFT, - DRAG_TOP_LEFT, - DRAG_TOP, - DRAG_TOP_RIGHT, - DRAG_RIGHT, - DRAG_BOTTOM_RIGHT, - DRAG_BOTTOM, - DRAG_BOTTOM_LEFT, - DRAG_ALL - }; - - HScrollBar *h_scroll; - VScrollBar *v_scroll; - - Matrix32 transform; - float zoom; - - Control *current_window; - PopupMenu *popup; - DragType drag; - Point2 drag_from; - - struct EditInfo { - - Point2 drag_pos; - Point2 drag_size; - Point2 drag_limit; - Rect2 last_rect; - }; - - typedef Map<Control*,EditInfo> ControlMap; - ControlMap controls; - int handle_len; - Control* _select_control_at_pos(const Point2& p_pos,Node* p_node); - - ConfirmationDialog *snap_dialog; - LineEdit *snap_val; - - void _add_control(Control *p_control,const EditInfo& p_info); - void _remove_control(Control *p_control); - void _clear_controls(); - void _visibility_changed(ObjectID p_control); - void _key_move(const Vector2& p_dir, bool p_snap); - - - Point2i snapify(const Point2i& p_pos) const; - void _popup_callback(int p_op); - bool updating_scroll; - void _update_scroll(float); - void _update_scrollbars(); - UndoRedo *undo_redo; - - void _find_controls_span(Node *p_node, Rect2& r_rect); - -protected: - void _notification(int p_what); - void _input_event(InputEvent p_event); - void _node_removed(Node *p_node); - static void _bind_methods(); -public: - - bool get_remove_list(List<Node*> *p_list); - void set_undo_redo(UndoRedo *p_undo_redo) {undo_redo=p_undo_redo; } - void edit(Control *p_control); - ControlEditor(EditorNode *p_editor); -}; - -class ControlEditorPlugin : public EditorPlugin { - - OBJ_TYPE( ControlEditorPlugin, EditorPlugin ); - - ControlEditor *control_editor; - EditorNode *editor; - -public: - - virtual String get_name() const { return "GUI"; } - bool has_main_screen() const { return true; } - virtual void edit(Object *p_object); - virtual bool handles(Object *p_object) const; - virtual void make_visible(bool p_visible); - virtual bool get_remove_list(List<Node*> *p_list) { return control_editor->get_remove_list(p_list); } - - - ControlEditorPlugin(EditorNode *p_node); - ~ControlEditorPlugin(); - -}; -#endif -#endif diff --git a/tools/editor/plugins/editor_preview_plugins.cpp b/tools/editor/plugins/editor_preview_plugins.cpp index 300e35f94d..a057e6c2a1 100644 --- a/tools/editor/plugins/editor_preview_plugins.cpp +++ b/tools/editor/plugins/editor_preview_plugins.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_preview_plugins.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "editor_preview_plugins.h" #include "io/resource_loader.h" #include "tools/editor/editor_settings.h" @@ -641,7 +669,7 @@ Ref<Texture> EditorSamplePreviewPlugin::generate(const RES& p_from) { for(int j=0;j<h;j++) { float v = (j/(float)h) * 2.0 - 1.0; - uint8_t* imgofs = &imgw[(j*w+i)*3]; + uint8_t* imgofs = &imgw[(uint64_t(j)*w+i)*3]; if (v>min[0] && v<max[0]) { imgofs[0]=255; imgofs[1]=150; @@ -659,8 +687,8 @@ Ref<Texture> EditorSamplePreviewPlugin::generate(const RES& p_from) { float max[2]={-1e10,-1e10}; float min[2]={1e10,1e10}; int c=stereo?2:1; - int from = i*len/w; - int to = (i+1)*len/w; + int from = uint64_t(i)*len/w; + int to = (uint64_t(i)+1)*len/w; if (to>=len) to=len-1; @@ -671,7 +699,7 @@ Ref<Texture> EditorSamplePreviewPlugin::generate(const RES& p_from) { for(int k=from;k<=to;k++) { - float v = src[k*c+j]/32768.0; + float v = src[uint64_t(k)*c+j]/32768.0; if (v>max[j]) max[j]=v; if (v<min[j]) @@ -687,7 +715,7 @@ Ref<Texture> EditorSamplePreviewPlugin::generate(const RES& p_from) { for(int k=from;k<=to;k++) { - float v = src[k*c+j]/128.0; + float v = src[uint64_t(k)*c+j]/128.0; if (v>max[j]) max[j]=v; if (v<min[j]) diff --git a/tools/editor/plugins/editor_preview_plugins.h b/tools/editor/plugins/editor_preview_plugins.h index b3bfda8045..b33aefaa23 100644 --- a/tools/editor/plugins/editor_preview_plugins.h +++ b/tools/editor/plugins/editor_preview_plugins.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* editor_preview_plugins.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef EDITORPREVIEWPLUGINS_H #define EDITORPREVIEWPLUGINS_H diff --git a/tools/editor/plugins/light_occluder_2d_editor_plugin.cpp b/tools/editor/plugins/light_occluder_2d_editor_plugin.cpp index bf3b2fa68d..14e7b14fc3 100644 --- a/tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +++ b/tools/editor/plugins/light_occluder_2d_editor_plugin.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* light_occluder_2d_editor_plugin.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "light_occluder_2d_editor_plugin.h" #include "canvas_item_editor_plugin.h" diff --git a/tools/editor/plugins/light_occluder_2d_editor_plugin.h b/tools/editor/plugins/light_occluder_2d_editor_plugin.h index 5fb5631d05..b570fff506 100644 --- a/tools/editor/plugins/light_occluder_2d_editor_plugin.h +++ b/tools/editor/plugins/light_occluder_2d_editor_plugin.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* light_occluder_2d_editor_plugin.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef LIGHT_OCCLUDER_2D_EDITOR_PLUGIN_H #define LIGHT_OCCLUDER_2D_EDITOR_PLUGIN_H diff --git a/tools/editor/plugins/mesh_editor_plugin.cpp b/tools/editor/plugins/mesh_editor_plugin.cpp index 51a436e58d..71cf33ba1b 100644 --- a/tools/editor/plugins/mesh_editor_plugin.cpp +++ b/tools/editor/plugins/mesh_editor_plugin.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* mesh_editor_plugin.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "mesh_editor_plugin.h" void MeshEditor::_input_event(InputEvent p_event) { diff --git a/tools/editor/plugins/mesh_editor_plugin.h b/tools/editor/plugins/mesh_editor_plugin.h index 190dfca464..0715a96e74 100644 --- a/tools/editor/plugins/mesh_editor_plugin.h +++ b/tools/editor/plugins/mesh_editor_plugin.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* mesh_editor_plugin.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef MESH_EDITOR_PLUGIN_H #define MESH_EDITOR_PLUGIN_H diff --git a/tools/editor/plugins/mesh_instance_editor_plugin.cpp b/tools/editor/plugins/mesh_instance_editor_plugin.cpp index f604e4c57c..c952feb1da 100644 --- a/tools/editor/plugins/mesh_instance_editor_plugin.cpp +++ b/tools/editor/plugins/mesh_instance_editor_plugin.cpp @@ -183,6 +183,12 @@ void MeshInstanceEditor::_create_outline_mesh() { return; } + if (mesh->get_surface_count() == 0) { + err_dialog->set_text(TTR("Mesh has not surface to create outlines from!")); + err_dialog->popup_centered_minsize(); + return; + } + Ref<Mesh> mesho = mesh->create_outline(outline_size->get_val()); if (mesho.is_null()) { diff --git a/tools/editor/plugins/navigation_polygon_editor_plugin.cpp b/tools/editor/plugins/navigation_polygon_editor_plugin.cpp index 1ee388ca18..5a8cd8791e 100644 --- a/tools/editor/plugins/navigation_polygon_editor_plugin.cpp +++ b/tools/editor/plugins/navigation_polygon_editor_plugin.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* navigation_polygon_editor_plugin.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "navigation_polygon_editor_plugin.h" #include "canvas_item_editor_plugin.h" diff --git a/tools/editor/plugins/navigation_polygon_editor_plugin.h b/tools/editor/plugins/navigation_polygon_editor_plugin.h index f742cb011d..503b4c2662 100644 --- a/tools/editor/plugins/navigation_polygon_editor_plugin.h +++ b/tools/editor/plugins/navigation_polygon_editor_plugin.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* navigation_polygon_editor_plugin.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef NAVIGATIONPOLYGONEDITORPLUGIN_H #define NAVIGATIONPOLYGONEDITORPLUGIN_H diff --git a/tools/editor/plugins/path_2d_editor_plugin.cpp b/tools/editor/plugins/path_2d_editor_plugin.cpp index 107ec30a91..95f330a1d5 100644 --- a/tools/editor/plugins/path_2d_editor_plugin.cpp +++ b/tools/editor/plugins/path_2d_editor_plugin.cpp @@ -633,35 +633,35 @@ Path2DEditor::Path2DEditor(EditorNode *p_editor) { sep = memnew( VSeparator); base_hb->add_child(sep); curve_edit = memnew( ToolButton ); - curve_edit->set_icon(CanvasItemEditor::get_singleton()->get_icon("CurveEdit","EditorIcons")); + curve_edit->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("CurveEdit","EditorIcons")); curve_edit->set_toggle_mode(true); curve_edit->set_focus_mode(Control::FOCUS_NONE); curve_edit->set_tooltip(TTR("Select Points")+"\n"+TTR("Shift+Drag: Select Control Points")+"\n"+keycode_get_string(KEY_MASK_CMD)+TTR("Click: Add Point")+"\n"+TTR("Right Click: Delete Point")); curve_edit->connect("pressed",this,"_mode_selected",varray(MODE_EDIT)); base_hb->add_child(curve_edit); curve_edit_curve = memnew( ToolButton ); - curve_edit_curve->set_icon(CanvasItemEditor::get_singleton()->get_icon("CurveCurve","EditorIcons")); + curve_edit_curve->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("CurveCurve","EditorIcons")); curve_edit_curve->set_toggle_mode(true); curve_edit_curve->set_focus_mode(Control::FOCUS_NONE); curve_edit_curve->set_tooltip(TTR("Select Control Points (Shift+Drag)")); curve_edit_curve->connect("pressed",this,"_mode_selected",varray(MODE_EDIT_CURVE)); base_hb->add_child(curve_edit_curve); curve_create = memnew( ToolButton ); - curve_create->set_icon(CanvasItemEditor::get_singleton()->get_icon("CurveCreate","EditorIcons")); + curve_create->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("CurveCreate","EditorIcons")); curve_create->set_toggle_mode(true); curve_create->set_focus_mode(Control::FOCUS_NONE); curve_create->set_tooltip(TTR("Add Point (in empty space)")+"\n"+TTR("Split Segment (in curve)")); curve_create->connect("pressed",this,"_mode_selected",varray(MODE_CREATE)); base_hb->add_child(curve_create); curve_del = memnew( ToolButton ); - curve_del->set_icon(CanvasItemEditor::get_singleton()->get_icon("CurveDelete","EditorIcons")); + curve_del->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("CurveDelete","EditorIcons")); curve_del->set_toggle_mode(true); curve_del->set_focus_mode(Control::FOCUS_NONE); curve_del->set_tooltip(TTR("Delete Point")); curve_del->connect("pressed",this,"_mode_selected",varray(MODE_DELETE)); base_hb->add_child(curve_del); curve_close = memnew( ToolButton ); - curve_close->set_icon(CanvasItemEditor::get_singleton()->get_icon("CurveClose","EditorIcons")); + curve_close->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("CurveClose","EditorIcons")); curve_close->set_focus_mode(Control::FOCUS_NONE); curve_close->set_tooltip(TTR("Close Curve")); curve_close->connect("pressed",this,"_mode_selected",varray(ACTION_CLOSE)); diff --git a/tools/editor/plugins/path_editor_plugin.cpp b/tools/editor/plugins/path_editor_plugin.cpp index d7cc2bd157..33ef71efab 100644 --- a/tools/editor/plugins/path_editor_plugin.cpp +++ b/tools/editor/plugins/path_editor_plugin.cpp @@ -542,28 +542,28 @@ PathEditorPlugin::PathEditorPlugin(EditorNode *p_node) { sep->hide(); SpatialEditor::get_singleton()->add_control_to_menu_panel(sep); curve_edit = memnew( ToolButton ); - curve_edit->set_icon(SpatialEditor::get_singleton()->get_icon("CurveEdit","EditorIcons")); + curve_edit->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("CurveEdit","EditorIcons")); curve_edit->set_toggle_mode(true); curve_edit->hide(); curve_edit->set_focus_mode(Control::FOCUS_NONE); curve_edit->set_tooltip(TTR("Select Points")+"\n"+TTR("Shift+Drag: Select Control Points")+"\n"+keycode_get_string(KEY_MASK_CMD)+TTR("Click: Add Point")+"\n"+TTR("Right Click: Delete Point")); SpatialEditor::get_singleton()->add_control_to_menu_panel(curve_edit); curve_create = memnew( ToolButton ); - curve_create->set_icon(SpatialEditor::get_singleton()->get_icon("CurveCreate","EditorIcons")); + curve_create->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("CurveCreate","EditorIcons")); curve_create->set_toggle_mode(true); curve_create->hide(); curve_create->set_focus_mode(Control::FOCUS_NONE); curve_create->set_tooltip(TTR("Add Point (in empty space)")+"\n"+TTR("Split Segment (in curve)")); SpatialEditor::get_singleton()->add_control_to_menu_panel(curve_create); curve_del = memnew( ToolButton ); - curve_del->set_icon(SpatialEditor::get_singleton()->get_icon("CurveDelete","EditorIcons")); + curve_del->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("CurveDelete","EditorIcons")); curve_del->set_toggle_mode(true); curve_del->hide(); curve_del->set_focus_mode(Control::FOCUS_NONE); curve_del->set_tooltip(TTR("Delete Point")); SpatialEditor::get_singleton()->add_control_to_menu_panel(curve_del); curve_close = memnew( ToolButton ); - curve_close->set_icon(SpatialEditor::get_singleton()->get_icon("CurveClose","EditorIcons")); + curve_close->set_icon(EditorNode::get_singleton()->get_gui_base()->get_icon("CurveClose","EditorIcons")); curve_close->hide(); curve_close->set_focus_mode(Control::FOCUS_NONE); curve_close->set_tooltip(TTR("Close Curve")); diff --git a/tools/editor/plugins/polygon_2d_editor_plugin.cpp b/tools/editor/plugins/polygon_2d_editor_plugin.cpp index f873b43fd9..d78508c429 100644 --- a/tools/editor/plugins/polygon_2d_editor_plugin.cpp +++ b/tools/editor/plugins/polygon_2d_editor_plugin.cpp @@ -1,5 +1,5 @@ /*************************************************************************/ -/* collision_polygon_editor_plugin.cpp */ +/* polygon_2d_editor_plugin.cpp */ /*************************************************************************/ /* This file is part of: */ /* GODOT ENGINE */ diff --git a/tools/editor/plugins/polygon_2d_editor_plugin.h b/tools/editor/plugins/polygon_2d_editor_plugin.h index 0939c44264..d8b951ec44 100644 --- a/tools/editor/plugins/polygon_2d_editor_plugin.h +++ b/tools/editor/plugins/polygon_2d_editor_plugin.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* polygon_2d_editor_plugin.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #ifndef POLYGON_2D_EDITOR_PLUGIN_H #define POLYGON_2D_EDITOR_PLUGIN_H diff --git a/tools/editor/plugins/sample_editor_plugin.cpp b/tools/editor/plugins/sample_editor_plugin.cpp index a3891a648b..b094184a29 100644 --- a/tools/editor/plugins/sample_editor_plugin.cpp +++ b/tools/editor/plugins/sample_editor_plugin.cpp @@ -211,7 +211,7 @@ void SampleEditor::generate_preview_texture(const Ref<Sample>& p_sample,Ref<Imag for(int j=0;j<h;j++) { float v = (j/(float)h) * 2.0 - 1.0; - uint8_t* imgofs = &imgw[(j*w+i)*3]; + uint8_t* imgofs = &imgw[(uint64_t(j)*w+i)*3]; if (v>min[0] && v<max[0]) { imgofs[0]=255; imgofs[1]=150; @@ -229,8 +229,8 @@ void SampleEditor::generate_preview_texture(const Ref<Sample>& p_sample,Ref<Imag float max[2]={-1e10,-1e10}; float min[2]={1e10,1e10}; int c=stereo?2:1; - int from = i*len/w; - int to = (i+1)*len/w; + int from = uint64_t(i)*len/w; + int to = (uint64_t(i)+1)*len/w; if (to>=len) to=len-1; @@ -241,7 +241,7 @@ void SampleEditor::generate_preview_texture(const Ref<Sample>& p_sample,Ref<Imag for(int k=from;k<=to;k++) { - float v = src[k*c+j]/32768.0; + float v = src[uint64_t(k)*c+j]/32768.0; if (v>max[j]) max[j]=v; if (v<min[j]) @@ -257,7 +257,7 @@ void SampleEditor::generate_preview_texture(const Ref<Sample>& p_sample,Ref<Imag for(int k=from;k<=to;k++) { - float v = src[k*c+j]/128.0; + float v = src[uint64_t(k)*c+j]/128.0; if (v>max[j]) max[j]=v; if (v<min[j]) @@ -270,7 +270,7 @@ void SampleEditor::generate_preview_texture(const Ref<Sample>& p_sample,Ref<Imag if (!stereo) { for(int j=0;j<h;j++) { float v = (j/(float)h) * 2.0 - 1.0; - uint8_t* imgofs = &imgw[(j*w+i)*3]; + uint8_t* imgofs = &imgw[(uint64_t(j)*w+i)*3]; if (v>min[0] && v<max[0]) { imgofs[0]=255; imgofs[1]=150; @@ -297,7 +297,7 @@ void SampleEditor::generate_preview_texture(const Ref<Sample>& p_sample,Ref<Imag v = ((j-(h/2))/(float)(h/2)) * 2.0 - 1.0; } - uint8_t* imgofs = &imgw[(j*w+i)*3]; + uint8_t* imgofs = &imgw[(uint64_t(j)*w+i)*3]; if (v>min[half] && v<max[half]) { imgofs[0]=255; imgofs[1]=150; diff --git a/tools/editor/plugins/script_editor_plugin.cpp b/tools/editor/plugins/script_editor_plugin.cpp index a313b0053a..7ecd2951d4 100644 --- a/tools/editor/plugins/script_editor_plugin.cpp +++ b/tools/editor/plugins/script_editor_plugin.cpp @@ -287,6 +287,9 @@ void ScriptTextEditor::_load_theme_settings() { get_text_edit()->set_custom_bg_color(EDITOR_DEF("text_editor/background_color",Color(0,0,0,0))); + get_text_edit()->add_color_override("completion_background_color", EDITOR_DEF("text_editor/completion_background_color", Color(0,0,0,0))); + get_text_edit()->add_color_override("completion_selected_color", EDITOR_DEF("text_editor/completion_selected_color", Color::html("434244"))); + get_text_edit()->add_color_override("completion_existing_color", EDITOR_DEF("text_editor/completion_existing_color", Color::html("21dfdfdf"))); get_text_edit()->add_color_override("font_color",EDITOR_DEF("text_editor/text_color",Color(0,0,0))); get_text_edit()->add_color_override("line_number_color",EDITOR_DEF("text_editor/line_number_color",Color(0,0,0))); get_text_edit()->add_color_override("caret_color",EDITOR_DEF("text_editor/caret_color",Color(0,0,0))); @@ -531,7 +534,7 @@ static void _find_changed_scripts_for_external_editor(Node* p_base, Node*p_curre } -void ScriptEditor::_update_modified_scripts_for_external_editor() { +void ScriptEditor::_update_modified_scripts_for_external_editor(Ref<Script> p_for_script) { if (!bool(EditorSettings::get_singleton()->get("external_editor/use_external_editor"))) return; @@ -547,6 +550,9 @@ void ScriptEditor::_update_modified_scripts_for_external_editor() { Ref<Script> script = E->get(); + if (p_for_script.is_valid() && p_for_script!=script) + continue; + if (script->get_path()=="" || script->get_path().find("local://")!=-1 || script->get_path().find("::")!=-1) { continue; //internal script, who cares, though weird @@ -900,7 +906,7 @@ void ScriptEditor::_live_auto_reload_running_scripts() { } -bool ScriptEditor::_test_script_times_on_disk() { +bool ScriptEditor::_test_script_times_on_disk(Ref<Script> p_for_script) { disk_changed_list->clear(); @@ -920,6 +926,9 @@ bool ScriptEditor::_test_script_times_on_disk() { Ref<Script> script = ste->get_edited_script(); + if (p_for_script.is_valid() && p_for_script!=script) + continue; + if (script->get_path()=="" || script->get_path().find("local://")!=-1 || script->get_path().find("::")!=-1) continue; //internal script, who cares @@ -2128,6 +2137,12 @@ void ScriptEditor::edit(const Ref<Script>& p_script) { if (!restoring_layout) { EditorNode::get_singleton()->save_layout(); } + + //test for modification, maybe the script was not edited but was loaded + + _test_script_times_on_disk(p_script); + _update_modified_scripts_for_external_editor(p_script); + } void ScriptEditor::save_all_scripts() { @@ -2201,7 +2216,7 @@ void ScriptEditor::_editor_stop() { void ScriptEditor::_add_callback(Object *p_obj, const String& p_function, const StringArray& p_args) { - print_line("add callback! hohoho"); + //print_line("add callback! hohoho"); kinda sad to remove this ERR_FAIL_COND(!p_obj); Ref<Script> script = p_obj->get_script(); ERR_FAIL_COND( !script.is_valid() ); @@ -2243,7 +2258,6 @@ void ScriptEditor::_add_callback(Object *p_obj, const String& p_function, const void ScriptEditor::_editor_settings_changed() { - print_line("settings changed"); trim_trailing_whitespace_on_save = EditorSettings::get_singleton()->get("text_editor/trim_trailing_whitespace_on_save"); float autosave_time = EditorSettings::get_singleton()->get("text_editor/autosave_interval_secs"); if (autosave_time>0) { @@ -2284,7 +2298,6 @@ void ScriptEditor::_editor_settings_changed() { void ScriptEditor::_autosave_scripts() { - print_line("autosaving"); save_all_scripts(); } @@ -2625,7 +2638,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) { file_menu->get_popup()->add_separator(); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/save", TTR("Save"), KEY_MASK_ALT|KEY_MASK_CMD|KEY_S), FILE_SAVE); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/save_as", TTR("Save As..")), FILE_SAVE_AS); - file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/save_all", TTR("Save All"), KEY_MASK_CMD|KEY_MASK_SHIFT|KEY_S), FILE_SAVE_ALL); + file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/save_all", TTR("Save All"), KEY_MASK_CMD|KEY_MASK_SHIFT|KEY_MASK_ALT|KEY_S), FILE_SAVE_ALL); file_menu->get_popup()->add_separator(); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/history_previous", TTR("History Prev"), KEY_MASK_CTRL|KEY_MASK_ALT|KEY_LEFT), WINDOW_PREV); file_menu->get_popup()->add_shortcut(ED_SHORTCUT("script_editor/history_next", TTR("History Next"), KEY_MASK_CTRL|KEY_MASK_ALT|KEY_RIGHT), WINDOW_NEXT); diff --git a/tools/editor/plugins/script_editor_plugin.h b/tools/editor/plugins/script_editor_plugin.h index 3d723adfe9..0636190a41 100644 --- a/tools/editor/plugins/script_editor_plugin.h +++ b/tools/editor/plugins/script_editor_plugin.h @@ -232,7 +232,7 @@ class ScriptEditor : public VBoxContainer { void _resave_scripts(const String& p_str); void _reload_scripts(); - bool _test_script_times_on_disk(); + bool _test_script_times_on_disk(Ref<Script> p_for_script=Ref<Script>()); void _close_current_tab(); @@ -291,7 +291,7 @@ class ScriptEditor : public VBoxContainer { void _go_to_tab(int p_idx); void _update_history_pos(int p_new_pos); void _update_script_colors(); - void _update_modified_scripts_for_external_editor(); + void _update_modified_scripts_for_external_editor(Ref<Script> p_for_script=Ref<Script>()); int file_dialog_option; void _file_dialog_action(String p_file); diff --git a/tools/editor/plugins/shader_editor_plugin.cpp b/tools/editor/plugins/shader_editor_plugin.cpp index f4b294daa5..76042c3028 100644 --- a/tools/editor/plugins/shader_editor_plugin.cpp +++ b/tools/editor/plugins/shader_editor_plugin.cpp @@ -30,6 +30,7 @@ #include "tools/editor/editor_settings.h" #include "spatial_editor_plugin.h" +#include "scene/resources/shader_graph.h" #include "io/resource_loader.h" #include "io/resource_saver.h" #include "os/keyboard.h" @@ -77,6 +78,9 @@ void ShaderTextEditor::_load_theme_settings() { /* keyword color */ get_text_edit()->set_custom_bg_color(EDITOR_DEF("text_editor/background_color",Color(0,0,0,0))); + get_text_edit()->add_color_override("completion_background_color", EDITOR_DEF("text_editor/completion_background_color", Color(0,0,0,0))); + get_text_edit()->add_color_override("completion_selected_color", EDITOR_DEF("text_editor/completion_selected_color", Color::html("434244"))); + get_text_edit()->add_color_override("completion_existing_color", EDITOR_DEF("text_editor/completion_existing_color", Color::html("21dfdfdf"))); get_text_edit()->add_color_override("font_color",EDITOR_DEF("text_editor/text_color",Color(0,0,0))); get_text_edit()->add_color_override("line_number_color",EDITOR_DEF("text_editor/line_number_color",Color(0,0,0))); get_text_edit()->add_color_override("caret_color",EDITOR_DEF("text_editor/caret_color",Color(0,0,0))); @@ -144,8 +148,6 @@ void ShaderTextEditor::_validate_script() { //List<StringName> params; //shader->get_param_list(¶ms); - print_line("compile: type: "+itos(type)+" code:\n"+code); - Error err = ShaderLanguage::compile(code,type,NULL,NULL,&errortxt,&line,&col); if (err!=OK) { @@ -557,34 +559,41 @@ ShaderEditor::ShaderEditor() { void ShaderEditorPlugin::edit(Object *p_object) { - if (!p_object->cast_to<Shader>()) + Shader* s = p_object->cast_to<Shader>(); + if (!s || s->cast_to<ShaderGraph>()) { + shader_editor->hide(); //Dont edit ShaderGraph return; + } - shader_editor->edit(p_object->cast_to<Shader>()); + if (_2d && s->get_mode()==Shader::MODE_CANVAS_ITEM) + shader_editor->edit(s); + else if (!_2d && s->get_mode()==Shader::MODE_MATERIAL) + shader_editor->edit(s); } bool ShaderEditorPlugin::handles(Object *p_object) const { + bool handles = true; Shader *shader=p_object->cast_to<Shader>(); - if (!shader) - return false; - if (_2d) - return shader->get_mode()==Shader::MODE_CANVAS_ITEM; - else + if (!shader || shader->cast_to<ShaderGraph>()) // Dont handle ShaderGraph's + handles = false; + if (handles && _2d) + handles = shader->get_mode()==Shader::MODE_CANVAS_ITEM; + else if (handles && !_2d) return shader->get_mode()==Shader::MODE_MATERIAL; + + if (!handles) + shader_editor->hide(); + return handles; } void ShaderEditorPlugin::make_visible(bool p_visible) { if (p_visible) { shader_editor->show(); - //shader_editor->set_process(true); } else { - shader_editor->apply_shaders(); - //shader_editor->hide(); - //shader_editor->set_process(false); } } diff --git a/tools/editor/plugins/shader_graph_editor_plugin.h b/tools/editor/plugins/shader_graph_editor_plugin.h index 8d1d08ee1d..67ee5e2d45 100644 --- a/tools/editor/plugins/shader_graph_editor_plugin.h +++ b/tools/editor/plugins/shader_graph_editor_plugin.h @@ -33,7 +33,6 @@ #include "tools/editor/editor_plugin.h" #include "tools/editor/editor_node.h" #include "scene/resources/shader.h" -#include "servers/visual/shader_graph.h" #include "scene/gui/tree.h" #include "scene/gui/button.h" #include "scene/gui/graph_edit.h" diff --git a/tools/editor/plugins/spatial_editor_plugin.cpp b/tools/editor/plugins/spatial_editor_plugin.cpp index fdb654571a..8d72178f23 100644 --- a/tools/editor/plugins/spatial_editor_plugin.cpp +++ b/tools/editor/plugins/spatial_editor_plugin.cpp @@ -1580,7 +1580,7 @@ void SpatialEditorViewport::_sinput(const InputEvent &p_event) { nav_mode = NAVIGATION_PAN; } - } else if (EditorSettings::get_singleton()->get("3d_editor/trackpad_hint")) { + } else if (EditorSettings::get_singleton()->get("3d_editor/emulate_3_button_mouse")) { // Handle trackpad (no external mouse) use case int mod = 0; if (m.mod.shift) diff --git a/tools/editor/plugins/theme_editor_plugin.cpp b/tools/editor/plugins/theme_editor_plugin.cpp index 2673948365..5db331ba45 100644 --- a/tools/editor/plugins/theme_editor_plugin.cpp +++ b/tools/editor/plugins/theme_editor_plugin.cpp @@ -348,7 +348,7 @@ void ThemeEditor::_dialog_cbk() { names.clear(); Theme::get_default()->get_icon_list(fromtype,&names); for(List<StringName>::Element *E=names.front();E;E=E->next()) { - theme->set_icon(E->get(),fromtype,Theme::get_default()->get_icon(E->get(),fromtype)); + theme->set_icon(E->get(),fromtype,Ref<Texture>()); } @@ -357,7 +357,7 @@ void ThemeEditor::_dialog_cbk() { names.clear(); Theme::get_default()->get_stylebox_list(fromtype,&names); for(List<StringName>::Element *E=names.front();E;E=E->next()) { - theme->set_stylebox(E->get(),fromtype,Theme::get_default()->get_stylebox(E->get(),fromtype)); + theme->set_stylebox(E->get(),fromtype,Ref<StyleBox>()); } @@ -366,7 +366,7 @@ void ThemeEditor::_dialog_cbk() { names.clear(); Theme::get_default()->get_font_list(fromtype,&names); for(List<StringName>::Element *E=names.front();E;E=E->next()) { - theme->set_font(E->get(),fromtype,Theme::get_default()->get_font(E->get(),fromtype)); + theme->set_font(E->get(),fromtype,Ref<Font>()); } } @@ -454,11 +454,73 @@ void ThemeEditor::_dialog_cbk() { void ThemeEditor::_theme_menu_cbk(int p_option) { - if (p_option==POPUP_CREATE_TEMPLATE) { + if (p_option==POPUP_CREATE_EMPTY || p_option==POPUP_CREATE_EDITOR_EMPTY) { - file_dialog->set_mode(EditorFileDialog::MODE_SAVE_FILE); - file_dialog->set_current_path("custom.theme"); - file_dialog->popup_centered_ratio(); + + Ref<Theme> base_theme; + + if (p_option==POPUP_CREATE_EMPTY) { + base_theme = Theme::get_default(); + } else { + base_theme = EditorNode::get_singleton()->get_theme_base()->get_theme(); + } + + + { + + List<StringName> types; + base_theme->get_type_list(&types); + + + for (List<StringName>::Element *T=types.front();T;T=T->next()) { + StringName type = T->get(); + + List<StringName> icons; + base_theme->get_icon_list(type,&icons); + + for (List<StringName>::Element *E=icons.front();E;E=E->next()) { + theme->set_icon(E->get(),type,Ref<Texture>()); + } + + List<StringName> shaders; + base_theme->get_shader_list(type,&shaders); + + for (List<StringName>::Element *E=shaders.front();E;E=E->next()) { + theme->set_shader(E->get(),type,Ref<Shader>()); + } + + List<StringName> styleboxs; + base_theme->get_stylebox_list(type,&styleboxs); + + for (List<StringName>::Element *E=styleboxs.front();E;E=E->next()) { + theme->set_stylebox(E->get(),type,Ref<StyleBox>()); + } + + List<StringName> fonts; + base_theme->get_font_list(type,&fonts); + + for (List<StringName>::Element *E=fonts.front();E;E=E->next()) { + theme->set_font(E->get(),type,Ref<Font>()); + } + + List<StringName> colors; + base_theme->get_color_list(type,&colors); + + for (List<StringName>::Element *E=colors.front();E;E=E->next()) { + theme->set_color(E->get(),type,Color()); + } + + + List<StringName> constants; + base_theme->get_constant_list(type,&constants); + + for (List<StringName>::Element *E=constants.front();E;E=E->next()) { + theme->set_constant(E->get(),type,base_theme->get_constant(type,E->get())); + } + + } + + } return; } @@ -475,7 +537,7 @@ void ThemeEditor::_theme_menu_cbk(int p_option) { add_del_dialog->set_title(TTR("Add Item")); add_del_dialog->get_ok()->set_text(TTR("Add")); - add_del_dialog->popup_centered(Size2(490,85)); + add_del_dialog->popup_centered(Size2(490,85)*EDSCALE); base_theme=Theme::get_default(); @@ -483,7 +545,7 @@ void ThemeEditor::_theme_menu_cbk(int p_option) { add_del_dialog->set_title(TTR("Add All Items")); add_del_dialog->get_ok()->set_text(TTR("Add All")); - add_del_dialog->popup_centered(Size2(240,85)); + add_del_dialog->popup_centered(Size2(240,85)*EDSCALE); base_theme=Theme::get_default(); @@ -497,7 +559,7 @@ void ThemeEditor::_theme_menu_cbk(int p_option) { add_del_dialog->set_title(TTR("Remove Item")); add_del_dialog->get_ok()->set_text(TTR("Remove")); - add_del_dialog->popup_centered(Size2(490,85)); + add_del_dialog->popup_centered(Size2(490,85)*EDSCALE); base_theme=theme; @@ -505,7 +567,7 @@ void ThemeEditor::_theme_menu_cbk(int p_option) { add_del_dialog->set_title("Remove All Items"); add_del_dialog->get_ok()->set_text("Remove All"); - add_del_dialog->popup_centered(Size2(240,85)); + add_del_dialog->popup_centered(Size2(240,85)*EDSCALE); base_theme=Theme::get_default(); @@ -521,12 +583,14 @@ void ThemeEditor::_theme_menu_cbk(int p_option) { List<StringName> types; base_theme->get_type_list(&types); + type_menu->get_popup()->clear();; if (p_option==0 || p_option==1) {//add List<StringName> new_types; theme->get_type_list(&new_types); + //uh kind of sucks for(List<StringName>::Element *F=new_types.front();F;F=F->next()) { @@ -544,8 +608,8 @@ void ThemeEditor::_theme_menu_cbk(int p_option) { } } - types.sort(); - + //types.sort(); + types.sort_custom<StringName::AlphCompare>(); for(List<StringName>::Element *E=types.front();E;E=E->next()) { type_menu->get_popup()->add_item( E->get() ); @@ -579,15 +643,23 @@ ThemeEditor::ThemeEditor() { time_left=0; + scroll = memnew( ScrollContainer ); + add_child(scroll); + scroll->set_area_as_parent_rect(3); + scroll->set_margin(MARGIN_TOP,30*EDSCALE); + //scroll->set_enable_h_scroll(true); + scroll->set_enable_v_scroll(true); + scroll->set_enable_h_scroll(false); + Panel * panel = memnew( Panel ); - add_child(panel); - panel->set_area_as_parent_rect(0); - panel->set_margin(MARGIN_TOP,25); + scroll->add_child(panel); + panel->set_custom_minimum_size(Size2(500,800)*EDSCALE); panel->set_theme(Theme::get_default()); + panel->set_h_size_flags(SIZE_EXPAND_FILL); main_vb= memnew( VBoxContainer ); panel->add_child(main_vb); - main_vb->set_area_as_parent_rect(4); + main_vb->set_area_as_parent_rect(4*EDSCALE); HBoxContainer *hb_menu = memnew(HBoxContainer); @@ -602,8 +674,11 @@ ThemeEditor::ThemeEditor() { theme_menu->get_popup()->add_item(TTR("Remove Item"),POPUP_REMOVE); theme_menu->get_popup()->add_item(TTR("Remove Class Items"),POPUP_CLASS_REMOVE); theme_menu->get_popup()->add_separator(); - theme_menu->get_popup()->add_item(TTR("Create Template"),POPUP_CREATE_TEMPLATE); - hb_menu->add_child(theme_menu); + theme_menu->get_popup()->add_item(TTR("Create Empty Template"),POPUP_CREATE_EMPTY); + theme_menu->get_popup()->add_item(TTR("Create Empty Editor Template"),POPUP_CREATE_EDITOR_EMPTY); + + add_child(theme_menu); + theme_menu->set_pos(Vector2(3,3)*EDSCALE); theme_menu->get_popup()->connect("item_pressed", this,"_theme_menu_cbk"); @@ -678,26 +753,26 @@ ThemeEditor::ThemeEditor() { pb->set_val(50); first_vb->add_child( pb); Panel *pn=memnew( Panel ); - pn->set_custom_minimum_size(Size2(40,40)); + pn->set_custom_minimum_size(Size2(40,40)*EDSCALE); first_vb->add_child( pn); - first_vb->add_constant_override("separation",10); + first_vb->add_constant_override("separation",10*EDSCALE); VBoxContainer *second_vb = memnew( VBoxContainer ); second_vb->set_h_size_flags(SIZE_EXPAND_FILL); main_hb->add_child(second_vb); - second_vb->add_constant_override("separation",10); + second_vb->add_constant_override("separation",10*EDSCALE); LineEdit *le = memnew( LineEdit ); le->set_text("LineEdit"); second_vb->add_child(le); TextEdit *te = memnew( TextEdit ); te->set_text("TextEdit"); //te->set_v_size_flags(SIZE_EXPAND_FILL); - te->set_custom_minimum_size(Size2(0,160)); + te->set_custom_minimum_size(Size2(0,160)*EDSCALE); second_vb->add_child(te); Tree *test_tree = memnew(Tree); second_vb->add_child(test_tree); - test_tree->set_custom_minimum_size(Size2(0,160)); + test_tree->set_custom_minimum_size(Size2(0,160)*EDSCALE); TreeItem *item = test_tree->create_item(); @@ -725,7 +800,7 @@ ThemeEditor::ThemeEditor() { main_hb->add_child(third_vb); HBoxContainer *vhb = memnew( HBoxContainer ); - vhb->set_custom_minimum_size(Size2(0,160)); + vhb->set_custom_minimum_size(Size2(0,160)*EDSCALE); vhb->add_child(memnew(VSeparator)); vhb->add_child(memnew(VSlider)); vhb->add_child(memnew(VScrollBar)); @@ -733,7 +808,7 @@ ThemeEditor::ThemeEditor() { TabContainer *tc = memnew( TabContainer ); third_vb->add_child(tc); - tc->set_custom_minimum_size(Size2(0,160)); + tc->set_custom_minimum_size(Size2(0,160)*EDSCALE); Control *tcc = memnew( Control ); tcc->set_name(TTR("Tab 1")); tc->add_child(tcc); @@ -744,7 +819,7 @@ ThemeEditor::ThemeEditor() { tcc->set_name(TTR("Tab 3")); tc->add_child(tcc); - main_hb->add_constant_override("separation",20); + main_hb->add_constant_override("separation",20*EDSCALE); @@ -807,37 +882,37 @@ ThemeEditor::ThemeEditor() { Label *l = memnew( Label ); - l->set_pos( Point2(5,5) ); + l->set_pos( Point2(5,5)*EDSCALE ); l->set_text(TTR("Type:")); add_del_dialog->add_child(l); dtype_select_label=l; type_edit = memnew( LineEdit ); - type_edit->set_pos(Point2(5,25)); - type_edit->set_size(Point2(150,5)); + type_edit->set_pos(Point2(5,25)*EDSCALE); + type_edit->set_size(Point2(150,5)*EDSCALE); add_del_dialog->add_child(type_edit); type_menu = memnew( MenuButton ); - type_menu->set_pos(Point2(160,25)); - type_menu->set_size(Point2(30,5)); + type_menu->set_pos(Point2(160,25)*EDSCALE); + type_menu->set_size(Point2(30,5)*EDSCALE); type_menu->set_text(".."); add_del_dialog->add_child(type_menu); type_menu->get_popup()->connect("item_pressed", this,"_type_menu_cbk"); l = memnew( Label ); - l->set_pos( Point2(200,5) ); + l->set_pos( Point2(200,5)*EDSCALE ); l->set_text(TTR("Name:")); add_del_dialog->add_child(l); name_select_label=l; name_edit = memnew( LineEdit ); - name_edit->set_pos(Point2(200,25)); - name_edit->set_size(Point2(150,5)); + name_edit->set_pos(Point2(200,25)*EDSCALE); + name_edit->set_size(Point2(150,5)*EDSCALE); add_del_dialog->add_child(name_edit); name_menu = memnew( MenuButton ); - name_menu->set_pos(Point2(360,25)); - name_menu->set_size(Point2(30,5)); + name_menu->set_pos(Point2(360,25)*EDSCALE); + name_menu->set_size(Point2(30,5)*EDSCALE); name_menu->set_text(".."); add_del_dialog->add_child(name_menu); @@ -846,7 +921,7 @@ ThemeEditor::ThemeEditor() { name_menu->get_popup()->connect("item_pressed", this,"_name_menu_cbk"); type_select_label= memnew( Label ); - type_select_label->set_pos( Point2(400,5) ); + type_select_label->set_pos( Point2(400,5)*EDSCALE ); type_select_label->set_text(TTR("Data Type:")); add_del_dialog->add_child(type_select_label); @@ -856,8 +931,8 @@ ThemeEditor::ThemeEditor() { type_select->add_item(TTR("Font")); type_select->add_item(TTR("Color")); type_select->add_item(TTR("Constant")); - type_select->set_pos( Point2( 400,25 ) ); - type_select->set_size( Point2( 80,5 ) ); + type_select->set_pos( Point2( 400,25 )*EDSCALE ); + type_select->set_size( Point2( 80,5 )*EDSCALE ); add_del_dialog->add_child(type_select); @@ -910,7 +985,7 @@ ThemeEditorPlugin::ThemeEditorPlugin(EditorNode *p_node) { editor=p_node; theme_editor = memnew( ThemeEditor ); - theme_editor->set_custom_minimum_size(Size2(0,500)); + theme_editor->set_custom_minimum_size(Size2(0,200)); // p_node->get_viewport()->add_child(theme_editor); button=editor->add_bottom_panel_item("Theme",theme_editor); diff --git a/tools/editor/plugins/theme_editor_plugin.h b/tools/editor/plugins/theme_editor_plugin.h index 49d5ae3096..ea8f8c1d3c 100644 --- a/tools/editor/plugins/theme_editor_plugin.h +++ b/tools/editor/plugins/theme_editor_plugin.h @@ -35,16 +35,19 @@ #include "scene/gui/file_dialog.h" #include "scene/gui/check_box.h" #include "scene/gui/button_group.h" +#include "scene/gui/scroll_container.h" #include "tools/editor/editor_node.h" + class ThemeEditor : public Control { OBJ_TYPE( ThemeEditor, Control ); + ScrollContainer *scroll; VBoxContainer *main_vb; Ref<Theme> theme; @@ -68,7 +71,8 @@ class ThemeEditor : public Control { POPUP_CLASS_ADD, POPUP_REMOVE, POPUP_CLASS_REMOVE, - POPUP_CREATE_TEMPLATE + POPUP_CREATE_EMPTY, + POPUP_CREATE_EDITOR_EMPTY }; int popup_mode; diff --git a/tools/editor/plugins/tile_map_editor_plugin.cpp b/tools/editor/plugins/tile_map_editor_plugin.cpp index 5a40777665..d5f85d3333 100644 --- a/tools/editor/plugins/tile_map_editor_plugin.cpp +++ b/tools/editor/plugins/tile_map_editor_plugin.cpp @@ -893,59 +893,53 @@ bool TileMapEditor::forward_input_event(const InputEvent& p_event) { if (tool!=TOOL_NONE || !mouse_over) return false; - if (k.scancode==KEY_DELETE) { - + if (ED_IS_SHORTCUT("tile_map_editor/erase_selection", p_event)) { _menu_option(OPTION_ERASE_SELECTION); return true; } + if (ED_IS_SHORTCUT("tile_map_editor/select", p_event)) { + tool=TOOL_SELECTING; + selection_active=false; - if (k.mod.command) { - - if (k.scancode==KEY_F) { - - search_box->select_all(); - search_box->grab_focus(); + canvas_item_editor->update(); - return true; - } - if (k.scancode==KEY_B) { + return true; + } + if (ED_IS_SHORTCUT("tile_map_editor/duplicate_selection", p_event)) { + _update_copydata(); - tool=TOOL_SELECTING; - selection_active=false; + if (selection_active) { + tool=TOOL_DUPLICATING; canvas_item_editor->update(); return true; } - if (k.scancode==KEY_D) { - - _update_copydata(); - - if (selection_active) { - tool=TOOL_DUPLICATING; - - canvas_item_editor->update(); - - return true; - } - } - } else { - - if (k.scancode==KEY_A) { - - flip_h=!flip_h; - mirror_x->set_pressed(flip_h); - canvas_item_editor->update(); - return true; - } - if (k.scancode==KEY_S) { + } + if (ED_IS_SHORTCUT("tile_map_editor/find_tile", p_event)) { + search_box->select_all(); + search_box->grab_focus(); - flip_v=!flip_v; - mirror_y->set_pressed(flip_v); - canvas_item_editor->update(); - return true; - } + return true; + } + if (ED_IS_SHORTCUT("tile_map_editor/mirror_x", p_event)) { + flip_h=!flip_h; + mirror_x->set_pressed(flip_h); + canvas_item_editor->update(); + return true; + } + if (ED_IS_SHORTCUT("tile_map_editor/mirror_y", p_event)) { + flip_v=!flip_v; + mirror_y->set_pressed(flip_v); + canvas_item_editor->update(); + return true; + } + if (ED_IS_SHORTCUT("tile_map_editor/transpose", p_event)) { + transpose = !transpose; + transp->set_pressed(transpose); + canvas_item_editor->update(); + return true; } } break; } @@ -1308,6 +1302,12 @@ TileMapEditor::TileMapEditor(EditorNode *p_editor) { flip_v=false; transpose=false; + ED_SHORTCUT("tile_map_editor/erase_selection", TTR("Erase selection"), KEY_DELETE); + ED_SHORTCUT("tile_map_editor/find_tile", TTR("Find tile"), KEY_MASK_CMD+KEY_F); + ED_SHORTCUT("tile_map_editor/transpose", TTR("Transpose")); + ED_SHORTCUT("tile_map_editor/mirror_x", TTR("Mirror X"), KEY_A); + ED_SHORTCUT("tile_map_editor/mirror_y", TTR("Mirror Y"), KEY_S); + search_box = memnew( LineEdit ); search_box->set_h_size_flags(SIZE_EXPAND_FILL); search_box->connect("text_entered", this, "_text_entered"); @@ -1349,9 +1349,9 @@ TileMapEditor::TileMapEditor(EditorNode *p_editor) { p->add_separator(); p->add_item(TTR("Pick Tile"), OPTION_PICK_TILE, KEY_CONTROL); p->add_separator(); - p->add_item(TTR("Select"), OPTION_SELECT, KEY_MASK_CMD+KEY_B); - p->add_item(TTR("Duplicate Selection"), OPTION_DUPLICATE, KEY_MASK_CMD+KEY_D); - p->add_item(TTR("Erase Selection"), OPTION_ERASE_SELECTION, KEY_DELETE); + p->add_shortcut(ED_SHORTCUT("tile_map_editor/select", TTR("Select"), KEY_MASK_CMD+KEY_B), OPTION_SELECT); + p->add_shortcut(ED_SHORTCUT("tile_map_editor/duplicate_selection", TTR("Duplicate Selection"), KEY_MASK_CMD+KEY_D), OPTION_DUPLICATE); + p->add_shortcut(ED_GET_SHORTCUT("tile_map_editor/erase_selection"), OPTION_ERASE_SELECTION); p->connect("item_pressed", this, "_menu_option"); @@ -1361,19 +1361,19 @@ TileMapEditor::TileMapEditor(EditorNode *p_editor) { transp = memnew( ToolButton ); transp->set_toggle_mode(true); - transp->set_tooltip(TTR("Transpose")); + transp->set_tooltip(TTR("Transpose") + " ("+ED_GET_SHORTCUT("tile_map_editor/transpose")->get_as_text()+")"); transp->set_focus_mode(FOCUS_NONE); transp->connect("pressed", this, "_update_transform_buttons", make_binds(transp)); toolbar->add_child(transp); mirror_x = memnew( ToolButton ); mirror_x->set_toggle_mode(true); - mirror_x->set_tooltip(TTR("Mirror X (A)")); + mirror_x->set_tooltip(TTR("Mirror X") + " ("+ED_GET_SHORTCUT("tile_map_editor/mirror_x")->get_as_text()+")"); mirror_x->set_focus_mode(FOCUS_NONE); mirror_x->connect("pressed", this, "_update_transform_buttons", make_binds(mirror_x)); toolbar->add_child(mirror_x); mirror_y = memnew( ToolButton ); mirror_y->set_toggle_mode(true); - mirror_y->set_tooltip(TTR("Mirror Y (S)")); + mirror_y->set_tooltip(TTR("Mirror Y") + " ("+ED_GET_SHORTCUT("tile_map_editor/mirror_y")->get_as_text()+")"); mirror_y->set_focus_mode(FOCUS_NONE); mirror_y->connect("pressed", this, "_update_transform_buttons", make_binds(mirror_y)); toolbar->add_child(mirror_y); diff --git a/tools/editor/project_export.cpp b/tools/editor/project_export.cpp index 3b02c73189..3f82199fc3 100644 --- a/tools/editor/project_export.cpp +++ b/tools/editor/project_export.cpp @@ -36,7 +36,6 @@ #include "io/resource_saver.h" #include "os/os.h" #include "scene/gui/box_container.h" -#include "default_saver.h" #include "scene/gui/tab_container.h" #include "scene/gui/scroll_container.h" diff --git a/tools/editor/project_manager.cpp b/tools/editor/project_manager.cpp index 419f05f2cf..d8814fd50e 100644 --- a/tools/editor/project_manager.cpp +++ b/tools/editor/project_manager.cpp @@ -45,8 +45,7 @@ #include "scene/gui/margin_container.h" #include "io/resource_saver.h" -#include "editor_icons.h" -#include "editor_fonts.h" +#include "editor_themes.h" #include "editor_scale.h" @@ -846,21 +845,16 @@ ProjectManager::ProjectManager() { set_area_as_parent_rect(); - Ref<Theme> theme = Ref<Theme>( memnew( Theme ) ); - set_theme(theme); - editor_register_icons(theme); - editor_register_fonts(theme); + gui_base = memnew( Control ); + add_child(gui_base); + gui_base->set_area_as_parent_rect(); - String global_font = EditorSettings::get_singleton()->get("global/font"); - if (global_font!="") { - Ref<Font> fnt = ResourceLoader::load(global_font); - if (fnt.is_valid()) { - theme->set_default_theme_font(fnt); - } - } + set_theme(create_default_theme()); + Ref<Theme> theme = create_editor_theme(); + gui_base->set_theme(theme); Panel *panel = memnew( Panel ); - add_child(panel); + gui_base->add_child(panel); panel->set_area_as_parent_rect(); VBoxContainer *vb = memnew( VBoxContainer ); @@ -961,7 +955,7 @@ ProjectManager::ProjectManager() { scan_dir->set_access(FileDialog::ACCESS_FILESYSTEM); scan_dir->set_mode(FileDialog::MODE_OPEN_DIR); scan_dir->set_current_dir( EditorSettings::get_singleton()->get("global/default_project_path") ); - add_child(scan_dir); + gui_base->add_child(scan_dir); scan_dir->connect("dir_selected",this,"_scan_begin"); @@ -1010,26 +1004,26 @@ ProjectManager::ProjectManager() { erase_ask->get_ok()->set_text(TTR("Remove")); erase_ask->get_ok()->connect("pressed", this,"_erase_project_confirm"); - add_child(erase_ask); + gui_base->add_child(erase_ask); multi_open_ask = memnew( ConfirmationDialog ); multi_open_ask->get_ok()->set_text(TTR("Edit")); multi_open_ask->get_ok()->connect("pressed", this, "_open_project_confirm"); - add_child(multi_open_ask); + gui_base->add_child(multi_open_ask); multi_run_ask = memnew( ConfirmationDialog ); multi_run_ask->get_ok()->set_text(TTR("Run")); multi_run_ask->get_ok()->connect("pressed", this, "_run_project_confirm"); - add_child(multi_run_ask); + gui_base->add_child(multi_run_ask); OS::get_singleton()->set_low_processor_usage_mode(true); npdialog = memnew( NewProjectDialog ); - add_child(npdialog); + gui_base->add_child(npdialog); npdialog->connect("project_created", this,"_load_recent_projects"); _load_recent_projects(); diff --git a/tools/editor/project_manager.h b/tools/editor/project_manager.h index cfedfd7a69..2db1bb839e 100644 --- a/tools/editor/project_manager.h +++ b/tools/editor/project_manager.h @@ -67,6 +67,8 @@ class ProjectManager : public Control { TabContainer *tabs; + Control *gui_base; + void _item_doubleclicked(); diff --git a/tools/editor/project_settings.h b/tools/editor/project_settings.h index 5108378ff7..79e1acf75e 100644 --- a/tools/editor/project_settings.h +++ b/tools/editor/project_settings.h @@ -31,7 +31,6 @@ #include "scene/gui/dialogs.h" #include "property_editor.h" -#include "optimized_save_dialog.h" #include "undo_redo.h" #include "editor_data.h" #include "scene/gui/tab_container.h" diff --git a/tools/editor/property_editor.cpp b/tools/editor/property_editor.cpp index 763734f035..246785932d 100644 --- a/tools/editor/property_editor.cpp +++ b/tools/editor/property_editor.cpp @@ -2142,6 +2142,7 @@ void PropertyEditor::set_item_text(TreeItem *p_item, int p_type, const String& p if (obj->get( p_name ).get_type() == Variant::NIL || obj->get( p_name ).operator RefPtr().is_null()) { p_item->set_text(1,"<null>"); + p_item->set_icon(1,Ref<Texture>()); Dictionary d = p_item->get_metadata(0); int hint=d.has("hint")?d["hint"].operator int():-1; @@ -3349,6 +3350,7 @@ void PropertyEditor::update_tree() { if (obj->get( p.name ).get_type() == Variant::NIL || obj->get( p.name ).operator RefPtr().is_null()) { item->set_text(1,"<null>"); + item->set_icon(1,Ref<Texture>()); } else { RES res = obj->get( p.name ).operator RefPtr(); @@ -3934,6 +3936,7 @@ void PropertyEditor::_bind_methods() { ObjectTypeDB::bind_method( "_filter_changed",&PropertyEditor::_filter_changed); ObjectTypeDB::bind_method( "update_tree",&PropertyEditor::update_tree); ObjectTypeDB::bind_method( "_resource_preview_done",&PropertyEditor::_resource_preview_done); + ObjectTypeDB::bind_method( "refresh",&PropertyEditor::refresh); ObjectTypeDB::bind_method(_MD("get_drag_data_fw"), &PropertyEditor::get_drag_data_fw); ObjectTypeDB::bind_method(_MD("can_drop_data_fw"), &PropertyEditor::can_drop_data_fw); diff --git a/tools/editor/scene_tree_dock.cpp b/tools/editor/scene_tree_dock.cpp index 5124505b90..30ffdf6664 100644 --- a/tools/editor/scene_tree_dock.cpp +++ b/tools/editor/scene_tree_dock.cpp @@ -49,11 +49,37 @@ void SceneTreeDock::_unhandled_key_input(InputEvent p_event) { if (!p_event.key.pressed || p_event.key.echo) return; + if (ED_IS_SHORTCUT("scene_tree/add_child_node", p_event)) { + _tool_selected(TOOL_NEW); + } + else if (ED_IS_SHORTCUT("scene_tree/instance_scene", p_event)) { + _tool_selected(TOOL_INSTANCE); + } + else if (ED_IS_SHORTCUT("scene_tree/change_node_type", p_event)) { + _tool_selected(TOOL_REPLACE); + } + else if (ED_IS_SHORTCUT("scene_tree/duplicate", p_event)) { + _tool_selected(TOOL_DUPLICATE); + } + else if (ED_IS_SHORTCUT("scene_tree/add_script", p_event)) { + _tool_selected(TOOL_SCRIPT); + } + else if (ED_IS_SHORTCUT("scene_tree/move_up", p_event)) { + _tool_selected(TOOL_MOVE_UP); + } + else if (ED_IS_SHORTCUT("scene_tree/move_down", p_event)) { + _tool_selected(TOOL_MOVE_DOWN); + } + else if (ED_IS_SHORTCUT("scene_tree/reparent", p_event)) { + _tool_selected(TOOL_REPARENT); + } + else if (ED_IS_SHORTCUT("scene_tree/merge_from_scene", p_event)) { + _tool_selected(TOOL_MERGE_FROM_SCENE); + } + else if (ED_IS_SHORTCUT("scene_tree/save_branch_as_scene", p_event)) { + _tool_selected(TOOL_NEW_SCENE_FROM); + } switch(sc) { - case KEY_MASK_CMD|KEY_A: { _tool_selected(TOOL_NEW); } break; - case KEY_MASK_CMD|KEY_D: { _tool_selected(TOOL_DUPLICATE); } break; - case KEY_MASK_CMD|KEY_UP: { _tool_selected(TOOL_MOVE_UP); } break; - case KEY_MASK_CMD|KEY_DOWN: { _tool_selected(TOOL_MOVE_DOWN); } break; case KEY_MASK_SHIFT|KEY_DELETE: { _tool_selected(TOOL_ERASE, true); } break; case KEY_DELETE: { _tool_selected(TOOL_ERASE); } break; } @@ -1362,6 +1388,13 @@ void SceneTreeDock::_create() { } String newname=n->get_name(); + + List<Node*> to_erase; + for(int i=0;i<n->get_child_count();i++) { + if (n->get_child(i)->get_owner()==NULL && n->is_owned_by_parent()) { + to_erase.push_back(n->get_child(i)); + } + } n->replace_by(newnode,true); if (n==edited_scene) { @@ -1382,6 +1415,11 @@ void SceneTreeDock::_create() { memdelete(n); + while(to_erase.front()) { + memdelete(to_erase.front()->get()); + to_erase.pop_front(); + } + } @@ -1512,12 +1550,18 @@ static bool _has_visible_children(Node* p_node) { } + static Node* _find_last_visible(Node*p_node) { Node*last=NULL; - for(int i=0;i<p_node->get_child_count();i++) { - if (_is_node_visible(p_node->get_child(i))) { - last=p_node->get_child(i); + + bool collapsed = p_node->has_meta("_editor_collapsed") ? (bool)p_node->get_meta("_editor_collapsed") : false; + + if (!collapsed) { + for(int i=0;i<p_node->get_child_count();i++) { + if (_is_node_visible(p_node->get_child(i))) { + last=p_node->get_child(i); + } } } @@ -1588,18 +1632,27 @@ void SceneTreeDock::_normalize_drop(Node*& to_node, int &to_pos,int p_type) { Node* lower_sibling=NULL; - for(int i=to_node->get_index()+1;i<to_node->get_parent()->get_child_count();i++) { - Node *c =to_node->get_parent()->get_child(i); - if (_is_node_visible(c)) { - lower_sibling=c; + + + if (_has_visible_children(to_node) ) { + to_pos=0; + } else { + + + for(int i=to_node->get_index()+1;i<to_node->get_parent()->get_child_count();i++) { + Node *c =to_node->get_parent()->get_child(i); + if (_is_node_visible(c)) { + lower_sibling=c; + break; + } + } + + if (lower_sibling) { + to_pos=lower_sibling->get_index(); } - } - if (lower_sibling) { - to_pos=lower_sibling->get_index(); + to_node=to_node->get_parent(); } - - to_node=to_node->get_parent(); #if 0 //quite complicated, look for next visible in tree upper_sibling=_find_last_visible(upper_sibling); @@ -1660,13 +1713,11 @@ void SceneTreeDock::_nodes_dragged(Array p_nodes,NodePath p_to,int p_type) { } void SceneTreeDock::_tree_rmb(const Vector2& p_menu_pos) { - - if (!EditorNode::get_singleton()->get_edited_scene()) { menu->clear(); - menu->add_icon_item(get_icon("Add","EditorIcons"),TTR("New Scene Root"),TOOL_NEW,KEY_MASK_CMD|KEY_A); - menu->add_icon_item(get_icon("Instance","EditorIcons"),TTR("Inherit Scene"),TOOL_INSTANCE); + menu->add_icon_shortcut(get_icon("Add","EditorIcons"), ED_GET_SHORTCUT("scene_tree/add_child_node"), TOOL_NEW); + menu->add_icon_shortcut(get_icon("Instance","EditorIcons"), ED_GET_SHORTCUT("scene_tree/instance_scene"), TOOL_INSTANCE); menu->set_size(Size2(1,1)); menu->set_pos(p_menu_pos); @@ -1683,31 +1734,31 @@ void SceneTreeDock::_tree_rmb(const Vector2& p_menu_pos) { if (selection.size()==1) { - menu->add_icon_item(get_icon("Add","EditorIcons"),TTR("Add Child Node"),TOOL_NEW,KEY_MASK_CMD|KEY_A); - menu->add_icon_item(get_icon("Instance","EditorIcons"),TTR("Instance Child Scene"),TOOL_INSTANCE); + menu->add_icon_shortcut(get_icon("Add","EditorIcons"), ED_GET_SHORTCUT("scene_tree/add_child_node"), TOOL_NEW); + menu->add_icon_shortcut(get_icon("Instance","EditorIcons"), ED_GET_SHORTCUT("scene_tree/instance_scene"), TOOL_INSTANCE); menu->add_separator(); - menu->add_icon_item(get_icon("Reload","EditorIcons"),TTR("Change Type"),TOOL_REPLACE); + menu->add_icon_shortcut(get_icon("Reload","EditorIcons"),ED_GET_SHORTCUT("scene_tree/change_node_type"), TOOL_REPLACE); //menu->add_separator(); moved to their own dock //menu->add_icon_item(get_icon("Groups","EditorIcons"),TTR("Edit Groups"),TOOL_GROUP); //menu->add_icon_item(get_icon("Connect","EditorIcons"),TTR("Edit Connections"),TOOL_CONNECT); menu->add_separator(); - menu->add_icon_item(get_icon("Script","EditorIcons"),TTR("Add Script"),TOOL_SCRIPT); + menu->add_icon_shortcut(get_icon("Script","EditorIcons"),ED_GET_SHORTCUT("scene_tree/add_script"), TOOL_SCRIPT); menu->add_separator(); } - menu->add_icon_item(get_icon("Up","EditorIcons"),TTR("Move Up"),TOOL_MOVE_UP,KEY_MASK_CMD|KEY_UP); - menu->add_icon_item(get_icon("Down","EditorIcons"),TTR("Move Down"),TOOL_MOVE_DOWN,KEY_MASK_CMD|KEY_DOWN); - menu->add_icon_item(get_icon("Duplicate","EditorIcons"),TTR("Duplicate"),TOOL_DUPLICATE,KEY_MASK_CMD|KEY_D); - menu->add_icon_item(get_icon("Reparent","EditorIcons"),TTR("Reparent"),TOOL_REPARENT); + menu->add_icon_shortcut(get_icon("Up","EditorIcons"),ED_GET_SHORTCUT("scene_tree/move_up"), TOOL_MOVE_UP); + menu->add_icon_shortcut(get_icon("Down","EditorIcons"),ED_GET_SHORTCUT("scene_tree/move_down"), TOOL_MOVE_DOWN); + menu->add_icon_shortcut(get_icon("Duplicate","EditorIcons"),ED_GET_SHORTCUT("scene_tree/duplicate"), TOOL_DUPLICATE); + menu->add_icon_shortcut(get_icon("Reparent","EditorIcons"),ED_GET_SHORTCUT("scene_tree/reparent"), TOOL_REPARENT); if (selection.size()==1) { menu->add_separator(); - menu->add_icon_item(get_icon("Blend","EditorIcons"),TTR("Merge From Scene"),TOOL_MERGE_FROM_SCENE); - menu->add_icon_item(get_icon("Save","EditorIcons"),TTR("Save Branch as Scene"),TOOL_NEW_SCENE_FROM); + menu->add_icon_shortcut(get_icon("Blend","EditorIcons"),ED_GET_SHORTCUT("scene_tree/merge_from_scene"), TOOL_MERGE_FROM_SCENE); + menu->add_icon_shortcut(get_icon("Save","EditorIcons"),ED_GET_SHORTCUT("scene_tree/save_branch_as_scene"), TOOL_NEW_SCENE_FROM); } menu->add_separator(); - menu->add_icon_item(get_icon("Remove","EditorIcons"),TTR("Delete Node(s)"),TOOL_ERASE,KEY_DELETE); + menu->add_icon_item(get_icon("Remove","EditorIcons"),TTR("Delete Node(s)"), TOOL_ERASE, KEY_DELETE); menu->set_size(Size2(1,1)); menu->set_pos(p_menu_pos); @@ -1774,15 +1825,28 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor,Node *p_scene_root,EditorSelec HBoxContainer *filter_hbc = memnew( HBoxContainer ); ToolButton *tb; + ED_SHORTCUT("scene_tree/add_child_node",TTR("Add Child Node"), KEY_MASK_CMD|KEY_A); + ED_SHORTCUT("scene_tree/instance_scene",TTR("Instance Child Scene")); + ED_SHORTCUT("scene_tree/change_node_type", TTR("Change Type")); + ED_SHORTCUT("scene_tree/add_script", TTR("Add Script")); + ED_SHORTCUT("scene_tree/move_up", TTR("Move Up"), KEY_MASK_CMD | KEY_UP); + ED_SHORTCUT("scene_tree/move_down", TTR("Move Down"), KEY_MASK_CMD | KEY_DOWN); + ED_SHORTCUT("scene_tree/duplicate", TTR("Duplicate"),KEY_MASK_CMD | KEY_D); + ED_SHORTCUT("scene_tree/reparent", TTR("Reparent")); + ED_SHORTCUT("scene_tree/merge_from_scene", TTR("Merge From Scene")); + ED_SHORTCUT("scene_tree/save_branch_as_scene", TTR("Save Branch as Scene")); + tb = memnew( ToolButton ); tb->connect("pressed",this,"_tool_selected",make_binds(TOOL_NEW, false)); - tb->set_tooltip(TTR("Add/Create a New Node")+"\n("+keycode_get_string(KEY_MASK_CMD|KEY_A)+")"); + tb->set_tooltip(TTR("Add/Create a New Node")); + tb->set_shortcut(ED_GET_SHORTCUT("scene_tree/add_child_node")); filter_hbc->add_child(tb); button_add=tb; tb = memnew( ToolButton ); tb->connect("pressed",this,"_tool_selected",make_binds(TOOL_INSTANCE, false)); tb->set_tooltip(TTR("Instance a scene file as a Node. Creates an inherited scene if no root node exists.")); + tb->set_shortcut(ED_GET_SHORTCUT("scene_tree/instance_scene")); filter_hbc->add_child(tb); button_instance=tb; diff --git a/tools/editor/scene_tree_editor.cpp b/tools/editor/scene_tree_editor.cpp index 2de6fc5cf2..a155f0c0cf 100644 --- a/tools/editor/scene_tree_editor.cpp +++ b/tools/editor/scene_tree_editor.cpp @@ -653,6 +653,8 @@ void SceneTreeEditor::_notification(int p_what) { inheritance_menu->set_item_icon(2,get_icon("Load","EditorIcons")); clear_inherit_confirm->connect("confirmed",this,"_subscene_option",varray(SCENE_MENU_CLEAR_INHERITANCE_CONFIRM)); + EditorSettings::get_singleton()->connect("settings_changed",this,"_editor_settings_changed"); + // get_scene()->connect("tree_changed",this,"_tree_changed",Vector<Variant>(),CONNECT_DEFERRED); // get_scene()->connect("node_removed",this,"_node_removed",Vector<Variant>(),CONNECT_DEFERRED); @@ -665,6 +667,7 @@ void SceneTreeEditor::_notification(int p_what) { tree->disconnect("item_collapsed",this,"_cell_collapsed"); clear_inherit_confirm->disconnect("confirmed",this,"_subscene_option"); get_tree()->disconnect("node_configuration_warning_changed",this,"_warning_changed"); + EditorSettings::get_singleton()->disconnect("settings_changed",this,"_editor_settings_changed"); } } @@ -1048,6 +1051,21 @@ void SceneTreeEditor::_warning_changed(Node* p_for_node) { } + +void SceneTreeEditor::_editor_settings_changed() { + bool enable_rl = EditorSettings::get_singleton()->get("scenetree_editor/draw_relationship_lines"); + Color rl_color = EditorSettings::get_singleton()->get("scenetree_editor/relationship_line_color"); + + if (enable_rl) { + tree->add_constant_override("draw_relationship_lines",1); + tree->add_color_override("relationship_line_color", rl_color); + } + else + tree->add_constant_override("draw_relationship_lines",0); + +} + + void SceneTreeEditor::_bind_methods() { ObjectTypeDB::bind_method("_tree_changed",&SceneTreeEditor::_tree_changed); @@ -1068,6 +1086,8 @@ void SceneTreeEditor::_bind_methods() { ObjectTypeDB::bind_method("_node_script_changed",&SceneTreeEditor::_node_script_changed); ObjectTypeDB::bind_method("_node_visibility_changed",&SceneTreeEditor::_node_visibility_changed); + ObjectTypeDB::bind_method("_editor_settings_changed", &SceneTreeEditor::_editor_settings_changed); + ObjectTypeDB::bind_method(_MD("get_drag_data_fw"), &SceneTreeEditor::get_drag_data_fw); ObjectTypeDB::bind_method(_MD("can_drop_data_fw"), &SceneTreeEditor::can_drop_data_fw); ObjectTypeDB::bind_method(_MD("drop_data_fw"), &SceneTreeEditor::drop_data_fw); @@ -1252,4 +1272,3 @@ SceneTreeDialog::SceneTreeDialog() { SceneTreeDialog::~SceneTreeDialog() { } - diff --git a/tools/editor/scene_tree_editor.h b/tools/editor/scene_tree_editor.h index e184891200..79b7a64468 100644 --- a/tools/editor/scene_tree_editor.h +++ b/tools/editor/scene_tree_editor.h @@ -34,6 +34,7 @@ #include "scene/gui/dialogs.h" #include "undo_redo.h" #include "editor_data.h" +#include "editor_settings.h" /** @author Juan Linietsky <reduzio@gmail.com> */ @@ -132,6 +133,8 @@ class SceneTreeEditor : public Control { void _warning_changed(Node* p_for_node); + void _editor_settings_changed(); + Timer* update_timer; public: diff --git a/tools/editor/scenes.cpp b/tools/editor/scenes.cpp deleted file mode 100644 index e6569c98a9..0000000000 --- a/tools/editor/scenes.cpp +++ /dev/null @@ -1,33 +0,0 @@ -/*************************************************************************/ -/* scenes.cpp */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#include "scenes.h" - -Scenes::Scenes() -{ -} diff --git a/tools/editor/scenes.h b/tools/editor/scenes.h deleted file mode 100644 index bae9ef65f0..0000000000 --- a/tools/editor/scenes.h +++ /dev/null @@ -1,37 +0,0 @@ -/*************************************************************************/ -/* scenes.h */ -/*************************************************************************/ -/* This file is part of: */ -/* GODOT ENGINE */ -/* http://www.godotengine.org */ -/*************************************************************************/ -/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ -/* */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the */ -/* "Software"), to deal in the Software without restriction, including */ -/* without limitation the rights to use, copy, modify, merge, publish, */ -/* distribute, sublicense, and/or sell copies of the Software, and to */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions: */ -/* */ -/* The above copyright notice and this permission notice shall be */ -/* included in all copies or substantial portions of the Software. */ -/* */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/*************************************************************************/ -#ifndef SCENES_H -#define SCENES_H - -class Scenes{ -public: - Scenes(); -}; - -#endif // SCENES_H diff --git a/tools/editor/script_create_dialog.cpp b/tools/editor/script_create_dialog.cpp index e88d603b30..e93a40efbc 100644 --- a/tools/editor/script_create_dialog.cpp +++ b/tools/editor/script_create_dialog.cpp @@ -185,6 +185,7 @@ void ScriptCreateDialog::_built_in_pressed() { void ScriptCreateDialog::_browse_path() { file_browse->set_mode(EditorFileDialog::MODE_SAVE_FILE); + file_browse->set_disable_overwrite_warning(true); file_browse->clear_filters(); List<String> extensions; diff --git a/tools/pck/pck_packer.cpp b/tools/pck/pck_packer.cpp index 228d37df7c..04b88ea028 100644 --- a/tools/pck/pck_packer.cpp +++ b/tools/pck/pck_packer.cpp @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* pkc_packer.cpp */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "pck_packer.h" #include "core/os/file_access.h" diff --git a/tools/pck/pck_packer.h b/tools/pck/pck_packer.h index 2bb51128e9..b1182335e2 100644 --- a/tools/pck/pck_packer.h +++ b/tools/pck/pck_packer.h @@ -1,3 +1,31 @@ +/*************************************************************************/ +/* pck_packer.h */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* http://www.godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur. */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ #include "core/reference.h" class FileAccess; diff --git a/tools/translations/Makefile b/tools/translations/Makefile index 8f336694e8..bea20e877d 100644 --- a/tools/translations/Makefile +++ b/tools/translations/Makefile @@ -12,7 +12,7 @@ update: merge: @for po in $(POFILES); do \ echo -e "\nMerging $$po..."; \ - msgmerge -w 80 -C $$po $$po $(TEMPLATE) > "$$po".new; \ + msgmerge -w 79 -C $$po $$po $(TEMPLATE) > "$$po".new; \ mv -f "$$po".new $$po; \ done diff --git a/tools/translations/ar.po b/tools/translations/ar.po new file mode 100644 index 0000000000..772404006a --- /dev/null +++ b/tools/translations/ar.po @@ -0,0 +1,6102 @@ +# Arabic translation of the Godot Engine editor +# Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community +# This file is distributed under the same license as the Godot source code. +# +# Mohammmad Khashashneh <mohammad.rasmi@gmail.com>, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"PO-Revision-Date: 2016-06-19 08:49+0000\n" +"Last-Translator: Mohammmad Khashashneh <mohammad.rasmi@gmail.com>\n" +"Language-Team: Arabic <https://hosted.weblate.org/projects/godot-engine/" +"godot/ar/>\n" +"Language: ar\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Weblate 2.7-dev\n" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite to display frames." +msgstr "" +"ليتم إظهار الأطر (اللقطات) ÙÙŠ الAnimatedSprite (النقوش Ø§Ù„Ù…ØªØØ±ÙƒØ©), يجب تكوين " +"مصدر لها من نوع SpriteFrames Ùˆ ضبط خاصية الFrames (الأطر) بها. " + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the 'texture' " +"property." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" + +#: scene/2d/particles_2d.cpp +msgid "Path property must point to a valid Particles2D node to work." +msgstr "" + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "" + +#: scene/2d/sample_player_2d.cpp scene/audio/sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SamplePlayer to play sound." +msgstr "" + +#: scene/2d/sprite.cpp +msgid "" +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." +msgstr "" + +#: scene/2d/sprite.cpp +msgid "" +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." +msgstr "" + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnable2D works best when used with the edited scene root directly " +"as parent." +msgstr "" + +#: scene/3d/body_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/body_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." +msgstr "" + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" + +#: scene/3d/spatial_sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SpatialSamplePlayer to play sound." +msgstr "" + +#: scene/3d/sprite_3d.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite3D to display frames." +msgstr "" + +#: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Cancel" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "OK" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Recognized" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Files (*)" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/scenes_dock.cpp +msgid "Open" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a File" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open File(s)" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a Directory" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a File or Directory" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Save a File" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Create Folder" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/script_create_dialog.cpp +msgid "Path:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Directories & Files:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "File:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Filter:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_plugin_settings.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Name:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Could not create folder." +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Must use a valid extension." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Shift+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Alt+" +msgstr "" + +#: scene/gui/input_action.cpp +msgid "Ctrl+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Meta+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Device" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Button" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Left Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Right Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Middle Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Up." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Down." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Axis" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Cut" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Copy" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Paste" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "Select All" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_log.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/rich_text_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Clear" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Undo" +msgstr "" + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." +msgstr "" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error initializing FreeType." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Unknown font format." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error loading font." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font size." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Disabled" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "All Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transition" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transform" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Value" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Call" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Up" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Down" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove Anim Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Set Transitions to:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Rename" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Value Mode" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Node Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Selection Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Delete Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Discrete" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Move Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale From Cursor" +msgstr "" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Duplicate Transposed" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Next Step" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Prev Step" +msgstr "" + +#: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp +msgid "Linear" +msgstr "" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In-Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out-In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Transitions" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Optimize Animation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "" + +#: tools/editor/animation_editor.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/particles_editor_plugin.cpp +#: tools/editor/project_manager.cpp tools/editor/script_create_dialog.cpp +msgid "Create" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create & Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Len" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create Typed Value Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Scale Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Call Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Animation zoom." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Length (s):" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Animation length (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Step (s):" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Cursor step snap (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable looping in animation." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable interpolation when looping animation." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track up." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track down." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove selected track." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Track tools" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable editing of individual keys by clicking them." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim. Optimizer" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Linear Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Angular Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Optimize" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Transition" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale Ratio:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Call Functions in Which Node?" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove invalid keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-up all animations" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Search:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Sort:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Reverse" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Category:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "All" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Site:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Support.." +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Official" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Community" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Testing" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Method List For '%s':" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: tools/editor/call_dialog.cpp tools/editor/connections_dialog.cpp +#: tools/editor/import_settings.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +#: tools/editor/run_settings_dialog.cpp tools/editor/settings_config_dialog.cpp +msgid "Close" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Method List:" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Arguments:" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Return:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Go to Line" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Line Number:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "No Matches" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d Ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace All" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Match Case" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Whole Words" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Selection Only" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Search" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +msgid "Find" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Next" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Not found!" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace By" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Case Sensitive" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Backwards" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Prompt On Replace" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Skip" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Line:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Col:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Method in target Node must be specified!" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Conect To Node:" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Add" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Remove" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Add Extra Call Argument:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Extra Call Arguments:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Path to Node:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Make Function" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Deferred" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Create Subscription" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect.." +msgstr "" + +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Disconnect" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp +msgid "Signals" +msgstr "" + +#: tools/editor/create_dialog.cpp +msgid "Create New" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +msgid "Matches:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will not take effect unless reloaded." +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will take effect when reloaded." +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Resource" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/project_manager.cpp +#: tools/editor/project_settings.cpp +msgid "Path" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Remove selected files from the project? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Scene failed to load due to missing dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Open Anyway" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owns" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +msgid "Orphan Resource Explorer" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Delete selected files?" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp +msgid "Delete" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating Scene" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Storing local changes.." +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating scene.." +msgstr "" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp tools/editor/scenes_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Preview:" +msgstr "" + +#: tools/editor/editor_file_system.cpp +msgid "Cannot go into subdir:" +msgstr "" + +#: tools/editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Classes" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Class List:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/property_editor.cpp +msgid "Class:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Inherits:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Inherited by:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Brief Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Public Methods:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Members:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "GUI Theme Items:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Signals:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Constants:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Method Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Text" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Added:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Removed:" +msgstr "" + +#: tools/editor/editor_import_export.cpp tools/editor/project_export.cpp +msgid "Error saving atlas:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Could not save atlas subtexture:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Storing File:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Packing" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Exporting for %s" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Setting Up.." +msgstr "" + +#: tools/editor/editor_log.cpp +msgid " Output:" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +msgid "Re-Importing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Importing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Node From Scene" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scenes_dock.cpp +msgid "Re-Import.." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Error saving resource!" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Save Resource As.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "I see.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error while saving." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Saving Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Analyzing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Failed to load resource." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open export templates zip." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Loading Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Params" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Paste Params" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Built-In" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open in Help" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"No main scene has ever been defined.\n" +"Select one from \"Project Settings\" under the 'application' category." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Script.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Yes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close scene? (Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Please save the scene first." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Translatable Strings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Run Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Open Project Manager? \n" +"(Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "Ugh" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error loading scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load Layout" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Default" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Delete Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s) or folder(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Inherited Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Goto Prev. Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Recent" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Filter Files.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Convert To.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Translatable Strings.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "MeshLibrary.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "TileSet.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Redo" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Run Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Project Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import assets to the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Import" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Tools" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export the project to many platforms." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Play" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause the scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Stop the scene." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stop" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the edited scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play custom scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Debug options" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Deploy with Remote Debug" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Small Deploy with Network FS" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is enabled, export or deploy will produce a minimal " +"executable.\n" +"The filesystem will be provided from the project by the editor over the " +"network.\n" +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " +"running game if this option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Navigation meshes and polygons will be visible on the running game if this " +"option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Scene Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any changes made to the scene in the editor " +"will be replicated in the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Script Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any script that is saved will be reloaded on " +"the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Settings" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp +msgid "Editor Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Editor Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Install Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "About" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Alerts when an external resource has changed." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Spins when the editor window repaints!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Always" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Inspector" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Save As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Object properties." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "FileSystem" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Output" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +#: tools/editor/import_settings.cpp +msgid "Re-Import" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_plugin_settings.cpp +msgid "Update" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks from the Godot community!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export Project" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Password:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load Errors" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Version:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Fixed Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp tools/editor/script_editor_debugger.cpp +msgid "Time:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Please wait for scan to complete." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Current scene must be saved to re-import." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Save & Re-Import" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import Changed Resources" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "" + +#: tools/editor/editor_settings.cpp +msgid "Default (Same as Editor)" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "" + +#: tools/editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Add to Group" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "" + +#: tools/editor/import_settings.cpp +msgid "Imported Resources" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "No bit masks to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must be a complete resource path." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must exist." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Save path is empty!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Import BitMasks" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Target Path:" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Accept" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Bit Mask" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No source font file!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No target font resource!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Can't load/process source font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Couldn't save font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Dest Resource:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "The quick brown fox jumps over the lazy dog." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Test:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Options:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font Import" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"This file is already a Godot font file, please supply a BMFont type file " +"instead." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Failed opening as BMFont file." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font custom source." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Font" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "No meshes to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Single Mesh Import" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Source Mesh(es):" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Surface %d" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "No samples to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Import Audio Samples" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Source Sample(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Audio Sample" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "New Clip" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Animation Options" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Flags" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Bake FPS:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Optimizer" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Linear Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angular Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angle" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Clips" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/project_manager.cpp tools/editor/project_settings.cpp +msgid "Name" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Start(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "End(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Loop" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Filters" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error importing scene." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import 3D Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source Scene:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Same as Target Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Shared" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Target Texture Folder:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Post-Process Script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Custom Root Node Type:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Auto" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "The Following Files are Missing:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Anyway" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import & Open" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Edited scene has not been saved, open imported scene anyway?" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Importing Scene.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Running Custom Script.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error running post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Can't import a file over itself:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't localize path: %s (already local)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Saving.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "3D Scene Animation" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Uncompressed" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossless (PNG)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossy (WebP)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress (VRAM)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Format" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Compression Quality (WebP):" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Options" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Please specify some files!" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "At least one file needed for Atlas." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Error importing:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Only one file is required for large texture." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Max Texture Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for Atlas (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cell Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Textures (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Base Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 2D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 3D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "2D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "3D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "" +"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " +"the project." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Crop empty space." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Load Source Image" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Slicing" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Inserting" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Saving" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save large texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Build Atlas For:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Loading Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't load image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Converting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cropping Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Blitting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save atlas image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save converted texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid translation source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Column" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Language" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No items to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No target path!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translations" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Couldn't import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translation" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Source CSV:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Ignore First Row" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Compress" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Add to Project (engine.cfg)" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Languages:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Translation" +msgstr "" + +#: tools/editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Groups" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Select a Node to edit Signals and Groups." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Invalid animation name!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Animation name already exists!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to copy!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation resource on clipboard!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to edit!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create new animation in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save the current animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Target Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Copy Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_create_dialog.cpp +msgid "Error!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Animation" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "New name:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Start!" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 0:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 1:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Current:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Add Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Delete Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Rename" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Import Animations.." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Filters.." +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing %d Triangles:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Light Baker Setup:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing Geometry" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Fixing Lights" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Making BVH" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Light Octree" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Octree Texture" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Transfer to Lightmaps:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Allocating Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Baking Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Post-Processing Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "BakedLightInstance does not contain a BakedLight resource." +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Bake!" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Reset the lightmap octree baking process (start over)." +msgstr "" + +#: tools/editor/plugins/camera_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Preview" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Pivot" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Action" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit CanvasItem" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom (%):" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Select Mode (Q)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode (W)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode (E)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Edit" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Show Grid" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Expand to Parent" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom In" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Out" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Reset" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Set.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchor" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Keys (Ins)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set a Value" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap (Pixels):" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create a new polygon from scratch." +msgstr "" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Poly3D" +msgstr "" + +#: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Add/Remove Color Ramp Point" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Color Ramp" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Creating Mesh Library" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Thumbnail.." +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import from Scene" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Edit existing polygon:" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "LMB: Move Point." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Ctrl+LMB: Split Segment." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "RMB: Erase Point." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh.." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Parent has no solid faces to populate." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Couldn't map area." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Remove Poly And Point" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image.." +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Set Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry (faces)." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Faces contain no area!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Mesh" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Node" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Clear Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Positions:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Fill:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Surface" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Select Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Close Curve" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Enable Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Load Resource" +msgstr "" + +#: tools/editor/plugins/rich_text_editor_plugin.cpp +msgid "Parse BBCode" +msgstr "" + +#: tools/editor/plugins/sample_editor_plugin.cpp +msgid "Length:" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Open Sample File(s)" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "ERROR: Couldn't load sample!" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Add Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Rename Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Delete Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "16 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "8 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stereo" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Mono" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Format" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Pitch" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "File" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_editor.cpp +msgid "New" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Prev" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Move Up" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Move Down" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Left" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Right" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Comment" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Clone Down" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Complete Symbol" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Trim Trailing Whitespace" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Auto Indent" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Soft Reload Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Previous" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Replace.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Function.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Goto Line.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debug" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Remove All Breakpoints" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Next Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Previous Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Over" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Into" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Break" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Continue" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Window" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Left" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Right" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Contextual Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Tutorials" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Open https://godotengine.org at tutorials section." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Classes" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the class hierarchy." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Debugger" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Vertex" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Fragment" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Lighting" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Toggle Rot Only" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Default Value" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change XForm Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Texture Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Cubemap Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Comment" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Color Ramp" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Input Name" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Connect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Disconnect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Remove Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Move Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Duplicate Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Delete Shader Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Cyclic Connection Link" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Missing Input Connections" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling to %s%%." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top (Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom (Shift+Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left (Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right (Shift+Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front (Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear (Shift+Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective (Num5)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal (Num5)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Environment" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Selection (F)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view (Ctrl+Shift+F)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "No scene selected to instance!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Instance at Cursor" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Could not instance scene!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode (R)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Local Coords" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog.." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default Light" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default sRGB" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Shadeless" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Default Light Normal:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Ambient Light Color:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Up" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Down" +msgstr "" + +#: tools/editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox Preview:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Texture Region Editor" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Scale Region Editor" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "" +"No texture in this node.\n" +"Set a texture to be able to edit region." +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Can't save theme to file:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_export.cpp +msgid "Options" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Have,Many,Several,Options!" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Style" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase selection" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Find tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror X" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror Y" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 0 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 90 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 180 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 270 degrees" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Could not find tile:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Item name or ID:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Error" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Edit Script Options" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Please export outside the project folder!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error exporting project!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error writing the project PCK!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "No exporter for platform '%s' yet." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Include" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Change Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name can't be empty!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Invalid character in group name!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name already exists!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Add Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Delete Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas Preview" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export Settings" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Target" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export to Platform" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export selected resources (including dependencies)." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all resources in the project." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all files in the project directory." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources to Export:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Action" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "" +"Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert text scenes to binary on export." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep Original" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy, WebP)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for RAM (BC/PVRTC/ETC)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert Images (*.png):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy) Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink All Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Formats:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Groups" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Groups:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Disk" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress RAM" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Lossy Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink By:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Preview Atlas" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Filter:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Select None" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Samples" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sample Conversion Mode: (.wav files):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress (RAM - IMA-ADPCM)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sampling Rate Limit (Hz):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trim" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trailing Silence:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Text" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compiled" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Project PCK" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export.." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Preset:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, the path must exist!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must not exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Imported Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Couldn't create engine.cfg in project path." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path (Must Exist):" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Name:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Create New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Browse" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Game Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "That's a BINGO!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to open more than one projects?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to run more than one projects?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Remove project from the list? (Folder contents will not be modified)" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project List" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Run" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Scan" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Exit" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Key " +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Axis" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid action (anything goes but '/' or ':')." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action '%s' already exists!" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Rename Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Control+" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Press a Key.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Left Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Right Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Middle Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 6" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 7" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 8" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 9" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Axis Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Erase Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Toggle Persisting" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Error saving settings." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Settings saved OK." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Valid characters:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing engine class name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing buit-in type name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing global constant name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Autoload '%s' already exists!" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Rename Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Move Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Remapped Path" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resource Remap Add Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Change Resource Remap Language" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap Option" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Enable" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Project Settings (engine.cfg)" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "General" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +msgid "Property:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Del" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Copy To Platform.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Input Map" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Device:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Localization" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resources:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps by Locale:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Locale" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "AutoLoad" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Node Name:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "List:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Singleton" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Plugins" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Preset.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Zero" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "File.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Dir.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Load" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Assign" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Couldn't load image" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "On" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Properties:" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Global" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Sections:" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Could not execute PVRTC tool:" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Can't load back converted image using PVRTC tool:" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Create New Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Open Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Save Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Resource Tools" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Make Local" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "OK :(" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)?" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save New Scene As.." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Makes Sense!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "New Scene Root" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Inherit Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Groups" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Connections" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Script" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save Branch as Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add/Create a New Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "" +"This item cannot be made visible because the parent is hidden. Unhide the " +"parent first." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle Spatial Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle CanvasItem Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Editable Children" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Load As Placeholder" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear!" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination files, doing nothing." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination paths, doing nothing." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Can't move directories to within themselves." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Can't operate on '..'" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Pick New Name and Location For:" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "No files selected!" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Instance" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Edit Dependencies.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "View Owners.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Copy Path" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Rename or Move.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Move To.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Info" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Show In File Manager" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Previous Directory" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Next Directory" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Move" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid parent class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid chars:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "N/A" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Parent class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid path!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Could not create script in filesystem." +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is empty" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is not local" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid base path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "File exists" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid extension" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Built-In Script" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Create Node Script" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Warning" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Function:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Child Process Connected" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Variable" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Trace (if applicable):" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Inspector" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Scene Tree:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Object Properties: " +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Value" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Video Mem" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Type" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "" + +#: tools/editor/settings_config_dialog.cpp +msgid "Shortcuts" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Notifier Extents" +msgstr "" diff --git a/tools/translations/cs.po b/tools/translations/cs.po new file mode 100644 index 0000000000..8a1e596942 --- /dev/null +++ b/tools/translations/cs.po @@ -0,0 +1,6093 @@ +# Czech translation of the Godot Engine editor +# Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community +# This file is distributed under the same license as the Godot source code. +# +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"Language: cs\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite to display frames." +msgstr "" + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the 'texture' " +"property." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" + +#: scene/2d/particles_2d.cpp +msgid "Path property must point to a valid Particles2D node to work." +msgstr "" + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "" + +#: scene/2d/sample_player_2d.cpp scene/audio/sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SamplePlayer to play sound." +msgstr "" + +#: scene/2d/sprite.cpp +msgid "" +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." +msgstr "" + +#: scene/2d/sprite.cpp +msgid "" +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." +msgstr "" + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnable2D works best when used with the edited scene root directly " +"as parent." +msgstr "" + +#: scene/3d/body_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/body_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." +msgstr "" + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" + +#: scene/3d/spatial_sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SpatialSamplePlayer to play sound." +msgstr "" + +#: scene/3d/sprite_3d.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite3D to display frames." +msgstr "" + +#: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Cancel" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "OK" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Recognized" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Files (*)" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/scenes_dock.cpp +msgid "Open" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a File" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open File(s)" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a Directory" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a File or Directory" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Save a File" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Create Folder" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/script_create_dialog.cpp +msgid "Path:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Directories & Files:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "File:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Filter:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_plugin_settings.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Name:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Could not create folder." +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Must use a valid extension." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Shift+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Alt+" +msgstr "" + +#: scene/gui/input_action.cpp +msgid "Ctrl+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Meta+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Device" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Button" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Left Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Right Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Middle Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Up." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Down." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Axis" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Cut" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Copy" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Paste" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "Select All" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_log.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/rich_text_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Clear" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Undo" +msgstr "" + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." +msgstr "" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error initializing FreeType." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Unknown font format." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error loading font." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font size." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Disabled" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "All Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transition" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transform" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Value" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Call" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Up" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Down" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove Anim Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Set Transitions to:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Rename" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Value Mode" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Node Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Selection Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Delete Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Discrete" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Move Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale From Cursor" +msgstr "" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Duplicate Transposed" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Next Step" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Prev Step" +msgstr "" + +#: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp +msgid "Linear" +msgstr "" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In-Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out-In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Transitions" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Optimize Animation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "" + +#: tools/editor/animation_editor.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/particles_editor_plugin.cpp +#: tools/editor/project_manager.cpp tools/editor/script_create_dialog.cpp +msgid "Create" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create & Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Len" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create Typed Value Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Scale Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Call Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Animation zoom." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Length (s):" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Animation length (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Step (s):" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Cursor step snap (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable looping in animation." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable interpolation when looping animation." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track up." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track down." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove selected track." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Track tools" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable editing of individual keys by clicking them." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim. Optimizer" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Linear Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Angular Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Optimize" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Transition" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale Ratio:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Call Functions in Which Node?" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove invalid keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-up all animations" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Search:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Sort:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Reverse" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Category:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "All" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Site:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Support.." +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Official" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Community" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Testing" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Method List For '%s':" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: tools/editor/call_dialog.cpp tools/editor/connections_dialog.cpp +#: tools/editor/import_settings.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +#: tools/editor/run_settings_dialog.cpp tools/editor/settings_config_dialog.cpp +msgid "Close" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Method List:" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Arguments:" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Return:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Go to Line" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Line Number:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "No Matches" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d Ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace All" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Match Case" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Whole Words" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Selection Only" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Search" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +msgid "Find" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Next" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Not found!" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace By" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Case Sensitive" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Backwards" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Prompt On Replace" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Skip" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Line:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Col:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Method in target Node must be specified!" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Conect To Node:" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Add" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Remove" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Add Extra Call Argument:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Extra Call Arguments:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Path to Node:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Make Function" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Deferred" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Create Subscription" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect.." +msgstr "" + +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Disconnect" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp +msgid "Signals" +msgstr "" + +#: tools/editor/create_dialog.cpp +msgid "Create New" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +msgid "Matches:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will not take effect unless reloaded." +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will take effect when reloaded." +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Resource" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/project_manager.cpp +#: tools/editor/project_settings.cpp +msgid "Path" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Remove selected files from the project? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Scene failed to load due to missing dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Open Anyway" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owns" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +msgid "Orphan Resource Explorer" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Delete selected files?" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp +msgid "Delete" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating Scene" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Storing local changes.." +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating scene.." +msgstr "" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp tools/editor/scenes_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Preview:" +msgstr "" + +#: tools/editor/editor_file_system.cpp +msgid "Cannot go into subdir:" +msgstr "" + +#: tools/editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Classes" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Class List:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/property_editor.cpp +msgid "Class:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Inherits:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Inherited by:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Brief Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Public Methods:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Members:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "GUI Theme Items:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Signals:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Constants:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Method Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Text" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Added:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Removed:" +msgstr "" + +#: tools/editor/editor_import_export.cpp tools/editor/project_export.cpp +msgid "Error saving atlas:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Could not save atlas subtexture:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Storing File:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Packing" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Exporting for %s" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Setting Up.." +msgstr "" + +#: tools/editor/editor_log.cpp +msgid " Output:" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +msgid "Re-Importing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Importing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Node From Scene" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scenes_dock.cpp +msgid "Re-Import.." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Error saving resource!" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Save Resource As.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "I see.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error while saving." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Saving Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Analyzing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Failed to load resource." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open export templates zip." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Loading Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Params" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Paste Params" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Built-In" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open in Help" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"No main scene has ever been defined.\n" +"Select one from \"Project Settings\" under the 'application' category." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Script.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Yes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close scene? (Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Please save the scene first." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Translatable Strings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Run Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Open Project Manager? \n" +"(Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "Ugh" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error loading scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load Layout" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Default" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Delete Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s) or folder(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Inherited Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Goto Prev. Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Recent" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Filter Files.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Convert To.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Translatable Strings.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "MeshLibrary.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "TileSet.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Redo" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Run Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Project Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import assets to the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Import" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Tools" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export the project to many platforms." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Play" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause the scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Stop the scene." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stop" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the edited scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play custom scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Debug options" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Deploy with Remote Debug" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Small Deploy with Network FS" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is enabled, export or deploy will produce a minimal " +"executable.\n" +"The filesystem will be provided from the project by the editor over the " +"network.\n" +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " +"running game if this option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Navigation meshes and polygons will be visible on the running game if this " +"option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Scene Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any changes made to the scene in the editor " +"will be replicated in the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Script Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any script that is saved will be reloaded on " +"the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Settings" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp +msgid "Editor Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Editor Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Install Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "About" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Alerts when an external resource has changed." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Spins when the editor window repaints!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Always" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Inspector" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Save As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Object properties." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "FileSystem" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Output" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +#: tools/editor/import_settings.cpp +msgid "Re-Import" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_plugin_settings.cpp +msgid "Update" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks from the Godot community!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export Project" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Password:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load Errors" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Version:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Fixed Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp tools/editor/script_editor_debugger.cpp +msgid "Time:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Please wait for scan to complete." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Current scene must be saved to re-import." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Save & Re-Import" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import Changed Resources" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "" + +#: tools/editor/editor_settings.cpp +msgid "Default (Same as Editor)" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "" + +#: tools/editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Add to Group" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "" + +#: tools/editor/import_settings.cpp +msgid "Imported Resources" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "No bit masks to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must be a complete resource path." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must exist." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Save path is empty!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Import BitMasks" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Target Path:" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Accept" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Bit Mask" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No source font file!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No target font resource!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Can't load/process source font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Couldn't save font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Dest Resource:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "The quick brown fox jumps over the lazy dog." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Test:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Options:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font Import" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"This file is already a Godot font file, please supply a BMFont type file " +"instead." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Failed opening as BMFont file." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font custom source." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Font" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "No meshes to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Single Mesh Import" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Source Mesh(es):" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Surface %d" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "No samples to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Import Audio Samples" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Source Sample(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Audio Sample" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "New Clip" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Animation Options" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Flags" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Bake FPS:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Optimizer" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Linear Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angular Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angle" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Clips" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/project_manager.cpp tools/editor/project_settings.cpp +msgid "Name" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Start(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "End(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Loop" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Filters" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error importing scene." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import 3D Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source Scene:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Same as Target Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Shared" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Target Texture Folder:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Post-Process Script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Custom Root Node Type:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Auto" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "The Following Files are Missing:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Anyway" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import & Open" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Edited scene has not been saved, open imported scene anyway?" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Importing Scene.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Running Custom Script.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error running post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Can't import a file over itself:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't localize path: %s (already local)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Saving.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "3D Scene Animation" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Uncompressed" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossless (PNG)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossy (WebP)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress (VRAM)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Format" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Compression Quality (WebP):" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Options" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Please specify some files!" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "At least one file needed for Atlas." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Error importing:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Only one file is required for large texture." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Max Texture Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for Atlas (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cell Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Textures (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Base Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 2D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 3D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "2D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "3D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "" +"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " +"the project." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Crop empty space." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Load Source Image" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Slicing" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Inserting" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Saving" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save large texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Build Atlas For:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Loading Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't load image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Converting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cropping Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Blitting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save atlas image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save converted texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid translation source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Column" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Language" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No items to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No target path!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translations" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Couldn't import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translation" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Source CSV:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Ignore First Row" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Compress" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Add to Project (engine.cfg)" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Languages:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Translation" +msgstr "" + +#: tools/editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Groups" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Select a Node to edit Signals and Groups." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Invalid animation name!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Animation name already exists!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to copy!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation resource on clipboard!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to edit!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create new animation in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save the current animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Target Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Copy Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_create_dialog.cpp +msgid "Error!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Animation" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "New name:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Start!" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 0:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 1:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Current:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Add Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Delete Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Rename" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Import Animations.." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Filters.." +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing %d Triangles:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Light Baker Setup:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing Geometry" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Fixing Lights" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Making BVH" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Light Octree" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Octree Texture" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Transfer to Lightmaps:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Allocating Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Baking Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Post-Processing Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "BakedLightInstance does not contain a BakedLight resource." +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Bake!" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Reset the lightmap octree baking process (start over)." +msgstr "" + +#: tools/editor/plugins/camera_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Preview" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Pivot" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Action" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit CanvasItem" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom (%):" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Select Mode (Q)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode (W)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode (E)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Edit" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Show Grid" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Expand to Parent" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom In" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Out" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Reset" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Set.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchor" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Keys (Ins)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set a Value" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap (Pixels):" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create a new polygon from scratch." +msgstr "" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Poly3D" +msgstr "" + +#: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Add/Remove Color Ramp Point" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Color Ramp" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Creating Mesh Library" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Thumbnail.." +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import from Scene" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Edit existing polygon:" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "LMB: Move Point." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Ctrl+LMB: Split Segment." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "RMB: Erase Point." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh.." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Parent has no solid faces to populate." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Couldn't map area." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Remove Poly And Point" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image.." +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Set Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry (faces)." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Faces contain no area!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Mesh" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Node" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Clear Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Positions:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Fill:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Surface" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Select Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Close Curve" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Enable Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Load Resource" +msgstr "" + +#: tools/editor/plugins/rich_text_editor_plugin.cpp +msgid "Parse BBCode" +msgstr "" + +#: tools/editor/plugins/sample_editor_plugin.cpp +msgid "Length:" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Open Sample File(s)" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "ERROR: Couldn't load sample!" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Add Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Rename Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Delete Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "16 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "8 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stereo" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Mono" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Format" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Pitch" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "File" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_editor.cpp +msgid "New" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Prev" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Move Up" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Move Down" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Left" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Right" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Comment" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Clone Down" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Complete Symbol" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Trim Trailing Whitespace" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Auto Indent" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Soft Reload Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Previous" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Replace.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Function.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Goto Line.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debug" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Remove All Breakpoints" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Next Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Previous Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Over" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Into" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Break" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Continue" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Window" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Left" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Right" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Contextual Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Tutorials" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Open https://godotengine.org at tutorials section." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Classes" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the class hierarchy." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Debugger" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Vertex" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Fragment" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Lighting" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Toggle Rot Only" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Default Value" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change XForm Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Texture Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Cubemap Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Comment" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Color Ramp" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Input Name" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Connect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Disconnect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Remove Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Move Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Duplicate Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Delete Shader Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Cyclic Connection Link" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Missing Input Connections" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling to %s%%." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top (Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom (Shift+Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left (Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right (Shift+Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front (Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear (Shift+Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective (Num5)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal (Num5)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Environment" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Selection (F)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view (Ctrl+Shift+F)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "No scene selected to instance!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Instance at Cursor" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Could not instance scene!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode (R)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Local Coords" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog.." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default Light" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default sRGB" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Shadeless" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Default Light Normal:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Ambient Light Color:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Up" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Down" +msgstr "" + +#: tools/editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox Preview:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Texture Region Editor" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Scale Region Editor" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "" +"No texture in this node.\n" +"Set a texture to be able to edit region." +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Can't save theme to file:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_export.cpp +msgid "Options" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Have,Many,Several,Options!" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Style" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase selection" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Find tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror X" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror Y" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 0 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 90 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 180 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 270 degrees" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Could not find tile:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Item name or ID:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Error" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Edit Script Options" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Please export outside the project folder!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error exporting project!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error writing the project PCK!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "No exporter for platform '%s' yet." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Include" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Change Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name can't be empty!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Invalid character in group name!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name already exists!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Add Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Delete Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas Preview" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export Settings" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Target" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export to Platform" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export selected resources (including dependencies)." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all resources in the project." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all files in the project directory." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources to Export:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Action" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "" +"Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert text scenes to binary on export." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep Original" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy, WebP)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for RAM (BC/PVRTC/ETC)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert Images (*.png):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy) Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink All Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Formats:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Groups" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Groups:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Disk" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress RAM" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Lossy Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink By:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Preview Atlas" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Filter:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Select None" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Samples" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sample Conversion Mode: (.wav files):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress (RAM - IMA-ADPCM)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sampling Rate Limit (Hz):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trim" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trailing Silence:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Text" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compiled" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Project PCK" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export.." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Preset:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, the path must exist!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must not exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Imported Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Couldn't create engine.cfg in project path." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path (Must Exist):" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Name:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Create New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Browse" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Game Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "That's a BINGO!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to open more than one projects?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to run more than one projects?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Remove project from the list? (Folder contents will not be modified)" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project List" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Run" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Scan" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Exit" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Key " +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Axis" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid action (anything goes but '/' or ':')." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action '%s' already exists!" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Rename Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Control+" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Press a Key.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Left Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Right Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Middle Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 6" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 7" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 8" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 9" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Axis Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Erase Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Toggle Persisting" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Error saving settings." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Settings saved OK." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Valid characters:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing engine class name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing buit-in type name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing global constant name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Autoload '%s' already exists!" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Rename Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Move Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Remapped Path" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resource Remap Add Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Change Resource Remap Language" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap Option" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Enable" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Project Settings (engine.cfg)" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "General" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +msgid "Property:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Del" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Copy To Platform.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Input Map" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Device:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Localization" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resources:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps by Locale:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Locale" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "AutoLoad" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Node Name:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "List:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Singleton" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Plugins" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Preset.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Zero" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "File.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Dir.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Load" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Assign" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Couldn't load image" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "On" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Properties:" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Global" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Sections:" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Could not execute PVRTC tool:" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Can't load back converted image using PVRTC tool:" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Create New Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Open Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Save Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Resource Tools" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Make Local" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "OK :(" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)?" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save New Scene As.." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Makes Sense!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "New Scene Root" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Inherit Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Groups" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Connections" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Script" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save Branch as Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add/Create a New Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "" +"This item cannot be made visible because the parent is hidden. Unhide the " +"parent first." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle Spatial Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle CanvasItem Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Editable Children" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Load As Placeholder" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear!" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination files, doing nothing." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination paths, doing nothing." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Can't move directories to within themselves." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Can't operate on '..'" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Pick New Name and Location For:" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "No files selected!" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Instance" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Edit Dependencies.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "View Owners.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Copy Path" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Rename or Move.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Move To.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Info" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Show In File Manager" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Previous Directory" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Next Directory" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Move" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid parent class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid chars:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "N/A" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Parent class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid path!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Could not create script in filesystem." +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is empty" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is not local" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid base path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "File exists" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid extension" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Built-In Script" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Create Node Script" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Warning" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Function:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Child Process Connected" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Variable" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Trace (if applicable):" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Inspector" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Scene Tree:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Object Properties: " +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Value" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Video Mem" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Type" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "" + +#: tools/editor/settings_config_dialog.cpp +msgid "Shortcuts" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Notifier Extents" +msgstr "" diff --git a/tools/translations/de.po b/tools/translations/de.po index 2005670fda..b9c1c070d8 100644 --- a/tools/translations/de.po +++ b/tools/translations/de.po @@ -1,33 +1,91 @@ -# LANGUAGE translation of the Godot Engine editor +# German translation of the Godot Engine editor # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +# Andreas Esau <andreasesau@gmail.com>, 2016. +# Andreas Haas <liu.gam3@gmail.com>, 2016. +# Andreas Hirschauer <andreas@hirschauer-it.de>, 2016. +# Christian Fisch <christian.fiesel@gmail.com>, 2016. +# danjo <atze@libra.uberspace.de>, 2016. +# hyperglow <greensoma@web.de>, 2016. +# Oliver Ruehl <oliver@ruehldesign.co>, 2016. +# Paul-Vincent Roll <paviro@me.com>, 2016. +# Peter Friedland <peter_friedland@gmx.de>, 2016. +# Timo Schwarzer <account@timoschwarzer.com>, 2016. +# viernullvier <hannes.breul+github@gmail.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: Sebastian Thewes <minzky@minzky.com>\n" -"Language-Team: \n" +"PO-Revision-Date: 2016-06-14 12:29+0000\n" +"Last-Translator: Timo Schwarzer <account@timoschwarzer.com>\n" +"Language-Team: German <https://hosted.weblate.org/projects/godot-engine/" +"godot/de/>\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.4\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.7-dev\n" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +#, fuzzy +msgid "Not based on a resource file" +msgstr "Keine Ziel Font Ressource!" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " "order for AnimatedSprite to display frames." msgstr "" +"Eine SpriteFrames Ressource muss in der 'Frames' Variable erstellt oder " +"gesetzt werden, damit AnimatedSprite Einzelbilder darstellen kann." #: scene/2d/canvas_modulate.cpp msgid "" "Only one visible CanvasModulate is allowed per scene (or set of instanced " "scenes). The first created one will work, while the rest will be ignored." msgstr "" +"Nur ein sichtbares CanvasModulate ist pro Szene (oder ein Satz von " +"instanzierten Szenen) erlaubt. Das zuerst erstellte wird funktionieren, " +"während der Rest ignoriert wird." #: scene/2d/collision_polygon_2d.cpp msgid "" @@ -35,10 +93,14 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" +"CollisionPolygon2D dient nur dazu, einem CollisionObject2D abgeleiteten " +"Knoten eine Form bereitzustellen. Bitte verwenden Sie es nur als Unterobjekt " +"von Area2D, StaticBody2D, RigidBody2D, KinematicBody2D usw. um ihnen eine " +"Form zu geben." #: scene/2d/collision_polygon_2d.cpp msgid "An empty CollisionPolygon2D has no effect on collision." -msgstr "" +msgstr "Ein leeres CollisionPolygon2D hat keinen Effekt auf Kollisionen." #: scene/2d/collision_shape_2d.cpp msgid "" @@ -46,100 +108,110 @@ msgid "" "CollisionObject2D derived node. Please only use it as a child of Area2D, " "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" +"CollisionShape2D definiert eine Kollisionsmaske für von CollisionObject2D " +"abgeleitete Nodes. Benutze es mit Area2D, StaticBody2D, RigidBody2D, " +"KinematicBody2D usw. um eine Form zu definieren." #: scene/2d/collision_shape_2d.cpp msgid "" "A shape must be provided for CollisionShape2D to function. Please create a " "shape resource for it!" msgstr "" -"Damit CollisionShape funktionieren kann, muss eine Form angegeben werden. " -"Bitte erzeuge eine shape Ressource dafür." +"Damit CollisionShape2D funktionieren kann, muss eine Form angegeben werden. " +"Bitte erzeuge eine Shape-Ressource dafür!" #: scene/2d/light_2d.cpp msgid "" "A texture with the shape of the light must be supplied to the 'texture' " "property." msgstr "" +"Eine Textur mit der Form des Lichtkegels muss in der Eigenschaft 'texture' " +"angegeben werden." #: scene/2d/light_occluder_2d.cpp msgid "" "An occluder polygon must be set (or drawn) for this occluder to take effect." msgstr "" -"Damit CollisionShape funktionieren kann, muss eine Form angegeben werden. " -"Bitte erzeuge eine shape Ressource dafür." +"Ein Occluder Polygon muss gesetzt oder gezeichnet werden, damit dieser " +"Occluder funktioniert." #: scene/2d/light_occluder_2d.cpp msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" msgstr "" -"Damit CollisionShape funktionieren kann, muss eine Form angegeben werden. " -"Bitte erzeuge eine shape Ressource dafür." +"Das Occluder Polygon für diesen Occlluder ist leer. Bitte zeichne ein " +"Polygon!" #: scene/2d/navigation_polygon.cpp msgid "" "A NavigationPolygon resource must be set or created for this node to work. " "Please set a property or draw a polygon." msgstr "" -"Damit CollisionShape funktionieren kann, muss eine Form angegeben werden. " -"Bitte erzeuge eine shape Ressource dafür." +"Eine NavigationPolygon Ressource muss für diesen Node gesetzt oder erstellt " +"werden, damit er funktioniert. Bitte setze eine Variable oder zeichne ein " +"Polygon." #: scene/2d/navigation_polygon.cpp msgid "" "NavigationPolygonInstance must be a child or grandchild to a Navigation2D " "node. It only provides navigation data." msgstr "" -"NavigationPolygonInstance muss ein Unterobjekt oder Unterunterobjekt einer " -"Navigation2D Node sein. Es liefert nur Navigations Daten." +"NavigationPolygonInstance muss ein Unterobjekt erster oder zweiter Ordnung " +"unterhalb einer Navigation2D Node sein. Es liefert nur Navigationsdaten." #: scene/2d/parallax_layer.cpp msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" -"Die ParallaxLayer Node funktioniert nur als Kind von einer ParallaxBackground " -"Node." +"Die ParallaxLayer Node funktioniert nur als Unterobjekt einer " +"ParallaxBackground Node." #: scene/2d/particles_2d.cpp msgid "Path property must point to a valid Particles2D node to work." -msgstr "Pfad Eigenschaft muss auf eine gültige Particles2D Node verweisen." +msgstr "Die Pfad-Variable muss auf einen gültigen Particles2D Node verweisen." #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." msgstr "" +"PathFollow2D funktioniert nur, wenn sie als Unterobjekt eines Path2D Nodes " +"gesetzt wird." #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." msgstr "" +"Die Pfad-Variable muss auf einen gültigen Node2D Node zeigen um zu " +"funktionieren." #: scene/2d/sample_player_2d.cpp scene/audio/sample_player.cpp msgid "" "A SampleLibrary resource must be created or set in the 'samples' property in " "order for SamplePlayer to play sound." msgstr "" -"Eine SampleLibrary Ressource muss in der 'samples' Eigenschaft erzeugt oder " -"definiert werden damit SpatialSamplePlayer einen Sound abspielen kann." +"Eine SampleLibrary Ressource muss in der 'samples' Variable erzeugt oder " +"definiert werden, damit SpatialSamplePlayer einen Sound abspielen kann." #: scene/2d/sprite.cpp msgid "" -"Path property must point to a valid Viewport node to work. Such Viewport must " -"be set to 'render target' mode." +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." msgstr "" "Die Pfad Eigenschaft muss auf eine gültige Viewport Node verweisen um zu " "funktionieren. Dieser Viewport muss in 'render target' Modus gesetzt werden." #: scene/2d/sprite.cpp msgid "" -"The Viewport set in the path property must be set as 'render target' in order " -"for this sprite to work." +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." msgstr "" -"Der Viewport der in der Pfad Eigenschaft gesetzt wurde, muss als 'render " -"target' definiert werden damit das Sprite funktioniert." +"Der Viewport der in der Pfad-Variable gesetzt wurde, muss als 'render " +"target' definiert werden, damit das Sprite funktioniert." #: scene/2d/visibility_notifier_2d.cpp msgid "" "VisibilityEnable2D works best when used with the edited scene root directly " "as parent." msgstr "" -"VisibilityEnable2D funktioniert am besten wenn es ein Unterobjekt der " -"bearbeiteten Hauptszene ist." +"VisibilityEnable2D funktioniert am besten, wenn es ein Unterobjekt erster " +"Ordnung der bearbeiteten Hauptszene ist." #: scene/3d/body_shape.cpp msgid "" @@ -148,17 +220,17 @@ msgid "" "KinematicBody, etc. to give them a shape." msgstr "" "CollisionShape dient nur dazu einer dem CollisionObject abgeleiteten Node " -"eine Kollisionsform bereit zu stellen. Bitte nutze es nur als eine " -"Unterobjekt von Area, StaticBody, RigidBody, KinematicBody, usw. um diesen " -"eine Form zu geben." +"eine Kollisionsform bereitzustellen. Bitte nutze es nur als ein Unterobjekt " +"von Area, StaticBody, RigidBody, KinematicBody usw. um diesem eine Form zu " +"geben." #: scene/3d/body_shape.cpp msgid "" "A shape must be provided for CollisionShape to function. Please create a " "shape resource for it!" msgstr "" -"Damit CollisionShape funktionieren kann, muss eine Form angegeben werden. " -"Bitte erzeuge eine shape Ressource dafür." +"Damit CollisionShape funktionieren kann, muss eine Form vorhanden sein. " +"Bitte erzeuge eine shape Ressource dafür!" #: scene/3d/collision_polygon.cpp msgid "" @@ -166,27 +238,28 @@ msgid "" "CollisionObject derived node. Please only use it as a child of Area, " "StaticBody, RigidBody, KinematicBody, etc. to give them a shape." msgstr "" -"CollisionPolygon liefert nur eine Kollisionsform für eine vom CollisionObject " -"abgeleitete Node. Bitte nutze es nur als eine Unterobjekt von Area, " -"StaticBody, RigidBody, KinematicBody, usw. um diesen eine Form zu geben." +"CollisionPolygon liefert nur eine Kollisionsform für eine vom " +"CollisionObject abgeleiteten Node. Bitte nutze es nur als eine Unterobjekt " +"von Area, StaticBody, RigidBody, KinematicBody, usw. um diesen eine Form zu " +"geben." #: scene/3d/collision_polygon.cpp msgid "An empty CollisionPolygon has no effect on collision." -msgstr "" +msgstr "Ein leeres CollisionPolygon hat keinen Effekt auf die Kollision." #: scene/3d/navigation_mesh.cpp msgid "A NavigationMesh resource must be set or created for this node to work." msgstr "" -"Damit diese Node funktionieren kann, muss eine NavigationMesh Ressource " -"erzeugt oder definiert werden." +"Damit dieser Node funktionieren kann, muss eine NavigationMesh Ressource " +"erzeugt oder gesetzt werden." #: scene/3d/navigation_mesh.cpp msgid "" -"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " -"only provides navigation data." +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." msgstr "" -"NavigationMeshinstance muss ein Unterobjekt oder Unterunterobjekt von einer " -"Navigations Node sein. Es liefert nur navigationsdaten." +"NavigationMeshinstance muss ein Unterobjekt oder Unterunterobjekt von einem " +"Navigations Node sein. Es liefert nur Navigationsdaten." #: scene/3d/scenario_fx.cpp msgid "" @@ -203,13 +276,12 @@ msgstr "" "definiert werden damit SpatialSamplePlayer einen Sound abspielen kann." #: scene/3d/sprite_3d.cpp -#, fuzzy msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " "order for AnimatedSprite3D to display frames." msgstr "" -"Eine SampleLibrary Ressource muss in der 'samples' Eigenschaft erzeugt oder " -"definiert werden damit SpatialSamplePlayer einen Sound abspielen kann." +"Eine SpriteFrames Ressource muss in der Eigenschaft 'Frames' erzeugt oder " +"definiert werden, damit AnimatedSprite3D Frames anzeigen kann." #: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Cancel" @@ -221,7 +293,7 @@ msgstr "OK" #: scene/gui/dialogs.cpp msgid "Alert!" -msgstr "" +msgstr "Warnung!" #: scene/gui/dialogs.cpp msgid "Please Confirm..." @@ -229,15 +301,15 @@ msgstr "Bitte bestätigen..." #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "File Exists, Overwrite?" -msgstr "" +msgstr "Datei existiert bereits. Überschreiben?" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Recognized" -msgstr "" +msgstr "Alle bekannten Dateien" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Files (*)" -msgstr "" +msgstr "Alle Dateien (*)" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp @@ -248,21 +320,19 @@ msgstr "Öffnen" #: scene/gui/file_dialog.cpp msgid "Open a File" -msgstr "" +msgstr "Datei öffnen" #: scene/gui/file_dialog.cpp msgid "Open File(s)" -msgstr "" +msgstr "Datei(en) öffnen" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a Directory" -msgstr "Wähle ein Verzeichnis" +msgstr "Verzeichnis wählen" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a File or Directory" -msgstr "Wähle ein Verzeichnis" +msgstr "Datei oder Verzeichnis öffnen" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_node.cpp @@ -273,7 +343,7 @@ msgstr "Speichern" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Save a File" -msgstr "" +msgstr "Datei speichern" #: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp #: tools/editor/editor_file_dialog.cpp @@ -288,7 +358,7 @@ msgstr "Pfad:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Directories & Files:" -msgstr "" +msgstr "Verzeichnisse & Dateien:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/script_editor_debugger.cpp @@ -312,26 +382,26 @@ msgstr "Ordner konnte nicht erstellt werden." #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Must use a valid extension." -msgstr "" +msgstr "Eine gültige Datei-Endung muss verwendet werden." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp msgid "Shift+" -msgstr "" +msgstr "Shift+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp msgid "Alt+" -msgstr "" +msgstr "Alt+" #: scene/gui/input_action.cpp msgid "Ctrl+" -msgstr "" +msgstr "Ctrl+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp msgid "Meta+" -msgstr "" +msgstr "Meta+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Device" @@ -347,7 +417,7 @@ msgstr "Linke Taste." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Right Button." -msgstr "Rechte Taste." +msgstr "Rechte Schaltfläche." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Middle Button." @@ -355,15 +425,15 @@ msgstr "Mittlere Taste." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Wheel Up." -msgstr "" +msgstr "Mausrad hoch." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Wheel Down." -msgstr "" +msgstr "Mausrad runter." #: scene/gui/input_action.cpp tools/editor/project_settings.cpp msgid "Axis" -msgstr "" +msgstr "Achse" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_editor_plugin.cpp @@ -389,7 +459,8 @@ msgstr "Einfügen" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_editor_plugin.cpp -#: tools/editor/plugins/shader_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "Select All" msgstr "Alles auswählen" @@ -398,7 +469,7 @@ msgstr "Alles auswählen" #: tools/editor/plugins/rich_text_editor_plugin.cpp #: tools/editor/property_editor.cpp tools/editor/script_editor_debugger.cpp msgid "Clear" -msgstr "" +msgstr "Löschen" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_node.cpp #: tools/editor/plugins/script_editor_plugin.cpp @@ -409,9 +480,13 @@ msgstr "Rückgängig machen" #: scene/gui/popup.cpp msgid "" "Popups will hide by default unless you call popup() or any of the popup*() " -"functions. Making them visible for editing is fine though, but they will hide " -"upon running." +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." msgstr "" +"Popups werden standardmäßig versteckt, es sei denn Sie rufen popup() oder " +"irgendeine der popup*() Funktionen auf. Sie für die Bearbeitung sichtbar zu " +"machen ist in Ordnung, aber sie werden zur Laufzeit automatisch wieder " +"versteckt." #: scene/main/viewport.cpp msgid "" @@ -420,11 +495,16 @@ msgid "" "obtain a size. Otherwise, make it a RenderTarget and assign its internal " "texture to some node for display." msgstr "" +"Dieser Viewport ist nicht als Render-Target gesetzt. Wenn Sie vor haben " +"seinen Inhalt direkt auf dem Bildschirm anzuzeigen, machen Sie es zu einem " +"Kind eines Control-Nodes, damit es eine Größe erben kann. Ansonsten setzen " +"Sie es als Render-Target und weisen Sie der internen Textur einen Knoten zum " +"Anzeigen zu." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Error initializing FreeType." -msgstr "" +msgstr "Fehler beim initialisieren von FreeType." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -451,92 +531,106 @@ msgstr "Alle auswählen" #: tools/editor/animation_editor.cpp msgid "Move Add Key" -msgstr "" +msgstr "Schlüsselbild bewegen hinzufügen" #: tools/editor/animation_editor.cpp msgid "Anim Change Transition" -msgstr "" +msgstr "Übergang beim Animationswechsel" #: tools/editor/animation_editor.cpp msgid "Anim Change Transform" -msgstr "" +msgstr "Anim ändere Transformation" #: tools/editor/animation_editor.cpp msgid "Anim Change Value" -msgstr "" +msgstr "Anim Wert ändern" #: tools/editor/animation_editor.cpp msgid "Anim Change Call" -msgstr "" +msgstr "Animation Änderungsaufruf" #: tools/editor/animation_editor.cpp msgid "Anim Add Track" -msgstr "" +msgstr "Anim Spur hinzufügen" #: tools/editor/animation_editor.cpp msgid "Move Anim Track Up" -msgstr "" +msgstr "Anim Spur nach oben verschieben" #: tools/editor/animation_editor.cpp msgid "Move Anim Track Down" -msgstr "" +msgstr "Anim Spur nach unten verschieben" #: tools/editor/animation_editor.cpp msgid "Remove Anim Track" -msgstr "" +msgstr "Anim Spur entfernen" #: tools/editor/animation_editor.cpp msgid "Anim Duplicate Keys" -msgstr "" +msgstr "Anim doppelte Schlüsselbilder" #: tools/editor/animation_editor.cpp msgid "Set Transitions to:" -msgstr "" +msgstr "Setze Übergänge auf:" #: tools/editor/animation_editor.cpp msgid "Anim Track Rename" -msgstr "" +msgstr "Anim Spur umbenennen" #: tools/editor/animation_editor.cpp msgid "Anim Track Change Interpolation" -msgstr "" +msgstr "Anim Spur Interpolation ändern" #: tools/editor/animation_editor.cpp msgid "Anim Track Change Value Mode" -msgstr "" +msgstr "Anim Spur ändere Wert Modus" #: tools/editor/animation_editor.cpp msgid "Edit Node Curve" -msgstr "" +msgstr "Node Kurve editieren" #: tools/editor/animation_editor.cpp msgid "Edit Selection Curve" -msgstr "" +msgstr "Selektions-Kurve editieren" #: tools/editor/animation_editor.cpp msgid "Anim Delete Keys" +msgstr "Anim Schlüsselbilder löschen" + +#: tools/editor/animation_editor.cpp +#, fuzzy +msgid "Continuous" +msgstr "Fortfahren" + +#: tools/editor/animation_editor.cpp +#, fuzzy +msgid "Discrete" +msgstr "Trennen" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" msgstr "" #: tools/editor/animation_editor.cpp msgid "Anim Add Key" -msgstr "" +msgstr "Anim Schlüsselszene hinzufügen" #: tools/editor/animation_editor.cpp msgid "Anim Move Keys" -msgstr "" +msgstr "Animation Bewegungstasten" #: tools/editor/animation_editor.cpp msgid "Scale Selection" -msgstr "" +msgstr "Skalierung Auswahl" #: tools/editor/animation_editor.cpp msgid "Scale From Cursor" -msgstr "" +msgstr "Skalierung vom Cursor" #: tools/editor/animation_editor.cpp #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Duplicate Selection" -msgstr "" +msgstr "Auswahl duplizieren" #: tools/editor/animation_editor.cpp msgid "Duplicate Transposed" @@ -557,23 +651,23 @@ msgstr "Linear" #: tools/editor/animation_editor.cpp #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Constant" -msgstr "" +msgstr "Konstante" #: tools/editor/animation_editor.cpp msgid "In" -msgstr "" +msgstr "Rein" #: tools/editor/animation_editor.cpp msgid "Out" -msgstr "" +msgstr "Raus" #: tools/editor/animation_editor.cpp msgid "In-Out" -msgstr "" +msgstr "Rein-Raus" #: tools/editor/animation_editor.cpp msgid "Out-In" -msgstr "" +msgstr "Raus-Rein" #: tools/editor/animation_editor.cpp msgid "Transitions" @@ -585,15 +679,15 @@ msgstr "Animation optimieren" #: tools/editor/animation_editor.cpp msgid "Clean-Up Animation" -msgstr "" +msgstr "Animation aufräumen" #: tools/editor/animation_editor.cpp msgid "Create NEW track for %s and insert key?" -msgstr "" +msgstr "Erstelle einen NEUEN Track für %s und füge einen Key ein?" #: tools/editor/animation_editor.cpp msgid "Create %d NEW tracks and insert keys?" -msgstr "" +msgstr "Erstelle %d NEUE Tracks und füge Keys ein?" #: tools/editor/animation_editor.cpp tools/editor/create_dialog.cpp #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp @@ -606,155 +700,166 @@ msgstr "Erstellen" #: tools/editor/animation_editor.cpp msgid "Anim Create & Insert" -msgstr "" +msgstr "Animation Erstellen & Einfügen" #: tools/editor/animation_editor.cpp msgid "Anim Insert Track & Key" -msgstr "" +msgstr "Animation Track & Key Einfügen" #: tools/editor/animation_editor.cpp msgid "Anim Insert Key" -msgstr "" +msgstr "Animation Key Einfügen" #: tools/editor/animation_editor.cpp msgid "Change Anim Len" -msgstr "" +msgstr "Ändere Animationslänge" #: tools/editor/animation_editor.cpp msgid "Change Anim Loop" -msgstr "" +msgstr "Ändere Animationswiederholung" + +#: tools/editor/animation_editor.cpp +#, fuzzy +msgid "Change Anim Loop Interpolation" +msgstr "Ändere Animationswiederholung" #: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" -msgstr "" +msgstr "Animation Erstelle Typed Value Key" #: tools/editor/animation_editor.cpp msgid "Anim Insert" -msgstr "" +msgstr "Anim einfügen" #: tools/editor/animation_editor.cpp msgid "Anim Scale Keys" -msgstr "" +msgstr "Animation Skaliere Keys" #: tools/editor/animation_editor.cpp msgid "Anim Add Call Track" -msgstr "" +msgstr "Animation Call Track Einfügen" #: tools/editor/animation_editor.cpp msgid "Animation zoom." -msgstr "" +msgstr "Animation zoomen." #: tools/editor/animation_editor.cpp msgid "Length (s):" -msgstr "" +msgstr "Länge (s):" #: tools/editor/animation_editor.cpp msgid "Animation length (in seconds)." -msgstr "" +msgstr "Länge der Animation (in Sekunden)." #: tools/editor/animation_editor.cpp msgid "Step (s):" -msgstr "" +msgstr "Schritte (s):" #: tools/editor/animation_editor.cpp msgid "Cursor step snap (in seconds)." -msgstr "" +msgstr "Cursor Schritt Raster (in Sekunden)." #: tools/editor/animation_editor.cpp msgid "Enable/Disable looping in animation." -msgstr "" +msgstr "Aktivieren / Deaktivieren der Schleife (Loop)." + +#: tools/editor/animation_editor.cpp +#, fuzzy +msgid "Enable/Disable interpolation when looping animation." +msgstr "Aktivieren / Deaktivieren der Schleife (Loop)." #: tools/editor/animation_editor.cpp msgid "Add new tracks." -msgstr "" +msgstr "Neue Spuren hinzufügen." #: tools/editor/animation_editor.cpp msgid "Move current track up." -msgstr "" +msgstr "Aktuelle Spur hochschieben." #: tools/editor/animation_editor.cpp msgid "Move current track down." -msgstr "" +msgstr "Aktuelle Spur runterschieben." #: tools/editor/animation_editor.cpp msgid "Remove selected track." -msgstr "" +msgstr "Ausgewählte Spur entfernen." #: tools/editor/animation_editor.cpp msgid "Track tools" -msgstr "" +msgstr "Spur-Werkzeuge" #: tools/editor/animation_editor.cpp msgid "Enable editing of individual keys by clicking them." msgstr "" +"Aktiviere das editieren von individuellen Keys in dem auf sie geclickt wird." #: tools/editor/animation_editor.cpp msgid "Anim. Optimizer" -msgstr "" +msgstr "Anim. Optimierer" #: tools/editor/animation_editor.cpp msgid "Max. Linear Error:" -msgstr "" +msgstr "Max. Linearer Fehler:" #: tools/editor/animation_editor.cpp msgid "Max. Angular Error:" -msgstr "" +msgstr "Max. Winkel Fehler:" #: tools/editor/animation_editor.cpp msgid "Max Optimizable Angle:" -msgstr "" +msgstr "Maximal optimierbarer Winkel:" #: tools/editor/animation_editor.cpp msgid "Optimize" -msgstr "" +msgstr "Optimieren" #: tools/editor/animation_editor.cpp msgid "Key" -msgstr "" +msgstr "Schlüsselbild" #: tools/editor/animation_editor.cpp msgid "Transition" -msgstr "" +msgstr "Übergang" #: tools/editor/animation_editor.cpp msgid "Scale Ratio:" -msgstr "" +msgstr "Skalierungsverhältnis:" #: tools/editor/animation_editor.cpp msgid "Call Functions in Which Node?" -msgstr "" +msgstr "Rufe Funktion auf in welchem Node?" #: tools/editor/animation_editor.cpp msgid "Remove invalid keys" -msgstr "" +msgstr "Ungültige Schlüsselbilder entfernen" #: tools/editor/animation_editor.cpp msgid "Remove unresolved and empty tracks" -msgstr "" +msgstr "Ungelöste und leere Spuren entfernen" #: tools/editor/animation_editor.cpp msgid "Clean-up all animations" -msgstr "" +msgstr "Alle Animationen aufräumen" #: tools/editor/animation_editor.cpp msgid "Clean-Up Animation(s) (NO UNDO!)" -msgstr "" +msgstr "Alle Animationen aufräumen (Nicht rückgängig zu machen!)" #: tools/editor/animation_editor.cpp msgid "Clean-Up" -msgstr "" +msgstr "Aufräumen" #: tools/editor/array_property_edit.cpp msgid "Resize Array" -msgstr "" +msgstr "Größe des Feldes ändern" #: tools/editor/array_property_edit.cpp msgid "Change Array Value Type" -msgstr "" +msgstr "Ändere Array Wert Typ" #: tools/editor/array_property_edit.cpp msgid "Change Array Value" -msgstr "" +msgstr "Ändere Array Wert" #: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp #: tools/editor/editor_help.cpp tools/editor/editor_node.cpp @@ -765,11 +870,11 @@ msgstr "Suche:" #: tools/editor/asset_library_editor_plugin.cpp msgid "Sort:" -msgstr "" +msgstr "Sortiere:" #: tools/editor/asset_library_editor_plugin.cpp msgid "Reverse" -msgstr "" +msgstr "Umkehren" #: tools/editor/asset_library_editor_plugin.cpp #: tools/editor/project_settings.cpp @@ -778,41 +883,39 @@ msgstr "Kategorie:" #: tools/editor/asset_library_editor_plugin.cpp msgid "All" -msgstr "" +msgstr "Alle" #: tools/editor/asset_library_editor_plugin.cpp msgid "Site:" -msgstr "" +msgstr "Seite:" #: tools/editor/asset_library_editor_plugin.cpp -#, fuzzy msgid "Support.." -msgstr "Exportieren.." +msgstr "Unterstützung.." #: tools/editor/asset_library_editor_plugin.cpp msgid "Official" -msgstr "" +msgstr "Offiziell" #: tools/editor/asset_library_editor_plugin.cpp msgid "Community" -msgstr "" +msgstr "Community" #: tools/editor/asset_library_editor_plugin.cpp -#, fuzzy msgid "Testing" -msgstr "Test:" +msgstr "Testen" #: tools/editor/asset_library_editor_plugin.cpp msgid "Assets ZIP File" -msgstr "" +msgstr "ZIP Datei der Projektdaten" #: tools/editor/call_dialog.cpp msgid "Method List For '%s':" -msgstr "" +msgstr "Methodenliste für '%s':" #: tools/editor/call_dialog.cpp msgid "Call" -msgstr "" +msgstr "Aufruf" #: tools/editor/call_dialog.cpp tools/editor/connections_dialog.cpp #: tools/editor/import_settings.cpp @@ -829,15 +932,15 @@ msgstr "Schließen" #: tools/editor/call_dialog.cpp msgid "Method List:" -msgstr "" +msgstr "Methodenliste:" #: tools/editor/call_dialog.cpp msgid "Arguments:" -msgstr "" +msgstr "Argumente:" #: tools/editor/call_dialog.cpp msgid "Return:" -msgstr "" +msgstr "Rückgabe:" #: tools/editor/code_editor.cpp msgid "Go to Line" @@ -849,11 +952,11 @@ msgstr "Zeilennummer:" #: tools/editor/code_editor.cpp msgid "No Matches" -msgstr "Keine Übereinstimmung" +msgstr "Keine Übereinstimmungen" #: tools/editor/code_editor.cpp msgid "Replaced %d Ocurrence(s)." -msgstr "" +msgstr "%d mal wurde das Vorkommen ersetzt." #: tools/editor/code_editor.cpp msgid "Replace" @@ -869,11 +972,11 @@ msgstr "Groß-/Kleinschreibung berücksichtigen" #: tools/editor/code_editor.cpp msgid "Whole Words" -msgstr "Gesamte Wörter" +msgstr "Ganze Wörter" #: tools/editor/code_editor.cpp msgid "Selection Only" -msgstr "" +msgstr "Nur Auswahl" #: tools/editor/code_editor.cpp tools/editor/editor_help.cpp #: tools/editor/plugins/script_editor_plugin.cpp @@ -892,7 +995,7 @@ msgstr "Nächste" #: tools/editor/code_editor.cpp msgid "Replaced %d ocurrence(s)." -msgstr "" +msgstr "%d mal wurde das Vorkommen ersetzt." #: tools/editor/code_editor.cpp msgid "Not found!" @@ -904,15 +1007,15 @@ msgstr "Ersetzen durch" #: tools/editor/code_editor.cpp msgid "Case Sensitive" -msgstr "" +msgstr "Fallunterscheidung" #: tools/editor/code_editor.cpp msgid "Backwards" -msgstr "" +msgstr "Rückwärts" #: tools/editor/code_editor.cpp msgid "Prompt On Replace" -msgstr "" +msgstr "Aufforderung beim Ersetzen" #: tools/editor/code_editor.cpp msgid "Skip" @@ -928,15 +1031,12 @@ msgstr "Spalte:" #: tools/editor/connections_dialog.cpp msgid "Method in target Node must be specified!" -msgstr "" - -#: tools/editor/connections_dialog.cpp -msgid "Connect To Node:" -msgstr "" +msgstr "Methode in Ziel-Node muss angegeben werden!" #: tools/editor/connections_dialog.cpp -msgid "Binds (Extra Params):" -msgstr "" +#, fuzzy +msgid "Conect To Node:" +msgstr "Verbinde Zu Node:" #: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp #: tools/editor/plugins/item_list_editor_plugin.cpp @@ -947,29 +1047,36 @@ msgstr "Hinzufügen" #: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp -#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp msgid "Remove" -msgstr "Entferne" +msgstr "Entfernen" #: tools/editor/connections_dialog.cpp -msgid "Path To Node:" +msgid "Add Extra Call Argument:" msgstr "" #: tools/editor/connections_dialog.cpp -msgid "Method In Node:" -msgstr "" +#, fuzzy +msgid "Extra Call Arguments:" +msgstr "Argumente:" + +#: tools/editor/connections_dialog.cpp +#, fuzzy +msgid "Path to Node:" +msgstr "Pfad Zu Node:" #: tools/editor/connections_dialog.cpp msgid "Make Function" -msgstr "" +msgstr "Erstelle Funktion" #: tools/editor/connections_dialog.cpp msgid "Deferred" -msgstr "" +msgstr "Ausgesetzt" #: tools/editor/connections_dialog.cpp msgid "Oneshot" -msgstr "" +msgstr "Einmalig" #: tools/editor/connections_dialog.cpp msgid "Connect" @@ -977,11 +1084,16 @@ msgstr "Verbinden" #: tools/editor/connections_dialog.cpp msgid "Connect '%s' to '%s'" -msgstr "" +msgstr "Verbinde '%s' zu '%s'" + +#: tools/editor/connections_dialog.cpp +#, fuzzy +msgid "Connecting Signal:" +msgstr "Verbindungen:" #: tools/editor/connections_dialog.cpp msgid "Create Subscription" -msgstr "" +msgstr "Erstelle Subscription" #: tools/editor/connections_dialog.cpp msgid "Connect.." @@ -994,16 +1106,16 @@ msgstr "Trennen" #: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp msgid "Signals" -msgstr "" +msgstr "Signale" #: tools/editor/create_dialog.cpp msgid "Create New" -msgstr "" +msgstr "Neu erstellen" #: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp #: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp msgid "Matches:" -msgstr "" +msgstr "Treffer:" #: tools/editor/dependency_editor.cpp msgid "Search Replacement For:" @@ -1011,19 +1123,23 @@ msgstr "Suche Ersatz für:" #: tools/editor/dependency_editor.cpp msgid "Dependencies For:" -msgstr "" +msgstr "Abhängigkeiten Für:" #: tools/editor/dependency_editor.cpp msgid "" "Scene '%s' is currently being edited.\n" "Changes will not take effect unless reloaded." msgstr "" +"Szene '%s' wird momentan bearbeitet.\n" +"Änderungen werden nicht vorgenommen, bis neu geladen wird." #: tools/editor/dependency_editor.cpp msgid "" "Resource '%s' is in use.\n" "Changes will take effect when reloaded." msgstr "" +"Ressource '%s' wird momentan benutzt.\n" +"Änderungen werden erst nach neu laden aktiv." #: tools/editor/dependency_editor.cpp msgid "Dependencies" @@ -1044,7 +1160,7 @@ msgstr "Abhängigkeiten:" #: tools/editor/dependency_editor.cpp msgid "Fix Broken" -msgstr "" +msgstr "Repariere Nichtfunktionierende" #: tools/editor/dependency_editor.cpp msgid "Dependency Editor" @@ -1052,7 +1168,7 @@ msgstr "Abhängigkeiten-Editor" #: tools/editor/dependency_editor.cpp msgid "Search Replacement Resource:" -msgstr "" +msgstr "Suche Ersetzbare Ressource:" #: tools/editor/dependency_editor.cpp msgid "Owners Of:" @@ -1064,6 +1180,9 @@ msgid "" "work.\n" "Remove them anyway? (no undo)" msgstr "" +"Die zu entfernenden Dateien werden von anderen Ressourcen gebraucht damit " +"sie richtig funktionieren können.\n" +"Trotzdem entfernen? (Nicht Wiederherstellbar)" #: tools/editor/dependency_editor.cpp msgid "Remove selected files from the project? (no undo)" @@ -1075,15 +1194,15 @@ msgstr "Ladefehler:" #: tools/editor/dependency_editor.cpp msgid "Scene failed to load due to missing dependencies:" -msgstr "" +msgstr "Szene konnte aufgrund fehlender Abhängigkeiten nicht geladen werden:" #: tools/editor/dependency_editor.cpp msgid "Open Anyway" -msgstr "" +msgstr "Trotzdem öffnen" #: tools/editor/dependency_editor.cpp msgid "Which action should be taken?" -msgstr "" +msgstr "Welche Aktion soll ausgeführt werden?" #: tools/editor/dependency_editor.cpp msgid "Fix Dependencies" @@ -1091,44 +1210,45 @@ msgstr "Abhängigkeiten reparieren" #: tools/editor/dependency_editor.cpp msgid "Errors loading!" -msgstr "" +msgstr "Fehler beim laden!" #: tools/editor/dependency_editor.cpp msgid "Permanently delete %d item(s)? (No undo!)" -msgstr "" +msgstr "Entferne %d Datei(en) dauerhaft? (Nicht Wiederherstellbar)" #: tools/editor/dependency_editor.cpp msgid "Owns" -msgstr "" +msgstr "Gehört zu" #: tools/editor/dependency_editor.cpp msgid "Resources Without Explicit Ownership:" -msgstr "" +msgstr "Ressource Ohne Direkte Zugehörigkeit:" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp msgid "Orphan Resource Explorer" -msgstr "" +msgstr "Ressourcen Explorer Für Verwaiste Dateien" #: tools/editor/dependency_editor.cpp msgid "Delete selected files?" msgstr "Ausgewählten Dateien löschen?" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/item_list_editor_plugin.cpp tools/editor/scenes_dock.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp msgid "Delete" msgstr "Löschen" #: tools/editor/editor_data.cpp msgid "Updating Scene" -msgstr "" +msgstr "Aktualisiere Szene" #: tools/editor/editor_data.cpp msgid "Storing local changes.." -msgstr "" +msgstr "Speichere lokale Änderungen.." #: tools/editor/editor_data.cpp msgid "Updating scene.." -msgstr "" +msgstr "Aktualisiere Szene..." #: tools/editor/editor_dir_dialog.cpp msgid "Choose a Directory" @@ -1144,7 +1264,7 @@ msgstr "Favoriten:" #: tools/editor/editor_file_dialog.cpp msgid "Recent:" -msgstr "" +msgstr "Kürzlich:" #: tools/editor/editor_file_dialog.cpp msgid "Preview:" @@ -1152,56 +1272,56 @@ msgstr "Vorschau:" #: tools/editor/editor_file_system.cpp msgid "Cannot go into subdir:" -msgstr "" +msgstr "Unterordner kann nicht geöffnet werden:" #: tools/editor/editor_file_system.cpp msgid "ScanSources" -msgstr "" +msgstr "Scanne Quellen" #: tools/editor/editor_help.cpp msgid "Search Classes" -msgstr "" +msgstr "Klassen suchen" #: tools/editor/editor_help.cpp msgid "Class List:" -msgstr "" +msgstr "Klassenliste:" #: tools/editor/editor_help.cpp tools/editor/property_editor.cpp msgid "Class:" -msgstr "" +msgstr "Klasse:" #: tools/editor/editor_help.cpp tools/editor/scene_tree_editor.cpp #: tools/editor/script_create_dialog.cpp msgid "Inherits:" -msgstr "" +msgstr "Erbt:" #: tools/editor/editor_help.cpp msgid "Inherited by:" -msgstr "" +msgstr "Geerbt von:" #: tools/editor/editor_help.cpp msgid "Brief Description:" -msgstr "" +msgstr "Kurze Beschreibung:" #: tools/editor/editor_help.cpp msgid "Public Methods:" -msgstr "" +msgstr "Public Methoden:" #: tools/editor/editor_help.cpp msgid "Members:" -msgstr "" +msgstr "Mitglieder:" #: tools/editor/editor_help.cpp msgid "GUI Theme Items:" -msgstr "" +msgstr "GUI Theme Einträge:" #: tools/editor/editor_help.cpp msgid "Signals:" -msgstr "" +msgstr "Signale:" #: tools/editor/editor_help.cpp msgid "Constants:" -msgstr "" +msgstr "Konstanten:" #: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp msgid "Description:" @@ -1209,11 +1329,11 @@ msgstr "Beschreibung:" #: tools/editor/editor_help.cpp msgid "Method Description:" -msgstr "" +msgstr "Methoden Beschreibung:" #: tools/editor/editor_help.cpp msgid "Search Text" -msgstr "" +msgstr "Suchtext" #: tools/editor/editor_import_export.cpp msgid "Added:" @@ -1225,53 +1345,53 @@ msgstr "Entfernt:" #: tools/editor/editor_import_export.cpp tools/editor/project_export.cpp msgid "Error saving atlas:" -msgstr "" +msgstr "Fehler beim speichern des Atlas:" #: tools/editor/editor_import_export.cpp msgid "Could not save atlas subtexture:" -msgstr "" +msgstr "Atlas Untertextur konnte nicht gespeichert werden:" #: tools/editor/editor_import_export.cpp msgid "Storing File:" -msgstr "" +msgstr "Speichere Datei:" #: tools/editor/editor_import_export.cpp msgid "Packing" -msgstr "" +msgstr "Packe" #: tools/editor/editor_import_export.cpp msgid "Exporting for %s" -msgstr "" +msgstr "Exportiere für %s" #: tools/editor/editor_import_export.cpp msgid "Setting Up.." -msgstr "" +msgstr "Bereite vor..." #: tools/editor/editor_log.cpp msgid " Output:" -msgstr "" +msgstr " Ausgabe:" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Importing" -msgstr "" +msgstr "Re-Import" #: tools/editor/editor_node.cpp msgid "Importing:" -msgstr "" +msgstr "Importiere:" #: tools/editor/editor_node.cpp msgid "Node From Scene" -msgstr "" +msgstr "Node aus Szene" #: tools/editor/editor_node.cpp tools/editor/scenes_dock.cpp msgid "Re-Import.." -msgstr "" +msgstr "Re-Import.." #: tools/editor/editor_node.cpp #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/resources_dock.cpp msgid "Error saving resource!" -msgstr "" +msgstr "Fehler beim speichern der Ressource!" #: tools/editor/editor_node.cpp #: tools/editor/plugins/animation_player_editor_plugin.cpp @@ -1281,236 +1401,248 @@ msgstr "Speichere Ressource als.." #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp msgid "I see.." -msgstr "" +msgstr "Verstehe..." #: tools/editor/editor_node.cpp msgid "Can't open file for writing:" -msgstr "" +msgstr "Kann Datei zum schreiben nicht öffnen:" #: tools/editor/editor_node.cpp msgid "Requested file format unknown:" -msgstr "" +msgstr "Angefordertes Dateiformat unbekannt:" #: tools/editor/editor_node.cpp msgid "Error while saving." -msgstr "" +msgstr "Fehler beim speichern." #: tools/editor/editor_node.cpp msgid "Saving Scene" -msgstr "" +msgstr "Speichere Szene" #: tools/editor/editor_node.cpp msgid "Analyzing" -msgstr "" +msgstr "Analysiere" #: tools/editor/editor_node.cpp msgid "Creating Thumbnail" -msgstr "" +msgstr "Erzeuge Miniaturansicht" #: tools/editor/editor_node.cpp msgid "" "Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." msgstr "" +"Szene konnte nicht gespeichert werden. Wahrscheinliche Abhängigkeiten " +"(Instanzen) sind nicht erfüllt." #: tools/editor/editor_node.cpp msgid "Failed to load resource." -msgstr "" +msgstr "Laden der Ressource gescheitert." #: tools/editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" -msgstr "" +msgstr "MeshLibrary zum vereinen konnte nicht geladen werden!" #: tools/editor/editor_node.cpp msgid "Error saving MeshLibrary!" -msgstr "" +msgstr "Fehler beim speichern der MeshLibrary!" #: tools/editor/editor_node.cpp msgid "Can't load TileSet for merging!" -msgstr "" +msgstr "TileSet zum vereinen kann nicht geladen werden!" #: tools/editor/editor_node.cpp msgid "Error saving TileSet!" -msgstr "" +msgstr "Fehler beim speichern des TileSet!" #: tools/editor/editor_node.cpp msgid "Can't open export templates zip." -msgstr "" +msgstr "\"Export Templates Zip\" kann nicht geöffnet werden." #: tools/editor/editor_node.cpp msgid "Loading Export Templates" -msgstr "" +msgstr "Lade Export Templates" #: tools/editor/editor_node.cpp msgid "Error trying to save layout!" -msgstr "" +msgstr "Fehler beim speichern des Layouts!" #: tools/editor/editor_node.cpp msgid "Default editor layout overridden." -msgstr "" +msgstr "Standard Editor Layout überschrieben." #: tools/editor/editor_node.cpp msgid "Layout name not found!" -msgstr "" +msgstr "Layout Name nicht gefunden!" #: tools/editor/editor_node.cpp msgid "Restored default layout to base settings." -msgstr "" +msgstr "Layout zu Standard Einstellungen zurückgesetzt." #: tools/editor/editor_node.cpp msgid "Copy Params" -msgstr "" +msgstr "Parameter Kopieren" #: tools/editor/editor_node.cpp msgid "Paste Params" -msgstr "" +msgstr "Parameter Einfügen" #: tools/editor/editor_node.cpp #: tools/editor/plugins/resource_preloader_editor_plugin.cpp msgid "Paste Resource" -msgstr "" +msgstr "Ressource Einfügen" #: tools/editor/editor_node.cpp msgid "Copy Resource" -msgstr "" +msgstr "Ressource Kopieren" #: tools/editor/editor_node.cpp msgid "Make Built-In" -msgstr "" +msgstr "Einbetten" #: tools/editor/editor_node.cpp msgid "Make Sub-Resources Unique" -msgstr "" +msgstr "Unter-Ressource Einzigartig Machen" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Open in Help" -msgstr "Im Editor öffnen" +msgstr "In Hilfe öffnen" #: tools/editor/editor_node.cpp msgid "There is no defined scene to run." -msgstr "" +msgstr "Es ist keine zu startende Szene definiert." #: tools/editor/editor_node.cpp msgid "" "No main scene has ever been defined.\n" "Select one from \"Project Settings\" under the 'application' category." msgstr "" +"Es ist keine Hauptszene definiert worden.\n" +"Wähle eine in den \"Projekt Einstellungen\" in der 'Applikation' Kategorie." #: tools/editor/editor_node.cpp msgid "Current scene was never saved, please save it prior to running." msgstr "" +"Die aktuelle Szene wurde noch nicht gespeichert, bitte speichere sie vor dem " +"starten." #: tools/editor/editor_node.cpp msgid "Could not start subprocess!" -msgstr "" +msgstr "Unterprozess konnte nicht gestartet werden!" #: tools/editor/editor_node.cpp msgid "Open Scene" -msgstr "" +msgstr "Szene Öffnen" #: tools/editor/editor_node.cpp msgid "Open Base Scene" -msgstr "" +msgstr "Basis Szene Öffnen" #: tools/editor/editor_node.cpp msgid "Quick Open Scene.." -msgstr "" +msgstr "Schnelles Szenen Öffnen.." #: tools/editor/editor_node.cpp msgid "Quick Open Script.." -msgstr "" +msgstr "Schnelles Script Öffnen.." #: tools/editor/editor_node.cpp msgid "Yes" -msgstr "" +msgstr "Ja" #: tools/editor/editor_node.cpp msgid "Close scene? (Unsaved changes will be lost)" -msgstr "" +msgstr "Szene schließen? (Nicht gespeicherte Änderungen gehen verloren)" #: tools/editor/editor_node.cpp msgid "Save Scene As.." -msgstr "" +msgstr "Szene Speichern Als.." #: tools/editor/editor_node.cpp msgid "This scene has never been saved. Save before running?" -msgstr "" +msgstr "Diese Szene wurde nie gespeichert. Speichern vor dem starten?" #: tools/editor/editor_node.cpp msgid "Please save the scene first." -msgstr "" +msgstr "Bitte speichere die Szene zuerst." #: tools/editor/editor_node.cpp msgid "Save Translatable Strings" -msgstr "" +msgstr "Speichere Übersetzbare Zeichen" #: tools/editor/editor_node.cpp msgid "Export Mesh Library" -msgstr "" +msgstr "Mesh Library exportieren" #: tools/editor/editor_node.cpp msgid "Export Tile Set" -msgstr "" +msgstr "Tile Set Exportieren" #: tools/editor/editor_node.cpp msgid "Quit" -msgstr "" +msgstr "Verlassen" #: tools/editor/editor_node.cpp msgid "Exit the editor?" -msgstr "" +msgstr "Editor verlassen?" #: tools/editor/editor_node.cpp msgid "Current scene not saved. Open anyway?" -msgstr "" +msgstr "Die aktuelle Szene ist nicht gespeichert. Trotzdem öffnen?" #: tools/editor/editor_node.cpp msgid "Can't reload a scene that was never saved." msgstr "" +"Szene kann nicht neu geladen werden wenn sie vorher nicht gespeichert wurde." #: tools/editor/editor_node.cpp msgid "Revert" -msgstr "" +msgstr "Zurücksetzen" #: tools/editor/editor_node.cpp msgid "This action cannot be undone. Revert anyway?" msgstr "" +"Diese Aktion kann nicht rückgängig gemacht werden. Trotzdem zurücksetzen?" #: tools/editor/editor_node.cpp msgid "Quick Run Scene.." -msgstr "" +msgstr "Szene Schnell Starten.." #: tools/editor/editor_node.cpp msgid "" "Open Project Manager? \n" "(Unsaved changes will be lost)" msgstr "" +"Projektmanager Öffnen?\n" +"(Nichtgespeicherte Änderungen gehen verloren)" #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp msgid "Ugh" -msgstr "" +msgstr "Ugh" #: tools/editor/editor_node.cpp msgid "" -"Error loading scene, it must be inside the project path. Use 'Import' to open " -"the scene, then save it inside the project path." +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." msgstr "" +"Fehler beim laden der Szene, sie muss innerhalb des Projekt Pfades liegen. " +"Nutze 'Import' um die Szene zu öffnen, dann speichere sie innherhalb des " +"Projekt Pfades." #: tools/editor/editor_node.cpp msgid "Error loading scene." -msgstr "" +msgstr "Fehler beim laden der Szene." #: tools/editor/editor_node.cpp msgid "Scene '%s' has broken dependencies:" -msgstr "" +msgstr "Szene '%s' hat ungelöste Abhängigkeiten:" #: tools/editor/editor_node.cpp msgid "Save Layout" -msgstr "" +msgstr "Layout Speichern" #: tools/editor/editor_node.cpp msgid "Load Layout" -msgstr "" +msgstr "Layout Laden" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Default" @@ -1518,105 +1650,113 @@ msgstr "Standard" #: tools/editor/editor_node.cpp msgid "Delete Layout" -msgstr "" +msgstr "Layout Löschen" #: tools/editor/editor_node.cpp msgid "Switch Scene Tab" -msgstr "" +msgstr "Wechsle Szenen Tab" #: tools/editor/editor_node.cpp msgid "%d more file(s)" -msgstr "" +msgstr "%d weitere Datei(en)" #: tools/editor/editor_node.cpp msgid "%d more file(s) or folder(s)" -msgstr "" +msgstr "%d weitere Datei(en) oder Ordner" #: tools/editor/editor_node.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Scene" -msgstr "" +msgstr "Szene" #: tools/editor/editor_node.cpp msgid "Go to previously opened scene." +msgstr "Gehe zu vorher geöffneter Szene." + +#: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" msgstr "" #: tools/editor/editor_node.cpp -msgid "Operations with scene files." +msgid "Distraction Free Mode" msgstr "" #: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "Operationen mit Szenen Dateien." + +#: tools/editor/editor_node.cpp msgid "New Scene" -msgstr "" +msgstr "Neue Szene" #: tools/editor/editor_node.cpp msgid "New Inherited Scene.." -msgstr "" +msgstr "Neue vererbte Szene.." #: tools/editor/editor_node.cpp msgid "Open Scene.." -msgstr "" +msgstr "Szene Öffnen.." #: tools/editor/editor_node.cpp msgid "Save Scene" -msgstr "" +msgstr "Szene Speichern" #: tools/editor/editor_node.cpp msgid "Close Scene" -msgstr "" +msgstr "Szene Schliessen" #: tools/editor/editor_node.cpp msgid "Close Goto Prev. Scene" -msgstr "" +msgstr "Schließen Zu Vorh. Szene Gehen" #: tools/editor/editor_node.cpp msgid "Open Recent" -msgstr "" +msgstr "Aktuelle Öffnen" #: tools/editor/editor_node.cpp msgid "Quick Filter Files.." -msgstr "" +msgstr "Schnelle Filter Dateien.." #: tools/editor/editor_node.cpp msgid "Convert To.." -msgstr "" +msgstr "Umwandeln Zu.." #: tools/editor/editor_node.cpp msgid "Translatable Strings.." -msgstr "" +msgstr "Übersetzbare Zeichen.." #: tools/editor/editor_node.cpp msgid "MeshLibrary.." -msgstr "" +msgstr "MeshLibrary.." #: tools/editor/editor_node.cpp msgid "TileSet.." -msgstr "" +msgstr "TileSet.." #: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Redo" -msgstr "" +msgstr "Wiederherstellen" #: tools/editor/editor_node.cpp msgid "Run Script" -msgstr "" +msgstr "Script Starten" #: tools/editor/editor_node.cpp msgid "Project Settings" -msgstr "" +msgstr "Projekt Einstellungen" #: tools/editor/editor_node.cpp msgid "Revert Scene" -msgstr "" +msgstr "Szene Zurücksetzen" #: tools/editor/editor_node.cpp msgid "Quit to Project List" -msgstr "" +msgstr "Verlasse zu Projekt Liste" #: tools/editor/editor_node.cpp msgid "Import assets to the project." -msgstr "" +msgstr "Importiere Assets zum Projekt." #: tools/editor/editor_node.cpp #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp @@ -1628,19 +1768,19 @@ msgstr "" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp #: tools/editor/project_manager.cpp msgid "Import" -msgstr "" +msgstr "Import" #: tools/editor/editor_node.cpp msgid "Miscellaneous project or scene-wide tools." -msgstr "" +msgstr "Verschiedene Projekte oder Szenenweite Werkzeuge." #: tools/editor/editor_node.cpp msgid "Tools" -msgstr "" +msgstr "Werkzeuge" #: tools/editor/editor_node.cpp msgid "Export the project to many platforms." -msgstr "" +msgstr "Exportiere Projekt für viele Platformen." #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Export" @@ -1648,61 +1788,61 @@ msgstr "Exportieren" #: tools/editor/editor_node.cpp msgid "Play the project." -msgstr "" +msgstr "Projekt starten." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Play" -msgstr "" +msgstr "Abspielen" #: tools/editor/editor_node.cpp msgid "Pause the scene" -msgstr "" +msgstr "Pausiere die Szene" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Pause Scene" -msgstr "Hauptszene" +msgstr "Szene pausieren" #: tools/editor/editor_node.cpp msgid "Stop the scene." -msgstr "" +msgstr "Stoppe die Szene." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Stop" -msgstr "" +msgstr "Stop" #: tools/editor/editor_node.cpp msgid "Play the edited scene." -msgstr "" +msgstr "Spiele die editierte Szene." #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play Scene" -msgstr "Hauptszene" +msgstr "Szene starten" #: tools/editor/editor_node.cpp msgid "Play custom scene" -msgstr "" +msgstr "Spiele angepasste Szene" #: tools/editor/editor_node.cpp msgid "Debug options" -msgstr "" +msgstr "Debug Optionen" #: tools/editor/editor_node.cpp msgid "Deploy with Remote Debug" -msgstr "" +msgstr "Mit Remote Debug starten" #: tools/editor/editor_node.cpp msgid "" -"When exporting or deploying, the resulting executable will attempt to connect " -"to the IP of this computer in order to be debugged." +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." msgstr "" +"Beim Exportieren oder Starten wird das Programm versuchen, sich mit der IP-" +"Adresse dieses Computers zu verbinden, um debugged werden zu können." #: tools/editor/editor_node.cpp msgid "Small Deploy with Network FS" -msgstr "" +msgstr "Small Deploy mit Netzwerkdateisystem" #: tools/editor/editor_node.cpp msgid "" @@ -1710,33 +1850,43 @@ msgid "" "executable.\n" "The filesystem will be provided from the project by the editor over the " "network.\n" -"On Android, deploy will use the USB cable for faster performance. This option " -"speeds up testing for games with a large footprint." +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." msgstr "" +"Wenn diese Option aktiviert ist, wird das Exportieren bzw. Starten nur eine " +"kleine Programmdatei erzeugen.\n" +"Die Projektdaten werden vom Editor über das Netzwerk bereitgestellt.\n" +"Bei Android wird hierbei das USB Kabel wegen der schnelleren " +"Übertragungsgeschwindigkeit benutzt. Diese Option beschleunigt das Testen " +"von Spielen mit großen Projektdaten." #: tools/editor/editor_node.cpp msgid "Visible Collision Shapes" -msgstr "" +msgstr "Collision Shapes sichtbar" #: tools/editor/editor_node.cpp msgid "" "Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " "running game if this option is turned on." msgstr "" +"Collision-Formen und Raycast Nodes (für 2D und 3D) werden im laufenden Spiel " +"angezeigt, falls diese Option aktiviert ist." #: tools/editor/editor_node.cpp msgid "Visible Navigation" -msgstr "" +msgstr "Navigation sichtbar" #: tools/editor/editor_node.cpp msgid "" "Navigation meshes and polygons will be visible on the running game if this " "option is turned on." msgstr "" +"Navigations- Meshes und Polygone werden im laufenden Spiel sichtbar sein " +"wenn diese Option gewählt ist." #: tools/editor/editor_node.cpp msgid "Sync Scene Changes" -msgstr "" +msgstr "Synchronisiere Szene Änderungen" #: tools/editor/editor_node.cpp msgid "" @@ -1745,10 +1895,14 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"Wenn diese Option gewählt ist, werden jegliche Änderungen der Szene im " +"Editor im laufenden Spiel dargestellt.\n" +"Wenn dies über die Remote Funktion genutzt wird ist es effizienter mit dem " +"Netzwerk Dateisystem." #: tools/editor/editor_node.cpp msgid "Sync Script Changes" -msgstr "" +msgstr "Synchronisiere Script Änderungen" #: tools/editor/editor_node.cpp msgid "" @@ -1757,10 +1911,14 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"Wenn diese Option gewählt ist, wird jeglich gespeichertes Script während des " +"laufenden Spiels neu geladen.\n" +"Wenn dies über die Remote Funktion genutzt wird ist es effizienter mit dem " +"Netzwerk Dateisystem." #: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp msgid "Settings" -msgstr "" +msgstr "Einstellungen" #: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp msgid "Editor Settings" @@ -1768,98 +1926,96 @@ msgstr "Editor-Einstellungen" #: tools/editor/editor_node.cpp msgid "Editor Layout" -msgstr "" +msgstr "Editor Layout" #: tools/editor/editor_node.cpp msgid "Install Export Templates" -msgstr "" +msgstr "Export Templates installieren" #: tools/editor/editor_node.cpp msgid "About" -msgstr "" +msgstr "Über" #: tools/editor/editor_node.cpp msgid "Alerts when an external resource has changed." -msgstr "" +msgstr "Schlägt Alarm falls sich eine externe Ressource verändert hat." #: tools/editor/editor_node.cpp msgid "Spins when the editor window repaints!" -msgstr "" +msgstr "Rotiert wenn das Editor Fenster neu gezeichnet wird!" #: tools/editor/editor_node.cpp msgid "Update Always" -msgstr "" +msgstr "Immer aktualisieren" #: tools/editor/editor_node.cpp msgid "Update Changes" -msgstr "" +msgstr "Änderungen aktualisieren" #: tools/editor/editor_node.cpp msgid "Inspector" -msgstr "" +msgstr "Inspektor" #: tools/editor/editor_node.cpp msgid "Create a new resource in memory and edit it." -msgstr "" +msgstr "Erstelle eine neue Ressource im Speicher und editiere sie." #: tools/editor/editor_node.cpp msgid "Load an existing resource from disk and edit it." -msgstr "" +msgstr "Lade eine bestehende Ressource von der Festplatte und editiere sie." #: tools/editor/editor_node.cpp msgid "Save the currently edited resource." -msgstr "" +msgstr "Speichere die so eben editierte Ressource." -#: tools/editor/editor_node.cpp -#: tools/editor/plugins/animation_player_editor_plugin.cpp -#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Save As.." -msgstr "" +msgstr "Speichern als.." #: tools/editor/editor_node.cpp msgid "Go to the previous edited object in history." -msgstr "" +msgstr "Gehe zum vorherigen editierten Objekt im Verlauf." #: tools/editor/editor_node.cpp msgid "Go to the next edited object in history." -msgstr "" +msgstr "Gehe zum nächsten editierten Objekt im Verlauf." #: tools/editor/editor_node.cpp msgid "History of recently edited objects." -msgstr "" +msgstr "Verlauf der zuletzt editierten Objekte." #: tools/editor/editor_node.cpp msgid "Object properties." -msgstr "" +msgstr "Objekt Eigenschaften." #: tools/editor/editor_node.cpp msgid "FileSystem" -msgstr "" +msgstr "Dateisystem" #: tools/editor/editor_node.cpp msgid "Output" -msgstr "" +msgstr "Ausgabe" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp #: tools/editor/import_settings.cpp msgid "Re-Import" -msgstr "" +msgstr "Re-Import" #: tools/editor/editor_node.cpp tools/editor/editor_plugin_settings.cpp msgid "Update" -msgstr "" +msgstr "Update" #: tools/editor/editor_node.cpp msgid "Thanks from the Godot community!" -msgstr "" +msgstr "Ein Dank von der Godot Community!" #: tools/editor/editor_node.cpp msgid "Thanks!" -msgstr "" +msgstr "Danke!" #: tools/editor/editor_node.cpp msgid "Import Templates From ZIP File" -msgstr "" +msgstr "Importiere Templates Aus ZIP Datei" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Export Project" @@ -1867,11 +2023,11 @@ msgstr "Projekt exportieren" #: tools/editor/editor_node.cpp msgid "Export Library" -msgstr "" +msgstr "Export Bibliothek" #: tools/editor/editor_node.cpp msgid "Merge With Existing" -msgstr "" +msgstr "Vereine Mit Existierenden" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Password:" @@ -1879,11 +2035,11 @@ msgstr "Passwort:" #: tools/editor/editor_node.cpp msgid "Open & Run a Script" -msgstr "" +msgstr "Script Öffnen & Starten" #: tools/editor/editor_node.cpp msgid "Load Errors" -msgstr "" +msgstr "Lade Fehler" #: tools/editor/editor_plugin_settings.cpp msgid "Installed Plugins:" @@ -1903,31 +2059,31 @@ msgstr "Status:" #: tools/editor/editor_profiler.cpp msgid "Stop Profiling" -msgstr "" +msgstr "Profiling Stoppen" #: tools/editor/editor_profiler.cpp msgid "Start Profiling" -msgstr "" +msgstr "Profiling Starten" #: tools/editor/editor_profiler.cpp msgid "Measure:" -msgstr "" +msgstr "Maße:" #: tools/editor/editor_profiler.cpp msgid "Frame Time (sec)" -msgstr "" +msgstr "Bild Zeit (Sek)" #: tools/editor/editor_profiler.cpp msgid "Average Time (sec)" -msgstr "" +msgstr "Durchschnitts Zeit (Sek)" #: tools/editor/editor_profiler.cpp msgid "Frame %" -msgstr "" +msgstr "Bild %" #: tools/editor/editor_profiler.cpp msgid "Fixed Frame %" -msgstr "" +msgstr "Fixiertes Bild %" #: tools/editor/editor_profiler.cpp tools/editor/script_editor_debugger.cpp msgid "Time:" @@ -1935,23 +2091,23 @@ msgstr "Zeit:" #: tools/editor/editor_profiler.cpp msgid "Inclusive" -msgstr "" +msgstr "Inklusive" #: tools/editor/editor_profiler.cpp msgid "Self" -msgstr "" +msgstr "Self" #: tools/editor/editor_profiler.cpp msgid "Frame #:" -msgstr "" +msgstr "Bild #:" #: tools/editor/editor_reimport_dialog.cpp msgid "Please wait for scan to complete." -msgstr "" +msgstr "Bitte warten bis der Scan abgeschlossen ist." #: tools/editor/editor_reimport_dialog.cpp msgid "Current scene must be saved to re-import." -msgstr "" +msgstr "Aktuelle Szene muss gespeichert sein um sie erneut zu importieren." #: tools/editor/editor_reimport_dialog.cpp msgid "Save & Re-Import" @@ -1959,103 +2115,105 @@ msgstr "Speichern & erneut importieren" #: tools/editor/editor_reimport_dialog.cpp msgid "Re-Import Changed Resources" -msgstr "" +msgstr "Veränderte Ressourcen Neu Importieren" #: tools/editor/editor_run_script.cpp msgid "Write your logic in the _run() method." -msgstr "" +msgstr "Schreibe die Logik in die _run() Methode." #: tools/editor/editor_run_script.cpp msgid "There is an edited scene already." -msgstr "" +msgstr "Es besteht eine editierte Szene bereits." #: tools/editor/editor_run_script.cpp msgid "Couldn't instance script:" -msgstr "" +msgstr "Skript konnte nicht instanziert werden:" #: tools/editor/editor_run_script.cpp msgid "Did you forget the 'tool' keyword?" -msgstr "" +msgstr "Hast du das 'tool' Schlüsselwort vergessen?" #: tools/editor/editor_run_script.cpp msgid "Couldn't run script:" -msgstr "" +msgstr "Skript konnte nicht ausgeführt werden:" #: tools/editor/editor_run_script.cpp msgid "Did you forget the '_run' method?" -msgstr "" +msgstr "Hast du die '_run' Methode vergessen?" #: tools/editor/editor_settings.cpp msgid "Default (Same as Editor)" -msgstr "" +msgstr "Standard (Dasselbe wie der Editor)" #: tools/editor/editor_sub_scene.cpp msgid "Select Node(s) to Import" -msgstr "" +msgstr "Selektiere Node(s) für den Import" #: tools/editor/editor_sub_scene.cpp msgid "Scene Path:" -msgstr "" +msgstr "Szenen Pfad:" #: tools/editor/editor_sub_scene.cpp msgid "Import From Node:" -msgstr "" +msgstr "Importiere Aus Einem Node:" #: tools/editor/file_type_cache.cpp msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" msgstr "" +"fil_type_cache.cch kann nicht mit Schreibzugriff geöffnet werden, file type " +"cache wird nicht gespeichert!" #: tools/editor/groups_editor.cpp msgid "Add to Group" -msgstr "" +msgstr "Füge Gruppe hinzu" #: tools/editor/groups_editor.cpp msgid "Remove from Group" -msgstr "" +msgstr "Entferne aus Gruppe" #: tools/editor/import_settings.cpp msgid "Imported Resources" -msgstr "" +msgstr "Importierte Ressourcen" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp msgid "No bit masks to import!" -msgstr "" +msgstr "Keine Bit Masken zu importieren!" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Target path is empty." -msgstr "" +msgstr "Ziel Pfad ist leer." #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Target path must be a complete resource path." -msgstr "" +msgstr "Ziel Pfad muss ein kompletter Ressourcen Pfad sein." #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Target path must exist." -msgstr "" +msgstr "Ziel Pfad muss existieren." #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Save path is empty!" -msgstr "" +msgstr "Speicher Pfad ist leer!" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp msgid "Import BitMasks" -msgstr "" +msgstr "Importiere BitMasks" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Source Texture(s):" -msgstr "" +msgstr "Quell Textur(en):" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp @@ -2064,7 +2222,7 @@ msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Target Path:" -msgstr "" +msgstr "Ziel Pfad:" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -2073,43 +2231,43 @@ msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Accept" -msgstr "" +msgstr "Akzeptieren" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp msgid "Bit Mask" -msgstr "" +msgstr "Bit Maske" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "No source font file!" -msgstr "" +msgstr "Kein Quell Font gefunden!" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "No target font resource!" -msgstr "" +msgstr "Keine Ziel Font Ressource!" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Can't load/process source font." -msgstr "" +msgstr "Quell Font kann nicht geladen/verarbeitet werden." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Couldn't save font." -msgstr "" +msgstr "Font konnte nicht gespeichert werden." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Source Font:" -msgstr "" +msgstr "Quell Font:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Source Font Size:" -msgstr "" +msgstr "Quell Font Größe:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Dest Resource:" -msgstr "" +msgstr "Ziel Ressource:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "The quick brown fox jumps over the lazy dog." -msgstr "" +msgstr "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Test:" @@ -2124,99 +2282,102 @@ msgstr "Optionen:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Font Import" -msgstr "" +msgstr "Font Import" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "" "This file is already a Godot font file, please supply a BMFont type file " "instead." msgstr "" +"Diese Datei ist bereits eine Godot Font Datei, bitte gib eine BMFont Datei " +"anstelle an." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Failed opening as BMFont file." -msgstr "" +msgstr "Öffnen der BMFont Datei fehlgeschlagen." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Invalid font custom source." -msgstr "" +msgstr "Unzulässige eigene Font Ressource." #: tools/editor/io_plugins/editor_font_import_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Font" -msgstr "" +msgstr "Schrift" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "No meshes to import!" -msgstr "" +msgstr "Keine Meshes zu importieren!" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "Single Mesh Import" -msgstr "" +msgstr "Einzel Mesh Import" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "Source Mesh(es):" -msgstr "" +msgstr "Quell Mesh(es):" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh" -msgstr "" +msgstr "Mesh" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "Surface %d" -msgstr "" +msgstr "Oberfläche %d" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "No samples to import!" -msgstr "" +msgstr "Keine Beispiele zu importieren!" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Import Audio Samples" -msgstr "" +msgstr "Audio Samples Importieren" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Source Sample(s):" -msgstr "" +msgstr "Quell Sample(s):" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Audio Sample" -msgstr "" +msgstr "Audio Sample" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "New Clip" -msgstr "" +msgstr "Neuer Clip" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Animation Options" -msgstr "" +msgstr "Animations Einstellungen" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Flags" -msgstr "" +msgstr "Flags" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Bake FPS:" -msgstr "" +msgstr "FPS Backen:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Optimizer" -msgstr "" +msgstr "Optimierer" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Max Linear Error" -msgstr "" +msgstr "Lineare Fehlergrenze" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Max Angular Error" -msgstr "" +msgstr "Angulare Fehlergrenze" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Max Angle" -msgstr "" +msgstr "Maximaler Winkel" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#, fuzzy msgid "Clips" -msgstr "" +msgstr "Begrenzungen" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -2226,16 +2387,16 @@ msgstr "Name" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Start(s)" -msgstr "" +msgstr "Start" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "End(s)" -msgstr "" +msgstr "Ende" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Loop" -msgstr "" +msgstr "Wiederholung" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Filters" @@ -2243,104 +2404,105 @@ msgstr "Filter" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Source path is empty." -msgstr "" +msgstr "Quell Pfad ist leer." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Couldn't load post-import script." -msgstr "" +msgstr "Post-Import Skript konnte nicht geladen werden." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Invalid/broken script for post-import." -msgstr "" +msgstr "Fehlerhaftes Skript für Post-Import." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Error importing scene." -msgstr "" +msgstr "Fehler beim importieren der Szene." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import 3D Scene" -msgstr "" +msgstr "3D Szene Importieren" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Source Scene:" -msgstr "" +msgstr "Quell Szene:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Same as Target Scene" -msgstr "" +msgstr "Dieselbe wie die Zielszene" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Shared" -msgstr "" +msgstr "Geteilt" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Target Texture Folder:" -msgstr "" +msgstr "Ziel Texturen Ordner:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Post-Process Script:" -msgstr "" +msgstr "Post-Process Skript:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Custom Root Node Type:" -msgstr "" +msgstr "Angepasster Stamm-Node Typ:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Auto" -msgstr "" +msgstr "Auto" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "The Following Files are Missing:" -msgstr "" +msgstr "Die folgenden Dateien fehlen:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import Anyway" -msgstr "" +msgstr "Trotzdem importieren" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import & Open" -msgstr "" +msgstr "Importieren & Öffnen" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Edited scene has not been saved, open imported scene anyway?" msgstr "" +"Editierte Szene wurde nicht gespeichert, trotzdem importierte Szene öffnen?" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Import Scene" -msgstr "" +msgstr "Szene Importieren" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Importing Scene.." -msgstr "" +msgstr "Szene Wird Importiert.." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Running Custom Script.." -msgstr "" +msgstr "Angepasstes Skript Wird Ausgeführt.." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Couldn't load post-import script:" -msgstr "" +msgstr "Post-Import Skript konnte nicht geladen werden:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Invalid/broken script for post-import:" -msgstr "" +msgstr "Fehlerhaftes Skript für Post-Import:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Error running post-import script:" -msgstr "" +msgstr "Fehler beim ausführen des Post-Import Skripts:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import Image:" -msgstr "" +msgstr "Bild Importieren:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Can't import a file over itself:" -msgstr "" +msgstr "Es kann keine Datei in sich selbst importiert werden:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Couldn't localize path: %s (already local)" -msgstr "" +msgstr "Pfad konnte nicht gefunden werden: %s (bereits lokal)" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Saving.." @@ -2348,95 +2510,95 @@ msgstr "Speichere.." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "3D Scene Animation" -msgstr "" +msgstr "3D Szenen Animation" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Uncompressed" -msgstr "" +msgstr "Unkomprimiert" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Compress Lossless (PNG)" -msgstr "" +msgstr "Verlustfrei Komprimieren (PNG)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Compress Lossy (WebP)" -msgstr "" +msgstr "Verlustbehaftet Komprimieren (WebP)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Compress (VRAM)" -msgstr "" +msgstr "Komprimieren (VRAM)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Texture Format" -msgstr "" +msgstr "Textur-Format" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Texture Compression Quality (WebP):" -msgstr "" +msgstr "Textur Kompressions-Qualität (WebP):" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Texture Options" -msgstr "" +msgstr "Textur Einstellungen" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Please specify some files!" -msgstr "" +msgstr "Bitte gib einige Dateien an!" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "At least one file needed for Atlas." -msgstr "" +msgstr "Es wird zumindest eine Datei für den Atlas gebraucht." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Error importing:" -msgstr "" +msgstr "Fehler beim importieren:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Only one file is required for large texture." -msgstr "" +msgstr "Es ist nur eine Datei für eine große Textur erforderlich." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Max Texture Size:" -msgstr "" +msgstr "Maximale Textur Größe:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures for Atlas (2D)" -msgstr "" +msgstr "Importiere Texturen für Atlas (2D)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Cell Size:" -msgstr "" +msgstr "Zell-Größe:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Large Texture" -msgstr "" +msgstr "Große Textur" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Large Textures (2D)" -msgstr "" +msgstr "Importiere Große Texturen (2D)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Source Texture" -msgstr "" +msgstr "Quell-Textur" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Base Atlas Texture" -msgstr "" +msgstr "Basis Atlas-Textur" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Source Texture(s)" -msgstr "" +msgstr "Quell-Textur(en)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures for 2D" -msgstr "" +msgstr "Importiere Texturen für 2D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures for 3D" -msgstr "" +msgstr "Importiere Texturen für 3D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures" -msgstr "" +msgstr "Texturen Importieren" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "2D Texture" @@ -2448,65 +2610,67 @@ msgstr "3D-Textur" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Atlas Texture" -msgstr "" +msgstr "Atlas-Textur" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "" "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " "the project." msgstr "" +"MERKE: Das importieren von 2D Texturen ist nicht zwingend notwendig. Kopiere " +"einfach png/jpg Dateien in das Projekt." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Crop empty space." -msgstr "" +msgstr "Beschneide leere Bereiche." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Texture" -msgstr "" +msgstr "Textur" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Large Texture" -msgstr "" +msgstr "Große Textur Importieren" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Load Source Image" -msgstr "" +msgstr "Quell-Bild Laden" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Slicing" -msgstr "" +msgstr "Teile" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Inserting" -msgstr "" +msgstr "Füge Ein" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Saving" -msgstr "" +msgstr "Speichere" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Couldn't save large texture:" -msgstr "" +msgstr "Große Textur konnte nicht gespeichert werden:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Build Atlas For:" -msgstr "" +msgstr "Baue Atlas Für:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Loading Image:" -msgstr "" +msgstr "Lade Bild:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Couldn't load image:" -msgstr "" +msgstr "Bild konnte nicht geladen werden:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Converting Images" -msgstr "" +msgstr "Bilder werden konvertiert" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Cropping Images" -msgstr "" +msgstr "Bilder werden beschnitten" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Blitting Images" @@ -2514,23 +2678,23 @@ msgstr "" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Couldn't save atlas image:" -msgstr "" +msgstr "Atlas-Bild konnte nicht gespeichert werden:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Couldn't save converted texture:" -msgstr "" +msgstr "Konvertierte Textur konnte nicht gespeichert werden:" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Invalid source!" -msgstr "" +msgstr "Fehlerhafte Quelle!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Invalid translation source!" -msgstr "" +msgstr "Fehlerhafte Übersetzungs-Quelle!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Column" -msgstr "" +msgstr "Reihe" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp #: tools/editor/script_create_dialog.cpp @@ -2539,163 +2703,162 @@ msgstr "Sprache" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "No items to import!" -msgstr "" +msgstr "Keine Inhalte zu importieren!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "No target path!" -msgstr "" +msgstr "Kein Ziel-Pfad!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Import Translations" -msgstr "" +msgstr "Übersetzungen Importieren" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Couldn't import!" -msgstr "" +msgstr "Konnte nicht importiert werden!" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Import Translation" -msgstr "" +msgstr "Übersetzung Importieren" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Source CSV:" -msgstr "" +msgstr "Quell-CSV:" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Ignore First Row" -msgstr "" +msgstr "Ignoriere Erste Zeile" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Compress" -msgstr "" +msgstr "Komprimieren" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Add to Project (engine.cfg)" -msgstr "" +msgstr "Zu Projekt hinzufügen (engine.cfg)" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Import Languages:" -msgstr "" +msgstr "Sprachen Importieren:" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Translation" -msgstr "" +msgstr "Übersetzung" #: tools/editor/multi_node_edit.cpp msgid "MultiNode Set" -msgstr "" +msgstr "MultiNode Setzen" #: tools/editor/node_dock.cpp msgid "Node" -msgstr "" +msgstr "Node" #: tools/editor/node_dock.cpp -#, fuzzy msgid "Groups" -msgstr "Gruppen:" +msgstr "Gruppen" #: tools/editor/node_dock.cpp msgid "Select a Node to edit Signals and Groups." -msgstr "" +msgstr "Selektiere ein Node um Signale und Gruppen zu editieren." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" -msgstr "" +msgstr "Autoplay Umschalten" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "New Animation Name:" -msgstr "" +msgstr "Neuer Animations-Name:" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "New Anim" -msgstr "" +msgstr "Neue Animation" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Change Animation Name:" -msgstr "" +msgstr "Ändere Animations-Name:" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Remove Animation" -msgstr "" +msgstr "Animation Entfernen" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: Invalid animation name!" -msgstr "" +msgstr "FEHLER: Fehlerhafter Animations-Name!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: Animation name already exists!" -msgstr "" +msgstr "Fehler: Animations-Name existiert bereits!" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Rename Animation" -msgstr "" +msgstr "Animation Umbenennen" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "Add Animation" -msgstr "" +msgstr "Animation Hinzufügen" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Next Changed" -msgstr "" +msgstr "Überblende Nächsten Geänderten" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Change Blend Time" -msgstr "" +msgstr "Blend-Zeit Ändern" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load Animation" -msgstr "" +msgstr "Animation Laden" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Duplicate Animation" -msgstr "" +msgstr "Animation Duplizieren" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation to copy!" -msgstr "" +msgstr "Fehler: Keine Animation zum kopieren!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation resource on clipboard!" -msgstr "" +msgstr "FEHLER: Keine Animations-Ressource im Zwischenspeicher!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Pasted Animation" -msgstr "" +msgstr "Eingefügte Animation" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Paste Animation" -msgstr "" +msgstr "Animation Einfügen" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "ERROR: No animation to edit!" -msgstr "" +msgstr "FEHLER: Keine Animation zum editieren!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" -msgstr "" +msgstr "Spiele ausgewählte Animation rückwärts von aktueller Position. (A)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from end. (Shift+A)" -msgstr "" +msgstr "Spiele ausgewählte Animation rückwärts vom Ende. (Shift+A)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Stop animation playback. (S)" -msgstr "" +msgstr "Stoppe Animations-Wiedergabe. (S)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from start. (Shift+D)" -msgstr "" +msgstr "Spiele ausgewählte Animation vom Start. (Shift+D)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation from current pos. (D)" -msgstr "" +msgstr "Ausgewählte Animation von aktueller Position aus abspielen. (D)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Animation position (in seconds)." -msgstr "" +msgstr "Position der Animation (in Sekunden)." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Scale animation playback globally for the node." @@ -2703,23 +2866,33 @@ msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Create new animation in player." -msgstr "" +msgstr "Neue Animation im Player erstellen." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#, fuzzy +msgid "Load animation from disk." +msgstr "Eine Animation von der Festplatte laden." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load an animation from disk." -msgstr "" +msgstr "Eine Animation von der Festplatte laden." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Save the current animation" -msgstr "" +msgstr "Aktuelle Animation speichern" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#, fuzzy +msgid "Save As" +msgstr "Speichern als.." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." -msgstr "" +msgstr "Liste der Animationen im Player anzeigen." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Autoplay on Load" -msgstr "" +msgstr "Beim Laden automatisch abpielen" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Edit Target Blend Times" @@ -2727,19 +2900,19 @@ msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Tools" -msgstr "" +msgstr "Animationswerkzeuge" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Copy Animation" -msgstr "" +msgstr "Animation kopieren" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Create New Animation" -msgstr "" +msgstr "Neue Animation erstellen" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Animation Name:" -msgstr "" +msgstr "Name der Animation:" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/resource_preloader_editor_plugin.cpp @@ -2755,7 +2928,7 @@ msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Next (Auto Queue):" -msgstr "" +msgstr "Nächste (Automatische Warteschlange):" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Cross-Animation Blend Times" @@ -2764,24 +2937,24 @@ msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Animation" -msgstr "" +msgstr "Animation" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "New name:" -msgstr "" +msgstr "Neuer Name:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Scale:" -msgstr "" +msgstr "Skalierung:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Fade In (s):" -msgstr "" +msgstr "Einblenden (s):" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Fade Out (s):" -msgstr "" +msgstr "Ausblenden (s):" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend" @@ -2789,28 +2962,28 @@ msgstr "" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Mix" -msgstr "" +msgstr "Mix" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Auto Restart:" -msgstr "" +msgstr "Automatisch neu starten:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Restart (s):" -msgstr "" +msgstr "Neu starten (s):" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Random Restart (s):" -msgstr "" +msgstr "Zufällig neu starten (s):" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Start!" -msgstr "" +msgstr "Start!" #: tools/editor/plugins/animation_tree_editor_plugin.cpp #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Amount:" -msgstr "" +msgstr "Menge:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend:" @@ -2826,15 +2999,15 @@ msgstr "" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "X-Fade Time (s):" -msgstr "" +msgstr "Überblendungszeit (s):" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Current:" -msgstr "" +msgstr "Laufend:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Add Input" -msgstr "" +msgstr "Eingang hinzufügen" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Clear Auto-Advance" @@ -2846,23 +3019,23 @@ msgstr "" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Delete Input" -msgstr "" +msgstr "Eingang löschen" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Rename" -msgstr "" +msgstr "Umbenennen" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Animation tree is valid." -msgstr "" +msgstr "Animationsbaum ist gültig." #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Animation tree is invalid." -msgstr "" +msgstr "Animationsbaum ist ungültig." #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Animation Node" -msgstr "" +msgstr "Animationsknoten" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "OneShot Node" @@ -2870,7 +3043,7 @@ msgstr "" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Mix Node" -msgstr "" +msgstr "Mixknoten" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Blend2 Node" @@ -2898,7 +3071,7 @@ msgstr "" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Import Animations.." -msgstr "" +msgstr "Animationen importieren.." #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Edit Node Filters" @@ -2906,15 +3079,15 @@ msgstr "" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Filters.." -msgstr "" +msgstr "Filter.." #: tools/editor/plugins/baked_light_baker.cpp msgid "Parsing %d Triangles:" -msgstr "" +msgstr "Parse %d Dreiecke:" #: tools/editor/plugins/baked_light_baker.cpp msgid "Triangle #" -msgstr "" +msgstr "Dreieck #" #: tools/editor/plugins/baked_light_baker.cpp msgid "Light Baker Setup:" @@ -2922,15 +3095,15 @@ msgstr "" #: tools/editor/plugins/baked_light_baker.cpp msgid "Parsing Geometry" -msgstr "" +msgstr "Parse Geometrie" #: tools/editor/plugins/baked_light_baker.cpp msgid "Fixing Lights" -msgstr "" +msgstr "Behebe Lampen" #: tools/editor/plugins/baked_light_baker.cpp msgid "Making BVH" -msgstr "" +msgstr "Erstelle BVH" #: tools/editor/plugins/baked_light_baker.cpp msgid "Creating Light Octree" @@ -2954,7 +3127,7 @@ msgstr "" #: tools/editor/plugins/baked_light_baker.cpp msgid "Post-Processing Texture #" -msgstr "" +msgstr "Nachbearbeiten von Textur #" #: tools/editor/plugins/baked_light_editor_plugin.cpp msgid "BakedLightInstance does not contain a BakedLight resource." @@ -2971,39 +3144,40 @@ msgstr "" #: tools/editor/plugins/camera_editor_plugin.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Preview" -msgstr "" +msgstr "Vorschau" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap" -msgstr "" +msgstr "Einrasten konfigurieren" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Grid Offset:" -msgstr "" +msgstr "Gitterverschiebung:" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Grid Step:" -msgstr "" +msgstr "Gitterabstand:" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" -msgstr "" +msgstr "Rotationsverschiebung:" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Step:" -msgstr "" +msgstr "Rotationsabstand:" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Pivot" -msgstr "" +msgstr "Mittelpunkt bewegen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp +#, fuzzy msgid "Move Action" -msgstr "" +msgstr "Bewegungsaktion" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Edit IK Chain" @@ -3015,11 +3189,11 @@ msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Change Anchors" -msgstr "" +msgstr "Ankerpunkte ändern" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom (%):" -msgstr "" +msgstr "Vergrößerung (%):" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Paste Pose" @@ -3027,7 +3201,7 @@ msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Select Mode (Q)" -msgstr "" +msgstr "Auswahlmodus (Q)" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Drag: Rotate" @@ -3040,6 +3214,8 @@ msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." msgstr "" +"Drücken Sie 'V', um den Mittelpunkt zu ändern, 'Shift+V', um den Mittelpunkt " +"(während der Bewegung) zu verschieben." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+RMB: Depth list selection" @@ -3048,12 +3224,12 @@ msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Move Mode (W)" -msgstr "" +msgstr "Bewegungsmodus (W)" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Mode (E)" -msgstr "" +msgstr "Rotationsmodus (E)" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp @@ -3061,10 +3237,13 @@ msgid "" "Show a list of all objects at the position clicked\n" "(same as Alt+RMB in select mode)." msgstr "" +"Zeige eine Liste aller Objekte, die sich an der angeklickten Position " +"befinden\n" +"(equivalent zu Alt+RMT im Auswahlmodus)." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Click to change object's rotation pivot." -msgstr "" +msgstr "Klicken Sie, um den Rotationsmittelpunkt des Objekts zu ändern." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Pan Mode" @@ -3073,18 +3252,21 @@ msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Lock the selected object in place (can't be moved)." msgstr "" +"Das ausgewählte Objekt an seiner Position sperren (kann nicht bewegt werden)." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Unlock the selected object (can be moved)." -msgstr "" +msgstr "Das ausgewählte Objekt entsperren (kann bewegt werden)." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Makes sure the object's children are not selectable." msgstr "" +"Versichert, dass die untergeordnete Knoten des Objektes nicht auswählbar " +"sind." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Restores the object's children's ability to be selected." -msgstr "" +msgstr "Stellt die Eigenschaft des Objektes wieder her, ausgewählt zu werden." #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp @@ -3092,51 +3274,51 @@ msgstr "" #: tools/editor/plugins/shader_editor_plugin.cpp #: tools/editor/project_manager.cpp msgid "Edit" -msgstr "" +msgstr "Bearbeiten" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Use Snap" -msgstr "" +msgstr "Einrasten aktivieren" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Show Grid" -msgstr "" +msgstr "Raster anzeigen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Rotation Snap" -msgstr "" +msgstr "Einrasten für Rotation aktivieren" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap Relative" -msgstr "" +msgstr "Relatives Einrasten aktivieren" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Configure Snap.." -msgstr "" +msgstr "Einrasten konfigurieren.." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Pixel Snap" -msgstr "" +msgstr "Einrasten an Pixeln aktivieren" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Expand to Parent" -msgstr "" +msgstr "Auf übergeordneten Knoten ausdehnen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Skeleton.." -msgstr "" +msgstr "Skelett.." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make Bones" -msgstr "" +msgstr "Knochen erstellen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Clear Bones" -msgstr "" +msgstr "Knochen entfernen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make IK Chain" @@ -3149,19 +3331,19 @@ msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "View" -msgstr "" +msgstr "Ansicht" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom In" -msgstr "" +msgstr "Vergrößern" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom Out" -msgstr "" +msgstr "Verkleinern" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom Reset" -msgstr "" +msgstr "Vergrößerung zurücksetzen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom Set.." @@ -3169,27 +3351,27 @@ msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" -msgstr "" +msgstr "Auswahl zentrieren" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Frame Selection" -msgstr "" +msgstr "Auswahl einrahmen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Anchor" -msgstr "" +msgstr "Anker" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Keys (Ins)" -msgstr "" +msgstr "Schlüsselbilder einfügen (Einfg)" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key" -msgstr "" +msgstr "Schlüsselbild einfügen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Insert Key (Existing Tracks)" -msgstr "" +msgstr "Schlüsselbild einfügen (existierender Track)" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Copy Pose" @@ -3201,18 +3383,18 @@ msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Set a Value" -msgstr "" +msgstr "Einen Wert setzen" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Snap (Pixels):" -msgstr "" +msgstr "Einrasten (Pixel):" #: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create Poly" -msgstr "" +msgstr "Polygon erstellen" #: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp #: tools/editor/plugins/collision_polygon_editor_plugin.cpp @@ -3221,7 +3403,7 @@ msgstr "" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Edit Poly" -msgstr "" +msgstr "Polygon bearbeiten" #: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp #: tools/editor/plugins/collision_polygon_editor_plugin.cpp @@ -3230,17 +3412,17 @@ msgstr "" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Edit Poly (Remove Point)" -msgstr "" +msgstr "Polygon bearbeiten (Punkt entfernen)" #: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Create a new polygon from scratch." -msgstr "" +msgstr "Polygon neu von vorne erstellen." #: tools/editor/plugins/collision_polygon_editor_plugin.cpp msgid "Create Poly3D" -msgstr "" +msgstr "Polygon3D erstellen" #: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp msgid "Set Handle" @@ -3248,12 +3430,12 @@ msgstr "" #: tools/editor/plugins/color_ramp_editor_plugin.cpp msgid "Add/Remove Color Ramp Point" -msgstr "" +msgstr "Farbverlaufspunkt hinzufügen/entfernen" #: tools/editor/plugins/color_ramp_editor_plugin.cpp #: tools/editor/plugins/shader_graph_editor_plugin.cpp msgid "Modify Color Ramp" -msgstr "" +msgstr "Farbverlauf anpassen" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Creating Mesh Library" @@ -3261,41 +3443,41 @@ msgstr "" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Thumbnail.." -msgstr "" +msgstr "Vorschau.." #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Remove item %d?" -msgstr "" +msgstr "%d entfernen?" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Add Item" -msgstr "" +msgstr "Element hinzufügen" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Remove Selected Item" -msgstr "" +msgstr "Ausgewähltes Element entfernen" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Import from Scene" -msgstr "" +msgstr "Aus Szene importieren" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Update from Scene" -msgstr "" +msgstr "Aus Szene aktialisieren" #: tools/editor/plugins/item_list_editor_plugin.cpp msgid "Item %d" -msgstr "" +msgstr "Element %d" #: tools/editor/plugins/item_list_editor_plugin.cpp msgid "Items" -msgstr "" +msgstr "Elemente" #: tools/editor/plugins/item_list_editor_plugin.cpp msgid "Item List Editor" -msgstr "" +msgstr "Auflistungseditor" #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp msgid "Create Occluder Polygon" @@ -3304,22 +3486,22 @@ msgstr "" #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Edit existing polygon:" -msgstr "" +msgstr "Bestehendes Polygon bearbeiten:" #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "LMB: Move Point." -msgstr "" +msgstr "LMT: Punkt verschieben." #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Ctrl+LMB: Split Segment." -msgstr "" +msgstr "Strg+LMT: Segment aufteilen." #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "RMB: Erase Point." -msgstr "" +msgstr "RMT: Punkt entfernen." #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh is empty!" @@ -3335,7 +3517,7 @@ msgstr "" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "This doesn't work on scene root!" -msgstr "" +msgstr "Dies funktioniert nicht am Hauptknoten der Szene!" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Shape" @@ -3343,7 +3525,7 @@ msgstr "" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Shape" -msgstr "" +msgstr "Konvexe Form erstellen" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Navigation Mesh" @@ -3459,15 +3641,15 @@ msgstr "" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "X-Axis" -msgstr "" +msgstr "X-Achse" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Y-Axis" -msgstr "" +msgstr "Y-Achse" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Z-Axis" -msgstr "" +msgstr "Z-Achse" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh Up Axis:" @@ -3475,15 +3657,15 @@ msgstr "" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" -msgstr "" +msgstr "Zufällige Rotation:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Random Tilt:" -msgstr "" +msgstr "Zufälliges Kippen:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Random Scale:" -msgstr "" +msgstr "Zufällige Skalieren:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Populate" @@ -3499,11 +3681,11 @@ msgstr "" #: tools/editor/plugins/particles_2d_editor_plugin.cpp msgid "Error loading image:" -msgstr "" +msgstr "Fehler beim Laden des Bilds:" #: tools/editor/plugins/particles_2d_editor_plugin.cpp msgid "No pixels with transparency > 128 in image.." -msgstr "" +msgstr "Keine Pixel mit einer Transzparenz > 128 im Bild.." #: tools/editor/plugins/particles_2d_editor_plugin.cpp msgid "Set Emission Mask" @@ -3523,19 +3705,19 @@ msgstr "" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Node does not contain geometry." -msgstr "" +msgstr "Knoten enthält keine Geometrie." #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Node does not contain geometry (faces)." -msgstr "" +msgstr "Knoten enthält keine Geometrie (Flächen)." #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Faces contain no area!" -msgstr "" +msgstr "Flächen enthalten keinen Bereich!" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "No faces!" -msgstr "" +msgstr "Keine Flächen!" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Generate AABB" @@ -3567,24 +3749,24 @@ msgstr "" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Surface" -msgstr "" +msgstr "Oberfläche" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Volume" -msgstr "" +msgstr "Volumen" #: tools/editor/plugins/path_2d_editor_plugin.cpp msgid "Remove Point from Curve" -msgstr "" +msgstr "Punkt von Kurve entfernen" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Add Point to Curve" -msgstr "" +msgstr "Punkt zu Kurve hinzufügen" #: tools/editor/plugins/path_2d_editor_plugin.cpp msgid "Move Point in Curve" -msgstr "" +msgstr "Punkt auf Kurve verschieben" #: tools/editor/plugins/path_2d_editor_plugin.cpp msgid "Move In-Control in Curve" @@ -3597,70 +3779,70 @@ msgstr "" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Select Points" -msgstr "" +msgstr "Punkte auswählen" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Shift+Drag: Select Control Points" -msgstr "" +msgstr "Shift+Ziehen: Kontrollpunkte auswählen" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Click: Add Point" -msgstr "" +msgstr "Klicken: Punkt hinzufügen" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Right Click: Delete Point" -msgstr "" +msgstr "Rechtsklick: Punkt löschen" #: tools/editor/plugins/path_2d_editor_plugin.cpp msgid "Select Control Points (Shift+Drag)" -msgstr "" +msgstr "Kontrollpunkte auswählen (Shift+Ziehen)" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Add Point (in empty space)" -msgstr "" +msgstr "Punkt hinzufügen (in leerem Raum)" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Split Segment (in curve)" -msgstr "" +msgstr "Segment aufteilen (in Kurve)" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Delete Point" -msgstr "" +msgstr "Punk löschen" #: tools/editor/plugins/path_2d_editor_plugin.cpp #: tools/editor/plugins/path_editor_plugin.cpp msgid "Close Curve" -msgstr "" +msgstr "Kurve schließen" #: tools/editor/plugins/path_editor_plugin.cpp msgid "Curve Point #" -msgstr "" +msgstr "Kurvenpunkt #" #: tools/editor/plugins/path_editor_plugin.cpp msgid "Set Curve Point Pos" -msgstr "" +msgstr "Position des Kurvenpunkts setzen" #: tools/editor/plugins/path_editor_plugin.cpp msgid "Set Curve In Pos" -msgstr "" +msgstr "Position der Eingangskurve setzen" #: tools/editor/plugins/path_editor_plugin.cpp msgid "Set Curve Out Pos" -msgstr "" +msgstr "Position der Ausgangskurve setzen" #: tools/editor/plugins/path_editor_plugin.cpp msgid "Split Path" -msgstr "" +msgstr "Pfad aufteilen" #: tools/editor/plugins/path_editor_plugin.cpp msgid "Remove Path Point" -msgstr "" +msgstr "Pfadpunkt entfernen" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Create UV Map" @@ -3676,31 +3858,31 @@ msgstr "" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Move Point" -msgstr "" +msgstr "Punkt verschieben" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Ctrl: Rotate" -msgstr "" +msgstr "Strg: Rotieren" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift: Move All" -msgstr "" +msgstr "Shift: Alle verschieben" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Shift+Ctrl: Scale" -msgstr "" +msgstr "Shift+Strg: Skalieren" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Move Polygon" -msgstr "" +msgstr "Polygon verschieben" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Rotate Polygon" -msgstr "" +msgstr "Polygon rotieren" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Scale Polygon" -msgstr "" +msgstr "Polygon skalieren" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp msgid "Polygon->UV" @@ -3717,21 +3899,21 @@ msgstr "" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Snap" -msgstr "" +msgstr "Einrasten" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Enable Snap" -msgstr "" +msgstr "Einrasten aktivieren" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Grid" -msgstr "" +msgstr "Raster" #: tools/editor/plugins/resource_preloader_editor_plugin.cpp msgid "ERROR: Couldn't load resource!" -msgstr "" +msgstr "FEHLER: Ressource konnte nicht geladen werden!" #: tools/editor/plugins/resource_preloader_editor_plugin.cpp msgid "Add Resource" @@ -3832,7 +4014,8 @@ msgstr "" msgid "Save Theme As.." msgstr "" -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "File" msgstr "Datei" @@ -3904,11 +4087,7 @@ msgid "Auto Indent" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script" -msgstr "" - -#: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script (Soft)" +msgid "Soft Reload Script" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp @@ -4001,7 +4180,7 @@ msgid "Help" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Contextual" +msgid "Contextual Help" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp @@ -4208,10 +4387,6 @@ msgid "Transform Aborted." msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp -msgid "View Plane Transform." -msgstr "" - -#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." msgstr "" @@ -4224,6 +4399,10 @@ msgid "Z-Axis Transform." msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scaling to %s%%." msgstr "" @@ -4364,9 +4543,8 @@ msgid "Scale Mode (R)" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Transform" -msgstr "Übergänge" +msgstr "Transformation" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Local Coords" @@ -4565,14 +4743,12 @@ msgid "StyleBox Preview:" msgstr "" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Texture Region Editor" -msgstr "Im Editor öffnen" +msgstr "Texturbegrenzungseditor" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Scale Region Editor" -msgstr "Im Editor öffnen" +msgstr "Skalierungsbegrenzungseditor" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "" @@ -4606,7 +4782,12 @@ msgid "Remove Class Items" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp -msgid "Create Template" +#, fuzzy +msgid "Create Empty Template" +msgstr "Lade Export Templates" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp @@ -4693,31 +4874,39 @@ msgid "Erase TileMap" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Bucket" -msgstr "" +#, fuzzy +msgid "Erase selection" +msgstr "Auswahl einrahmen" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Pick Tile" -msgstr "" +#, fuzzy +msgid "Find tile" +msgstr "Finde" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Select" +msgid "Transpose" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Erase Selection" -msgstr "" +#, fuzzy +msgid "Mirror X" +msgstr "Fehler" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Transpose" +#, fuzzy +msgid "Mirror Y" +msgstr "Fehler" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror X (A)" +msgid "Pick Tile" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror Y (S)" +msgid "Select" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp @@ -5024,7 +5213,7 @@ msgstr "Projekt exportieren" #: tools/editor/project_export.cpp msgid "Export Preset:" -msgstr "Exportvorlage" +msgstr "Exportvorlage:" #: tools/editor/project_manager.cpp msgid "Invalid project path, the path must exist!" @@ -5084,63 +5273,61 @@ msgstr "" #: tools/editor/project_manager.cpp msgid "Unnamed Project" -msgstr "" +msgstr "Unbenanntes Projekt" #: tools/editor/project_manager.cpp msgid "Are you sure to open more than one projects?" -msgstr "" +msgstr "Wollen Sie wirklich mehr als ein Projekt öffnen?" #: tools/editor/project_manager.cpp msgid "Are you sure to run more than one projects?" -msgstr "" +msgstr "Wollen Sie wirklich mehr als ein Projekt ausführen?" #: tools/editor/project_manager.cpp msgid "Remove project from the list? (Folder contents will not be modified)" msgstr "" +"Das Projekt aus der Liste entfernen? (Inhalte des Projektordners werden " +"nicht geändert)" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Project Manager" -msgstr "Projekt exportieren" +msgstr "Projektmanager" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Project List" -msgstr "Projekt exportieren" +msgstr "Projektliste" #: tools/editor/project_manager.cpp msgid "Run" -msgstr "" +msgstr "Ausführen" #: tools/editor/project_manager.cpp msgid "Scan" -msgstr "" +msgstr "Scannen" #: tools/editor/project_manager.cpp msgid "New Project" -msgstr "" +msgstr "Neues Projekt" #: tools/editor/project_manager.cpp msgid "Exit" -msgstr "" +msgstr "Verlassen" #: tools/editor/project_settings.cpp msgid "Key " msgstr "" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Joy Button" -msgstr "Schaltfläche" +msgstr "Joysticktaste" #: tools/editor/project_settings.cpp msgid "Joy Axis" msgstr "" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Mouse Button" -msgstr "Mittlere Taste" +msgstr "Maus-Taste" #: tools/editor/project_settings.cpp msgid "Invalid action (anything goes but '/' or ':')." @@ -5164,7 +5351,7 @@ msgstr "" #: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp msgid "Press a Key.." -msgstr "Drücke eine Taste" +msgstr "Drücke eine Taste.." #: tools/editor/project_settings.cpp msgid "Mouse Button Index:" @@ -5259,9 +5446,8 @@ msgid "Invalid name. Must not collide with an existing global constant name." msgstr "" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Autoload '%s' already exists!" -msgstr "Aktion '%s' existiert bereits!" +msgstr "Autoload '%s' existiert bereits!" #: tools/editor/project_settings.cpp msgid "Rename Autoload" @@ -5557,8 +5743,8 @@ msgstr "" #: tools/editor/scene_tree_dock.cpp msgid "" -"Cannot instance the scene '%s' because the current scene exists within one of " -"its nodes." +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." msgstr "" #: tools/editor/scene_tree_dock.cpp @@ -5728,6 +5914,10 @@ msgid "Load As Placeholder" msgstr "" #: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp msgid "Open in Editor" msgstr "Im Editor öffnen" @@ -5784,9 +5974,8 @@ msgid "View Owners.." msgstr "" #: tools/editor/scenes_dock.cpp -#, fuzzy msgid "Copy Path" -msgstr "Kopieren" +msgstr "Pfad kopieren" #: tools/editor/scenes_dock.cpp msgid "Rename or Move.." @@ -5862,7 +6051,7 @@ msgstr "Ungültiger Pfad!" #: tools/editor/script_create_dialog.cpp msgid "Could not create script in filesystem." -msgstr "Skript konnte nicht im Dateisystem erstellt werden!" +msgstr "Skript konnte nicht im Dateisystem erstellt werden." #: tools/editor/script_create_dialog.cpp msgid "Path is empty" @@ -5874,7 +6063,7 @@ msgstr "Pfad ist nicht lokal" #: tools/editor/script_create_dialog.cpp msgid "Invalid base path" -msgstr "Ungültiger Pfad!" +msgstr "Ungültiger Pfad" #: tools/editor/script_create_dialog.cpp msgid "File exists" @@ -6064,11 +6253,14 @@ msgstr "" msgid "Change Notifier Extents" msgstr "" +#~ msgid "Binds (Extra Params):" +#~ msgstr "Bindungen (Extra Parameter):" + +#~ msgid "Method In Node:" +#~ msgstr "Methode in Node:" + #~ msgid "Edit Connections.." #~ msgstr "Bearbeite Verbindungen.." -#~ msgid "Connections:" -#~ msgstr "Verbindungen:" - #~ msgid "Plugin List:" #~ msgstr "Plugin Liste:" diff --git a/tools/translations/de_CH.po b/tools/translations/de_CH.po new file mode 100644 index 0000000000..eb5e1be880 --- /dev/null +++ b/tools/translations/de_CH.po @@ -0,0 +1,6107 @@ +# Swiss High German translation of the Godot Engine editor +# Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community +# This file is distributed under the same license as the Godot source code. +# +# Christian Fisch <christian.fiesel@gmail.com>, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"PO-Revision-Date: 2016-06-12 13:27+0000\n" +"Last-Translator: Christian Fisch <christian.fiesel@gmail.com>\n" +"Language-Team: Swiss High German <https://hosted.weblate.org/projects/godot-" +"engine/godot/de_CH/>\n" +"Language: de_CH\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.7-dev\n" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" + +#: scene/2d/animated_sprite.cpp +#, fuzzy +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite to display frames." +msgstr "" +"Damit das AnimatedSprite node Frames anzeigen kann, muss eine SpriteFrame " +"Resource unter Frames gesetzt sein." + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" +"Nur ein sichtbares CanvasModulate ist pro Szene (oder ein Satz von " +"instanzierten Szenen) erlaubt. Das erste erstellte gewinnt der Rest wird " +"ignoriert." + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "Ein leeres CollisionPolygon2D hat keinen Einfluss au die Kollision." + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the 'texture' " +"property." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" +"NavigationPolygonInstance muss ein Kind oder Grosskind vom Navigation2D Node " +"sein. Es liefert nur Navigationsdaten." + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" + +#: scene/2d/particles_2d.cpp +msgid "Path property must point to a valid Particles2D node to work." +msgstr "" + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "" + +#: scene/2d/sample_player_2d.cpp scene/audio/sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SamplePlayer to play sound." +msgstr "" + +#: scene/2d/sprite.cpp +msgid "" +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." +msgstr "" + +#: scene/2d/sprite.cpp +msgid "" +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." +msgstr "" + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnable2D works best when used with the edited scene root directly " +"as parent." +msgstr "" + +#: scene/3d/body_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/body_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." +msgstr "" + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" + +#: scene/3d/spatial_sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SpatialSamplePlayer to play sound." +msgstr "" + +#: scene/3d/sprite_3d.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite3D to display frames." +msgstr "" + +#: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Cancel" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "OK" +msgstr "Okay" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Recognized" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Files (*)" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/scenes_dock.cpp +msgid "Open" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a File" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open File(s)" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a Directory" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a File or Directory" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Save a File" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Create Folder" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/script_create_dialog.cpp +msgid "Path:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Directories & Files:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "File:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Filter:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_plugin_settings.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Name:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Could not create folder." +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Must use a valid extension." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Shift+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Alt+" +msgstr "" + +#: scene/gui/input_action.cpp +msgid "Ctrl+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Meta+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Device" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Button" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Left Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Right Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Middle Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Up." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Down." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Axis" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Cut" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Copy" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Paste" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "Select All" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_log.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/rich_text_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Clear" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Undo" +msgstr "" + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." +msgstr "" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error initializing FreeType." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Unknown font format." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error loading font." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font size." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Disabled" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "All Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Add Key" +msgstr "Bild bewegen/einfügen" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transition" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transform" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Value" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Call" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Up" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Down" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove Anim Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "Anim Bilder duplizieren" + +#: tools/editor/animation_editor.cpp +msgid "Set Transitions to:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Rename" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Value Mode" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Node Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Selection Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Delete Keys" +msgstr "Anim Bilder löschen" + +#: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Discrete" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Key" +msgstr "Anim Bild hinzufügen" + +#: tools/editor/animation_editor.cpp +msgid "Anim Move Keys" +msgstr "Anim Bilder bewegen" + +#: tools/editor/animation_editor.cpp +msgid "Scale Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale From Cursor" +msgstr "" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Duplicate Transposed" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Next Step" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Prev Step" +msgstr "" + +#: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp +msgid "Linear" +msgstr "" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In-Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out-In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Transitions" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Optimize Animation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "Willst du eine neue Ebene inklusiv Bild in %s einfügen?" + +#: tools/editor/animation_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "Erstelle %d in neuer Ebene inklusiv Bild?" + +#: tools/editor/animation_editor.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/particles_editor_plugin.cpp +#: tools/editor/project_manager.cpp tools/editor/script_create_dialog.cpp +msgid "Create" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create & Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "Anim Ebene und Bild einfügen" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Key" +msgstr "Anim Bild einfügen" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Len" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create Typed Value Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Scale Keys" +msgstr "Anim verlängern" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Call Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Animation zoom." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Length (s):" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Animation length (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Step (s):" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Cursor step snap (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable looping in animation." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable interpolation when looping animation." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track up." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track down." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove selected track." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Track tools" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable editing of individual keys by clicking them." +msgstr "Aktivieren des Bildeditors mit einem click auf die jenigen." + +#: tools/editor/animation_editor.cpp +msgid "Anim. Optimizer" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Linear Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Angular Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Optimize" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Key" +msgstr "Bild" + +#: tools/editor/animation_editor.cpp +msgid "Transition" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale Ratio:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Call Functions in Which Node?" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove invalid keys" +msgstr "Ungültige Bilder löschen" + +#: tools/editor/animation_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-up all animations" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Search:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Sort:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Reverse" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Category:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "All" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Site:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Support.." +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Official" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Community" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Testing" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Method List For '%s':" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: tools/editor/call_dialog.cpp tools/editor/connections_dialog.cpp +#: tools/editor/import_settings.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +#: tools/editor/run_settings_dialog.cpp tools/editor/settings_config_dialog.cpp +msgid "Close" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Method List:" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Arguments:" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Return:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Go to Line" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Line Number:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "No Matches" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d Ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace All" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Match Case" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Whole Words" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Selection Only" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Search" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +msgid "Find" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Next" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Not found!" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace By" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Case Sensitive" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Backwards" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Prompt On Replace" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Skip" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Line:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Col:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Method in target Node must be specified!" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Conect To Node:" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Add" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Remove" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Add Extra Call Argument:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Extra Call Arguments:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Path to Node:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Make Function" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Deferred" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Create Subscription" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect.." +msgstr "" + +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Disconnect" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp +msgid "Signals" +msgstr "" + +#: tools/editor/create_dialog.cpp +msgid "Create New" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +msgid "Matches:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will not take effect unless reloaded." +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will take effect when reloaded." +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Resource" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/project_manager.cpp +#: tools/editor/project_settings.cpp +msgid "Path" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Remove selected files from the project? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Scene failed to load due to missing dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Open Anyway" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owns" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +msgid "Orphan Resource Explorer" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Delete selected files?" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp +msgid "Delete" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating Scene" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Storing local changes.." +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating scene.." +msgstr "" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp tools/editor/scenes_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Preview:" +msgstr "" + +#: tools/editor/editor_file_system.cpp +msgid "Cannot go into subdir:" +msgstr "" + +#: tools/editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Classes" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Class List:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/property_editor.cpp +msgid "Class:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Inherits:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Inherited by:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Brief Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Public Methods:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Members:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "GUI Theme Items:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Signals:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Constants:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Method Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Text" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Added:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Removed:" +msgstr "" + +#: tools/editor/editor_import_export.cpp tools/editor/project_export.cpp +msgid "Error saving atlas:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Could not save atlas subtexture:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Storing File:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Packing" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Exporting for %s" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Setting Up.." +msgstr "" + +#: tools/editor/editor_log.cpp +msgid " Output:" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +msgid "Re-Importing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Importing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Node From Scene" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scenes_dock.cpp +msgid "Re-Import.." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Error saving resource!" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Save Resource As.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "I see.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error while saving." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Saving Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Analyzing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Failed to load resource." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open export templates zip." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Loading Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Params" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Paste Params" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Built-In" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open in Help" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"No main scene has ever been defined.\n" +"Select one from \"Project Settings\" under the 'application' category." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Script.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Yes" +msgstr "Ja" + +#: tools/editor/editor_node.cpp +msgid "Close scene? (Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Please save the scene first." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Translatable Strings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Run Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Open Project Manager? \n" +"(Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "Ugh" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error loading scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "Szene '%s' hat kapute Abhängigkeiten:" + +#: tools/editor/editor_node.cpp +msgid "Save Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load Layout" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Default" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Delete Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s) or folder(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Inherited Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Goto Prev. Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Recent" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Filter Files.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Convert To.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Translatable Strings.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "MeshLibrary.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "TileSet.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Redo" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Run Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Project Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import assets to the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Import" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Tools" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export the project to many platforms." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Play" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause the scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Stop the scene." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stop" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the edited scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play custom scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Debug options" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Deploy with Remote Debug" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Small Deploy with Network FS" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is enabled, export or deploy will produce a minimal " +"executable.\n" +"The filesystem will be provided from the project by the editor over the " +"network.\n" +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " +"running game if this option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Navigation meshes and polygons will be visible on the running game if this " +"option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Scene Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any changes made to the scene in the editor " +"will be replicated in the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Script Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any script that is saved will be reloaded on " +"the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Settings" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp +msgid "Editor Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Editor Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Install Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "About" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Alerts when an external resource has changed." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Spins when the editor window repaints!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Always" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Inspector" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Save As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Object properties." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "FileSystem" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Output" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +#: tools/editor/import_settings.cpp +msgid "Re-Import" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_plugin_settings.cpp +msgid "Update" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks from the Godot community!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export Project" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Password:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load Errors" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Version:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Fixed Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp tools/editor/script_editor_debugger.cpp +msgid "Time:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Please wait for scan to complete." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Current scene must be saved to re-import." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Save & Re-Import" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import Changed Resources" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "Sieht so aus als hättest du das Schlüsselwort \"tool\" vergessen?" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "" + +#: tools/editor/editor_settings.cpp +msgid "Default (Same as Editor)" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "" + +#: tools/editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Add to Group" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "" + +#: tools/editor/import_settings.cpp +msgid "Imported Resources" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "No bit masks to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must be a complete resource path." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must exist." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Save path is empty!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Import BitMasks" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Target Path:" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Accept" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Bit Mask" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No source font file!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No target font resource!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Can't load/process source font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Couldn't save font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Dest Resource:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "The quick brown fox jumps over the lazy dog." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Test:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Options:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font Import" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"This file is already a Godot font file, please supply a BMFont type file " +"instead." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Failed opening as BMFont file." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font custom source." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Font" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "No meshes to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Single Mesh Import" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Source Mesh(es):" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Surface %d" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "No samples to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Import Audio Samples" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Source Sample(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Audio Sample" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "New Clip" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Animation Options" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Flags" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Bake FPS:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Optimizer" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Linear Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angular Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angle" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Clips" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/project_manager.cpp tools/editor/project_settings.cpp +msgid "Name" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Start(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "End(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Loop" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Filters" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error importing scene." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import 3D Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source Scene:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Same as Target Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Shared" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Target Texture Folder:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Post-Process Script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Custom Root Node Type:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Auto" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "The Following Files are Missing:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Anyway" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import & Open" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Edited scene has not been saved, open imported scene anyway?" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Importing Scene.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Running Custom Script.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error running post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Can't import a file over itself:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't localize path: %s (already local)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Saving.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "3D Scene Animation" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Uncompressed" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossless (PNG)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossy (WebP)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress (VRAM)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Format" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Compression Quality (WebP):" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Options" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Please specify some files!" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "At least one file needed for Atlas." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Error importing:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Only one file is required for large texture." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Max Texture Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for Atlas (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cell Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Textures (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Base Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 2D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 3D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "2D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "3D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "" +"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " +"the project." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Crop empty space." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Load Source Image" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Slicing" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Inserting" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Saving" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save large texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Build Atlas For:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Loading Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't load image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Converting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cropping Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Blitting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save atlas image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save converted texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid translation source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Column" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Language" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No items to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No target path!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translations" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Couldn't import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translation" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Source CSV:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Ignore First Row" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Compress" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Add to Project (engine.cfg)" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Languages:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Translation" +msgstr "" + +#: tools/editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Groups" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Select a Node to edit Signals and Groups." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Invalid animation name!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Animation name already exists!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to copy!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation resource on clipboard!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to edit!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create new animation in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save the current animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Target Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Copy Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_create_dialog.cpp +msgid "Error!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Animation" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "New name:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Start!" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 0:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 1:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Current:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Add Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Delete Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Rename" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Import Animations.." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Filters.." +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing %d Triangles:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Light Baker Setup:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing Geometry" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Fixing Lights" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Making BVH" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Light Octree" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Octree Texture" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Transfer to Lightmaps:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Allocating Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Baking Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Post-Processing Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "BakedLightInstance does not contain a BakedLight resource." +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Bake!" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Reset the lightmap octree baking process (start over)." +msgstr "" + +#: tools/editor/plugins/camera_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Preview" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Pivot" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Action" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit CanvasItem" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom (%):" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Select Mode (Q)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode (W)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode (E)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Edit" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Show Grid" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Expand to Parent" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom In" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Out" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Reset" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Set.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchor" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Keys (Ins)" +msgstr "Bilder (innerhalb) einfügen" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "Bild einfügen" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "Bild in bestehende Ebene einfügen" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set a Value" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap (Pixels):" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create a new polygon from scratch." +msgstr "" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Poly3D" +msgstr "" + +#: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Add/Remove Color Ramp Point" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Color Ramp" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Creating Mesh Library" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Thumbnail.." +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import from Scene" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Edit existing polygon:" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "LMB: Move Point." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Ctrl+LMB: Split Segment." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "RMB: Erase Point." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh.." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Parent has no solid faces to populate." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Couldn't map area." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Remove Poly And Point" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image.." +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Set Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry (faces)." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Faces contain no area!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Mesh" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Node" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Clear Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Positions:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Fill:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Surface" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Select Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Close Curve" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Enable Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Load Resource" +msgstr "" + +#: tools/editor/plugins/rich_text_editor_plugin.cpp +msgid "Parse BBCode" +msgstr "" + +#: tools/editor/plugins/sample_editor_plugin.cpp +msgid "Length:" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Open Sample File(s)" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "ERROR: Couldn't load sample!" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Add Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Rename Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Delete Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "16 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "8 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stereo" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Mono" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Format" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Pitch" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "File" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_editor.cpp +msgid "New" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Prev" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Move Up" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Move Down" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Left" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Right" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Comment" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Clone Down" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Complete Symbol" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Trim Trailing Whitespace" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Auto Indent" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Soft Reload Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Previous" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Replace.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Function.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Goto Line.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debug" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Remove All Breakpoints" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Next Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Previous Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Over" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Into" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Break" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Continue" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Window" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Left" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Right" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Contextual Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Tutorials" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Open https://godotengine.org at tutorials section." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Classes" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the class hierarchy." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Debugger" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Vertex" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Fragment" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Lighting" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Toggle Rot Only" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Default Value" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change XForm Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Texture Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Cubemap Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Comment" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Color Ramp" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Input Name" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Connect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Disconnect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Remove Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Move Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Duplicate Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Delete Shader Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Cyclic Connection Link" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Missing Input Connections" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling to %s%%." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "\"keying\" ist deaktiviert (Bild nicht hinzugefügt)." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "Animationsbild eingefügt." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top (Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom (Shift+Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left (Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right (Shift+Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front (Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear (Shift+Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective (Num5)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal (Num5)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Environment" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Selection (F)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view (Ctrl+Shift+F)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "No scene selected to instance!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Instance at Cursor" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Could not instance scene!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode (R)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Local Coords" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog.." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default Light" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default sRGB" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Shadeless" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Default Light Normal:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Ambient Light Color:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Up" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Down" +msgstr "" + +#: tools/editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox Preview:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Texture Region Editor" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Scale Region Editor" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "" +"No texture in this node.\n" +"Set a texture to be able to edit region." +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Can't save theme to file:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_export.cpp +msgid "Options" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Have,Many,Several,Options!" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Style" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase selection" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Find tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror X" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror Y" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 0 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 90 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 180 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 270 degrees" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Could not find tile:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Item name or ID:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Error" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Edit Script Options" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Please export outside the project folder!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error exporting project!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error writing the project PCK!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "No exporter for platform '%s' yet." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Include" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Change Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name can't be empty!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Invalid character in group name!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name already exists!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Add Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Delete Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas Preview" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export Settings" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Target" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export to Platform" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export selected resources (including dependencies)." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all resources in the project." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all files in the project directory." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources to Export:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Action" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "" +"Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert text scenes to binary on export." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep Original" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy, WebP)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for RAM (BC/PVRTC/ETC)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert Images (*.png):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy) Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink All Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Formats:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Groups" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Groups:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Disk" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress RAM" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Lossy Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink By:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Preview Atlas" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Filter:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Select None" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Samples" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sample Conversion Mode: (.wav files):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress (RAM - IMA-ADPCM)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sampling Rate Limit (Hz):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trim" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trailing Silence:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Text" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compiled" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Project PCK" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export.." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Preset:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, the path must exist!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must not exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Imported Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Couldn't create engine.cfg in project path." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path (Must Exist):" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Name:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Create New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Browse" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Game Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "That's a BINGO!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to open more than one projects?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to run more than one projects?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Remove project from the list? (Folder contents will not be modified)" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project List" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Run" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Scan" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Exit" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Key " +msgstr "Taste " + +#: tools/editor/project_settings.cpp +msgid "Joy Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Axis" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid action (anything goes but '/' or ':')." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action '%s' already exists!" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Rename Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Control+" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Press a Key.." +msgstr "Taste drücken.." + +#: tools/editor/project_settings.cpp +msgid "Mouse Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Left Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Right Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Middle Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 6" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 7" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 8" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 9" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Axis Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Erase Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Toggle Persisting" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Error saving settings." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Settings saved OK." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Valid characters:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing engine class name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing buit-in type name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing global constant name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Autoload '%s' already exists!" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Rename Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Move Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Remapped Path" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resource Remap Add Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Change Resource Remap Language" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap Option" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Enable" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Project Settings (engine.cfg)" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "General" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +msgid "Property:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Del" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Copy To Platform.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Input Map" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Device:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Localization" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resources:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps by Locale:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Locale" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "AutoLoad" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Node Name:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "List:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Singleton" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Plugins" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Preset.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Zero" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "File.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Dir.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Load" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Assign" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Couldn't load image" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "On" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Properties:" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Global" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Sections:" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Could not execute PVRTC tool:" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Can't load back converted image using PVRTC tool:" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Create New Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Open Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Save Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Resource Tools" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Make Local" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "OK :(" +msgstr "Okay :(" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "Okay" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)?" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save New Scene As.." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Makes Sense!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "New Scene Root" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Inherit Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Groups" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Connections" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Script" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save Branch as Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add/Create a New Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "" +"This item cannot be made visible because the parent is hidden. Unhide the " +"parent first." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle Spatial Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle CanvasItem Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Editable Children" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Load As Placeholder" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear!" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination files, doing nothing." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination paths, doing nothing." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Can't move directories to within themselves." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Can't operate on '..'" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Pick New Name and Location For:" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "No files selected!" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Instance" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Edit Dependencies.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "View Owners.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Copy Path" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Rename or Move.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Move To.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Info" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Show In File Manager" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Previous Directory" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Next Directory" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Move" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid parent class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid chars:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "N/A" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Parent class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid path!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Could not create script in filesystem." +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is empty" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is not local" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid base path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "File exists" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid extension" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Built-In Script" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Create Node Script" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Warning" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Function:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Child Process Connected" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Variable" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Trace (if applicable):" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Inspector" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Scene Tree:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Object Properties: " +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Value" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Video Mem" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Type" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "" + +#: tools/editor/settings_config_dialog.cpp +msgid "Shortcuts" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Notifier Extents" +msgstr "" diff --git a/tools/translations/es.po b/tools/translations/es.po index 790f13f090..3f727d18c3 100644 --- a/tools/translations/es.po +++ b/tools/translations/es.po @@ -1,21 +1,67 @@ -# LANGUAGE translation of the Godot Engine editor +# Spanish translation of the Godot Engine editor # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +# Lisandro Lorea <lisandrolorea@gmail.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Language: es_AR\n" +"PO-Revision-Date: 2016-06-14 14:10+0000\n" +"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n" +"Language-Team: Spanish <https://hosted.weblate.org/projects/godot-engine/" +"godot/es/>\n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.8\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.7-dev\n" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "Argumento de tipo inválido para convert(), usá constantes TYPE_*." + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" +"No hay suficientes bytes para decodificar bytes, o el formato es inválido." + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "el argumento step es cero!" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "No es un script con una instancia" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "No está basado en un script" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "No está basado en un archivo de recursos" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "Formato de diccionario de instancias inválido (@path faltante)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" +"Formato de diccionario de instancias inválido (no se puede cargar el script " +"en @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" +"Formato de diccionario de instancias inválido (script inválido en @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "Diccionario de instancias inválido (subclases inválidas)" #: scene/2d/animated_sprite.cpp msgid "" @@ -23,7 +69,7 @@ msgid "" "order for AnimatedSprite to display frames." msgstr "" "Un recurso SpriteFrames debe ser creado o seteado en la propiedad 'Frames' " -"para que AnimatedSprite puda mostrar frames." +"para que AnimatedSprite pueda mostrar frames." #: scene/2d/canvas_modulate.cpp msgid "" @@ -42,7 +88,7 @@ msgid "" msgstr "" "CollisionPolylgon2D solo sirve para proveer de un collision shape a un nodo " "derivado de CollisionObject2D. Favor de usarlo solo como un hijo de Area2D, " -"StaticBody2D, RigidBody2D, KinematicBody2D, etc. para darles un shape. " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. para darles un shape." #: scene/2d/collision_polygon_2d.cpp msgid "An empty CollisionPolygon2D has no effect on collision." @@ -115,7 +161,7 @@ msgstr "" #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." msgstr "" -"PathFollow2D solo funciona cuando esta seteado como hijo de un nodo Path2D" +"PathFollow2D solo funciona cuando está seteado como hijo de un nodo Path2D." #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." @@ -131,16 +177,16 @@ msgstr "" #: scene/2d/sprite.cpp msgid "" -"Path property must point to a valid Viewport node to work. Such Viewport must " -"be set to 'render target' mode." +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." msgstr "" "La propiedad Path debe apuntar a un nodo Viewport válido para funcionar. " "Dicho Viewport debe ser seteado a modo 'render target'." #: scene/2d/sprite.cpp msgid "" -"The Viewport set in the path property must be set as 'render target' in order " -"for this sprite to work." +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." msgstr "" "El Viewport seteado en la propiedad path debe ser seteado como 'render " "target' para que este sprite funcione." @@ -150,8 +196,8 @@ msgid "" "VisibilityEnable2D works best when used with the edited scene root directly " "as parent." msgstr "" -"VisibilityEnable2D funciona mejor cuando se usa con la raÃz de escena editada " -"directamente como padre." +"VisibilityEnable2D funciona mejor cuando se usa con la raÃz de escena " +"editada directamente como padre." #: scene/3d/body_shape.cpp msgid "" @@ -192,8 +238,8 @@ msgstr "" #: scene/3d/navigation_mesh.cpp msgid "" -"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " -"only provides navigation data." +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." msgstr "" "NavigationMeshInstance debe ser un hijo o nieto de un nodo Navigation. Solo " "provee datos de navegación." @@ -214,13 +260,12 @@ msgstr "" "de modo que SpatialSamplePlayer puede reproducir sonido." #: scene/3d/sprite_3d.cpp -#, fuzzy msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " "order for AnimatedSprite3D to display frames." msgstr "" -"Un recurso SpriteFrames debe ser creado o seteado en la propiedad 'Frames' " -"para que AnimatedSprite puda mostrar frames." +"Un recurso SpriteFrames debe ser creado o asignado en la propiedad 'Frames' " +"para que AnimatedSprite3D pueda mostrar frames." #: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Cancel" @@ -244,7 +289,7 @@ msgstr "El Archivo Existe, Sobreescribir?" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Recognized" -msgstr "Todos Reconocidos" +msgstr "Todas Reconocidas" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Files (*)" @@ -258,24 +303,20 @@ msgid "Open" msgstr "Abrir" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a File" -msgstr "Abrir Archivo(s) de Muestra" +msgstr "Abrir un Archivo" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open File(s)" -msgstr "Abrir Archivo(s) de Muestra" +msgstr "Abrir Archivo(s)" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a Directory" -msgstr "Elegà un Directorio" +msgstr "Abrir un Directorio" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a File or Directory" -msgstr "Elegà un Directorio" +msgstr "Abrir un Archivo o Directorio" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_node.cpp @@ -297,7 +338,7 @@ msgstr "Crear Carpeta" #: tools/editor/io_plugins/editor_font_import_plugin.cpp #: tools/editor/project_settings.cpp tools/editor/script_create_dialog.cpp msgid "Path:" -msgstr "Path:" +msgstr "Ruta:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Directories & Files:" @@ -339,7 +380,7 @@ msgstr "Alt+" #: scene/gui/input_action.cpp msgid "Ctrl+" -msgstr "" +msgstr "Ctrl+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp @@ -402,7 +443,8 @@ msgstr "Pegar" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_editor_plugin.cpp -#: tools/editor/plugins/shader_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "Select All" msgstr "Seleccionar Todo" @@ -422,8 +464,8 @@ msgstr "Deshacer" #: scene/gui/popup.cpp msgid "" "Popups will hide by default unless you call popup() or any of the popup*() " -"functions. Making them visible for editing is fine though, but they will hide " -"upon running." +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." msgstr "" "Los popups se esconderán por defecto a menos que llames a popup() o " "cualquiera de las funciones popup*(). Sin embargo, no hay problema con " @@ -538,6 +580,18 @@ msgid "Anim Delete Keys" msgstr "Borrar Claves de Anim" #: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "ContÃnuo" + +#: tools/editor/animation_editor.cpp +msgid "Discrete" +msgstr "Discreto" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "Trigger" + +#: tools/editor/animation_editor.cpp msgid "Anim Add Key" msgstr "Agregar Clave de Anim" @@ -645,6 +699,10 @@ msgid "Change Anim Loop" msgstr "Cambiar Loop de Anim" #: tools/editor/animation_editor.cpp +msgid "Change Anim Loop Interpolation" +msgstr "Cambiar Interpolación de Loop de Anim" + +#: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" msgstr "Crear Clave de Valor Tipado para Anim" @@ -685,6 +743,10 @@ msgid "Enable/Disable looping in animation." msgstr "Activar/Desactivar loopeo en la animación." #: tools/editor/animation_editor.cpp +msgid "Enable/Disable interpolation when looping animation." +msgstr "Activar/Desactivar interpolación al loopear animación." + +#: tools/editor/animation_editor.cpp msgid "Add new tracks." msgstr "Agregar nuevos tracks." @@ -805,22 +867,20 @@ msgid "Site:" msgstr "Sitio:" #: tools/editor/asset_library_editor_plugin.cpp -#, fuzzy msgid "Support.." -msgstr "Exportar.." +msgstr "Soporte.." #: tools/editor/asset_library_editor_plugin.cpp msgid "Official" -msgstr "" +msgstr "Oficial" #: tools/editor/asset_library_editor_plugin.cpp msgid "Community" -msgstr "" +msgstr "Comunidad" #: tools/editor/asset_library_editor_plugin.cpp -#, fuzzy msgid "Testing" -msgstr "Configuración" +msgstr "Testeo" #: tools/editor/asset_library_editor_plugin.cpp msgid "Assets ZIP File" @@ -951,13 +1011,9 @@ msgid "Method in target Node must be specified!" msgstr "El método en el Nodo objetivo debe ser especificado!" #: tools/editor/connections_dialog.cpp -msgid "Connect To Node:" +msgid "Conect To Node:" msgstr "Conectar a Nodo:" -#: tools/editor/connections_dialog.cpp -msgid "Binds (Extra Params):" -msgstr "Binds (Parametros Extra):" - #: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp #: tools/editor/plugins/item_list_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp @@ -967,17 +1023,22 @@ msgstr "Agregar" #: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp -#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp msgid "Remove" msgstr "Quitar" #: tools/editor/connections_dialog.cpp -msgid "Path To Node:" -msgstr "Path al Nodo:" +msgid "Add Extra Call Argument:" +msgstr "Agregar Argumento de Llamada Extra:" + +#: tools/editor/connections_dialog.cpp +msgid "Extra Call Arguments:" +msgstr "Argumentos de Llamada Extras:" #: tools/editor/connections_dialog.cpp -msgid "Method In Node:" -msgstr "Método En el Nodo:" +msgid "Path to Node:" +msgstr "Ruta al Nodo:" #: tools/editor/connections_dialog.cpp msgid "Make Function" @@ -1000,6 +1061,10 @@ msgid "Connect '%s' to '%s'" msgstr "Conectar '%s' a '%s'" #: tools/editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "Conectando Señal:" + +#: tools/editor/connections_dialog.cpp msgid "Create Subscription" msgstr "Crear Subscripción" @@ -1013,9 +1078,8 @@ msgid "Disconnect" msgstr "Desconectar" #: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp -#, fuzzy msgid "Signals" -msgstr "Señales:" +msgstr "Señales" #: tools/editor/create_dialog.cpp msgid "Create New" @@ -1059,7 +1123,7 @@ msgstr "Recursos" #: tools/editor/dependency_editor.cpp tools/editor/project_manager.cpp #: tools/editor/project_settings.cpp msgid "Path" -msgstr "Path" +msgstr "Ruta" #: tools/editor/dependency_editor.cpp msgid "Dependencies:" @@ -1141,7 +1205,8 @@ msgid "Delete selected files?" msgstr "Eliminar archivos seleccionados?" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/item_list_editor_plugin.cpp tools/editor/scenes_dock.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp msgid "Delete" msgstr "Eliminar" @@ -1175,7 +1240,7 @@ msgstr "Recientes:" #: tools/editor/editor_file_dialog.cpp msgid "Preview:" -msgstr "Preview:" +msgstr "Vista Previa:" #: tools/editor/editor_file_system.cpp msgid "Cannot go into subdir:" @@ -1275,9 +1340,8 @@ msgid "Setting Up.." msgstr "Configurando.." #: tools/editor/editor_log.cpp -#, fuzzy msgid " Output:" -msgstr "Salida" +msgstr " Salida:" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Importing" @@ -1391,9 +1455,8 @@ msgid "Copy Params" msgstr "Copiar Params" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Paste Params" -msgstr "Pegar Frame" +msgstr "Pegar Parametros" #: tools/editor/editor_node.cpp #: tools/editor/plugins/resource_preloader_editor_plugin.cpp @@ -1413,9 +1476,8 @@ msgid "Make Sub-Resources Unique" msgstr "Crear Sub-Recurso Unico" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Open in Help" -msgstr "Abrir Escena" +msgstr "Abrir en la Ayuda" #: tools/editor/editor_node.cpp msgid "There is no defined scene to run." @@ -1426,6 +1488,8 @@ msgid "" "No main scene has ever been defined.\n" "Select one from \"Project Settings\" under the 'application' category." msgstr "" +"No se ha definido ninguna escena principal.\n" +"Seleccioná una de \"Ajustes del Proyecto\" bajo la categoria 'aplicacion'." #: tools/editor/editor_node.cpp msgid "Current scene was never saved, please save it prior to running." @@ -1497,7 +1561,7 @@ msgstr "Escena actual sin guardar. Abrir de todos modos?" #: tools/editor/editor_node.cpp msgid "Can't reload a scene that was never saved." -msgstr "No se puede volver a cargar una escena que nunca se guardó. " +msgstr "No se puede volver a cargar una escena que nunca se guardó." #: tools/editor/editor_node.cpp msgid "Revert" @@ -1523,11 +1587,12 @@ msgstr "Ugh" #: tools/editor/editor_node.cpp msgid "" -"Error loading scene, it must be inside the project path. Use 'Import' to open " -"the scene, then save it inside the project path." +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." msgstr "" -"Error al cargar la escena, debe estar dentro de un path de proyecto. Usa " -"'Importar' para abrir la escena, luego guardala dentro del path del proyecto." +"Error al cargar la escena, debe estar dentro de la ruta del proyecto. Usa " +"'Importar' para abrir la escena, luego guardala dentro de la ruta del " +"proyecto." #: tools/editor/editor_node.cpp msgid "Error loading scene." @@ -1542,9 +1607,8 @@ msgid "Save Layout" msgstr "Guardar Layout" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Load Layout" -msgstr "Guardar Layout" +msgstr "Cargar Layout" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Default" @@ -1576,6 +1640,14 @@ msgid "Go to previously opened scene." msgstr "Ir a la escena abierta previamente." #: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "Modo Pantalla Completa" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "Modo Sin Distracciones" + +#: tools/editor/editor_node.cpp msgid "Operations with scene files." msgstr "Operaciones con archivos de escena." @@ -1608,9 +1680,8 @@ msgid "Open Recent" msgstr "Abrir Reciente" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Quick Filter Files.." -msgstr "Busqueda Rapida en Archivo.." +msgstr "Filtrado Rapido de Archivos.." #: tools/editor/editor_node.cpp msgid "Convert To.." @@ -1682,9 +1753,8 @@ msgid "Export" msgstr "Exportar" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play the project." -msgstr "Reproducir el proyecto (F5)." +msgstr "Reproducir el proyecto." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -1696,14 +1766,12 @@ msgid "Pause the scene" msgstr "Pausar la escena" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Pause Scene" -msgstr "Pausar la escena" +msgstr "Pausar la Escena" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Stop the scene." -msgstr "Parar la escena (F8)." +msgstr "Parar la escena." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -1711,14 +1779,12 @@ msgid "Stop" msgstr "Detener" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play the edited scene." -msgstr "Reproducir la escena editada (F6)." +msgstr "Reproducir la escena editada." #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play Scene" -msgstr "Guardar Escena" +msgstr "Reproducir Escena" #: tools/editor/editor_node.cpp msgid "Play custom scene" @@ -1729,19 +1795,20 @@ msgid "Debug options" msgstr "Opciones de debugueo" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Deploy with Remote Debug" msgstr "Hacer Deploy con Debug Remoto" #: tools/editor/editor_node.cpp msgid "" -"When exporting or deploying, the resulting executable will attempt to connect " -"to the IP of this computer in order to be debugged." +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." msgstr "" +"Al exportar o hacer deploy, el ejecutable resultante tratara de contectarse " +"a la IP de esta computadora de manera de ser debugueado." #: tools/editor/editor_node.cpp msgid "Small Deploy with Network FS" -msgstr "" +msgstr "Depoy Pequeño con Network FS" #: tools/editor/editor_node.cpp msgid "" @@ -1749,9 +1816,15 @@ msgid "" "executable.\n" "The filesystem will be provided from the project by the editor over the " "network.\n" -"On Android, deploy will use the USB cable for faster performance. This option " -"speeds up testing for games with a large footprint." +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." msgstr "" +"Cuando esta opción está activa, exportar o hacer deploy producirá un " +"ejecutable mÃnimo.\n" +"El sistema de archivos sera proveido desde el proyecto por el editor sobre " +"la red.\n" +"En Android, deploy usará el cable USB para mejor performance. Esta opción " +"acelera el testeo para juegos con footprint grande." #: tools/editor/editor_node.cpp msgid "Visible Collision Shapes" @@ -1762,6 +1835,8 @@ msgid "" "Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " "running game if this option is turned on." msgstr "" +"Los Collision shapes y nodos raycast (para 2D y 3D) seran visibiles durante " +"la ejecución del juego cuando esta opción queda activada." #: tools/editor/editor_node.cpp msgid "Visible Navigation" @@ -1772,10 +1847,12 @@ msgid "" "Navigation meshes and polygons will be visible on the running game if this " "option is turned on." msgstr "" +"Los meshes de navegación y los polÃgonos seran visibles durante la ejecución " +"del juego si esta opción queda activada." #: tools/editor/editor_node.cpp msgid "Sync Scene Changes" -msgstr "" +msgstr "Sincronizar Cambios de Escena" #: tools/editor/editor_node.cpp msgid "" @@ -1784,11 +1861,14 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"Cuando esta opción este encendida, cualquier cambio hecho a la escena en el " +"editor sera replicado en el juego en ejecución.\n" +"Cuando se usa remotamente en un dispositivo, esto es mas eficiente con un " +"sistema de archivos remoto." #: tools/editor/editor_node.cpp -#, fuzzy msgid "Sync Script Changes" -msgstr "Actualizar Cambios" +msgstr "Actualizar Cambios en Scripts" #: tools/editor/editor_node.cpp msgid "" @@ -1797,6 +1877,10 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"Cuando esta opción esta activa, cualquier script que se guarde sera vuelto a " +"cargar en el juego en ejecución.\n" +"Cuando se use remotamente en un dispositivo, esto es mas eficiente con un " +"sistema de archivos de red." #: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp msgid "Settings" @@ -1850,9 +1934,7 @@ msgstr "Cargar un recurso existente desde disco y editarlo." msgid "Save the currently edited resource." msgstr "Guardar el recurso editado actualmente." -#: tools/editor/editor_node.cpp -#: tools/editor/plugins/animation_player_editor_plugin.cpp -#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Save As.." msgstr "Guardar Como.." @@ -2035,7 +2117,7 @@ msgstr "Seleccionar Nodo(s) para Importar" #: tools/editor/editor_sub_scene.cpp msgid "Scene Path:" -msgstr "Path a la Escena:" +msgstr "Ruta a la Escena:" #: tools/editor/editor_sub_scene.cpp msgid "Import From Node:" @@ -2060,41 +2142,39 @@ msgid "Imported Resources" msgstr "Importar Recursos" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp -#, fuzzy msgid "No bit masks to import!" -msgstr "Sin elementos para importar!" +msgstr "Sin máscaras de bits para importar!" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Target path is empty." -msgstr "El path de destino está vacÃo." +msgstr "La ruta de destino está vacÃa." #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Target path must be a complete resource path." -msgstr "El path de destino debe ser un path de recursos completo." +msgstr "La ruta de destino debe ser una ruta de recursos completa." #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Target path must exist." -msgstr "El path de destino debe existir." +msgstr "La ruta de destino debe existir." #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Save path is empty!" -msgstr "El path de guardado esta vacÃo!" +msgstr "La ruta de guardado esta vacÃa!" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp -#, fuzzy msgid "Import BitMasks" -msgstr "Importar Texturas" +msgstr "Importar BitMasks" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp @@ -2108,7 +2188,7 @@ msgstr "Textura(s) de Origen:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Target Path:" -msgstr "Path de Destino:" +msgstr "Ruta de Destino:" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -2121,7 +2201,7 @@ msgstr "Aceptar" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp msgid "Bit Mask" -msgstr "" +msgstr "Máscara de Bits" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "No source font file!" @@ -2137,7 +2217,7 @@ msgstr "No se puede cargar/procesar la tipografÃa de origen." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Couldn't save font." -msgstr "No se pudo guardar la tipografÃa" +msgstr "No se pudo guardar la tipografÃa." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Source Font:" @@ -2176,7 +2256,7 @@ msgid "" "instead." msgstr "" "Este archivo ya es un archivo de tipografÃas de Godot, por favor suministrar " -"un archivo tipo BMFont" +"un archivo tipo BMFont." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Failed opening as BMFont file." @@ -2289,7 +2369,7 @@ msgstr "Filtros" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Source path is empty." -msgstr "El path de origen esta vacio." +msgstr "La ruta de origen esta vacÃa." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Couldn't load post-import script." @@ -2503,8 +2583,8 @@ msgid "" "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " "the project." msgstr "" -"AVISO: Importar texturas 2D no es obligatorio. Simplemente copiá los archivos " -"png/jpg al proyecto." +"AVISO: Importar texturas 2D no es obligatorio. Simplemente copiá los " +"archivos png/jpg al proyecto." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Crop empty space." @@ -2636,18 +2716,16 @@ msgid "MultiNode Set" msgstr "Setear MultiNodo" #: tools/editor/node_dock.cpp -#, fuzzy msgid "Node" -msgstr "Nodo Mix" +msgstr "Nodo" #: tools/editor/node_dock.cpp -#, fuzzy msgid "Groups" -msgstr "Grupos:" +msgstr "Grupos" #: tools/editor/node_dock.cpp msgid "Select a Node to edit Signals and Groups." -msgstr "" +msgstr "Seleccionar un Nodo para editar Señales y Grupos." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" @@ -2759,12 +2837,20 @@ msgid "Create new animation in player." msgstr "Crear nueva animación en el reproductor." #: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "Cargar una animación desde disco." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load an animation from disk." msgstr "Cargar una animación desde disco." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Save the current animation" -msgstr "Guardar la animación actual." +msgstr "Guardar la animación actual" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As" +msgstr "Guardar Como" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." @@ -3458,7 +3544,7 @@ msgstr "No se especificó mesh de origen (y MultiMesh no contiene ningún Mesh). #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." -msgstr "Mesh de origen inválido (path inválido)." +msgstr "Mesh de origen inválido (ruta inválida)." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." @@ -3474,7 +3560,7 @@ msgstr "Ninguna superficie de origen especificada." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (invalid path)." -msgstr "La superficie de origen es inválida (path inválido)." +msgstr "La superficie de origen es inválida (ruta inválida)." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (no geometry)." @@ -3891,7 +3977,8 @@ msgstr "Importar Tema" msgid "Save Theme As.." msgstr "Guardar Tema Como.." -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "File" msgstr "Archivo" @@ -3963,13 +4050,8 @@ msgid "Auto Indent" msgstr "Auto Indentar" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy -msgid "Reload Tool Script" -msgstr "Crear Script de Nodo" - -#: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script (Soft)" -msgstr "" +msgid "Soft Reload Script" +msgstr "Recarga Soft de Script" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/shader_editor_plugin.cpp @@ -4061,8 +4143,8 @@ msgid "Help" msgstr "Ayuda" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Contextual" -msgstr "Contextual" +msgid "Contextual Help" +msgstr "Ayuda Contextual" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Tutorials" @@ -4094,7 +4176,7 @@ msgstr "Ir a anterior documento editado." #: tools/editor/plugins/script_editor_plugin.cpp msgid "Go to next edited document." -msgstr "Ir a siguiente documento editado" +msgstr "Ir a siguiente documento editado." #: tools/editor/plugins/script_editor_plugin.cpp msgid "Create Script" @@ -4270,20 +4352,20 @@ msgid "Transform Aborted." msgstr "Transformación Abortada." #: tools/editor/plugins/spatial_editor_plugin.cpp -msgid "View Plane Transform." -msgstr "Ver Transformación en Plano." - -#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." -msgstr "Transformación en Eje-X" +msgstr "Transformación en Eje-X." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Y-Axis Transform." -msgstr "Transformación en Eje-Y" +msgstr "Transformación en Eje-Y." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Z-Axis Transform." -msgstr "Transformación en Eje-Z" +msgstr "Transformación en Eje-Z." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "Ver Transformación en Plano." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scaling to %s%%." @@ -4295,7 +4377,7 @@ msgstr "Torando %s grados." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View." -msgstr "Vista Inferior" +msgstr "Vista Inferior." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Bottom" @@ -4303,7 +4385,7 @@ msgstr "Fondo" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Top View." -msgstr "Vista Superior" +msgstr "Vista Superior." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Top" @@ -4363,7 +4445,7 @@ msgstr "Fondo (Shift+Num7)" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Left (Num3)" -msgstr "Left (Num3)" +msgstr "Izquierda (Num3)" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Right (Shift+Num3)" @@ -4626,20 +4708,20 @@ msgid "StyleBox Preview:" msgstr "Vista Previa de StyleBox:" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Texture Region Editor" -msgstr "Editor de Regiones de Sprites" +msgstr "Editor de Regiones de Texturas" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Scale Region Editor" -msgstr "Editor de Regiones de Sprites" +msgstr "Editor de Regiones de Escalado" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "" "No texture in this node.\n" "Set a texture to be able to edit region." msgstr "" +"Sin textura en este nodo.\n" +"Asigná una textura para poder editar la región." #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Can't save theme to file:" @@ -4667,8 +4749,12 @@ msgid "Remove Class Items" msgstr "Quitar Items de Clases" #: tools/editor/plugins/theme_editor_plugin.cpp -msgid "Create Template" -msgstr "Crear Template" +msgid "Create Empty Template" +msgstr "Crear Template VacÃo" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "Crear Template de Editor VacÃo" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio1" @@ -4754,32 +4840,36 @@ msgid "Erase TileMap" msgstr "Borrar TileMap" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Bucket" -msgstr "Balde" +msgid "Erase selection" +msgstr "Eliminar Selección" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Pick Tile" -msgstr "Elegir Tile" +msgid "Find tile" +msgstr "Encontrar tile" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Select" -msgstr "Seleccionar" +msgid "Transpose" +msgstr "Transponer" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Erase Selection" -msgstr "Eliminar Selección" +msgid "Mirror X" +msgstr "Espejar X" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Transpose" -msgstr "Transponer" +msgid "Mirror Y" +msgstr "Espejar Y" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror X (A)" -msgstr "Espejar X (A)" +msgid "Bucket" +msgstr "Balde" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror Y (S)" -msgstr "Espejar Y (S)" +msgid "Pick Tile" +msgstr "Elegir Tile" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "Seleccionar" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 0 degrees" @@ -4928,8 +5018,8 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" msgstr "" -"Filtros para excluir de la exportación (separados por comas, ej: *.json, *." -"txt):" +"Filtros para excluir de la exportación (separados por comas, ej: *.json, " +"*.txt):" #: tools/editor/project_export.cpp msgid "Convert text scenes to binary on export." @@ -5166,14 +5256,12 @@ msgstr "" "modificados)" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Project Manager" -msgstr "Nombre del Proyecto:" +msgstr "Gestor de Proyectos" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Project List" -msgstr "Salir a Listado de Proyecto" +msgstr "Listado de Proyectos" #: tools/editor/project_manager.cpp msgid "Run" @@ -5193,7 +5281,7 @@ msgstr "Salir" #: tools/editor/project_settings.cpp msgid "Key " -msgstr "Clave" +msgstr "Tecla " #: tools/editor/project_settings.cpp msgid "Joy Button" @@ -5330,14 +5418,12 @@ msgstr "" "existente." #: tools/editor/project_settings.cpp -#, fuzzy msgid "Autoload '%s' already exists!" -msgstr "La acción '%s' ya existe!" +msgstr "Autocargar '%s' ya existe!" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Rename Autoload" -msgstr "Quitar Autoload" +msgstr "Renombrar Autoload" #: tools/editor/project_settings.cpp msgid "Toggle AutoLoad Globals" @@ -5630,8 +5716,8 @@ msgstr "Ok" #: tools/editor/scene_tree_dock.cpp msgid "" -"Cannot instance the scene '%s' because the current scene exists within one of " -"its nodes." +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." msgstr "" "No se puede instanciar la escena '%s' porque la escena actual existe dentro " "de uno de sus nodos." @@ -5809,6 +5895,10 @@ msgid "Load As Placeholder" msgstr "Cargar Como Placeholder" #: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "Descartar Instanciado" + +#: tools/editor/scene_tree_editor.cpp msgid "Open in Editor" msgstr "Abrir en Editor" @@ -5865,9 +5955,8 @@ msgid "View Owners.." msgstr "Ver Dueños.." #: tools/editor/scenes_dock.cpp -#, fuzzy msgid "Copy Path" -msgstr "Copiar Params" +msgstr "Copiar Ruta" #: tools/editor/scenes_dock.cpp msgid "Rename or Move.." @@ -6044,7 +6133,7 @@ msgstr "Arbos de Escenas en Vivo:" #: tools/editor/script_editor_debugger.cpp msgid "Remote Object Properties: " -msgstr "Propiedades de Objeto Remoto:" +msgstr "Propiedades de Objeto Remoto: " #: tools/editor/script_editor_debugger.cpp msgid "Profiler" @@ -6108,7 +6197,7 @@ msgstr "Setear Desde Arbol" #: tools/editor/settings_config_dialog.cpp msgid "Shortcuts" -msgstr "" +msgstr "Atajos" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -6146,12 +6235,18 @@ msgstr "Cambiar Largo de Shape Rayo" msgid "Change Notifier Extents" msgstr "Cambiar Alcances de Notificadores" +#~ msgid "Binds (Extra Params):" +#~ msgstr "Binds (Parametros Extra):" + +#~ msgid "Method In Node:" +#~ msgstr "Método En el Nodo:" + +#~ msgid "Reload Tool Script (Soft)" +#~ msgstr "Volver a Cargar Script de Herramientas (Soft)" + #~ msgid "Edit Connections.." #~ msgstr "Editar Conecciones.." -#~ msgid "Connections:" -#~ msgstr "Conecciones:" - #~ msgid "Set Params" #~ msgstr "Setear Params" diff --git a/tools/translations/es_AR.po b/tools/translations/es_AR.po index 790f13f090..e9dc591b98 100644 --- a/tools/translations/es_AR.po +++ b/tools/translations/es_AR.po @@ -1,21 +1,67 @@ -# LANGUAGE translation of the Godot Engine editor +# Spanish (Argentina) translation of the Godot Engine editor # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +# Lisandro Lorea <lisandrolorea@gmail.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" +"PO-Revision-Date: 2016-06-19 12:39+0000\n" +"Last-Translator: Lisandro Lorea <lisandrolorea@gmail.com>\n" +"Language-Team: Spanish (Argentina) <https://hosted.weblate.org/projects" +"/godot-engine/godot/es_AR/>\n" "Language: es_AR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.8\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.7-dev\n" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "Argumento de tipo inválido para convert(), usá constantes TYPE_*." + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" +"No hay suficientes bytes para decodificar bytes, o el formato es inválido." + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "el argumento step es cero!" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "No es un script con una instancia" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "No está basado en un script" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "No está basado en un archivo de recursos" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "Formato de diccionario de instancias inválido (@path faltante)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" +"Formato de diccionario de instancias inválido (no se puede cargar el script " +"en @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" +"Formato de diccionario de instancias inválido (script inválido en @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "Diccionario de instancias inválido (subclases inválidas)" #: scene/2d/animated_sprite.cpp msgid "" @@ -23,7 +69,7 @@ msgid "" "order for AnimatedSprite to display frames." msgstr "" "Un recurso SpriteFrames debe ser creado o seteado en la propiedad 'Frames' " -"para que AnimatedSprite puda mostrar frames." +"para que AnimatedSprite pueda mostrar frames." #: scene/2d/canvas_modulate.cpp msgid "" @@ -42,7 +88,7 @@ msgid "" msgstr "" "CollisionPolylgon2D solo sirve para proveer de un collision shape a un nodo " "derivado de CollisionObject2D. Favor de usarlo solo como un hijo de Area2D, " -"StaticBody2D, RigidBody2D, KinematicBody2D, etc. para darles un shape. " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. para darles un shape." #: scene/2d/collision_polygon_2d.cpp msgid "An empty CollisionPolygon2D has no effect on collision." @@ -115,7 +161,7 @@ msgstr "" #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." msgstr "" -"PathFollow2D solo funciona cuando esta seteado como hijo de un nodo Path2D" +"PathFollow2D solo funciona cuando está seteado como hijo de un nodo Path2D." #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." @@ -131,16 +177,16 @@ msgstr "" #: scene/2d/sprite.cpp msgid "" -"Path property must point to a valid Viewport node to work. Such Viewport must " -"be set to 'render target' mode." +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." msgstr "" "La propiedad Path debe apuntar a un nodo Viewport válido para funcionar. " "Dicho Viewport debe ser seteado a modo 'render target'." #: scene/2d/sprite.cpp msgid "" -"The Viewport set in the path property must be set as 'render target' in order " -"for this sprite to work." +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." msgstr "" "El Viewport seteado en la propiedad path debe ser seteado como 'render " "target' para que este sprite funcione." @@ -150,8 +196,8 @@ msgid "" "VisibilityEnable2D works best when used with the edited scene root directly " "as parent." msgstr "" -"VisibilityEnable2D funciona mejor cuando se usa con la raÃz de escena editada " -"directamente como padre." +"VisibilityEnable2D funciona mejor cuando se usa con la raÃz de escena " +"editada directamente como padre." #: scene/3d/body_shape.cpp msgid "" @@ -192,8 +238,8 @@ msgstr "" #: scene/3d/navigation_mesh.cpp msgid "" -"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " -"only provides navigation data." +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." msgstr "" "NavigationMeshInstance debe ser un hijo o nieto de un nodo Navigation. Solo " "provee datos de navegación." @@ -214,13 +260,12 @@ msgstr "" "de modo que SpatialSamplePlayer puede reproducir sonido." #: scene/3d/sprite_3d.cpp -#, fuzzy msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " "order for AnimatedSprite3D to display frames." msgstr "" -"Un recurso SpriteFrames debe ser creado o seteado en la propiedad 'Frames' " -"para que AnimatedSprite puda mostrar frames." +"Un recurso SpriteFrames debe ser creado o asignado en la propiedad 'Frames' " +"para que AnimatedSprite3D pueda mostrar frames." #: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Cancel" @@ -244,7 +289,7 @@ msgstr "El Archivo Existe, Sobreescribir?" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Recognized" -msgstr "Todos Reconocidos" +msgstr "Todas Reconocidas" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Files (*)" @@ -258,24 +303,20 @@ msgid "Open" msgstr "Abrir" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a File" -msgstr "Abrir Archivo(s) de Muestra" +msgstr "Abrir un Archivo" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open File(s)" -msgstr "Abrir Archivo(s) de Muestra" +msgstr "Abrir Archivo(s)" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a Directory" -msgstr "Elegà un Directorio" +msgstr "Abrir un Directorio" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a File or Directory" -msgstr "Elegà un Directorio" +msgstr "Abrir un Archivo o Directorio" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_node.cpp @@ -297,7 +338,7 @@ msgstr "Crear Carpeta" #: tools/editor/io_plugins/editor_font_import_plugin.cpp #: tools/editor/project_settings.cpp tools/editor/script_create_dialog.cpp msgid "Path:" -msgstr "Path:" +msgstr "Ruta:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Directories & Files:" @@ -339,7 +380,7 @@ msgstr "Alt+" #: scene/gui/input_action.cpp msgid "Ctrl+" -msgstr "" +msgstr "Ctrl+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp @@ -402,7 +443,8 @@ msgstr "Pegar" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_editor_plugin.cpp -#: tools/editor/plugins/shader_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "Select All" msgstr "Seleccionar Todo" @@ -422,8 +464,8 @@ msgstr "Deshacer" #: scene/gui/popup.cpp msgid "" "Popups will hide by default unless you call popup() or any of the popup*() " -"functions. Making them visible for editing is fine though, but they will hide " -"upon running." +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." msgstr "" "Los popups se esconderán por defecto a menos que llames a popup() o " "cualquiera de las funciones popup*(). Sin embargo, no hay problema con " @@ -538,6 +580,18 @@ msgid "Anim Delete Keys" msgstr "Borrar Claves de Anim" #: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "ContÃnuo" + +#: tools/editor/animation_editor.cpp +msgid "Discrete" +msgstr "Discreto" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "Trigger" + +#: tools/editor/animation_editor.cpp msgid "Anim Add Key" msgstr "Agregar Clave de Anim" @@ -645,6 +699,10 @@ msgid "Change Anim Loop" msgstr "Cambiar Loop de Anim" #: tools/editor/animation_editor.cpp +msgid "Change Anim Loop Interpolation" +msgstr "Cambiar Interpolación de Loop de Anim" + +#: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" msgstr "Crear Clave de Valor Tipado para Anim" @@ -685,6 +743,10 @@ msgid "Enable/Disable looping in animation." msgstr "Activar/Desactivar loopeo en la animación." #: tools/editor/animation_editor.cpp +msgid "Enable/Disable interpolation when looping animation." +msgstr "Activar/Desactivar interpolación al loopear animación." + +#: tools/editor/animation_editor.cpp msgid "Add new tracks." msgstr "Agregar nuevos tracks." @@ -805,22 +867,20 @@ msgid "Site:" msgstr "Sitio:" #: tools/editor/asset_library_editor_plugin.cpp -#, fuzzy msgid "Support.." -msgstr "Exportar.." +msgstr "Soporte.." #: tools/editor/asset_library_editor_plugin.cpp msgid "Official" -msgstr "" +msgstr "Oficial" #: tools/editor/asset_library_editor_plugin.cpp msgid "Community" -msgstr "" +msgstr "Comunidad" #: tools/editor/asset_library_editor_plugin.cpp -#, fuzzy msgid "Testing" -msgstr "Configuración" +msgstr "Testeo" #: tools/editor/asset_library_editor_plugin.cpp msgid "Assets ZIP File" @@ -951,13 +1011,9 @@ msgid "Method in target Node must be specified!" msgstr "El método en el Nodo objetivo debe ser especificado!" #: tools/editor/connections_dialog.cpp -msgid "Connect To Node:" +msgid "Conect To Node:" msgstr "Conectar a Nodo:" -#: tools/editor/connections_dialog.cpp -msgid "Binds (Extra Params):" -msgstr "Binds (Parametros Extra):" - #: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp #: tools/editor/plugins/item_list_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp @@ -967,17 +1023,22 @@ msgstr "Agregar" #: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp -#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp msgid "Remove" msgstr "Quitar" #: tools/editor/connections_dialog.cpp -msgid "Path To Node:" -msgstr "Path al Nodo:" +msgid "Add Extra Call Argument:" +msgstr "Agregar Argumento de Llamada Extra:" + +#: tools/editor/connections_dialog.cpp +msgid "Extra Call Arguments:" +msgstr "Argumentos de Llamada Extras:" #: tools/editor/connections_dialog.cpp -msgid "Method In Node:" -msgstr "Método En el Nodo:" +msgid "Path to Node:" +msgstr "Ruta al Nodo:" #: tools/editor/connections_dialog.cpp msgid "Make Function" @@ -1000,6 +1061,10 @@ msgid "Connect '%s' to '%s'" msgstr "Conectar '%s' a '%s'" #: tools/editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "Conectando Señal:" + +#: tools/editor/connections_dialog.cpp msgid "Create Subscription" msgstr "Crear Subscripción" @@ -1013,9 +1078,8 @@ msgid "Disconnect" msgstr "Desconectar" #: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp -#, fuzzy msgid "Signals" -msgstr "Señales:" +msgstr "Señales" #: tools/editor/create_dialog.cpp msgid "Create New" @@ -1059,7 +1123,7 @@ msgstr "Recursos" #: tools/editor/dependency_editor.cpp tools/editor/project_manager.cpp #: tools/editor/project_settings.cpp msgid "Path" -msgstr "Path" +msgstr "Ruta" #: tools/editor/dependency_editor.cpp msgid "Dependencies:" @@ -1141,7 +1205,8 @@ msgid "Delete selected files?" msgstr "Eliminar archivos seleccionados?" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/item_list_editor_plugin.cpp tools/editor/scenes_dock.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp msgid "Delete" msgstr "Eliminar" @@ -1175,7 +1240,7 @@ msgstr "Recientes:" #: tools/editor/editor_file_dialog.cpp msgid "Preview:" -msgstr "Preview:" +msgstr "Vista Previa:" #: tools/editor/editor_file_system.cpp msgid "Cannot go into subdir:" @@ -1275,9 +1340,8 @@ msgid "Setting Up.." msgstr "Configurando.." #: tools/editor/editor_log.cpp -#, fuzzy msgid " Output:" -msgstr "Salida" +msgstr " Salida:" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Importing" @@ -1391,9 +1455,8 @@ msgid "Copy Params" msgstr "Copiar Params" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Paste Params" -msgstr "Pegar Frame" +msgstr "Pegar Parametros" #: tools/editor/editor_node.cpp #: tools/editor/plugins/resource_preloader_editor_plugin.cpp @@ -1413,9 +1476,8 @@ msgid "Make Sub-Resources Unique" msgstr "Crear Sub-Recurso Unico" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Open in Help" -msgstr "Abrir Escena" +msgstr "Abrir en la Ayuda" #: tools/editor/editor_node.cpp msgid "There is no defined scene to run." @@ -1426,10 +1488,13 @@ msgid "" "No main scene has ever been defined.\n" "Select one from \"Project Settings\" under the 'application' category." msgstr "" +"No se ha definido ninguna escena principal.\n" +"Seleccioná una de \"Ajustes del Proyecto\" bajo la categoria 'aplicacion'." #: tools/editor/editor_node.cpp msgid "Current scene was never saved, please save it prior to running." -msgstr "La escena actual nunca se guardó. Favor de guardarla antes de ejecutar." +msgstr "" +"La escena actual nunca se guardó. Favor de guardarla antes de ejecutar." #: tools/editor/editor_node.cpp msgid "Could not start subprocess!" @@ -1497,7 +1562,7 @@ msgstr "Escena actual sin guardar. Abrir de todos modos?" #: tools/editor/editor_node.cpp msgid "Can't reload a scene that was never saved." -msgstr "No se puede volver a cargar una escena que nunca se guardó. " +msgstr "No se puede volver a cargar una escena que nunca se guardó." #: tools/editor/editor_node.cpp msgid "Revert" @@ -1523,11 +1588,12 @@ msgstr "Ugh" #: tools/editor/editor_node.cpp msgid "" -"Error loading scene, it must be inside the project path. Use 'Import' to open " -"the scene, then save it inside the project path." +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." msgstr "" -"Error al cargar la escena, debe estar dentro de un path de proyecto. Usa " -"'Importar' para abrir la escena, luego guardala dentro del path del proyecto." +"Error al cargar la escena, debe estar dentro de la ruta del proyecto. Usa " +"'Importar' para abrir la escena, luego guardala dentro de la ruta del " +"proyecto." #: tools/editor/editor_node.cpp msgid "Error loading scene." @@ -1542,9 +1608,8 @@ msgid "Save Layout" msgstr "Guardar Layout" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Load Layout" -msgstr "Guardar Layout" +msgstr "Cargar Layout" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Default" @@ -1576,6 +1641,14 @@ msgid "Go to previously opened scene." msgstr "Ir a la escena abierta previamente." #: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "Modo Pantalla Completa" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "Modo Sin Distracciones" + +#: tools/editor/editor_node.cpp msgid "Operations with scene files." msgstr "Operaciones con archivos de escena." @@ -1608,9 +1681,8 @@ msgid "Open Recent" msgstr "Abrir Reciente" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Quick Filter Files.." -msgstr "Busqueda Rapida en Archivo.." +msgstr "Filtrado Rapido de Archivos.." #: tools/editor/editor_node.cpp msgid "Convert To.." @@ -1682,9 +1754,8 @@ msgid "Export" msgstr "Exportar" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play the project." -msgstr "Reproducir el proyecto (F5)." +msgstr "Reproducir el proyecto." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -1696,14 +1767,12 @@ msgid "Pause the scene" msgstr "Pausar la escena" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Pause Scene" -msgstr "Pausar la escena" +msgstr "Pausar la Escena" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Stop the scene." -msgstr "Parar la escena (F8)." +msgstr "Parar la escena." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -1711,14 +1780,12 @@ msgid "Stop" msgstr "Detener" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play the edited scene." -msgstr "Reproducir la escena editada (F6)." +msgstr "Reproducir la escena editada." #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play Scene" -msgstr "Guardar Escena" +msgstr "Reproducir Escena" #: tools/editor/editor_node.cpp msgid "Play custom scene" @@ -1729,19 +1796,20 @@ msgid "Debug options" msgstr "Opciones de debugueo" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Deploy with Remote Debug" msgstr "Hacer Deploy con Debug Remoto" #: tools/editor/editor_node.cpp msgid "" -"When exporting or deploying, the resulting executable will attempt to connect " -"to the IP of this computer in order to be debugged." +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." msgstr "" +"Al exportar o hacer deploy, el ejecutable resultante tratara de contectarse " +"a la IP de esta computadora de manera de ser debugueado." #: tools/editor/editor_node.cpp msgid "Small Deploy with Network FS" -msgstr "" +msgstr "Depoy Pequeño con Network FS" #: tools/editor/editor_node.cpp msgid "" @@ -1749,9 +1817,15 @@ msgid "" "executable.\n" "The filesystem will be provided from the project by the editor over the " "network.\n" -"On Android, deploy will use the USB cable for faster performance. This option " -"speeds up testing for games with a large footprint." +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." msgstr "" +"Cuando esta opción está activa, exportar o hacer deploy producirá un " +"ejecutable mÃnimo.\n" +"El sistema de archivos sera proveido desde el proyecto por el editor sobre " +"la red.\n" +"En Android, deploy usará el cable USB para mejor performance. Esta opción " +"acelera el testeo para juegos con footprint grande." #: tools/editor/editor_node.cpp msgid "Visible Collision Shapes" @@ -1762,6 +1836,8 @@ msgid "" "Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " "running game if this option is turned on." msgstr "" +"Los Collision shapes y nodos raycast (para 2D y 3D) seran visibiles durante " +"la ejecución del juego cuando esta opción queda activada." #: tools/editor/editor_node.cpp msgid "Visible Navigation" @@ -1772,10 +1848,12 @@ msgid "" "Navigation meshes and polygons will be visible on the running game if this " "option is turned on." msgstr "" +"Los meshes de navegación y los polÃgonos seran visibles durante la ejecución " +"del juego si esta opción queda activada." #: tools/editor/editor_node.cpp msgid "Sync Scene Changes" -msgstr "" +msgstr "Sincronizar Cambios de Escena" #: tools/editor/editor_node.cpp msgid "" @@ -1784,11 +1862,14 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"Cuando esta opción este encendida, cualquier cambio hecho a la escena en el " +"editor sera replicado en el juego en ejecución.\n" +"Cuando se usa remotamente en un dispositivo, esto es mas eficiente con un " +"sistema de archivos remoto." #: tools/editor/editor_node.cpp -#, fuzzy msgid "Sync Script Changes" -msgstr "Actualizar Cambios" +msgstr "Actualizar Cambios en Scripts" #: tools/editor/editor_node.cpp msgid "" @@ -1797,6 +1878,10 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"Cuando esta opción esta activa, cualquier script que se guarde sera vuelto a " +"cargar en el juego en ejecución.\n" +"Cuando se use remotamente en un dispositivo, esto es mas eficiente con un " +"sistema de archivos de red." #: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp msgid "Settings" @@ -1850,9 +1935,7 @@ msgstr "Cargar un recurso existente desde disco y editarlo." msgid "Save the currently edited resource." msgstr "Guardar el recurso editado actualmente." -#: tools/editor/editor_node.cpp -#: tools/editor/plugins/animation_player_editor_plugin.cpp -#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Save As.." msgstr "Guardar Como.." @@ -2035,7 +2118,7 @@ msgstr "Seleccionar Nodo(s) para Importar" #: tools/editor/editor_sub_scene.cpp msgid "Scene Path:" -msgstr "Path a la Escena:" +msgstr "Ruta a la Escena:" #: tools/editor/editor_sub_scene.cpp msgid "Import From Node:" @@ -2060,41 +2143,39 @@ msgid "Imported Resources" msgstr "Importar Recursos" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp -#, fuzzy msgid "No bit masks to import!" -msgstr "Sin elementos para importar!" +msgstr "Sin máscaras de bits para importar!" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Target path is empty." -msgstr "El path de destino está vacÃo." +msgstr "La ruta de destino está vacÃa." #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Target path must be a complete resource path." -msgstr "El path de destino debe ser un path de recursos completo." +msgstr "La ruta de destino debe ser una ruta de recursos completa." #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Target path must exist." -msgstr "El path de destino debe existir." +msgstr "La ruta de destino debe existir." #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp msgid "Save path is empty!" -msgstr "El path de guardado esta vacÃo!" +msgstr "La ruta de guardado esta vacÃa!" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp -#, fuzzy msgid "Import BitMasks" -msgstr "Importar Texturas" +msgstr "Importar BitMasks" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp @@ -2108,7 +2189,7 @@ msgstr "Textura(s) de Origen:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp #: tools/editor/io_plugins/editor_translation_import_plugin.cpp msgid "Target Path:" -msgstr "Path de Destino:" +msgstr "Ruta de Destino:" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -2121,7 +2202,7 @@ msgstr "Aceptar" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp msgid "Bit Mask" -msgstr "" +msgstr "Máscara de Bits" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "No source font file!" @@ -2137,7 +2218,7 @@ msgstr "No se puede cargar/procesar la tipografÃa de origen." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Couldn't save font." -msgstr "No se pudo guardar la tipografÃa" +msgstr "No se pudo guardar la tipografÃa." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Source Font:" @@ -2176,7 +2257,7 @@ msgid "" "instead." msgstr "" "Este archivo ya es un archivo de tipografÃas de Godot, por favor suministrar " -"un archivo tipo BMFont" +"un archivo tipo BMFont." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Failed opening as BMFont file." @@ -2289,7 +2370,7 @@ msgstr "Filtros" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Source path is empty." -msgstr "El path de origen esta vacio." +msgstr "La ruta de origen esta vacÃa." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Couldn't load post-import script." @@ -2503,8 +2584,8 @@ msgid "" "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " "the project." msgstr "" -"AVISO: Importar texturas 2D no es obligatorio. Simplemente copiá los archivos " -"png/jpg al proyecto." +"AVISO: Importar texturas 2D no es obligatorio. Simplemente copiá los " +"archivos png/jpg al proyecto." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Crop empty space." @@ -2636,18 +2717,16 @@ msgid "MultiNode Set" msgstr "Setear MultiNodo" #: tools/editor/node_dock.cpp -#, fuzzy msgid "Node" -msgstr "Nodo Mix" +msgstr "Nodo" #: tools/editor/node_dock.cpp -#, fuzzy msgid "Groups" -msgstr "Grupos:" +msgstr "Grupos" #: tools/editor/node_dock.cpp msgid "Select a Node to edit Signals and Groups." -msgstr "" +msgstr "Seleccionar un Nodo para editar Señales y Grupos." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" @@ -2759,12 +2838,20 @@ msgid "Create new animation in player." msgstr "Crear nueva animación en el reproductor." #: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "Cargar una animación desde disco." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load an animation from disk." msgstr "Cargar una animación desde disco." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Save the current animation" -msgstr "Guardar la animación actual." +msgstr "Guardar la animación actual" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As" +msgstr "Guardar Como" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." @@ -3458,7 +3545,7 @@ msgstr "No se especificó mesh de origen (y MultiMesh no contiene ningún Mesh). #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (invalid path)." -msgstr "Mesh de origen inválido (path inválido)." +msgstr "Mesh de origen inválido (ruta inválida)." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh source is invalid (not a MeshInstance)." @@ -3474,7 +3561,7 @@ msgstr "Ninguna superficie de origen especificada." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (invalid path)." -msgstr "La superficie de origen es inválida (path inválido)." +msgstr "La superficie de origen es inválida (ruta inválida)." #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Surface source is invalid (no geometry)." @@ -3891,7 +3978,8 @@ msgstr "Importar Tema" msgid "Save Theme As.." msgstr "Guardar Tema Como.." -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "File" msgstr "Archivo" @@ -3963,13 +4051,8 @@ msgid "Auto Indent" msgstr "Auto Indentar" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy -msgid "Reload Tool Script" -msgstr "Crear Script de Nodo" - -#: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script (Soft)" -msgstr "" +msgid "Soft Reload Script" +msgstr "Recarga Soft de Script" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/shader_editor_plugin.cpp @@ -4061,8 +4144,8 @@ msgid "Help" msgstr "Ayuda" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Contextual" -msgstr "Contextual" +msgid "Contextual Help" +msgstr "Ayuda Contextual" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Tutorials" @@ -4094,7 +4177,7 @@ msgstr "Ir a anterior documento editado." #: tools/editor/plugins/script_editor_plugin.cpp msgid "Go to next edited document." -msgstr "Ir a siguiente documento editado" +msgstr "Ir a siguiente documento editado." #: tools/editor/plugins/script_editor_plugin.cpp msgid "Create Script" @@ -4270,20 +4353,20 @@ msgid "Transform Aborted." msgstr "Transformación Abortada." #: tools/editor/plugins/spatial_editor_plugin.cpp -msgid "View Plane Transform." -msgstr "Ver Transformación en Plano." - -#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." -msgstr "Transformación en Eje-X" +msgstr "Transformación en Eje-X." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Y-Axis Transform." -msgstr "Transformación en Eje-Y" +msgstr "Transformación en Eje-Y." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Z-Axis Transform." -msgstr "Transformación en Eje-Z" +msgstr "Transformación en Eje-Z." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "Ver Transformación en Plano." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scaling to %s%%." @@ -4295,7 +4378,7 @@ msgstr "Torando %s grados." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View." -msgstr "Vista Inferior" +msgstr "Vista Inferior." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Bottom" @@ -4303,7 +4386,7 @@ msgstr "Fondo" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Top View." -msgstr "Vista Superior" +msgstr "Vista Superior." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Top" @@ -4363,7 +4446,7 @@ msgstr "Fondo (Shift+Num7)" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Left (Num3)" -msgstr "Left (Num3)" +msgstr "Izquierda (Num3)" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Right (Shift+Num3)" @@ -4626,20 +4709,20 @@ msgid "StyleBox Preview:" msgstr "Vista Previa de StyleBox:" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Texture Region Editor" -msgstr "Editor de Regiones de Sprites" +msgstr "Editor de Regiones de Texturas" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Scale Region Editor" -msgstr "Editor de Regiones de Sprites" +msgstr "Editor de Regiones de Escalado" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "" "No texture in this node.\n" "Set a texture to be able to edit region." msgstr "" +"Sin textura en este nodo.\n" +"Asigná una textura para poder editar la región." #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Can't save theme to file:" @@ -4667,8 +4750,12 @@ msgid "Remove Class Items" msgstr "Quitar Items de Clases" #: tools/editor/plugins/theme_editor_plugin.cpp -msgid "Create Template" -msgstr "Crear Template" +msgid "Create Empty Template" +msgstr "Crear Template VacÃo" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "Crear Template de Editor VacÃo" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio1" @@ -4754,32 +4841,36 @@ msgid "Erase TileMap" msgstr "Borrar TileMap" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Bucket" -msgstr "Balde" +msgid "Erase selection" +msgstr "Eliminar Selección" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Pick Tile" -msgstr "Elegir Tile" +msgid "Find tile" +msgstr "Encontrar tile" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Select" -msgstr "Seleccionar" +msgid "Transpose" +msgstr "Transponer" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Erase Selection" -msgstr "Eliminar Selección" +msgid "Mirror X" +msgstr "Espejar X" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Transpose" -msgstr "Transponer" +msgid "Mirror Y" +msgstr "Espejar Y" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror X (A)" -msgstr "Espejar X (A)" +msgid "Bucket" +msgstr "Balde" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror Y (S)" -msgstr "Espejar Y (S)" +msgid "Pick Tile" +msgstr "Elegir Tile" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "Seleccionar" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 0 degrees" @@ -5166,14 +5257,12 @@ msgstr "" "modificados)" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Project Manager" -msgstr "Nombre del Proyecto:" +msgstr "Gestor de Proyectos" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Project List" -msgstr "Salir a Listado de Proyecto" +msgstr "Listado de Proyectos" #: tools/editor/project_manager.cpp msgid "Run" @@ -5193,7 +5282,7 @@ msgstr "Salir" #: tools/editor/project_settings.cpp msgid "Key " -msgstr "Clave" +msgstr "Tecla " #: tools/editor/project_settings.cpp msgid "Joy Button" @@ -5330,14 +5419,12 @@ msgstr "" "existente." #: tools/editor/project_settings.cpp -#, fuzzy msgid "Autoload '%s' already exists!" -msgstr "La acción '%s' ya existe!" +msgstr "Autocargar '%s' ya existe!" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Rename Autoload" -msgstr "Quitar Autoload" +msgstr "Renombrar Autoload" #: tools/editor/project_settings.cpp msgid "Toggle AutoLoad Globals" @@ -5630,8 +5717,8 @@ msgstr "Ok" #: tools/editor/scene_tree_dock.cpp msgid "" -"Cannot instance the scene '%s' because the current scene exists within one of " -"its nodes." +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." msgstr "" "No se puede instanciar la escena '%s' porque la escena actual existe dentro " "de uno de sus nodos." @@ -5686,7 +5773,8 @@ msgstr "No se puede operar sobre los nodos de una escena externa!" #: tools/editor/scene_tree_dock.cpp msgid "Can't operate on nodes the current scene inherits from!" -msgstr "No se puede operar sobre los nodos de los cual hereda la escena actual!" +msgstr "" +"No se puede operar sobre los nodos de los cual hereda la escena actual!" #: tools/editor/scene_tree_dock.cpp msgid "Remove Node(s)" @@ -5809,6 +5897,10 @@ msgid "Load As Placeholder" msgstr "Cargar Como Placeholder" #: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "Descartar Instanciado" + +#: tools/editor/scene_tree_editor.cpp msgid "Open in Editor" msgstr "Abrir en Editor" @@ -5865,9 +5957,8 @@ msgid "View Owners.." msgstr "Ver Dueños.." #: tools/editor/scenes_dock.cpp -#, fuzzy msgid "Copy Path" -msgstr "Copiar Params" +msgstr "Copiar Ruta" #: tools/editor/scenes_dock.cpp msgid "Rename or Move.." @@ -6044,7 +6135,7 @@ msgstr "Arbos de Escenas en Vivo:" #: tools/editor/script_editor_debugger.cpp msgid "Remote Object Properties: " -msgstr "Propiedades de Objeto Remoto:" +msgstr "Propiedades de Objeto Remoto: " #: tools/editor/script_editor_debugger.cpp msgid "Profiler" @@ -6108,7 +6199,7 @@ msgstr "Setear Desde Arbol" #: tools/editor/settings_config_dialog.cpp msgid "Shortcuts" -msgstr "" +msgstr "Atajos" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -6146,12 +6237,18 @@ msgstr "Cambiar Largo de Shape Rayo" msgid "Change Notifier Extents" msgstr "Cambiar Alcances de Notificadores" +#~ msgid "Binds (Extra Params):" +#~ msgstr "Binds (Parametros Extra):" + +#~ msgid "Method In Node:" +#~ msgstr "Método En el Nodo:" + +#~ msgid "Reload Tool Script (Soft)" +#~ msgstr "Volver a Cargar Script de Herramientas (Soft)" + #~ msgid "Edit Connections.." #~ msgstr "Editar Conecciones.." -#~ msgid "Connections:" -#~ msgstr "Conecciones:" - #~ msgid "Set Params" #~ msgstr "Setear Params" diff --git a/tools/translations/extract.py b/tools/translations/extract.py index a441bcc480..97bb7494a7 100755 --- a/tools/translations/extract.py +++ b/tools/translations/extract.py @@ -40,6 +40,7 @@ main_po = """ # LANGUAGE translation of the Godot Engine editor # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. +# # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy @@ -106,7 +107,7 @@ f.write(main_po) f.close() if (os.name == "posix"): - os.system("msgmerge -w80 tools.pot tools.pot > tools.pot.wrap") + os.system("msgmerge -w79 tools.pot tools.pot > tools.pot.wrap") shutil.move("tools.pot.wrap", "tools.pot") shutil.move("tools.pot", "tools/translations/tools.pot") diff --git a/tools/translations/fr.po b/tools/translations/fr.po index 0fddf2947d..386a7e6170 100644 --- a/tools/translations/fr.po +++ b/tools/translations/fr.po @@ -1,27 +1,78 @@ # French translation of the Godot Engine editor # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. +# +# derderder77 <derderder77380@gmail.com>, 2016. +# finkiki <specialpopol@gmx.fr>, 2016. # Hugo Locurcio <hugo.l@openmailbox.org>, 2016. +# Marc <marc.gilleron@gmail.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: derderder <derderder77380@gmail.com>\n" -"Language-Team: French\n" +"PO-Revision-Date: 2016-06-19 13:17+0000\n" +"Last-Translator: Rémi Verschelde <akien@godotengine.org>\n" +"Language-Team: French <https://hosted.weblate.org/projects/godot-" +"engine/godot/fr/>\n" "Language: fr\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.6.10\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 2.7-dev\n" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "N'est pas un script avec une instance" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "N'est pas basé sur un script" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "N'est pas basé sur un fichier de ressource" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "Instance invalide pour le format de dictionnaire (@path manquant)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" +"Instance invalide pour le format de dictionnaire (impossible de charger le " +"script depuis @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" +"Instance invalide pour le format de dictionnaire (script invalide dans @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" +"Instance invalide pour le format de dictionnaire (sous-classes invalides)" #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " "order for AnimatedSprite to display frames." msgstr "" +"Une ressource SpriteFrames doit être créée ou assignée à la propriété « " +"Frames » afin qu'AnimatedSprite affiche les images." #: scene/2d/canvas_modulate.cpp msgid "" @@ -68,8 +119,8 @@ msgid "" "A texture with the shape of the light must be supplied to the 'texture' " "property." msgstr "" -"Une texture avec la forme de la lumière doit être fournie dans la propriété « " -"texture »." +"Une texture avec la forme de la lumière doit être fournie dans la propriété " +"« texture »." #: scene/2d/light_occluder_2d.cpp msgid "" @@ -89,12 +140,17 @@ msgid "" "A NavigationPolygon resource must be set or created for this node to work. " "Please set a property or draw a polygon." msgstr "" +"Vous devez créer ou sélectionner une ressource de type NavigationPolygon " +"pour que ce nÅ“ud fonctionne. Sélectionnez une ressource ou dessinez un " +"polygone." #: scene/2d/navigation_polygon.cpp msgid "" "NavigationPolygonInstance must be a child or grandchild to a Navigation2D " "node. It only provides navigation data." msgstr "" +"Un NavigationPolygonInstance doit être un enfant ou petit-enfant d'un nÅ“ud " +"Navigation2D. Il fournit seulement des données de navigation." #: scene/2d/parallax_layer.cpp msgid "" @@ -112,6 +168,8 @@ msgstr "" #: scene/2d/path_2d.cpp msgid "PathFollow2D only works when set as a child of a Path2D node." msgstr "" +"Un PathFollow2D fonctionne seulement quand défini comme un enfant d'un nÅ“ud " +"Path2D." #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." @@ -124,19 +182,21 @@ msgid "" "A SampleLibrary resource must be created or set in the 'samples' property in " "order for SamplePlayer to play sound." msgstr "" +"Une ressource SampleLibrary doit être créée ou définie dans la propriété " +"\"échantillon\" pour que le SamplePlayer puisse jouer un son." #: scene/2d/sprite.cpp msgid "" -"Path property must point to a valid Viewport node to work. Such Viewport must " -"be set to 'render target' mode." +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." msgstr "" "La propriété Path doit pointer vers un nÅ“ud de type Viewport valide pour " "fonctionner. Ce Viewport doit utiliser le mode « render target »." #: scene/2d/sprite.cpp msgid "" -"The Viewport set in the path property must be set as 'render target' in order " -"for this sprite to work." +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." msgstr "" "Le Viewport défini dans la propriété Path doit utiliser le mode « render " "target » pour que cette sprite fonctionne." @@ -146,6 +206,8 @@ msgid "" "VisibilityEnable2D works best when used with the edited scene root directly " "as parent." msgstr "" +"Un VisibilityEnable2D fonctionne mieux lorsqu'il est directement enfant du " +"nÅ“ud racine de la scène." #: scene/3d/body_shape.cpp msgid "" @@ -185,9 +247,11 @@ msgstr "" #: scene/3d/navigation_mesh.cpp msgid "" -"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " -"only provides navigation data." +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." msgstr "" +"Un NavigationMeshInstance doit être enfant ou sous-enfant d'un nÅ“ud de type " +"Navigation. Il fournit uniquement des données de navigation." #: scene/3d/scenario_fx.cpp msgid "" @@ -205,13 +269,12 @@ msgstr "" "propriété « samples » afin que le SpatialSamplePlayer joue des sons." #: scene/3d/sprite_3d.cpp -#, fuzzy msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " "order for AnimatedSprite3D to display frames." msgstr "" -"Une ressource de type SampleLibrary doit être créée ou définie dans la " -"propriété « samples » afin que le SpatialSamplePlayer joue des sons." +"Une ressource de type SampleFrames doit être créée ou définie dans la " +"propriété « Frames » afin qu'une AnimatedSprite3D fonctionne." #: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Cancel" @@ -223,11 +286,11 @@ msgstr "OK" #: scene/gui/dialogs.cpp msgid "Alert!" -msgstr "" +msgstr "Alerte !" #: scene/gui/dialogs.cpp msgid "Please Confirm..." -msgstr "Veuillez confirmer..." +msgstr "Veuillez confirmer…" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "File Exists, Overwrite?" @@ -235,7 +298,7 @@ msgstr "Le fichier existe, l'écraser ?" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Recognized" -msgstr "Tous les fichiers reconnus" +msgstr "Tous les types de fichiers reconnus" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "All Files (*)" @@ -249,24 +312,20 @@ msgid "Open" msgstr "Ouvrir" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a File" -msgstr "Ouvrir un ou des fichiers d'échantillons" +msgstr "Ouvrir un fichier" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open File(s)" -msgstr "Ouvrir un ou des fichiers d'échantillons" +msgstr "Ouvrir un ou plusieurs fichiers" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a Directory" -msgstr "Choisir un répertoire" +msgstr "Ouvrir un répertoire" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a File or Directory" -msgstr "Choisir un répertoire" +msgstr "Ouvrir un fichier ou un répertoire" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_node.cpp @@ -330,7 +389,7 @@ msgstr "Alt+" #: scene/gui/input_action.cpp msgid "Ctrl+" -msgstr "" +msgstr "Contrôle+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp @@ -393,7 +452,8 @@ msgstr "Coller" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_editor_plugin.cpp -#: tools/editor/plugins/shader_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "Select All" msgstr "Tout sélectionner" @@ -413,12 +473,13 @@ msgstr "Annuler" #: scene/gui/popup.cpp msgid "" "Popups will hide by default unless you call popup() or any of the popup*() " -"functions. Making them visible for editing is fine though, but they will hide " -"upon running." +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." msgstr "" -"Les pop-ups seront cachés par défaut jusqu'à ce que vous appelez une fonction " -"popup() ou une des fonctions popup*(). Les rendre visibles pour l'édition ne " -"pose pas de problème, mais elles seront cachées lors de l'exécution." +"Les pop-ups seront cachés par défaut jusqu'à ce que vous appelez une " +"fonction popup() ou une des fonctions popup*(). Les rendre visibles pour " +"l'édition ne pose pas de problème, mais elles seront cachées lors de " +"l'exécution." #: scene/main/viewport.cpp msgid "" @@ -427,6 +488,10 @@ msgid "" "obtain a size. Otherwise, make it a RenderTarget and assign its internal " "texture to some node for display." msgstr "" +"Ce Viewport n'est pas sélectionné comme cible du rendu. Si vous avez " +"l'intention d'afficher son contenu directement à l'écran, rattachez-le à un " +"nÅ“ud de type Control afin qu'il en obtienne une taille. Sinon, faites-en un " +"RenderTarget et assignez sa texture à un nÅ“ud quelquonque pour son affichage." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -458,47 +523,47 @@ msgstr "Toute la sélection" #: tools/editor/animation_editor.cpp msgid "Move Add Key" -msgstr "" +msgstr "Déplacer Ajouter Clé" #: tools/editor/animation_editor.cpp msgid "Anim Change Transition" -msgstr "" +msgstr "Anim Modifier Transition" #: tools/editor/animation_editor.cpp msgid "Anim Change Transform" -msgstr "" +msgstr "Anim Modifier Transform" #: tools/editor/animation_editor.cpp msgid "Anim Change Value" -msgstr "" +msgstr "Anim Modifier Valeur" #: tools/editor/animation_editor.cpp msgid "Anim Change Call" -msgstr "" +msgstr "Anim Modifier Appel" #: tools/editor/animation_editor.cpp msgid "Anim Add Track" -msgstr "" +msgstr "Anim Ajouter Piste" #: tools/editor/animation_editor.cpp msgid "Move Anim Track Up" -msgstr "" +msgstr "Monter Piste Anim" #: tools/editor/animation_editor.cpp msgid "Move Anim Track Down" -msgstr "" +msgstr "Descendre Piste Anim" #: tools/editor/animation_editor.cpp msgid "Remove Anim Track" -msgstr "" +msgstr "Supprimer Piste Anim" #: tools/editor/animation_editor.cpp msgid "Anim Duplicate Keys" -msgstr "" +msgstr "Anim Dupliquer Clés" #: tools/editor/animation_editor.cpp msgid "Set Transitions to:" -msgstr "" +msgstr "Définir les transitions à :" #: tools/editor/animation_editor.cpp msgid "Anim Track Rename" @@ -525,6 +590,18 @@ msgid "Anim Delete Keys" msgstr "" #: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "Continu" + +#: tools/editor/animation_editor.cpp +msgid "Discrete" +msgstr "Discret" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "" + +#: tools/editor/animation_editor.cpp msgid "Anim Add Key" msgstr "" @@ -534,7 +611,7 @@ msgstr "" #: tools/editor/animation_editor.cpp msgid "Scale Selection" -msgstr "" +msgstr "Mettre à l'échelle la sélection" #: tools/editor/animation_editor.cpp msgid "Scale From Cursor" @@ -543,7 +620,7 @@ msgstr "" #: tools/editor/animation_editor.cpp #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Duplicate Selection" -msgstr "" +msgstr "Dupliquer la sélection" #: tools/editor/animation_editor.cpp msgid "Duplicate Transposed" @@ -632,6 +709,11 @@ msgid "Change Anim Loop" msgstr "" #: tools/editor/animation_editor.cpp +#, fuzzy +msgid "Change Anim Loop Interpolation" +msgstr "Changer l'interpolation de l'animation bouclée" + +#: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" msgstr "" @@ -649,7 +731,7 @@ msgstr "" #: tools/editor/animation_editor.cpp msgid "Animation zoom." -msgstr "" +msgstr "Zoom de l'animation." #: tools/editor/animation_editor.cpp msgid "Length (s):" @@ -672,28 +754,32 @@ msgid "Enable/Disable looping in animation." msgstr "" #: tools/editor/animation_editor.cpp -msgid "Add new tracks." +msgid "Enable/Disable interpolation when looping animation." msgstr "" #: tools/editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "Ajouter de nouvelles pistes." + +#: tools/editor/animation_editor.cpp msgid "Move current track up." -msgstr "" +msgstr "Déplacer la piste actuelle vers le haut." #: tools/editor/animation_editor.cpp msgid "Move current track down." -msgstr "" +msgstr "Déplacer la piste actuelle vers le bas." #: tools/editor/animation_editor.cpp msgid "Remove selected track." -msgstr "" +msgstr "Supprimer la piste sélectionnée." #: tools/editor/animation_editor.cpp msgid "Track tools" -msgstr "" +msgstr "Outils de piste" #: tools/editor/animation_editor.cpp msgid "Enable editing of individual keys by clicking them." -msgstr "" +msgstr "Activer la modification de pistes individuelles en cliquant dessus." #: tools/editor/animation_editor.cpp msgid "Anim. Optimizer" @@ -701,15 +787,15 @@ msgstr "Optimiseur d'animation" #: tools/editor/animation_editor.cpp msgid "Max. Linear Error:" -msgstr "" +msgstr "Erreur linéaire max. :" #: tools/editor/animation_editor.cpp msgid "Max. Angular Error:" -msgstr "" +msgstr "Erreur angulaire max. :" #: tools/editor/animation_editor.cpp msgid "Max Optimizable Angle:" -msgstr "" +msgstr "Angle optimisable max. :" #: tools/editor/animation_editor.cpp msgid "Optimize" @@ -792,9 +878,8 @@ msgid "Site:" msgstr "Site :" #: tools/editor/asset_library_editor_plugin.cpp -#, fuzzy msgid "Support.." -msgstr "Exporter..." +msgstr "Support…" #: tools/editor/asset_library_editor_plugin.cpp msgid "Official" @@ -805,9 +890,8 @@ msgid "Community" msgstr "" #: tools/editor/asset_library_editor_plugin.cpp -#, fuzzy msgid "Testing" -msgstr "Paramètres" +msgstr "En test" #: tools/editor/asset_library_editor_plugin.cpp msgid "Assets ZIP File" @@ -855,12 +939,10 @@ msgid "Line Number:" msgstr "Numéro de ligne :" #: tools/editor/code_editor.cpp -#, fuzzy msgid "No Matches" -msgstr "Correspondances :" +msgstr "Pas de correspondances" #: tools/editor/code_editor.cpp -#, fuzzy msgid "Replaced %d Ocurrence(s)." msgstr "%d occurrence(s) remplacée(s)." @@ -869,14 +951,12 @@ msgid "Replace" msgstr "Remplacer" #: tools/editor/code_editor.cpp -#, fuzzy msgid "Replace All" -msgstr "Remplacer" +msgstr "Remplacer tout" #: tools/editor/code_editor.cpp -#, fuzzy msgid "Match Case" -msgstr "Correspondances :" +msgstr "Sensible à la casse" #: tools/editor/code_editor.cpp msgid "Whole Words" @@ -939,16 +1019,12 @@ msgstr "Colonne :" #: tools/editor/connections_dialog.cpp msgid "Method in target Node must be specified!" -msgstr "" +msgstr "La méthode du nÅ“ud cible doit être spécifiée !" #: tools/editor/connections_dialog.cpp -msgid "Connect To Node:" +msgid "Conect To Node:" msgstr "Connecter au nÅ“ud :" -#: tools/editor/connections_dialog.cpp -msgid "Binds (Extra Params):" -msgstr "" - #: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp #: tools/editor/plugins/item_list_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp @@ -958,17 +1034,22 @@ msgstr "Ajouter" #: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp -#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp msgid "Remove" msgstr "Supprimer" #: tools/editor/connections_dialog.cpp -msgid "Path To Node:" -msgstr "Chemin vers le nÅ“ud :" +msgid "Add Extra Call Argument:" +msgstr "Ajouter des arguments supplémentaires :" + +#: tools/editor/connections_dialog.cpp +msgid "Extra Call Arguments:" +msgstr "Arguments supplémentaires :" #: tools/editor/connections_dialog.cpp -msgid "Method In Node:" -msgstr "Méthode dans le nÅ“ud :" +msgid "Path to Node:" +msgstr "Chemin vers le nÅ“ud :" #: tools/editor/connections_dialog.cpp msgid "Make Function" @@ -991,22 +1072,25 @@ msgid "Connect '%s' to '%s'" msgstr "Connecter « %s » à « %s »" #: tools/editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "Connecter un signal :" + +#: tools/editor/connections_dialog.cpp msgid "Create Subscription" msgstr "" #: tools/editor/connections_dialog.cpp msgid "Connect.." -msgstr "Connecter..." +msgstr "Connecter…" #: tools/editor/connections_dialog.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Disconnect" -msgstr "Déconnecter..." +msgstr "Déconnecter" #: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp -#, fuzzy msgid "Signals" -msgstr "Signaux :" +msgstr "Signaux" #: tools/editor/create_dialog.cpp msgid "Create New" @@ -1046,15 +1130,13 @@ msgid "Dependencies" msgstr "Dépendances" #: tools/editor/dependency_editor.cpp -#, fuzzy msgid "Resource" -msgstr "Ressources" +msgstr "Ressource" #: tools/editor/dependency_editor.cpp tools/editor/project_manager.cpp #: tools/editor/project_settings.cpp -#, fuzzy msgid "Path" -msgstr "Chemin :" +msgstr "Chemin" #: tools/editor/dependency_editor.cpp msgid "Dependencies:" @@ -1093,7 +1175,7 @@ msgstr "" #: tools/editor/dependency_editor.cpp msgid "Scene failed to load due to missing dependencies:" -msgstr "La scène n'a pas pu être chargée à cause de dépendences manquantes." +msgstr "La scène n'a pas pu être chargée à cause de dépendances manquantes :" #: tools/editor/dependency_editor.cpp msgid "Open Anyway" @@ -1134,7 +1216,8 @@ msgid "Delete selected files?" msgstr "Supprimer les fichiers sélectionnés ?" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/item_list_editor_plugin.cpp tools/editor/scenes_dock.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp msgid "Delete" msgstr "Supprimer" @@ -1144,11 +1227,11 @@ msgstr "Mise à jour de la scène" #: tools/editor/editor_data.cpp msgid "Storing local changes.." -msgstr "Stockage des modifications locales..." +msgstr "Stockage des modifications locales…" #: tools/editor/editor_data.cpp msgid "Updating scene.." -msgstr "Mise à jour de la scène..." +msgstr "Mise à jour de la scène…" #: tools/editor/editor_dir_dialog.cpp msgid "Choose a Directory" @@ -1265,12 +1348,11 @@ msgstr "Exportation pour %s" #: tools/editor/editor_import_export.cpp msgid "Setting Up.." -msgstr "Configuration..." +msgstr "Configuration…" #: tools/editor/editor_log.cpp -#, fuzzy msgid " Output:" -msgstr "Sortie" +msgstr " Sortie :" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Importing" @@ -1286,7 +1368,7 @@ msgstr "NÅ“ud à partir d'une scène" #: tools/editor/editor_node.cpp tools/editor/scenes_dock.cpp msgid "Re-Import.." -msgstr "Ré-importer..." +msgstr "Ré-importer…" #: tools/editor/editor_node.cpp #: tools/editor/plugins/animation_player_editor_plugin.cpp @@ -1298,11 +1380,11 @@ msgstr "Erreur d'enregistrement de la ressource !" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/resources_dock.cpp msgid "Save Resource As.." -msgstr "Enregistrer la ressource sous..." +msgstr "Enregistrer la ressource sous…" #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp msgid "I see.." -msgstr "Je vois..." +msgstr "Je vois…" #: tools/editor/editor_node.cpp msgid "Can't open file for writing:" @@ -1384,9 +1466,8 @@ msgid "Copy Params" msgstr "Copier paramètres" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Paste Params" -msgstr "Coller une image" +msgstr "Coller les paramètres" #: tools/editor/editor_node.cpp #: tools/editor/plugins/resource_preloader_editor_plugin.cpp @@ -1406,9 +1487,8 @@ msgid "Make Sub-Resources Unique" msgstr "Rendre les sous-ressources uniques" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Open in Help" -msgstr "Ouvrir une scène" +msgstr "Ouvrir dans l'aide" #: tools/editor/editor_node.cpp msgid "There is no defined scene to run." @@ -1440,11 +1520,11 @@ msgstr "Ouvrir scène de base" #: tools/editor/editor_node.cpp msgid "Quick Open Scene.." -msgstr "Ouvrir une scène rapidement..." +msgstr "Ouvrir une scène rapidement…" #: tools/editor/editor_node.cpp msgid "Quick Open Script.." -msgstr "Ouvrir un script rapidement..." +msgstr "Ouvrir un script rapidement…" #: tools/editor/editor_node.cpp msgid "Yes" @@ -1456,7 +1536,7 @@ msgstr "Fermer la scène ? (les modifications non sauvegardées seront perdues)" #: tools/editor/editor_node.cpp msgid "Save Scene As.." -msgstr "Enregistrer la scène sous..." +msgstr "Enregistrer la scène sous…" #: tools/editor/editor_node.cpp msgid "This scene has never been saved. Save before running?" @@ -1505,14 +1585,15 @@ msgstr "Cette action ne peut être annulée. Réinitialiser quand même ?" #: tools/editor/editor_node.cpp msgid "Quick Run Scene.." -msgstr "Lancer une scène rapidement..." +msgstr "Lancer une scène rapidement…" #: tools/editor/editor_node.cpp -#, fuzzy msgid "" "Open Project Manager? \n" "(Unsaved changes will be lost)" -msgstr "Fermer la scène ? (les modifications non sauvegardées seront perdues)" +msgstr "" +"Ouvrir le gestionnaire de projets ?\n" +"(les modifications non sauvegardées seront perdues)" #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp msgid "Ugh" @@ -1520,8 +1601,8 @@ msgstr "Oups" #: tools/editor/editor_node.cpp msgid "" -"Error loading scene, it must be inside the project path. Use 'Import' to open " -"the scene, then save it inside the project path." +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." msgstr "" "Erreur lors du chargement de la scène, elle doit être dans le chemin du " "projet. Utilisez « Importer » pour ouvrir la scène, puis enregistrez-la dans " @@ -1540,9 +1621,8 @@ msgid "Save Layout" msgstr "Enregistrer la disposition" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Load Layout" -msgstr "Enregistrer la disposition" +msgstr "Charger la disposition" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Default" @@ -1574,6 +1654,14 @@ msgid "Go to previously opened scene." msgstr "Aller à la scène ouverte précédemment." #: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Operations with scene files." msgstr "Opérations avec les fichiers de scène." @@ -1583,11 +1671,11 @@ msgstr "Nouvelle scène" #: tools/editor/editor_node.cpp msgid "New Inherited Scene.." -msgstr "Nouvelle scène héritée..." +msgstr "Nouvelle scène héritée…" #: tools/editor/editor_node.cpp msgid "Open Scene.." -msgstr "Ouvrir une scène..." +msgstr "Ouvrir une scène…" #: tools/editor/editor_node.cpp msgid "Save Scene" @@ -1606,25 +1694,24 @@ msgid "Open Recent" msgstr "Fichiers récents" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Quick Filter Files.." -msgstr "Recherche rapide d'un fichier..." +msgstr "Filtre rapide d'un fichier…" #: tools/editor/editor_node.cpp msgid "Convert To.." -msgstr "Convertir vers..." +msgstr "Convertir vers…" #: tools/editor/editor_node.cpp msgid "Translatable Strings.." -msgstr "Chaînes traduisibles..." +msgstr "Chaînes traduisibles…" #: tools/editor/editor_node.cpp msgid "MeshLibrary.." -msgstr "MeshLibrary..." +msgstr "MeshLibrary…" #: tools/editor/editor_node.cpp msgid "TileSet.." -msgstr "TileSet..." +msgstr "TileSet…" #: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/shader_editor_plugin.cpp @@ -1680,9 +1767,8 @@ msgid "Export" msgstr "Exporter" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play the project." -msgstr "Jouer le projet (F5)." +msgstr "Lancer le projet." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -1690,19 +1776,16 @@ msgid "Play" msgstr "Jouer" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Pause the scene" -msgstr "Jouer une scène personnalisée" +msgstr "Mettre en pause la scène" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Pause Scene" -msgstr "Jouer une scène personnalisée" +msgstr "Mettre en pause la scène" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Stop the scene." -msgstr "Arrêter la scène (F8)." +msgstr "Arrêter la scène." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -1710,14 +1793,12 @@ msgid "Stop" msgstr "Arrêter" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play the edited scene." -msgstr "Jouer la scène actuellement en cours d'édition (F6)." +msgstr "Lancer la scène actuellement en cours d'édition." #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play Scene" -msgstr "Enregistrer la scène" +msgstr "Lancer la scène" #: tools/editor/editor_node.cpp msgid "Play custom scene" @@ -1728,14 +1809,13 @@ msgid "Debug options" msgstr "Options de débogage" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Deploy with Remote Debug" -msgstr "Déployer le débogage à distance" +msgstr "Déployer avec le débogage distant" #: tools/editor/editor_node.cpp msgid "" -"When exporting or deploying, the resulting executable will attempt to connect " -"to the IP of this computer in order to be debugged." +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." msgstr "" #: tools/editor/editor_node.cpp @@ -1748,8 +1828,8 @@ msgid "" "executable.\n" "The filesystem will be provided from the project by the editor over the " "network.\n" -"On Android, deploy will use the USB cable for faster performance. This option " -"speeds up testing for games with a large footprint." +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." msgstr "" #: tools/editor/editor_node.cpp @@ -1785,9 +1865,8 @@ msgid "" msgstr "" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Sync Script Changes" -msgstr "Repeindre quand modifié" +msgstr "Synchroniser les modifications de script" #: tools/editor/editor_node.cpp msgid "" @@ -1849,11 +1928,9 @@ msgstr "Charger une ressource existante depuis la disque et la modifier." msgid "Save the currently edited resource." msgstr "Enregistrer la ressource actuellement modifiée." -#: tools/editor/editor_node.cpp -#: tools/editor/plugins/animation_player_editor_plugin.cpp -#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Save As.." -msgstr "Enregistrer sous..." +msgstr "Enregistrer sous…" #: tools/editor/editor_node.cpp msgid "Go to the previous edited object in history." @@ -1929,9 +2006,8 @@ msgid "Installed Plugins:" msgstr "Extensions Installées :" #: tools/editor/editor_plugin_settings.cpp -#, fuzzy msgid "Version:" -msgstr "Description :" +msgstr "Version :" #: tools/editor/editor_plugin_settings.cpp msgid "Author:" @@ -1962,23 +2038,20 @@ msgid "Average Time (sec)" msgstr "" #: tools/editor/editor_profiler.cpp -#, fuzzy msgid "Frame %" -msgstr "Ajouter une image" +msgstr "" #: tools/editor/editor_profiler.cpp -#, fuzzy msgid "Fixed Frame %" -msgstr "Ajouter une image" +msgstr "" #: tools/editor/editor_profiler.cpp tools/editor/script_editor_debugger.cpp msgid "Time:" msgstr "Temps :" #: tools/editor/editor_profiler.cpp -#, fuzzy msgid "Inclusive" -msgstr "Inclure" +msgstr "Inclusif" #: tools/editor/editor_profiler.cpp msgid "Self" @@ -2063,9 +2136,8 @@ msgid "Imported Resources" msgstr "Ressources importées" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp -#, fuzzy msgid "No bit masks to import!" -msgstr "Pas d'objets à importer !" +msgstr "Pas de masques de bits à importer !" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp @@ -2096,9 +2168,8 @@ msgid "Save path is empty!" msgstr "Le chemin de sauvegarde est vide !" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp -#, fuzzy msgid "Import BitMasks" -msgstr "Improter des textures" +msgstr "Importer des BitMasks" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp @@ -2157,7 +2228,7 @@ msgstr "Ressource de destination :" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "The quick brown fox jumps over the lazy dog." -msgstr "The quick brown fox jumps over the lazy dog." +msgstr "Voix ambiguë d'un cÅ“ur qui, au zéphyr, préfère les jattes de kiwis." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Test:" @@ -2229,9 +2300,8 @@ msgid "Source Sample(s):" msgstr "Échantillon(s) source :" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp -#, fuzzy msgid "Audio Sample" -msgstr "Ajouter un échantillon" +msgstr "Échantillon audio" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "New Clip" @@ -2337,9 +2407,8 @@ msgid "Custom Root Node Type:" msgstr "" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp -#, fuzzy msgid "Auto" -msgstr "AutoLoad" +msgstr "Auto." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "The Following Files are Missing:" @@ -2361,17 +2430,16 @@ msgstr "" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp -#, fuzzy msgid "Import Scene" -msgstr "Importer la scène" +msgstr "Importer une scène" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Importing Scene.." -msgstr "Importation de la scène..." +msgstr "Importation de la scène…" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Running Custom Script.." -msgstr "Lancement du script personnalisé..." +msgstr "Lancement du script personnalisé…" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Couldn't load post-import script:" @@ -2391,7 +2459,7 @@ msgstr "Importer une image :" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Can't import a file over itself:" -msgstr "Impossible d'importer un fichier par-dessus lui-même." +msgstr "Impossible d'importer un fichier par-dessus lui-même :" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Couldn't localize path: %s (already local)" @@ -2399,12 +2467,11 @@ msgstr "Impossible de rendre le chemin local : %s (déjà local)" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Saving.." -msgstr "Enregistrement..." +msgstr "Enregistrement…" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp -#, fuzzy msgid "3D Scene Animation" -msgstr "Renommer l'animation" +msgstr "Animation de scène 3D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Uncompressed" @@ -2471,18 +2538,16 @@ msgid "Import Large Textures (2D)" msgstr "Importer des grandes textures (2D)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#, fuzzy msgid "Source Texture" -msgstr "Texture source :" +msgstr "Texture source" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Base Atlas Texture" msgstr "Texture d'atlas de base" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#, fuzzy msgid "Source Texture(s)" -msgstr "Texture(s) source :" +msgstr "Texture(s) source" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures for 2D" @@ -2494,39 +2559,35 @@ msgstr "Importer des textures pour la 3D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures" -msgstr "Improter des textures" +msgstr "Importer des textures" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#, fuzzy msgid "2D Texture" -msgstr "Grande texture" +msgstr "Texture 2D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#, fuzzy msgid "3D Texture" -msgstr "Grande texture" +msgstr "Texture 3D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#, fuzzy msgid "Atlas Texture" -msgstr "Texture d'atlas de base" +msgstr "Texture atlas" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "" "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " "the project." msgstr "" -"REMARQUE: Il n'est pas obligatoire d'importer les textures 2D. Copiez " -"directement les fichiers png/jpeg dans le projet." +"REMARQUE : Il n'est pas obligatoire d'importer les textures en 2D. Copiez " +"directement les fichiers PNG ou JPEG dans le projet." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Crop empty space." msgstr "Rogner l'espace vide." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#, fuzzy msgid "Texture" -msgstr "Grande texture" +msgstr "Texture" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Large Texture" @@ -2642,9 +2703,8 @@ msgid "Import Languages:" msgstr "Importer les langues :" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp -#, fuzzy msgid "Translation" -msgstr "Traductions" +msgstr "Traduction" #: tools/editor/multi_node_edit.cpp msgid "MultiNode Set" @@ -2655,9 +2715,8 @@ msgid "Node" msgstr "" #: tools/editor/node_dock.cpp -#, fuzzy msgid "Groups" -msgstr "Groupes :" +msgstr "Groupes" #: tools/editor/node_dock.cpp msgid "Select a Node to edit Signals and Groups." @@ -2760,7 +2819,7 @@ msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Animation position (in seconds)." -msgstr "Position de l'animation (en secondes)" +msgstr "Position de l'animation (en secondes)." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Scale animation playback globally for the node." @@ -2771,6 +2830,10 @@ msgid "Create new animation in player." msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "Charger une animation depuis le disque." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load an animation from disk." msgstr "Charger une animation depuis le disque." @@ -2779,6 +2842,10 @@ msgid "Save the current animation" msgstr "Enregistrer l'animation actuelle" #: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As" +msgstr "Enregistrer sous" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." msgstr "Afficher la liste des animations dans le lecteur." @@ -2828,9 +2895,8 @@ msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Animation" -msgstr "Animations" +msgstr "Animation" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "New name:" @@ -2964,7 +3030,7 @@ msgstr "" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Import Animations.." -msgstr "Importer des animations..." +msgstr "Importer des animations…" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Edit Node Filters" @@ -2972,7 +3038,7 @@ msgstr "Modifier les filtres de nÅ“ud" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Filters.." -msgstr "Filtres..." +msgstr "Filtres…" #: tools/editor/plugins/baked_light_baker.cpp msgid "Parsing %d Triangles:" @@ -3182,7 +3248,7 @@ msgstr "Alignement relatif" #: tools/editor/plugins/canvas_item_editor_plugin.cpp #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Configure Snap.." -msgstr "Configurer la grille..." +msgstr "Configurer la grille…" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Use Pixel Snap" @@ -3194,7 +3260,7 @@ msgstr "Étendre au parent" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Skeleton.." -msgstr "Squelette..." +msgstr "Squelette…" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make Bones" @@ -3231,7 +3297,7 @@ msgstr "Réinitialiser le zoom" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom Set.." -msgstr "Définir le zoom" +msgstr "Définir le zoom…" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Center Selection" @@ -3327,7 +3393,7 @@ msgstr "" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Thumbnail.." -msgstr "Aperçu..." +msgstr "Aperçu…" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Remove item %d?" @@ -3380,7 +3446,7 @@ msgstr "Bouton gauche : déplacer un point." #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Ctrl+LMB: Split Segment." -msgstr "Contrôle + Bouton gauche : séparer le segment" +msgstr "Contrôle + Bouton gauche : séparer le segment." #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp @@ -3445,7 +3511,7 @@ msgstr "" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh.." -msgstr "Créer un maillage de contour..." +msgstr "Créer un maillage de contour…" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline Mesh" @@ -3569,7 +3635,7 @@ msgstr "Erreur de chargement de l'image :" #: tools/editor/plugins/particles_2d_editor_plugin.cpp msgid "No pixels with transparency > 128 in image.." -msgstr "Pas de pixels avec une transparence > 128 dans l'image..." +msgstr "Pas de pixels avec une transparence > 128 dans l'image…" #: tools/editor/plugins/particles_2d_editor_plugin.cpp msgid "Set Emission Mask" @@ -3875,36 +3941,31 @@ msgid "Pitch" msgstr "Hauteur" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error while saving theme" -msgstr "Erreur lors de l'enregistrement." +msgstr "Erreur d'enregistrement du thème" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error saving" -msgstr "Erreur de sauvegarde de l'atlas :" +msgstr "Erreur d'enregistrement" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error importing theme" -msgstr "Erreur d'importation de la scène." +msgstr "Erreur d'importation du thème" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error importing" -msgstr "Erreur d'importation :" +msgstr "Erreur d'importation" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Import Theme" -msgstr "Improter des textures" +msgstr "Improter un thème" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Save Theme As.." -msgstr "Enregistrer la scène sous..." +msgstr "Enregistrer le thème sous…" -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "File" msgstr "Fichier" @@ -3926,19 +3987,16 @@ msgid "History Next" msgstr "Suivant dans l'historique" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Reload Theme" -msgstr "Recharger" +msgstr "Recharger le thème" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Save Theme" -msgstr "Enregistrer la scène" +msgstr "Enregistrer le thème" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Save Theme As" -msgstr "Enregistrer la scène sous..." +msgstr "Enregistrer le thème sous" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/scene_tree_dock.cpp @@ -3980,17 +4038,13 @@ msgstr "Indentation automatique" #: tools/editor/plugins/script_editor_plugin.cpp #, fuzzy -msgid "Reload Tool Script" -msgstr "Créer le script de nÅ“ud" - -#: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script (Soft)" -msgstr "" +msgid "Soft Reload Script" +msgstr "Recharger le script (mode doux)" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." -msgstr "Trouver..." +msgstr "Trouver…" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/shader_editor_plugin.cpp @@ -4005,7 +4059,7 @@ msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Replace.." -msgstr "Remplacer..." +msgstr "Remplacer…" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Goto Function.." @@ -4014,7 +4068,7 @@ msgstr "Aller à la fonction…" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Goto Line.." -msgstr "Aller à la ligne..." +msgstr "Aller à la ligne…" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Debug" @@ -4025,19 +4079,16 @@ msgid "Toggle Breakpoint" msgstr "Placer un point d'arrêt" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Remove All Breakpoints" -msgstr "Placer un point d'arrêt" +msgstr "Supprimer tous les points d'arrêt" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Goto Next Breakpoint" -msgstr "Placer un point d'arrêt" +msgstr "Aller au point d'arrêt suivant" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Goto Previous Breakpoint" -msgstr "Placer un point d'arrêt" +msgstr "Aller au point d'arrêt précédent" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/script_editor_debugger.cpp @@ -4080,7 +4131,7 @@ msgid "Help" msgstr "Aide" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Contextual" +msgid "Contextual Help" msgstr "Aide contextuelle" #: tools/editor/plugins/script_editor_plugin.cpp @@ -4289,10 +4340,6 @@ msgid "Transform Aborted." msgstr "Transformation annulée." #: tools/editor/plugins/spatial_editor_plugin.cpp -msgid "View Plane Transform." -msgstr "" - -#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." msgstr "Transformation sur l'axe X." @@ -4305,6 +4352,10 @@ msgid "Z-Axis Transform." msgstr "Transformation sur l'axe Z." #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scaling to %s%%." msgstr "Mise à l'échelle %s%%." @@ -4330,7 +4381,7 @@ msgstr "Dessus" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Rear View." -msgstr "Vue arrière" +msgstr "Vue arrière." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Rear" @@ -4338,7 +4389,7 @@ msgstr "Arrière" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Front View." -msgstr "Vue avant" +msgstr "Vue avant." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Front" @@ -4346,7 +4397,7 @@ msgstr "Avant" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Left View." -msgstr "Vue de gauche" +msgstr "Vue de gauche." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Left" @@ -4354,7 +4405,7 @@ msgstr "Gauche" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Right View." -msgstr "Vue de droite" +msgstr "Vue de droite." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Right" @@ -4445,9 +4496,8 @@ msgid "Scale Mode (R)" msgstr "Mode de mise à l'échelle (R)" #: tools/editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Transform" -msgstr "Type de transformation" +msgstr "Transformation" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Local Coords" @@ -4455,7 +4505,7 @@ msgstr "Coordonnées locales" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Transform Dialog.." -msgstr "Dialogue de transformation..." +msgstr "Dialogue de transformation…" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Use Default Light" @@ -4470,27 +4520,24 @@ msgid "1 Viewport" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "2 Viewports" -msgstr "Paramètres de la vue" +msgstr "2 vues" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports (Alt)" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "3 Viewports" -msgstr "Paramètres de la vue" +msgstr "3 vues" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports (Alt)" msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "4 Viewports" -msgstr "Paramètres de la vue" +msgstr "4 vues" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" @@ -4649,14 +4696,12 @@ msgid "StyleBox Preview:" msgstr "Aperçu de la StyleBox :" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Texture Region Editor" -msgstr "Éditeur de région de Sprite" +msgstr "Éditeur de région de texture" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Scale Region Editor" -msgstr "Éditeur de région de Sprite" +msgstr "" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "" @@ -4690,8 +4735,12 @@ msgid "Remove Class Items" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp -msgid "Create Template" -msgstr "Créer un modèle" +msgid "Create Empty Template" +msgstr "Créer un nouveau modèle" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "Créer un nouveau modèle d'éditeur" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio1" @@ -4777,32 +4826,36 @@ msgid "Erase TileMap" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Bucket" -msgstr "Seau" +msgid "Erase selection" +msgstr "Supprimer la sélection" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Pick Tile" -msgstr "Sélectionner une case" +msgid "Find tile" +msgstr "Chercher une case" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Select" -msgstr "Sélectionner" +msgid "Transpose" +msgstr "Transposer" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Erase Selection" -msgstr "Supprimer la sélection" +msgid "Mirror X" +msgstr "Miroir X" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Transpose" -msgstr "Transposer" +msgid "Mirror Y" +msgstr "Miroir Y" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror X (A)" -msgstr "Miroir X (A)" +msgid "Bucket" +msgstr "Seau" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror Y (S)" -msgstr "Miroir Y (S)" +msgid "Pick Tile" +msgstr "Sélectionner une case" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "Sélectionner" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 0 degrees" @@ -4945,8 +4998,8 @@ msgstr "Action" msgid "" "Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" msgstr "" -"Filtres à utiliser pour l'exportation des fichiers (séparés par des virgules, " -"par exemple : *.json, *.txt) :" +"Filtres à utiliser pour l'exportation des fichiers (séparés par des " +"virgules, par exemple : *.json, *.txt) :" #: tools/editor/project_export.cpp msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" @@ -4956,7 +5009,8 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Convert text scenes to binary on export." -msgstr "Convertir les scènes en format texte au format binaire à l'exportation." +msgstr "" +"Convertir les scènes en format texte au format binaire à l'exportation." #: tools/editor/project_export.cpp msgid "Images" @@ -5071,9 +5125,8 @@ msgid "Trailing Silence:" msgstr "Silence de fin :" #: tools/editor/project_export.cpp -#, fuzzy msgid "Script" -msgstr "Lancer le script" +msgstr "Script" #: tools/editor/project_export.cpp msgid "Script Export Mode:" @@ -5105,7 +5158,7 @@ msgstr "Exporter le PCK du projet" #: tools/editor/project_export.cpp msgid "Export.." -msgstr "Exporter..." +msgstr "Exporter…" #: tools/editor/project_export.cpp msgid "Project Export" @@ -5137,7 +5190,8 @@ msgstr "" #: tools/editor/project_manager.cpp msgid "Couldn't create engine.cfg in project path." -msgstr "Impossible de créer le fichier engine.cfg dans le répertoire du projet." +msgstr "" +"Impossible de créer le fichier engine.cfg dans le répertoire du projet." #: tools/editor/project_manager.cpp msgid "Import Existing Project" @@ -5157,7 +5211,7 @@ msgstr "Créer un nouveau projet" #: tools/editor/project_manager.cpp msgid "Project Path:" -msgstr "Chemin du projet" +msgstr "Chemin du projet :" #: tools/editor/project_manager.cpp msgid "Browse" @@ -5189,14 +5243,12 @@ msgstr "" "Supprimer le projet de la liste ? (Le contenu du dossier ne sera pas modifié)" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Project Manager" -msgstr "Nom du projet :" +msgstr "Gestionnaire de projets" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Project List" -msgstr "Quitter vers la liste des projets" +msgstr "Liste des projets" #: tools/editor/project_manager.cpp msgid "Run" @@ -5219,19 +5271,16 @@ msgid "Key " msgstr "" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Joy Button" -msgstr "Bouton" +msgstr "Bouton de joystick" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Joy Axis" -msgstr "Axe" +msgstr "Axe de joystick" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Mouse Button" -msgstr "Index du bouton de la souris :" +msgstr "Bouton de souris" #: tools/editor/project_settings.cpp msgid "Invalid action (anything goes but '/' or ':')." @@ -5255,7 +5304,7 @@ msgstr "Contrôle+" #: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp msgid "Press a Key.." -msgstr "Appuyez sur une touche..." +msgstr "Appuyez sur une touche…" #: tools/editor/project_settings.cpp msgid "Mouse Button Index:" @@ -5356,14 +5405,12 @@ msgstr "" "constante globale." #: tools/editor/project_settings.cpp -#, fuzzy msgid "Autoload '%s' already exists!" -msgstr "L'action « %s » existe déjà !" +msgstr "L'autoload « %s » existe déjà !" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Rename Autoload" -msgstr "Supprimer l'AutoLoad" +msgstr "Renommer l'AutoLoad" #: tools/editor/project_settings.cpp msgid "Toggle AutoLoad Globals" @@ -5427,11 +5474,11 @@ msgstr "Supprimer" #: tools/editor/project_settings.cpp msgid "Copy To Platform.." -msgstr "Copier vers la plate-forme..." +msgstr "Copier vers la plate-forme…" #: tools/editor/project_settings.cpp msgid "Input Map" -msgstr "Carte d'entrée" +msgstr "Contrôles" #: tools/editor/project_settings.cpp msgid "Action:" @@ -5459,7 +5506,7 @@ msgstr "Traductions :" #: tools/editor/project_settings.cpp msgid "Add.." -msgstr "Ajouter..." +msgstr "Ajouter…" #: tools/editor/project_settings.cpp msgid "Remaps" @@ -5499,7 +5546,7 @@ msgstr "Extensions" #: tools/editor/property_editor.cpp msgid "Preset.." -msgstr "Pré-réglage..." +msgstr "Pré-réglage…" #: tools/editor/property_editor.cpp msgid "Ease In" @@ -5523,11 +5570,11 @@ msgstr "Ease out-in" #: tools/editor/property_editor.cpp msgid "File.." -msgstr "Fichier..." +msgstr "Fichier…" #: tools/editor/property_editor.cpp msgid "Dir.." -msgstr "Répertoire..." +msgstr "Répertoire…" #: tools/editor/property_editor.cpp msgid "Load" @@ -5655,8 +5702,8 @@ msgstr "OK" #: tools/editor/scene_tree_dock.cpp msgid "" -"Cannot instance the scene '%s' because the current scene exists within one of " -"its nodes." +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." msgstr "" #: tools/editor/scene_tree_dock.cpp @@ -5699,7 +5746,7 @@ msgstr "Cette opération ne peut être réalisée sur des scènes instanciées." #: tools/editor/scene_tree_dock.cpp msgid "Save New Scene As.." -msgstr "Enregistrer la nouvelle scène sous..." +msgstr "Enregistrer la nouvelle scène sous…" #: tools/editor/scene_tree_dock.cpp msgid "Makes Sense!" @@ -5768,7 +5815,6 @@ msgid "Add Script" msgstr "Ajouter un script" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Merge From Scene" msgstr "Fusionner depuis la scène" @@ -5822,7 +5868,7 @@ msgstr "Renommer le nÅ“ud" #: tools/editor/scene_tree_editor.cpp msgid "Scene Tree (Nodes):" -msgstr "" +msgstr "Arbre de scène (nÅ“uds) :" #: tools/editor/scene_tree_editor.cpp msgid "Editable Children" @@ -5833,6 +5879,10 @@ msgid "Load As Placeholder" msgstr "Charger en tant que fictif" #: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp msgid "Open in Editor" msgstr "Ouvrir dans l'éditeur" @@ -5882,24 +5932,23 @@ msgstr "Instance" #: tools/editor/scenes_dock.cpp msgid "Edit Dependencies.." -msgstr "Modifier les dépendances..." +msgstr "Modifier les dépendances…" #: tools/editor/scenes_dock.cpp msgid "View Owners.." -msgstr "Voir les propriétaires..." +msgstr "Voir les propriétaires…" #: tools/editor/scenes_dock.cpp -#, fuzzy msgid "Copy Path" -msgstr "Copier paramètres" +msgstr "Copier le chemin" #: tools/editor/scenes_dock.cpp msgid "Rename or Move.." -msgstr "Renommer ou déplacer..." +msgstr "Renommer ou déplacer…" #: tools/editor/scenes_dock.cpp msgid "Move To.." -msgstr "Déplacer vers..." +msgstr "Déplacer vers…" #: tools/editor/scenes_dock.cpp msgid "Info" @@ -6058,19 +6107,16 @@ msgid "Stack Trace (if applicable):" msgstr "Trace de pile (si applicable) :" #: tools/editor/script_editor_debugger.cpp -#, fuzzy msgid "Remote Inspector" -msgstr "Inspecteur" +msgstr "Inspecteur distant" #: tools/editor/script_editor_debugger.cpp -#, fuzzy msgid "Live Scene Tree:" -msgstr "Arbre des scènes :" +msgstr "Arbre des scènes en direct :" #: tools/editor/script_editor_debugger.cpp -#, fuzzy msgid "Remote Object Properties: " -msgstr "Propriétés de l'objet." +msgstr "Propriétés de l'objet distant : " #: tools/editor/script_editor_debugger.cpp msgid "Profiler" @@ -6085,9 +6131,8 @@ msgid "Value" msgstr "Valeur" #: tools/editor/script_editor_debugger.cpp -#, fuzzy msgid "Monitors" -msgstr "Moniteur" +msgstr "Moniteurs" #: tools/editor/script_editor_debugger.cpp msgid "List of Video Memory Usage by Resource:" @@ -6135,7 +6180,7 @@ msgstr "Définir depuis l'arbre" #: tools/editor/settings_config_dialog.cpp msgid "Shortcuts" -msgstr "" +msgstr "Raccourcis" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -6159,26 +6204,26 @@ msgstr "Changer les extents d'une forme en boîte" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Capsule Shape Radius" -msgstr "" +msgstr "Changer le rayon d'une forme en capsule" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Capsule Shape Height" -msgstr "" +msgstr "Changer la hauteur d'une forme en capsule" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Ray Shape Length" -msgstr "" +msgstr "Changer la longueur d'une forme en rayon" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Notifier Extents" -msgstr "" +msgstr "Changer les extents d'un notificateur" + +#~ msgid "Method In Node:" +#~ msgstr "Méthode dans le nÅ“ud :" #~ msgid "Edit Connections.." #~ msgstr "Modifier les connexions..." -#~ msgid "Connections:" -#~ msgstr "Connexions :" - #~ msgid "Set Params" #~ msgstr "Définir paramètres" diff --git a/tools/translations/it.po b/tools/translations/it.po index 633caf62f8..dfb0eb522a 100644 --- a/tools/translations/it.po +++ b/tools/translations/it.po @@ -1,21 +1,65 @@ -# LANGUAGE translation of the Godot Engine editor +# Italian translation of the Godot Engine editor # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. +# # Dario Bonfanti <bonfi.96@hotmail.it>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" +"PO-Revision-Date: 2016-06-19 09:39+0000\n" "Last-Translator: Dario Bonfanti <bonfi.96@hotmail.it>\n" -"Language-Team: Italian\n" +"Language-Team: Italian <https://hosted.weblate.org/projects/godot-engine/" +"godot/it/>\n" "Language: it\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.7\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.7-dev\n" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +#, fuzzy +msgid "Not a script with an instance" +msgstr "Nessuna scena da istanziare selezionata!" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +#, fuzzy +msgid "Not based on a resource file" +msgstr "Nessuna risorsa font di destinazione!" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" #: scene/2d/animated_sprite.cpp msgid "" @@ -42,8 +86,8 @@ msgid "" msgstr "" "CollisionPolygon2D serve a fornire una forma di collisione ad un nodo " "derivato di CollisionObject2D. Si prega di utilizzarlo solamente come figlio " -"di Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, etc. in modo da dargli " -"una forma." +"di Area2D, StaticBody2D, RigidBody2D, KinematicBody2D, etc. in modo da " +"dargli una forma." #: scene/2d/collision_polygon_2d.cpp msgid "An empty CollisionPolygon2D has no effect on collision." @@ -86,8 +130,8 @@ msgstr "" #: scene/2d/light_occluder_2d.cpp msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" msgstr "" -"Il poligono di occlusione per questo occlusore è vuoto. Per favore disegna un " -"poligono!" +"Il poligono di occlusione per questo occlusore è vuoto. Per favore disegna " +"un poligono!" #: scene/2d/navigation_polygon.cpp msgid "" @@ -95,7 +139,8 @@ msgid "" "Please set a property or draw a polygon." msgstr "" "Una risorsa NavigationPolygon deve essere impostata o creata affinché questo " -"nodo funzioni. Si prega di impostare una proprietà o di disegnare un poligono." +"nodo funzioni. Si prega di impostare una proprietà o di disegnare un " +"poligono." #: scene/2d/navigation_polygon.cpp msgid "" @@ -126,7 +171,8 @@ msgstr "" #: scene/2d/remote_transform_2d.cpp msgid "Path property must point to a valid Node2D node to work." -msgstr "La proprietà path deve puntare ad un nodo Node2D valido per funzionare." +msgstr "" +"La proprietà path deve puntare ad un nodo Node2D valido per funzionare." #: scene/2d/sample_player_2d.cpp scene/audio/sample_player.cpp msgid "" @@ -138,27 +184,27 @@ msgstr "" #: scene/2d/sprite.cpp msgid "" -"Path property must point to a valid Viewport node to work. Such Viewport must " -"be set to 'render target' mode." +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." msgstr "" "La proprietà path deve puntare a un nodo Viewport valido per poter " "funzionare. Tale Viewport deve essere impostata in modalità 'render target'." #: scene/2d/sprite.cpp msgid "" -"The Viewport set in the path property must be set as 'render target' in order " -"for this sprite to work." +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." msgstr "" -"Il Viewport impostato nella proprietà path deve essere impostato come 'render " -"target' affinché questa sprite funzioni." +"Il Viewport impostato nella proprietà path deve essere impostato come " +"'render target' affinché questa sprite funzioni." #: scene/2d/visibility_notifier_2d.cpp msgid "" "VisibilityEnable2D works best when used with the edited scene root directly " "as parent." msgstr "" -"VisibilityEnable2D funziona al meglio quando usato direttamente come genitore " -"con il root della scena modificata." +"VisibilityEnable2D funziona al meglio quando usato direttamente come " +"genitore con il root della scena modificata." #: scene/3d/body_shape.cpp msgid "" @@ -166,8 +212,8 @@ msgid "" "derived node. Please only use it as a child of Area, StaticBody, RigidBody, " "KinematicBody, etc. to give them a shape." msgstr "" -"CollisionShape serve a fornire una forma di collisione ad un nodo derivato di " -"CollisionObject. Si prega di utilizzarlo solamente come figlio di Area, " +"CollisionShape serve a fornire una forma di collisione ad un nodo derivato " +"di CollisionObject. Si prega di utilizzarlo solamente come figlio di Area, " "StaticBody, RigidBody, KinematicBody, etc. in modo da dargli una forma." #: scene/3d/body_shape.cpp @@ -184,9 +230,10 @@ msgid "" "CollisionObject derived node. Please only use it as a child of Area, " "StaticBody, RigidBody, KinematicBody, etc. to give them a shape." msgstr "" -"CollisionPolygon serve solamente a fornire una forma di collisione ad un nodo " -"derivato di CollisionObject. Si prega di usarlo solamente come figlio di " -"Area, StaticBody, RigidBody, KinematicBody, etc. in modo da dargli una forma." +"CollisionPolygon serve solamente a fornire una forma di collisione ad un " +"nodo derivato di CollisionObject. Si prega di usarlo solamente come figlio " +"di Area, StaticBody, RigidBody, KinematicBody, etc. in modo da dargli una " +"forma." #: scene/3d/collision_polygon.cpp msgid "An empty CollisionPolygon has no effect on collision." @@ -200,8 +247,8 @@ msgstr "" #: scene/3d/navigation_mesh.cpp msgid "" -"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " -"only provides navigation data." +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." msgstr "" "NavigationMeshInstance deve essere un figlio o nipote di un nodo Navigation. " "Fornisce solamente dati per la navigazione." @@ -222,29 +269,28 @@ msgstr "" "'samples' affinché SpatialSamplePlayer riproduca un suono." #: scene/3d/sprite_3d.cpp -#, fuzzy msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " "order for AnimatedSprite3D to display frames." msgstr "" "Una risorsa SpriteFrames deve essere creata o impostata nella proprietà " -"'Frames' affinché AnimatedSprite mostri i frame." +"'Frames' affinché AnimatedSprite3D mostri i frame." #: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Cancel" -msgstr "Cancella" +msgstr "Annulla" #: scene/gui/dialogs.cpp msgid "OK" -msgstr "" +msgstr "OK" #: scene/gui/dialogs.cpp msgid "Alert!" -msgstr "" +msgstr "Attenzione!" #: scene/gui/dialogs.cpp msgid "Please Confirm..." -msgstr "" +msgstr "Si Prega Di Confermare..." #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "File Exists, Overwrite?" @@ -266,24 +312,20 @@ msgid "Open" msgstr "Apri" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a File" -msgstr "Apri File(s) Sample" +msgstr "Apri un File" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open File(s)" -msgstr "Apri File(s) Sample" +msgstr "Apri File(s)" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a Directory" -msgstr "Scegli una Directory" +msgstr "Apri una Directory" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a File or Directory" -msgstr "Scegli una Directory" +msgstr "Apri un File o una Directory" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_node.cpp @@ -309,7 +351,7 @@ msgstr "Percorso:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "Directories & Files:" -msgstr "Directories & Files:" +msgstr "Directory e File:" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/script_editor_debugger.cpp @@ -347,7 +389,7 @@ msgstr "Alt+" #: scene/gui/input_action.cpp msgid "Ctrl+" -msgstr "" +msgstr "Ctrl+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp @@ -410,7 +452,8 @@ msgstr "Incolla" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_editor_plugin.cpp -#: tools/editor/plugins/shader_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "Select All" msgstr "Seleziona tutti" @@ -430,8 +473,8 @@ msgstr "Annulla" #: scene/gui/popup.cpp msgid "" "Popups will hide by default unless you call popup() or any of the popup*() " -"functions. Making them visible for editing is fine though, but they will hide " -"upon running." +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." msgstr "" "I popup saranno nascosti di default a meno che vengano chiamate la funzione " "popup() o qualsiasi altra funzione popup*(). Renderli visibili per la " @@ -444,15 +487,15 @@ msgid "" "obtain a size. Otherwise, make it a RenderTarget and assign its internal " "texture to some node for display." msgstr "" -"Questo viewport non è impostato come target di render. Se si vuole che il suo " -"contenuto venga direttamente mostrato a schermo, renderlo figlio di un " +"Questo viewport non è impostato come target di render. Se si vuole che il " +"suo contenuto venga direttamente mostrato a schermo, renderlo figlio di un " "Control, in modo che possa ottenere una dimensione. Altrimenti, renderlo un " "RenderTarget e assegnare alla sua texture interna qualche nodo da mostrare." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Error initializing FreeType." -msgstr "Errore inizializzazione FreeType" +msgstr "Errore inizializzazione FreeType." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -523,15 +566,15 @@ msgstr "Imposta Transizione a:" #: tools/editor/animation_editor.cpp msgid "Anim Track Rename" -msgstr "Traccia Anim Rinomina " +msgstr "Traccia Anim Rinomina" #: tools/editor/animation_editor.cpp msgid "Anim Track Change Interpolation" -msgstr "Traccia Anim Cambia Interpolazione " +msgstr "Traccia Anim Cambia Interpolazione" #: tools/editor/animation_editor.cpp msgid "Anim Track Change Value Mode" -msgstr "Traccia Anim Cambia Modalità Valore " +msgstr "Traccia Anim Cambia Modalità Valore" #: tools/editor/animation_editor.cpp msgid "Edit Node Curve" @@ -546,6 +589,20 @@ msgid "Anim Delete Keys" msgstr "Anim Elimina Key" #: tools/editor/animation_editor.cpp +#, fuzzy +msgid "Continuous" +msgstr "Continua" + +#: tools/editor/animation_editor.cpp +#, fuzzy +msgid "Discrete" +msgstr "Disconnetti" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "" + +#: tools/editor/animation_editor.cpp msgid "Anim Add Key" msgstr "Anim Aggiungi Key" @@ -653,6 +710,11 @@ msgid "Change Anim Loop" msgstr "Cambia Loop Animazione" #: tools/editor/animation_editor.cpp +#, fuzzy +msgid "Change Anim Loop Interpolation" +msgstr "Cambia Loop Animazione" + +#: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" msgstr "Anim Crea Typed Value Key" @@ -693,6 +755,11 @@ msgid "Enable/Disable looping in animation." msgstr "Attiva/Disattiva loop animazione." #: tools/editor/animation_editor.cpp +#, fuzzy +msgid "Enable/Disable interpolation when looping animation." +msgstr "Attiva/Disattiva loop animazione." + +#: tools/editor/animation_editor.cpp msgid "Add new tracks." msgstr "Aggiungi nuova traccia." @@ -722,7 +789,7 @@ msgstr "Ottimizzatore Anim." #: tools/editor/animation_editor.cpp msgid "Max. Linear Error:" -msgstr ":Max. Errore Lineare" +msgstr "Max. Errore Lineare:" #: tools/editor/animation_editor.cpp msgid "Max. Angular Error:" @@ -746,7 +813,7 @@ msgstr "Transizione" #: tools/editor/animation_editor.cpp msgid "Scale Ratio:" -msgstr "Ratio di scalatura" +msgstr "Ratio di scalatura:" #: tools/editor/animation_editor.cpp msgid "Call Functions in Which Node?" @@ -813,22 +880,20 @@ msgid "Site:" msgstr "Sito:" #: tools/editor/asset_library_editor_plugin.cpp -#, fuzzy msgid "Support.." -msgstr "Esporta.." +msgstr "Supporta.." #: tools/editor/asset_library_editor_plugin.cpp msgid "Official" -msgstr "" +msgstr "Ufficiale" #: tools/editor/asset_library_editor_plugin.cpp msgid "Community" -msgstr "" +msgstr "Comunità " #: tools/editor/asset_library_editor_plugin.cpp -#, fuzzy msgid "Testing" -msgstr "Impostazioni" +msgstr "Testing" #: tools/editor/asset_library_editor_plugin.cpp msgid "Assets ZIP File" @@ -876,28 +941,24 @@ msgid "Line Number:" msgstr "Numero Linea:" #: tools/editor/code_editor.cpp -#, fuzzy msgid "No Matches" -msgstr "Corrispondenze:" +msgstr "Nessuna Corrispondenza" #: tools/editor/code_editor.cpp -#, fuzzy msgid "Replaced %d Ocurrence(s)." -msgstr "Rimpiazzate %d occorrenze." +msgstr "Rimpiazzate %d Occorrenze." #: tools/editor/code_editor.cpp msgid "Replace" msgstr "Rimpiazza" #: tools/editor/code_editor.cpp -#, fuzzy msgid "Replace All" -msgstr "Rimpiazza" +msgstr "Rimpiazza Tutti" #: tools/editor/code_editor.cpp -#, fuzzy msgid "Match Case" -msgstr "Corrispondenze:" +msgstr "Controlla Maiuscole" #: tools/editor/code_editor.cpp msgid "Whole Words" @@ -944,7 +1005,7 @@ msgstr "All'indietro" #: tools/editor/code_editor.cpp msgid "Prompt On Replace" -msgstr "Richiedi Per Rimpiazzare" +msgstr "Richiedi Per Sostituire" #: tools/editor/code_editor.cpp msgid "Skip" @@ -960,16 +1021,13 @@ msgstr "Col:" #: tools/editor/connections_dialog.cpp msgid "Method in target Node must be specified!" -msgstr "Il Metodo nel nodo di target deve essere specificato! " +msgstr "Il Metodo nel nodo di target deve essere specificato!" #: tools/editor/connections_dialog.cpp -msgid "Connect To Node:" +#, fuzzy +msgid "Conect To Node:" msgstr "Collega A Nodo:" -#: tools/editor/connections_dialog.cpp -msgid "Binds (Extra Params):" -msgstr "Lega (Parametri Extra):" - #: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp #: tools/editor/plugins/item_list_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp @@ -979,17 +1037,24 @@ msgstr "Aggiungi" #: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp -#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp msgid "Remove" msgstr "Rimuovi" #: tools/editor/connections_dialog.cpp -msgid "Path To Node:" -msgstr "Percorso Al Nodo:" +msgid "Add Extra Call Argument:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +#, fuzzy +msgid "Extra Call Arguments:" +msgstr "Argomenti:" #: tools/editor/connections_dialog.cpp -msgid "Method In Node:" -msgstr "Metodo Nel Nodo:" +#, fuzzy +msgid "Path to Node:" +msgstr "Percorso Al Nodo:" #: tools/editor/connections_dialog.cpp msgid "Make Function" @@ -1012,6 +1077,11 @@ msgid "Connect '%s' to '%s'" msgstr "Connetti '%s' a '%s'" #: tools/editor/connections_dialog.cpp +#, fuzzy +msgid "Connecting Signal:" +msgstr "Connessioni:" + +#: tools/editor/connections_dialog.cpp msgid "Create Subscription" msgstr "Crea Sottoscrizione" @@ -1025,9 +1095,8 @@ msgid "Disconnect" msgstr "Disconnetti" #: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp -#, fuzzy msgid "Signals" -msgstr "Segnali:" +msgstr "Segnali" #: tools/editor/create_dialog.cpp msgid "Create New" @@ -1067,15 +1136,13 @@ msgid "Dependencies" msgstr "Dipendenze" #: tools/editor/dependency_editor.cpp -#, fuzzy msgid "Resource" -msgstr "Risorse" +msgstr "Risorsa" #: tools/editor/dependency_editor.cpp tools/editor/project_manager.cpp #: tools/editor/project_settings.cpp -#, fuzzy msgid "Path" -msgstr "Percorso:" +msgstr "Percorso" #: tools/editor/dependency_editor.cpp msgid "Dependencies:" @@ -1091,7 +1158,7 @@ msgstr "Editor Dipendenze" #: tools/editor/dependency_editor.cpp msgid "Search Replacement Resource:" -msgstr "Cerca Risorsa di Rimpiazzo" +msgstr "Cerca Risorsa di Rimpiazzo:" #: tools/editor/dependency_editor.cpp msgid "Owners Of:" @@ -1103,6 +1170,9 @@ msgid "" "work.\n" "Remove them anyway? (no undo)" msgstr "" +"I file che stanno per essere rimossi sono richiesti da altre risorse perchè " +"esse funzionino.\n" +"Rimuoverli comunque? (no undo)" #: tools/editor/dependency_editor.cpp msgid "Remove selected files from the project? (no undo)" @@ -1153,7 +1223,8 @@ msgid "Delete selected files?" msgstr "Eliminare i file selezionati?" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/item_list_editor_plugin.cpp tools/editor/scenes_dock.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp msgid "Delete" msgstr "Elimina" @@ -1228,7 +1299,7 @@ msgstr "Metodi Pubblici:" #: tools/editor/editor_help.cpp msgid "Members:" -msgstr "Membri" +msgstr "Membri:" #: tools/editor/editor_help.cpp msgid "GUI Theme Items:" @@ -1268,7 +1339,7 @@ msgstr "Errore di salvataggio dell'atlas:" #: tools/editor/editor_import_export.cpp msgid "Could not save atlas subtexture:" -msgstr "Impossibile salvare la substruttura dell'atlas" +msgstr "Impossibile salvare la substruttura dell'atlas:" #: tools/editor/editor_import_export.cpp msgid "Storing File:" @@ -1276,7 +1347,7 @@ msgstr "Memorizzazione File:" #: tools/editor/editor_import_export.cpp msgid "Packing" -msgstr "Packing" +msgstr "Impacchettando" #: tools/editor/editor_import_export.cpp msgid "Exporting for %s" @@ -1287,9 +1358,8 @@ msgid "Setting Up.." msgstr "Impostando.." #: tools/editor/editor_log.cpp -#, fuzzy msgid " Output:" -msgstr "Output" +msgstr " Output:" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Importing" @@ -1376,7 +1446,7 @@ msgstr "Errore di salvataggio TileSet!" #: tools/editor/editor_node.cpp msgid "Can't open export templates zip." -msgstr "Impossibile aprire zip dei template d'esportazionie" +msgstr "Impossibile aprire zip dei template d'esportazionie." #: tools/editor/editor_node.cpp msgid "Loading Export Templates" @@ -1403,9 +1473,8 @@ msgid "Copy Params" msgstr "Copia parametri" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Paste Params" -msgstr "Incolla Frame" +msgstr "Incolla Parametri" #: tools/editor/editor_node.cpp #: tools/editor/plugins/resource_preloader_editor_plugin.cpp @@ -1425,9 +1494,8 @@ msgid "Make Sub-Resources Unique" msgstr "Rendi Sotto-risorse Uniche" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Open in Help" -msgstr "Apri Scena" +msgstr "Apri in Aiuto" #: tools/editor/editor_node.cpp msgid "There is no defined scene to run." @@ -1438,6 +1506,9 @@ msgid "" "No main scene has ever been defined.\n" "Select one from \"Project Settings\" under the 'application' category." msgstr "" +"Nessuna scena principale è mai stata definita.\n" +"Selezionane una da \"Impostazioni Progetto\" sotto la categoria " +"'applicazioni'." #: tools/editor/editor_node.cpp msgid "Current scene was never saved, please save it prior to running." @@ -1526,11 +1597,12 @@ msgid "Quick Run Scene.." msgstr "Esegui Scena Rapido.." #: tools/editor/editor_node.cpp -#, fuzzy msgid "" "Open Project Manager? \n" "(Unsaved changes will be lost)" -msgstr "Chiudi scena? (I cambiamenti non salvati saranno persi)" +msgstr "" +"Aprire la Gestione Progetti?\n" +"(I cambiamenti non salvati saranno persi)" #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp msgid "Ugh" @@ -1538,8 +1610,8 @@ msgstr "Ugh" #: tools/editor/editor_node.cpp msgid "" -"Error loading scene, it must be inside the project path. Use 'Import' to open " -"the scene, then save it inside the project path." +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." msgstr "" "Errore di caricamento scena, deve essere all'interno del percorso del " "progetto. Usare 'Importa' per aprire la scena, salvarla poi nel percorso del " @@ -1558,9 +1630,8 @@ msgid "Save Layout" msgstr "Salva layout" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Load Layout" -msgstr "Salva layout" +msgstr "Carica Layout" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Default" @@ -1592,6 +1663,14 @@ msgid "Go to previously opened scene." msgstr "Vai alla scena precedentemente aperta." #: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Operations with scene files." msgstr "Operazioni con i file delle scene." @@ -1605,7 +1684,7 @@ msgstr "Nuova Scena Ereditata.." #: tools/editor/editor_node.cpp msgid "Open Scene.." -msgstr "Apri Scena" +msgstr "Apri Scena.." #: tools/editor/editor_node.cpp msgid "Save Scene" @@ -1624,9 +1703,8 @@ msgid "Open Recent" msgstr "Apri Recente" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Quick Filter Files.." -msgstr "Ricerca File Rapida.." +msgstr "Filtro Files Rapido.." #: tools/editor/editor_node.cpp msgid "Convert To.." @@ -1683,7 +1761,7 @@ msgstr "Importa" #: tools/editor/editor_node.cpp msgid "Miscellaneous project or scene-wide tools." -msgstr "Strumenti di progetto o scene vari" +msgstr "Strumenti di progetto o scena vari." #: tools/editor/editor_node.cpp msgid "Tools" @@ -1698,9 +1776,8 @@ msgid "Export" msgstr "Esporta" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play the project." -msgstr "Esegui il progetto (F5)." +msgstr "Esegui il progetto." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -1708,19 +1785,16 @@ msgid "Play" msgstr "Play" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Pause the scene" -msgstr "Esegui scena personalizzata" +msgstr "Metti in pausa la scena" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Pause Scene" -msgstr "Esegui scena personalizzata" +msgstr "Pausa Scena" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Stop the scene." -msgstr "Ferma la scena (F8)." +msgstr "Ferma la scena." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -1728,14 +1802,12 @@ msgid "Stop" msgstr "Stop" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play the edited scene." -msgstr "Esegui la scena in modifica (F6)." +msgstr "Esegui la scena in modifica." #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play Scene" -msgstr "Salva Scena" +msgstr "Esegui Scena" #: tools/editor/editor_node.cpp msgid "Play custom scene" @@ -1746,19 +1818,20 @@ msgid "Debug options" msgstr "Opzioni di Debug" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Deploy with Remote Debug" -msgstr "Distribuisci Debug Remoto" +msgstr "Distribuisci con Debug Remoto" #: tools/editor/editor_node.cpp msgid "" -"When exporting or deploying, the resulting executable will attempt to connect " -"to the IP of this computer in order to be debugged." +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." msgstr "" +"All'esportazione o distribuzione, l'eseguibile risultante tenterà di " +"connettersi all'IP di questo computer per poter effettuare il debug." #: tools/editor/editor_node.cpp msgid "Small Deploy with Network FS" -msgstr "" +msgstr "Distribuzione Piccola con Network FS" #: tools/editor/editor_node.cpp msgid "" @@ -1766,9 +1839,14 @@ msgid "" "executable.\n" "The filesystem will be provided from the project by the editor over the " "network.\n" -"On Android, deploy will use the USB cable for faster performance. This option " -"speeds up testing for games with a large footprint." +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." msgstr "" +"Quando questa opzione è abilitata, esportare o distribuire produrrà un " +"eseguibile minimo.\n" +"Il filesystem verrà fornito dal progetto dall'editor mediante rete.\n" +"Su Android, la distribuzione userà il cavo USB per una performance migliore. " +"Questa opzione accellera il testing di giochi di grande entità ." #: tools/editor/editor_node.cpp msgid "Visible Collision Shapes" @@ -1779,6 +1857,8 @@ msgid "" "Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " "running game if this option is turned on." msgstr "" +"Le forme di collisione e i nodi di raycast (per il 2D e 3D) Saranno visibili " +"nel gioco in esecuzione se l'opzione è attiva." #: tools/editor/editor_node.cpp msgid "Visible Navigation" @@ -1789,10 +1869,12 @@ msgid "" "Navigation meshes and polygons will be visible on the running game if this " "option is turned on." msgstr "" +"Le mesh e i poligoni di navigazione saranno visibili nel gioco in esecuzione " +"se l'opzione è attiva." #: tools/editor/editor_node.cpp msgid "Sync Scene Changes" -msgstr "" +msgstr "Sincronizza Cambiamenti Scena" #: tools/editor/editor_node.cpp msgid "" @@ -1801,11 +1883,14 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"Quando questa opzione è attiva, qualsiasi cambiamento fatto alla scena " +"nell'editor sarà replicato nel gioco in esecuzione.\n" +"Quando usata remotamente su un dispositivo, essa è più efficiente con il " +"filesystem in rete." #: tools/editor/editor_node.cpp -#, fuzzy msgid "Sync Script Changes" -msgstr "Aggiorna Cambiamenti" +msgstr "Sincronizza Cambiamenti Script" #: tools/editor/editor_node.cpp msgid "" @@ -1814,6 +1899,10 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"Quando questa opzione è attiva, qualsiasi script salvato verrà ricaricato " +"nel gioco in esecuzione.\n" +"Quando usata remotamente su un dispositivo, essa è più efficiente con il " +"filesystem in rete." #: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp msgid "Settings" @@ -1833,7 +1922,7 @@ msgstr "Installa Template di Esportazione" #: tools/editor/editor_node.cpp msgid "About" -msgstr "About" +msgstr "Riguardo a" #: tools/editor/editor_node.cpp msgid "Alerts when an external resource has changed." @@ -1841,7 +1930,7 @@ msgstr "Avverti quando una risorsa esterna è stata modificata." #: tools/editor/editor_node.cpp msgid "Spins when the editor window repaints!" -msgstr "Gira quando la finestra dell'editor viene ridisegnata. " +msgstr "Gira quando la finestra dell'editor viene ridisegnata!" #: tools/editor/editor_node.cpp msgid "Update Always" @@ -1865,11 +1954,9 @@ msgstr "Carica una risorsa esistente dal disco e modificala." #: tools/editor/editor_node.cpp msgid "Save the currently edited resource." -msgstr "Salva la risorsa in modifica" +msgstr "Salva la risorsa in modifica." -#: tools/editor/editor_node.cpp -#: tools/editor/plugins/animation_player_editor_plugin.cpp -#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Save As.." msgstr "Salva Come.." @@ -1944,69 +2031,63 @@ msgstr "Carica Errori" #: tools/editor/editor_plugin_settings.cpp msgid "Installed Plugins:" -msgstr "" +msgstr "Plugins Installati:" #: tools/editor/editor_plugin_settings.cpp -#, fuzzy msgid "Version:" -msgstr "Descrizione:" +msgstr "Versione:" #: tools/editor/editor_plugin_settings.cpp msgid "Author:" -msgstr "" +msgstr "Autore:" #: tools/editor/editor_plugin_settings.cpp msgid "Status:" -msgstr "" +msgstr "Stato:" #: tools/editor/editor_profiler.cpp msgid "Stop Profiling" -msgstr "" +msgstr "Interrrompi Profiling" #: tools/editor/editor_profiler.cpp msgid "Start Profiling" -msgstr "" +msgstr "Inizia Profiling" #: tools/editor/editor_profiler.cpp msgid "Measure:" -msgstr "" +msgstr "Misura:" #: tools/editor/editor_profiler.cpp -#, fuzzy msgid "Frame Time (sec)" -msgstr "Tempo(i) di Crossfade: " +msgstr "Tempo Frame (sec)" #: tools/editor/editor_profiler.cpp -#, fuzzy msgid "Average Time (sec)" -msgstr "Tempo(i) di Crossfade: " +msgstr "Tempo Medio (sec)" #: tools/editor/editor_profiler.cpp -#, fuzzy msgid "Frame %" -msgstr "Aggiungi frame" +msgstr "Frame %" #: tools/editor/editor_profiler.cpp -#, fuzzy msgid "Fixed Frame %" -msgstr "Aggiungi frame" +msgstr "Frame Fisso %" #: tools/editor/editor_profiler.cpp tools/editor/script_editor_debugger.cpp msgid "Time:" msgstr "Tempo:" #: tools/editor/editor_profiler.cpp -#, fuzzy msgid "Inclusive" -msgstr "Includi" +msgstr "Inclusivo" #: tools/editor/editor_profiler.cpp msgid "Self" -msgstr "" +msgstr "Se stesso" #: tools/editor/editor_profiler.cpp msgid "Frame #:" -msgstr "" +msgstr "Frame #:" #: tools/editor/editor_reimport_dialog.cpp msgid "Please wait for scan to complete." @@ -2014,7 +2095,7 @@ msgstr "Si prega di attendere che lo scan venga completato." #: tools/editor/editor_reimport_dialog.cpp msgid "Current scene must be saved to re-import." -msgstr "La scena corrente deve essere salvata per re-importare," +msgstr "La scena corrente deve essere salvata per re-importare." #: tools/editor/editor_reimport_dialog.cpp msgid "Save & Re-Import" @@ -2083,9 +2164,8 @@ msgid "Imported Resources" msgstr "Risorse Importate" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp -#, fuzzy msgid "No bit masks to import!" -msgstr "Nessun elemento da importare!" +msgstr "Nessuna bit mask da importare!" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp @@ -2116,9 +2196,8 @@ msgid "Save path is empty!" msgstr "Il percorso di salvataggio è vuoto!" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp -#, fuzzy msgid "Import BitMasks" -msgstr "Importa Textures" +msgstr "Importa BitMasks" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp @@ -2145,7 +2224,7 @@ msgstr "Accetta" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp msgid "Bit Mask" -msgstr "" +msgstr "Bit Mask" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "No source font file!" @@ -2173,7 +2252,7 @@ msgstr "Dimensione Font sorgente:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Dest Resource:" -msgstr "Risorsa di dest." +msgstr "Risorsa di destin. :" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "The quick brown fox jumps over the lazy dog." @@ -2225,12 +2304,12 @@ msgstr "Importa Mesh Singola" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "Source Mesh(es):" -msgstr "Mesh Sorgente(i)" +msgstr "Mesh Sorgente(i):" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh" -msgstr "" +msgstr "Mesh" #: tools/editor/io_plugins/editor_mesh_import_plugin.cpp msgid "Surface %d" @@ -2249,9 +2328,8 @@ msgid "Source Sample(s):" msgstr "Sample Sorgente(i):" #: tools/editor/io_plugins/editor_sample_import_plugin.cpp -#, fuzzy msgid "Audio Sample" -msgstr "Aggiungi Sample" +msgstr "Sample Audio" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "New Clip" @@ -2318,7 +2396,7 @@ msgstr "Il percorso sorgente è vuoto." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Couldn't load post-import script." -msgstr "Impossibile caricare script di post-importazione" +msgstr "Impossibile caricare script di post-importazione." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Invalid/broken script for post-import." @@ -2354,12 +2432,11 @@ msgstr "Script di Post-Process:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Custom Root Node Type:" -msgstr "" +msgstr "Tipo di Nodo Root Personalizzato:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp -#, fuzzy msgid "Auto" -msgstr "AutoLoad" +msgstr "Auto" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "The Following Files are Missing:" @@ -2401,7 +2478,7 @@ msgstr "Script di post-import invalido/non funzionante:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Error running post-import script:" -msgstr "Errore di esecuzione dello script di post-import" +msgstr "Errore di esecuzione dello script di post-import:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import Image:" @@ -2420,9 +2497,8 @@ msgid "Saving.." msgstr "Salvataggio.." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp -#, fuzzy msgid "3D Scene Animation" -msgstr "Rinomina Animazione" +msgstr "Animazione Scena 3D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Uncompressed" @@ -2446,7 +2522,7 @@ msgstr "Formato Texture" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Texture Compression Quality (WebP):" -msgstr "Qualità Compressione Texture (WebP)" +msgstr "Qualità Compressione Texture (WebP):" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Texture Options" @@ -2489,18 +2565,16 @@ msgid "Import Large Textures (2D)" msgstr "Importa Texture Grandi (2D)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#, fuzzy msgid "Source Texture" -msgstr "Texture Sorgente:" +msgstr "Texture Sorgente" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Base Atlas Texture" msgstr "Texture Base Atlas" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#, fuzzy msgid "Source Texture(s)" -msgstr "Texture Sorgenti:" +msgstr "Texture Sorgente(i)" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Textures for 2D" @@ -2515,34 +2589,32 @@ msgid "Import Textures" msgstr "Importa Textures" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#, fuzzy msgid "2D Texture" -msgstr "Texture Grande" +msgstr "Texture 2D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#, fuzzy msgid "3D Texture" -msgstr "Texture Grande" +msgstr "Texture 3D" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#, fuzzy msgid "Atlas Texture" -msgstr "Texture Base Atlas" +msgstr "Texture dell'Atlas" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "" "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " "the project." msgstr "" +"NOTA: Importare texture 2D non è obbligatorio. Basta copiare i file png/jpg " +"nel progetto." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Crop empty space." msgstr "Ritaglia spazio vuoto." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp -#, fuzzy msgid "Texture" -msgstr "Testo" +msgstr "Texture" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Import Large Texture" @@ -2578,7 +2650,7 @@ msgstr "Immagine Caricamento:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Couldn't load image:" -msgstr "Impossibile caricare immagine" +msgstr "Impossibile caricare immagine:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Converting Images" @@ -2658,27 +2730,24 @@ msgid "Import Languages:" msgstr "Importa Lingue:" #: tools/editor/io_plugins/editor_translation_import_plugin.cpp -#, fuzzy msgid "Translation" -msgstr "Traduzioni" +msgstr "Traduzione" #: tools/editor/multi_node_edit.cpp msgid "MultiNode Set" msgstr "MultiNode Set" #: tools/editor/node_dock.cpp -#, fuzzy msgid "Node" -msgstr "Node Mix" +msgstr "Nodo" #: tools/editor/node_dock.cpp -#, fuzzy msgid "Groups" -msgstr "Gruppi:" +msgstr "Gruppi" #: tools/editor/node_dock.cpp msgid "Select a Node to edit Signals and Groups." -msgstr "" +msgstr "Seleziona un Nodo per modificare Segnali e Gruppi." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" @@ -2721,7 +2790,7 @@ msgstr "Aggiungi Animazione" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Next Changed" -msgstr "Blend Next Changed" +msgstr "Fondi il Successivo Cambiato" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Change Blend Time" @@ -2757,7 +2826,8 @@ msgstr "ERRORE: Nessuna animazione da modificare!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" -msgstr "Esegui la seguente animazione al contrario dalla posizione corrente (A)" +msgstr "" +"Esegui la seguente animazione al contrario dalla posizione corrente (A)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from end. (Shift+A)" @@ -2788,6 +2858,11 @@ msgid "Create new animation in player." msgstr "Crea nuova animazione nel player." #: tools/editor/plugins/animation_player_editor_plugin.cpp +#, fuzzy +msgid "Load animation from disk." +msgstr "Carica un'animazione da disco." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load an animation from disk." msgstr "Carica un'animazione da disco." @@ -2796,6 +2871,11 @@ msgid "Save the current animation" msgstr "Salva l'animazione corrente" #: tools/editor/plugins/animation_player_editor_plugin.cpp +#, fuzzy +msgid "Save As" +msgstr "Salva Come.." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." msgstr "Mostra una lista di animazioni nel player." @@ -2833,7 +2913,7 @@ msgstr "Errore!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Blend Times:" -msgstr "Tempi di Blend" +msgstr "Tempi di Blend:" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Next (Auto Queue):" @@ -2845,9 +2925,8 @@ msgstr "Tempi di Blend Cross-Animation" #: tools/editor/plugins/animation_player_editor_plugin.cpp #: tools/editor/plugins/canvas_item_editor_plugin.cpp -#, fuzzy msgid "Animation" -msgstr "Animazioni" +msgstr "Animazione" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "New name:" @@ -2856,7 +2935,7 @@ msgstr "Nuovo nome:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Scale:" -msgstr "Scala" +msgstr "Scala:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Fade In (s):" @@ -2888,7 +2967,7 @@ msgstr "Restart Casuale(i):" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Start!" -msgstr "Inizia" +msgstr "Inizia!" #: tools/editor/plugins/animation_tree_editor_plugin.cpp #: tools/editor/plugins/multimesh_editor_plugin.cpp @@ -2909,11 +2988,11 @@ msgstr "Blend 1:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "X-Fade Time (s):" -msgstr "Tempo(i) di Crossfade: " +msgstr "Tempo(i) di Crossfade:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Current:" -msgstr "Corrente" +msgstr "Corrente:" #: tools/editor/plugins/animation_tree_editor_plugin.cpp msgid "Add Input" @@ -3013,7 +3092,7 @@ msgstr "Aggiustando le Luci" #: tools/editor/plugins/baked_light_baker.cpp msgid "Making BVH" -msgstr "Making BVH" +msgstr "Creazione BVH" #: tools/editor/plugins/baked_light_baker.cpp msgid "Creating Light Octree" @@ -3070,7 +3149,7 @@ msgstr "Offset Griglia:" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Grid Step:" -msgstr "Step:griglia" +msgstr "Step Griglia:" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Offset:" @@ -3159,11 +3238,11 @@ msgstr "Modalità di Pan" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Lock the selected object in place (can't be moved)." -msgstr "Blocca l'oggetto selezionato sul posto (non può essere mosso)" +msgstr "Blocca l'oggetto selezionato sul posto (non può essere mosso)." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Unlock the selected object (can be moved)." -msgstr "Sblocca l'oggetto selezionato (può essere mosso). " +msgstr "Sblocca l'oggetto selezionato (può essere mosso)." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Makes sure the object's children are not selectable." @@ -3422,7 +3501,7 @@ msgstr "Crea Corpo Convesso Statico" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "This doesn't work on scene root!" -msgstr "Questo non funziona sulla root della scena! " +msgstr "Questo non funziona sulla root della scena!" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Shape" @@ -3528,7 +3607,7 @@ msgstr "Seleziona una Mesh Sorgente:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Select a Target Surface:" -msgstr "Seleziona una Superficie di Target: " +msgstr "Seleziona una Superficie di Target:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Populate Surface" @@ -3560,11 +3639,11 @@ msgstr "Asse-Z" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Mesh Up Axis:" -msgstr "Asse Mesh Su" +msgstr "Asse Mesh Su:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Random Rotation:" -msgstr "Rotazione Casuale" +msgstr "Rotazione Casuale:" #: tools/editor/plugins/multimesh_editor_plugin.cpp msgid "Random Tilt:" @@ -3644,7 +3723,7 @@ msgstr "Cancella Emitter" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Create Emitter" -msgstr "Crea Emitter:" +msgstr "Crea Emitter" #: tools/editor/plugins/particles_editor_plugin.cpp msgid "Emission Positions:" @@ -3846,7 +3925,7 @@ msgstr "Carica Risorsa" #: tools/editor/plugins/rich_text_editor_plugin.cpp msgid "Parse BBCode" -msgstr "Parse BBCode" +msgstr "Decodifica BBCode" #: tools/editor/plugins/sample_editor_plugin.cpp msgid "Length:" @@ -3898,36 +3977,31 @@ msgid "Pitch" msgstr "Pitch" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error while saving theme" -msgstr "Errore durante il salvataggio." +msgstr "Errore durante il salvataggio del tema" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error saving" -msgstr "Errore di salvataggio dell'atlas:" +msgstr "Errore di salvataggio" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error importing theme" -msgstr "Errore di importazione scena." +msgstr "Errore di importazione tema" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Error importing" -msgstr "Errore di importazione:" +msgstr "Errore di importazione" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Import Theme" -msgstr "Importa Scena" +msgstr "Importa Tema" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Save Theme As.." -msgstr "Salva Scena Come.." +msgstr "Salva Tema Come.." -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "File" msgstr "File" @@ -3949,19 +4023,16 @@ msgid "History Next" msgstr "Cronologia Prec." #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Reload Theme" -msgstr "Ricarica" +msgstr "Ricarica Tema" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Save Theme" -msgstr "Salva Scena" +msgstr "Salva Tema" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Save Theme As" -msgstr "Salva Scena Come.." +msgstr "Salva Tema Come" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/scene_tree_dock.cpp @@ -3995,7 +4066,7 @@ msgstr "Completa Simbolo" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Trim Trailing Whitespace" -msgstr "Taglia Spazi in Coda " +msgstr "Taglia Spazi in Coda" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Auto Indent" @@ -4003,12 +4074,8 @@ msgstr "Auto Indenta" #: tools/editor/plugins/script_editor_plugin.cpp #, fuzzy -msgid "Reload Tool Script" -msgstr "Crea Script Nodo" - -#: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script (Soft)" -msgstr "" +msgid "Soft Reload Script" +msgstr "Ricarica Tool Script" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/shader_editor_plugin.cpp @@ -4023,7 +4090,7 @@ msgstr "Trova Successivo" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find Previous" -msgstr "" +msgstr "Trova Precedente" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/shader_editor_plugin.cpp @@ -4048,19 +4115,16 @@ msgid "Toggle Breakpoint" msgstr "Abilita Breakpoint" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Remove All Breakpoints" -msgstr "Abilita Breakpoint" +msgstr "Rimuovi Tutti i Breakpoints" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Goto Next Breakpoint" -msgstr "Vai a Step Successivo" +msgstr "Vai a Breakpoint Successivo" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy msgid "Goto Previous Breakpoint" -msgstr "Abilita Breakpoint" +msgstr "Vai a Breakpoint Precedente" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/script_editor_debugger.cpp @@ -4103,7 +4167,8 @@ msgid "Help" msgstr "Aiuto" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Contextual" +#, fuzzy +msgid "Contextual Help" msgstr "Contestuale" #: tools/editor/plugins/script_editor_plugin.cpp @@ -4147,7 +4212,8 @@ msgid "" "The following files are newer on disk.\n" "What action should be taken?:" msgstr "" -"I file seguenti sono più recenti su disco. Che azione deve essere intrapresa?" +"I file seguenti sono più recenti su disco.\n" +"Che azione deve essere intrapresa?:" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Reload" @@ -4311,20 +4377,20 @@ msgid "Transform Aborted." msgstr "Transform Abortito." #: tools/editor/plugins/spatial_editor_plugin.cpp -msgid "View Plane Transform." -msgstr "Visualizza Tranform del Piano." - -#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." -msgstr "Transform Asse-X" +msgstr "Transform Asse-X." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Y-Axis Transform." -msgstr "Transform Asse-Y" +msgstr "Transform Asse-Y." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Z-Axis Transform." -msgstr "Transform Asse-Z" +msgstr "Transform Asse-Z." + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "Visualizza Tranform del Piano." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scaling to %s%%." @@ -4336,7 +4402,7 @@ msgstr "Ruotando di %s gradi." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View." -msgstr "Vista dal Basso" +msgstr "Vista dal Basso." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Bottom" @@ -4408,7 +4474,7 @@ msgstr "Sinistra (Num3)" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Right (Shift+Num3)" -msgstr "Right (Shift+Num3)" +msgstr "Destra (Shift+Num3)" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Front (Num1)" @@ -4467,9 +4533,8 @@ msgid "Scale Mode (R)" msgstr "Modalità Scala (R)" #: tools/editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Transform" -msgstr "Tipo Transform" +msgstr "Transform" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Local Coords" @@ -4489,30 +4554,27 @@ msgstr "Usa sRGB Default" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "1 Viewport" -msgstr "" +msgstr "1 Vista" #: tools/editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "2 Viewports" -msgstr "Impostazioni Viewport" +msgstr "2 Viste" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports (Alt)" -msgstr "" +msgstr "2 Viste (Alt)" #: tools/editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "3 Viewports" -msgstr "Impostazioni Viewport" +msgstr "3 Viste" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports (Alt)" -msgstr "" +msgstr "3 Viste (Alt)" #: tools/editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "4 Viewports" -msgstr "Impostazioni Viewport" +msgstr "4 Viste" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" @@ -4544,7 +4606,7 @@ msgstr "Impostazioni Snap" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Translate Snap:" -msgstr "Trasla Snap: " +msgstr "Trasla Snap:" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Rotate Snap (deg.):" @@ -4668,23 +4730,23 @@ msgstr "Giù" #: tools/editor/plugins/style_box_editor_plugin.cpp msgid "StyleBox Preview:" -msgstr "Anteprima StyleBox" +msgstr "Anteprima StyleBox:" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Texture Region Editor" -msgstr "Editor Regioni Sprite" +msgstr "Editor Regioni Texture" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Scale Region Editor" -msgstr "Editor Regioni Sprite" +msgstr "Scala Editor Regioni" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "" "No texture in this node.\n" "Set a texture to be able to edit region." msgstr "" +"Nessuna texture in questo nodo.\n" +"Imposta una texture per poter modificare la regione." #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Can't save theme to file:" @@ -4712,7 +4774,13 @@ msgid "Remove Class Items" msgstr "Rimuovi Elementi di Classe" #: tools/editor/plugins/theme_editor_plugin.cpp -msgid "Create Template" +#, fuzzy +msgid "Create Empty Template" +msgstr "Crea Template" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Create Empty Editor Template" msgstr "Crea Template" #: tools/editor/plugins/theme_editor_plugin.cpp @@ -4799,34 +4867,42 @@ msgid "Erase TileMap" msgstr "Cancella TileMap" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Bucket" -msgstr "Secchiello" - -#: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Pick Tile" -msgstr "Preleva Tile" - -#: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Select" -msgstr "Seleziona" +#, fuzzy +msgid "Erase selection" +msgstr "Elimina Selezione" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Erase Selection" -msgstr "Elimina Selezione" +#, fuzzy +msgid "Find tile" +msgstr "Trova Successivo" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Transpose" msgstr "Trasponi" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror X (A)" +#, fuzzy +msgid "Mirror X" msgstr "Specchia X (A)" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror Y (S)" +#, fuzzy +msgid "Mirror Y" msgstr "Specchia Y (A)" #: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "Secchiello" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "Preleva Tile" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "Seleziona" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 0 degrees" msgstr "Ruota a 0 gradi" @@ -4860,11 +4936,11 @@ msgstr "Unisci da scena?" #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Create from Scene" -msgstr "Crea da Scena?" +msgstr "Crea da Scena" #: tools/editor/plugins/tile_set_editor_plugin.cpp msgid "Merge from Scene" -msgstr "Unisci da Scena?" +msgstr "Unisci da Scena" #: tools/editor/plugins/tile_set_editor_plugin.cpp #: tools/editor/script_editor_debugger.cpp @@ -4885,7 +4961,7 @@ msgstr "Errore di esportazione del progetto!" #: tools/editor/project_export.cpp msgid "Error writing the project PCK!" -msgstr "Errore di scrittura del PCK del progetto." +msgstr "Errore di scrittura del PCK del progetto!" #: tools/editor/project_export.cpp msgid "No exporter for platform '%s' yet." @@ -4978,7 +5054,7 @@ msgstr "" #: tools/editor/project_export.cpp msgid "Convert text scenes to binary on export." -msgstr "Converti le scene in formato testuale in binario all'esportazione. " +msgstr "Converti le scene in formato testuale in binario all'esportazione." #: tools/editor/project_export.cpp msgid "Images" @@ -5006,7 +5082,7 @@ msgstr "Qualità compressione per disco (Lossy):" #: tools/editor/project_export.cpp msgid "Shrink All Images:" -msgstr "Riduci Tutte le Immagini: " +msgstr "Riduci Tutte le Immagini:" #: tools/editor/project_export.cpp msgid "Compress Formats:" @@ -5093,9 +5169,8 @@ msgid "Trailing Silence:" msgstr "Silenzio di coda:" #: tools/editor/project_export.cpp -#, fuzzy msgid "Script" -msgstr "Esegui Script" +msgstr "Script" #: tools/editor/project_export.cpp msgid "Script Export Mode:" @@ -5212,14 +5287,12 @@ msgstr "" "modificati)" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Project Manager" -msgstr "Nome Progetto:" +msgstr "Gestione Progetti" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Project List" -msgstr "Esci alla Lista Progetti" +msgstr "Lista Progetti" #: tools/editor/project_manager.cpp msgid "Run" @@ -5239,22 +5312,19 @@ msgstr "Esci" #: tools/editor/project_settings.cpp msgid "Key " -msgstr "" +msgstr "Tasto " #: tools/editor/project_settings.cpp -#, fuzzy msgid "Joy Button" -msgstr "Pulsante" +msgstr "Pulsante Joy" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Joy Axis" -msgstr "Asse" +msgstr "Asse Joy" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Mouse Button" -msgstr "Indice Pulsante Mouse:" +msgstr "Pulsante Mouse" #: tools/editor/project_settings.cpp msgid "Invalid action (anything goes but '/' or ':')." @@ -5379,14 +5449,12 @@ msgstr "" "globale esistente." #: tools/editor/project_settings.cpp -#, fuzzy msgid "Autoload '%s' already exists!" -msgstr "L'Azione '%s' esiste già !" +msgstr "Autoload '%s' esiste già !" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Rename Autoload" -msgstr "Rimuovi Autoload" +msgstr "Rinomina Autoload" #: tools/editor/project_settings.cpp msgid "Toggle AutoLoad Globals" @@ -5650,7 +5718,7 @@ msgstr "Scena Principale" #: tools/editor/run_settings_dialog.cpp msgid "Main Scene Arguments:" -msgstr "Argomenti Scena Principale" +msgstr "Argomenti Scena Principale:" #: tools/editor/run_settings_dialog.cpp msgid "Scene Run Settings" @@ -5678,8 +5746,8 @@ msgstr "Ok" #: tools/editor/scene_tree_dock.cpp msgid "" -"Cannot instance the scene '%s' because the current scene exists within one of " -"its nodes." +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." msgstr "" "Impossibile istanziale la scena '%s' perché la scena corrente esiste in uno " "dei suoi nodi." @@ -5690,7 +5758,7 @@ msgstr "Istanzia Scena(e)" #: tools/editor/scene_tree_dock.cpp msgid "This operation can't be done on the tree root." -msgstr "Questa operazione non può essere eseguita alla tree root" +msgstr "Questa operazione non può essere eseguita alla radice dell'albero." #: tools/editor/scene_tree_dock.cpp msgid "Move Node In Parent" @@ -5749,8 +5817,8 @@ msgid "" "Couldn't save new scene. Likely dependencies (instances) couldn't be " "satisfied." msgstr "" -"Impossibile salvare la scena. Probabili dipendenze (istanze) non hanno potuto " -"essere soddisfatte." +"Impossibile salvare la scena. Probabili dipendenze (istanze) non hanno " +"potuto essere soddisfatte." #: tools/editor/scene_tree_dock.cpp msgid "Error saving scene." @@ -5793,9 +5861,8 @@ msgid "Add Script" msgstr "Aggiungi Script" #: tools/editor/scene_tree_dock.cpp -#, fuzzy msgid "Merge From Scene" -msgstr "Unisci da Scena?" +msgstr "Unisci Da Scena" #: tools/editor/scene_tree_dock.cpp msgid "Save Branch as Scene" @@ -5858,6 +5925,10 @@ msgid "Load As Placeholder" msgstr "Carica come placeholder" #: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp msgid "Open in Editor" msgstr "Apri nell Editor" @@ -5916,9 +5987,8 @@ msgid "View Owners.." msgstr "Vedi Proprietari.." #: tools/editor/scenes_dock.cpp -#, fuzzy msgid "Copy Path" -msgstr "Copia parametri" +msgstr "Copia Percorso" #: tools/editor/scenes_dock.cpp msgid "Rename or Move.." @@ -6022,7 +6092,7 @@ msgstr "Percorso valido" #: tools/editor/script_create_dialog.cpp msgid "Class Name:" -msgstr "Nome Classe" +msgstr "Nome Classe:" #: tools/editor/script_create_dialog.cpp msgid "Built-In Script" @@ -6085,23 +6155,20 @@ msgid "Stack Trace (if applicable):" msgstr "Stack Trace (se applicabile):" #: tools/editor/script_editor_debugger.cpp -#, fuzzy msgid "Remote Inspector" -msgstr "Inspector" +msgstr "Inspector Remoto" #: tools/editor/script_editor_debugger.cpp -#, fuzzy msgid "Live Scene Tree:" -msgstr "Scene Tree:" +msgstr "Scene Tree Live:" #: tools/editor/script_editor_debugger.cpp -#, fuzzy msgid "Remote Object Properties: " -msgstr "Proprietà oggetto." +msgstr "Proprietà Oggetto Remoto: " #: tools/editor/script_editor_debugger.cpp msgid "Profiler" -msgstr "" +msgstr "Profiler" #: tools/editor/script_editor_debugger.cpp msgid "Monitor" @@ -6112,7 +6179,6 @@ msgid "Value" msgstr "Valore" #: tools/editor/script_editor_debugger.cpp -#, fuzzy msgid "Monitors" msgstr "Monitor" @@ -6142,7 +6208,7 @@ msgstr "Utilizzo" #: tools/editor/script_editor_debugger.cpp msgid "Misc" -msgstr "" +msgstr "Vari" #: tools/editor/script_editor_debugger.cpp msgid "Clicked Control:" @@ -6150,7 +6216,7 @@ msgstr "Clicked Control:" #: tools/editor/script_editor_debugger.cpp msgid "Clicked Control Type:" -msgstr "Clicked Control Type:" +msgstr "Tipo Clicked Control:" #: tools/editor/script_editor_debugger.cpp msgid "Live Edit Root:" @@ -6158,11 +6224,11 @@ msgstr "Modifica Root Live:" #: tools/editor/script_editor_debugger.cpp msgid "Set From Tree" -msgstr "Imposta da Tree:" +msgstr "Imposta da Tree" #: tools/editor/settings_config_dialog.cpp msgid "Shortcuts" -msgstr "" +msgstr "Scorciatoie" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -6200,12 +6266,18 @@ msgstr "Cambia lunghezza Ray Shape" msgid "Change Notifier Extents" msgstr "Cambia Estensione di Notifier" +#~ msgid "Binds (Extra Params):" +#~ msgstr "Lega (Parametri Extra):" + +#~ msgid "Method In Node:" +#~ msgstr "Metodo Nel Nodo:" + +#~ msgid "Reload Tool Script (Soft)" +#~ msgstr "Ricarica Tool Script (Soft)" + #~ msgid "Edit Connections.." #~ msgstr "Modifica Connessioni.." -#~ msgid "Connections:" -#~ msgstr "Connessioni:" - #~ msgid "Set Params" #~ msgstr "Imposta parametri" @@ -6249,8 +6321,8 @@ msgstr "Cambia Estensione di Notifier" #~ msgstr "" #~ "NOTA: Non sei obbligato ad importare le texture per i progetti 2D. È " #~ "sufficiente copiare i tuoi file .jpg o .png nel tuo progetto, e cambiare " -#~ "le opzioni di esportazione successivamente. Gli atlas possono essere anche " -#~ "generati in esportazione." +#~ "le opzioni di esportazione successivamente. Gli atlas possono essere " +#~ "anche generati in esportazione." #~ msgid "Overwrite Existing Scene" #~ msgstr "Sovrascrivi Scena esistente" diff --git a/tools/translations/ko.po b/tools/translations/ko.po index 2a6ee8e06f..990a9aba82 100644 --- a/tools/translations/ko.po +++ b/tools/translations/ko.po @@ -1,21 +1,63 @@ -# LANGUAGE translation of the Godot Engine editor +# Korean translation of the Godot Engine editor # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +# volzhs <volzhs@gmail.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: volzhs <volzhs@gmail.com>\n" -"Language-Team: \n" +"PO-Revision-Date: 2016-06-19 13:30+0000\n" +"Last-Translator: 박한얼 <volzhs@gmail.com>\n" +"Language-Team: Korean <https://hosted.weblate.org/projects/godot-" +"engine/godot/ko/>\n" "Language: ko\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 1.8.8\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 2.7-dev\n" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "convert()하기 위한 ì¸ìž íƒ€ìž…ì´ ìœ íš¨í•˜ì§€ 않습니다, TYPE_* ìƒìˆ˜ë¥¼ 사용하세요." + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "ë””ì½”ë”©í• ë°”ì´íŠ¸ê°€ 모ìžë¼ê±°ë‚˜, ìœ íš¨í•˜ì§€ ì•Šì€ í˜•ì‹ìž…니다." + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "ìŠ¤í… ì¸ìžê°€ ì œë¡œìž…ë‹ˆë‹¤!" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "스í¬ë¦½íŠ¸ì˜ ì¸ìŠ¤í„´ìŠ¤ê°€ 아님" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "스í¬ë¦½íŠ¸ì— ê¸°ë°˜í•˜ì§€ 않ìŒ" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "리소스 파ì¼ì— 기반하지 않ìŒ" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ì¸ìŠ¤í„´ìŠ¤ Dictionary í˜•ì‹ (@path ì—†ìŒ)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ì¸ìŠ¤í„´ìŠ¤ Dictionary í˜•ì‹ (@path ì—서 스í¬ë¦½íŠ¸ë¥¼ ë¡œë“œí• ìˆ˜ ì—†ìŒ)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ì¸ìŠ¤í„´ìŠ¤ Dictionary í˜•ì‹ (@pathì˜ ìŠ¤í¬ë¦½íŠ¸ê°€ ìœ íš¨í•˜ì§€ 않ìŒ)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ì¸ìŠ¤í„´ìŠ¤ Dictionary (서브í´ëž˜ìŠ¤ê°€ ìœ íš¨í•˜ì§€ 않ìŒ)" #: scene/2d/animated_sprite.cpp msgid "" @@ -30,8 +72,8 @@ msgid "" "Only one visible CanvasModulate is allowed per scene (or set of instanced " "scenes). The first created one will work, while the rest will be ignored." msgstr "" -"씬마다 ë³´ì´ëŠ” CanvasModulateê°€ 단 하나만 허용ë©ë‹ˆë‹¤. 첫번째로 ìƒì„±ëœ 것만 ë™ìž‘" -"í•˜ê³ , 나머지는 무시ë©ë‹ˆë‹¤." +"씬마다 ë³´ì´ëŠ” CanvasModulateê°€ 단 하나만 허용ë©ë‹ˆë‹¤. 첫번째로 ìƒì„±ëœ 것만 ë™" +"ìž‘í•˜ê³ , 나머지는 무시ë©ë‹ˆë‹¤." #: scene/2d/collision_polygon_2d.cpp msgid "" @@ -40,8 +82,8 @@ msgid "" "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" "CollisionPolygon2D는 CollisionObject2Dì— ì¶©ëŒ ëª¨ì–‘ì„ ì§€ì •í•˜ê¸° 위해서만 사용ë©" -"니다. Area2D, StaticBody2D, RigidBody2D, KinematicBody2D ë“±ì— ìžì‹ 노드로 추가" -"하여 사용합니다." +"니다. Area2D, StaticBody2D, RigidBody2D, KinematicBody2D ë“±ì— ìžì‹ 노드로 ì¶”" +"가하여 사용합니다." #: scene/2d/collision_polygon_2d.cpp msgid "An empty CollisionPolygon2D has no effect on collision." @@ -54,16 +96,16 @@ msgid "" "StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." msgstr "" "CollisionShape2D는 CollisionObject2Dì— ì¶©ëŒ ëª¨ì–‘ì„ ì§€ì •í•˜ê¸° 위해서만 사용ë©ë‹ˆ" -"다. Area2D, StaticBody2D, RigidBody2D, KinematicBody2D ë“±ì— ìžì‹ 노드로 추가하" -"ì—¬ 사용합니다." +"다. Area2D, StaticBody2D, RigidBody2D, KinematicBody2D ë“±ì— ìžì‹ 노드로 추가" +"하여 사용합니다." #: scene/2d/collision_shape_2d.cpp msgid "" "A shape must be provided for CollisionShape2D to function. Please create a " "shape resource for it!" msgstr "" -"CollisionShape2Dê°€ ê¸°ëŠ¥ì„ í•˜ê¸° 위해서는 반드시 ëª¨ì–‘ì´ ì œê³µë˜ì–´ì•¼ 합니다. 모양 " -"리소스를 만드세요!" +"CollisionShape2Dê°€ ê¸°ëŠ¥ì„ í•˜ê¸° 위해서는 반드시 ëª¨ì–‘ì´ ì œê³µë˜ì–´ì•¼ 합니다. 모" +"ì–‘ 리소스를 만드세요!" #: scene/2d/light_2d.cpp msgid "" @@ -86,8 +128,8 @@ msgid "" "A NavigationPolygon resource must be set or created for this node to work. " "Please set a property or draw a polygon." msgstr "" -"ì´ ë…¸ë“œê°€ ë™ìž‘하기 위해서는 NavigationPolygon 리소스를 ì§€ì • ë˜ëŠ” ìƒì„±í•´ì•¼ 합니" -"다. ì†ì„±ì„ ì§€ì •í•˜ê±°ë‚˜, í´ë¦¬ê³¤ì„ 그리세요." +"ì´ ë…¸ë“œê°€ ë™ìž‘하기 위해서는 NavigationPolygon 리소스를 ì§€ì • ë˜ëŠ” ìƒì„±í•´ì•¼ í•©" +"니다. ì†ì„±ì„ ì§€ì •í•˜ê±°ë‚˜, í´ë¦¬ê³¤ì„ 그리세요." #: scene/2d/navigation_polygon.cpp msgid "" @@ -125,16 +167,16 @@ msgstr "" #: scene/2d/sprite.cpp msgid "" -"Path property must point to a valid Viewport node to work. Such Viewport must " -"be set to 'render target' mode." +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." msgstr "" "Path ì†ì„±ì€ ìœ íš¨í•œ Viewport 노드를 가리켜야 합니다. 가리킨 Viewport는 ë˜í•œ " "'render target' 모드로 ì„¤ì •ë˜ì–´ì•¼ 합니다." #: scene/2d/sprite.cpp msgid "" -"The Viewport set in the path property must be set as 'render target' in order " -"for this sprite to work." +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." msgstr "" "ì´ Spriteê°€ ë™ìž‘하기 위해서는 Path ì†ì„±ì— ì§€ì •ëœ Viewportê°€ 'render target'으" "로 ì„¤ì •ë˜ì–´ì•¼ 합니다." @@ -162,8 +204,8 @@ msgid "" "A shape must be provided for CollisionShape to function. Please create a " "shape resource for it!" msgstr "" -"CollisionShapeì´ ê¸°ëŠ¥ì„ í•˜ê¸° 위해서는 ëª¨ì–‘ì´ ì œê³µë˜ì–´ì•¼ 합니다. 모양 리소스를 " -"만드세요!" +"CollisionShapeì´ ê¸°ëŠ¥ì„ í•˜ê¸° 위해서는 ëª¨ì–‘ì´ ì œê³µë˜ì–´ì•¼ 합니다. 모양 리소스" +"를 만드세요!" #: scene/3d/collision_polygon.cpp msgid "" @@ -187,11 +229,11 @@ msgstr "" #: scene/3d/navigation_mesh.cpp msgid "" -"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " -"only provides navigation data." +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." msgstr "" -"NavigationMeshInstanceì€ Navigation ë…¸ë“œì˜ í•˜ìœ„ì— ìžˆì–´ì•¼ 합니다. ì´ê²ƒì€ 네비게" -"ì´ì…˜ ë°ì´íƒ€ë§Œì„ ì œê³µí•©ë‹ˆë‹¤." +"NavigationMeshInstanceì€ Navigation ë…¸ë“œì˜ í•˜ìœ„ì— ìžˆì–´ì•¼ 합니다. ì´ê²ƒì€ 네비" +"게ì´ì…˜ ë°ì´íƒ€ë§Œì„ ì œê³µí•©ë‹ˆë‹¤." #: scene/3d/scenario_fx.cpp msgid "" @@ -390,7 +432,8 @@ msgstr "붙여넣기" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_editor_plugin.cpp -#: tools/editor/plugins/shader_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "Select All" msgstr "ì „ì²´ì„ íƒ" @@ -410,8 +453,8 @@ msgstr "ë˜ëŒë¦¬ê¸°" #: scene/gui/popup.cpp msgid "" "Popups will hide by default unless you call popup() or any of the popup*() " -"functions. Making them visible for editing is fine though, but they will hide " -"upon running." +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." msgstr "" "Popupì€ popup() ë˜ëŠ” 기타 popup*() 함수를 호출하기 ì „ê¹Œì§€ëŠ” 기본ì 으로 숨겨집" "니다. í™”ë©´ì„ íŽ¸ì§‘í•˜ëŠ” ë™ì•ˆ 보여지ë„ë¡ í• ìˆ˜ëŠ” 있으나, 실행시ì—는 숨겨집니다." @@ -424,29 +467,29 @@ msgid "" "texture to some node for display." msgstr "" "Viewportê°€ Render Target으로 ì„¤ì •ë˜ì§€ 않았습니다. Viewportì˜ ë‚´ìš©ì„ í™”ë©´ìƒì— " -"ì§ì ‘ í‘œì‹œí•˜ê³ ìž í• ê²½ìš°, 사ì´ì¦ˆë¥¼ 얻기 위해서 Controlì˜ ìžì‹ 노드로 만들어야합" -"니다. ê·¸ë ‡ì§€ ì•Šì„ ê²½ìš°, í™”ë©´ì— í‘œì‹œí•˜ê¸° 위해서는 Render target으로 ì„¤ì •í•˜ê³ ë‚´" -"ë¶€ì ì¸ í…스ì³ë¥¼ 다른 ë…¸ë“œì— í• ë‹¹í•´ì•¼ 합니다." +"ì§ì ‘ í‘œì‹œí•˜ê³ ìž í• ê²½ìš°, 사ì´ì¦ˆë¥¼ 얻기 위해서 Controlì˜ ìžì‹ 노드로 만들어야" +"합니다. ê·¸ë ‡ì§€ ì•Šì„ ê²½ìš°, í™”ë©´ì— í‘œì‹œí•˜ê¸° 위해서는 Render target으로 ì„¤ì •í•˜" +"ê³ ë‚´ë¶€ì ì¸ í…스ì³ë¥¼ 다른 ë…¸ë“œì— í• ë‹¹í•´ì•¼ 합니다." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Error initializing FreeType." -msgstr "FreeType 초기화 ì—러" +msgstr "FreeType 초기화 ì—러." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Unknown font format." -msgstr "알 수 없는 í°íЏ í¬ë©§" +msgstr "알 수 없는 í°íЏ í¬ë©§." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Error loading font." -msgstr "í°íЏ 로딩 ì—러" +msgstr "í°íЏ 로딩 ì—러." #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Invalid font size." -msgstr "ìœ ìš”í•˜ì§€ ì•Šì€ í°íЏ 사ì´ì¦ˆ" +msgstr "ìœ ìš”í•˜ì§€ ì•Šì€ í°íЏ 사ì´ì¦ˆ." #: tools/editor/animation_editor.cpp msgid "Disabled" @@ -525,6 +568,18 @@ msgid "Anim Delete Keys" msgstr "키 ì‚ì œ" #: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "ì—°ì†ì ì¸" + +#: tools/editor/animation_editor.cpp +msgid "Discrete" +msgstr "비연ì†ì ì¸" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "트리거" + +#: tools/editor/animation_editor.cpp msgid "Anim Add Key" msgstr "키 추가" @@ -632,6 +687,10 @@ msgid "Change Anim Loop" msgstr "ì• ë‹ˆë©”ì´ì…˜ 루프 변경" #: tools/editor/animation_editor.cpp +msgid "Change Anim Loop Interpolation" +msgstr "ì• ë‹ˆë©”ì´ì…˜ 루프 ë³´ê°„ 변경" + +#: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" msgstr "ì• ë‹ˆë©”ì´ì…˜ íƒ€ìž…ì§€ì • ê°’ 키 만들기" @@ -669,23 +728,27 @@ msgstr "커서 단계 스냅 (ì´ˆ)." #: tools/editor/animation_editor.cpp msgid "Enable/Disable looping in animation." -msgstr "ì• ë‹ˆë©”ì´ì…˜ 루프 활성화/비활성화 " +msgstr "ì• ë‹ˆë©”ì´ì…˜ 루프 활성화/비활성화." + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable interpolation when looping animation." +msgstr "ì• ë‹ˆë©”ì´ì…˜ 루프 시 ë³´ê°„ 활성화/비활성화." #: tools/editor/animation_editor.cpp msgid "Add new tracks." -msgstr "새 트랙 추가" +msgstr "새 트랙 추가." #: tools/editor/animation_editor.cpp msgid "Move current track up." -msgstr "현재 íŠ¸ëž™ì„ ìœ„ë¡œ ì´ë™" +msgstr "현재 íŠ¸ëž™ì„ ìœ„ë¡œ ì´ë™." #: tools/editor/animation_editor.cpp msgid "Move current track down." -msgstr "현재 íŠ¸ëž™ì„ ì•„ëž˜ë¡œ ì´ë™" +msgstr "현재 íŠ¸ëž™ì„ ì•„ëž˜ë¡œ ì´ë™." #: tools/editor/animation_editor.cpp msgid "Remove selected track." -msgstr "ì„ íƒëœ 트랙 ì‚ì œ" +msgstr "ì„ íƒëœ 트랙 ì‚ì œ." #: tools/editor/animation_editor.cpp msgid "Track tools" @@ -693,7 +756,7 @@ msgstr "트랙 ë„구" #: tools/editor/animation_editor.cpp msgid "Enable editing of individual keys by clicking them." -msgstr "개별 키를 í´ë¦í•¨ìœ¼ë¡œì¨ 편집 활성화" +msgstr "개별 키를 í´ë¦í•¨ìœ¼ë¡œì¨ 편집 활성화." #: tools/editor/animation_editor.cpp msgid "Anim. Optimizer" @@ -858,7 +921,7 @@ msgstr "ì¼ì¹˜ ê²°ê³¼ ì—†ìŒ" #: tools/editor/code_editor.cpp msgid "Replaced %d Ocurrence(s)." -msgstr "%d 회 바뀜" +msgstr "%d 회 변경ë¨." #: tools/editor/code_editor.cpp msgid "Replace" @@ -897,11 +960,11 @@ msgstr "다ìŒ" #: tools/editor/code_editor.cpp msgid "Replaced %d ocurrence(s)." -msgstr "%d 회 바뀜" +msgstr "%d 회 변경ë¨." #: tools/editor/code_editor.cpp msgid "Not found!" -msgstr "ì°¾ì„ ìˆ˜ 없습니다." +msgstr "ì°¾ì„ ìˆ˜ 없습니다!" #: tools/editor/code_editor.cpp msgid "Replace By" @@ -933,16 +996,12 @@ msgstr "칼럼:" #: tools/editor/connections_dialog.cpp msgid "Method in target Node must be specified!" -msgstr "ëŒ€ìƒ ë…¸ë“œì˜ í•¨ìˆ˜ë¥¼ 명시해야합니다." +msgstr "ëŒ€ìƒ ë…¸ë“œì˜ í•¨ìˆ˜ë¥¼ 명시해야합니다!" #: tools/editor/connections_dialog.cpp -msgid "Connect To Node:" +msgid "Conect To Node:" msgstr "ì—°ê²°í• ë…¸ë“œ:" -#: tools/editor/connections_dialog.cpp -msgid "Binds (Extra Params):" -msgstr "ë°”ì¸ë“œ (추가 파ë¼ë¯¸í„°):" - #: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp #: tools/editor/plugins/item_list_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp @@ -952,17 +1011,22 @@ msgstr "추가" #: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp -#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp msgid "Remove" msgstr "ì‚ì œ" #: tools/editor/connections_dialog.cpp -msgid "Path To Node:" -msgstr "노드 경로" +msgid "Add Extra Call Argument:" +msgstr "별ë„ì˜ í˜¸ì¶œ ì¸ìž 추가:" #: tools/editor/connections_dialog.cpp -msgid "Method In Node:" -msgstr "ë…¸ë“œì˜ í•¨ìˆ˜:" +msgid "Extra Call Arguments:" +msgstr "별ë„ì˜ í˜¸ì¶œ ì¸ìž:" + +#: tools/editor/connections_dialog.cpp +msgid "Path to Node:" +msgstr "노드 경로:" #: tools/editor/connections_dialog.cpp msgid "Make Function" @@ -985,6 +1049,10 @@ msgid "Connect '%s' to '%s'" msgstr "'%s'를 '%s'ì— ì—°ê²°" #: tools/editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "ì‹œê·¸ë„ ì—°ê²°:" + +#: tools/editor/connections_dialog.cpp msgid "Create Subscription" msgstr "ì—°ê²° í•´ì œ" @@ -1125,7 +1193,8 @@ msgid "Delete selected files?" msgstr "ì„ íƒëœ 파ì¼ë“¤ì„ ì‚ì œí•˜ì‹œê² ìŠµë‹ˆê¹Œ?" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/item_list_editor_plugin.cpp tools/editor/scenes_dock.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp msgid "Delete" msgstr "ì‚ì œ" @@ -1163,7 +1232,7 @@ msgstr "미리보기:" #: tools/editor/editor_file_system.cpp msgid "Cannot go into subdir:" -msgstr "하위 ë””ë ‰í† ë¦¬ë¡œ ì´ë™í• 수 없습니다." +msgstr "하위 ë””ë ‰í† ë¦¬ë¡œ ì´ë™í• 수 없습니다:" #: tools/editor/editor_file_system.cpp msgid "ScanSources" @@ -1260,7 +1329,7 @@ msgstr "ì„¤ì • 중.." #: tools/editor/editor_log.cpp msgid " Output:" -msgstr "ì¶œë ¥:" +msgstr " ì¶œë ¥:" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Importing" @@ -1326,7 +1395,7 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "Failed to load resource." -msgstr "리소스 로드 실패" +msgstr "리소스 로드 실패." #: tools/editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" @@ -1415,7 +1484,7 @@ msgstr "현재 ì”¬ì´ ì €ìž¥ë˜ì§€ 않았습니다. ì‹¤í–‰ì „ì— ì €ìž¥í•´ì£¼ì„¸ #: tools/editor/editor_node.cpp msgid "Could not start subprocess!" -msgstr "서브 프로세스를 ì‹œìž‘í• ìˆ˜ 없습니다." +msgstr "서브 프로세스를 ì‹œìž‘í• ìˆ˜ 없습니다!" #: tools/editor/editor_node.cpp msgid "Open Scene" @@ -1507,8 +1576,8 @@ msgstr "오우" #: tools/editor/editor_node.cpp msgid "" -"Error loading scene, it must be inside the project path. Use 'Import' to open " -"the scene, then save it inside the project path." +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." msgstr "" "씬 로딩 중 ì—러가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. 프로ì 트 경로 ì•ˆì— ì¡´ìž¬í•´ì•¼ 합니다. 'ê°€ì ¸ì˜¤" "기'로 ì”¬ì„ ì—° 후ì—, 프로ì 트 경로 ì•ˆì— ì €ìž¥í•˜ì„¸ìš”." @@ -1531,7 +1600,7 @@ msgstr "ë ˆì´ì•„웃 로드" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Default" -msgstr "" +msgstr "Default" #: tools/editor/editor_node.cpp msgid "Delete Layout" @@ -1556,11 +1625,19 @@ msgstr "씬" #: tools/editor/editor_node.cpp msgid "Go to previously opened scene." -msgstr "ì´ì „ì— ì—´ì—ˆë˜ ì”¬ìœ¼ë¡œ 가기" +msgstr "ì´ì „ì— ì—´ì—ˆë˜ ì”¬ìœ¼ë¡œ 가기." + +#: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "ì „ì²´í™”ë©´ 모드" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "초집중 모드" #: tools/editor/editor_node.cpp msgid "Operations with scene files." -msgstr "씬 íŒŒì¼ ë™ìž‘" +msgstr "씬 íŒŒì¼ ë™ìž‘." #: tools/editor/editor_node.cpp msgid "New Scene" @@ -1633,7 +1710,7 @@ msgstr "ì¢…ë£Œí•˜ê³ í”„ë¡œì 트 목ë¡ìœ¼ë¡œ ëŒì•„가기" #: tools/editor/editor_node.cpp msgid "Import assets to the project." -msgstr "프로ì 트로 ì—ì…‹ ê°€ì ¸ì˜¤ê¸°" +msgstr "프로ì 트로 ì—ì…‹ ê°€ì ¸ì˜¤ê¸°." #: tools/editor/editor_node.cpp #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp @@ -1657,7 +1734,7 @@ msgstr "ë„구" #: tools/editor/editor_node.cpp msgid "Export the project to many platforms." -msgstr "프로ì 트를 ë§Žì€ í”Œëž«í¼ìœ¼ë¡œ 내보내기" +msgstr "프로ì 트를 ë§Žì€ í”Œëž«í¼ìœ¼ë¡œ 내보내기." #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Export" @@ -1682,7 +1759,7 @@ msgstr "씬 ì¼ì‹œ ì •ì§€" #: tools/editor/editor_node.cpp msgid "Stop the scene." -msgstr "씬 ì •ì§€" +msgstr "씬 ì •ì§€." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -1691,7 +1768,7 @@ msgstr "ì •ì§€" #: tools/editor/editor_node.cpp msgid "Play the edited scene." -msgstr "편집 ì¤‘ì¸ ì”¬ 실행" +msgstr "편집 ì¤‘ì¸ ì”¬ 실행." #: tools/editor/editor_node.cpp msgid "Play Scene" @@ -1711,8 +1788,8 @@ msgstr "ì›ê²© 디버그 ë°°í¬" #: tools/editor/editor_node.cpp msgid "" -"When exporting or deploying, the resulting executable will attempt to connect " -"to the IP of this computer in order to be debugged." +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." msgstr "" "내보내기나 ë°°í¬ë¥¼ í• ë•Œ, 실행 파ì¼ì´ ë””ë²„ê¹…ì„ ìœ„í•´ì„œ ì´ ì»´í“¨í„°ì˜ IP로 ì—°ê²°ì„ " "시ë„합니다." @@ -1727,14 +1804,15 @@ msgid "" "executable.\n" "The filesystem will be provided from the project by the editor over the " "network.\n" -"On Android, deploy will use the USB cable for faster performance. This option " -"speeds up testing for games with a large footprint." +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." msgstr "" "ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, 내보내기나 ë°°í¬ëŠ” ìµœì†Œí•œì˜ ì‹¤í–‰íŒŒì¼ì„ ìƒì„±í•©" "니다.\n" "íŒŒì¼ ì‹œìŠ¤í…œì€ ë„¤íŠ¸ì›Œí¬ë¥¼ 통해서 ì—디터 ìƒì˜ 프로ì 트가 ì œê³µí•©ë‹ˆë‹¤.\n" -"안드로ì´ë“œì˜ 경우, USB ì¼€ì´ë¸”ì„ ì‚¬ìš©í•˜ì—¬ ë°°í¬í• 경우 ë” ë¹ ë¥¸ í¼í¬ë¨¼ìŠ¤ë¥¼ ì œê³µí•©" -"니다. ì´ ì˜µì…˜ì€ í° ì„¤ì¹˜ ìš©ëŸ‰ì„ ìš”êµ¬í•˜ëŠ” ê²Œìž„ì˜ í…ŒìŠ¤íŠ¸ë¥¼ ë¹ ë¥´ê²Œ í• ìˆ˜ 있습니다." +"안드로ì´ë“œì˜ 경우, USB ì¼€ì´ë¸”ì„ ì‚¬ìš©í•˜ì—¬ ë°°í¬í• 경우 ë” ë¹ ë¥¸ í¼í¬ë¨¼ìŠ¤ë¥¼ ì œê³µ" +"합니다. ì´ ì˜µì…˜ì€ í° ì„¤ì¹˜ ìš©ëŸ‰ì„ ìš”êµ¬í•˜ëŠ” ê²Œìž„ì˜ í…ŒìŠ¤íŠ¸ë¥¼ ë¹ ë¥´ê²Œ í• ìˆ˜ 있습니" +"다." #: tools/editor/editor_node.cpp msgid "Visible Collision Shapes" @@ -1745,8 +1823,8 @@ msgid "" "Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " "running game if this option is turned on." msgstr "" -"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, ê²Œìž„ì´ ì‹¤í–‰ë˜ëŠ” ë™ì•ˆ (2D와 3Dì˜) ì¶©ëŒ ëª¨ì–‘ê³¼ " -"Raycast 노드가 표시ë©ë‹ˆë‹¤." +"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, ê²Œìž„ì´ ì‹¤í–‰ë˜ëŠ” ë™ì•ˆ (2D와 3Dì˜) ì¶©ëŒ ëª¨ì–‘" +"ê³¼ Raycast 노드가 표시ë©ë‹ˆë‹¤." #: tools/editor/editor_node.cpp msgid "Visible Navigation" @@ -1757,8 +1835,8 @@ msgid "" "Navigation meshes and polygons will be visible on the running game if this " "option is turned on." msgstr "" -"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, ê²Œìž„ì´ ì‹¤í–‰ë˜ëŠ” ë™ì•ˆ 네비게ì´ì…˜ 메쉬가 표시ë©" -"니다." +"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, ê²Œìž„ì´ ì‹¤í–‰ë˜ëŠ” ë™ì•ˆ 네비게ì´ì…˜ 메쉬가 표시" +"ë©ë‹ˆë‹¤." #: tools/editor/editor_node.cpp msgid "Sync Scene Changes" @@ -1771,10 +1849,10 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" -"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, ì—디터ìƒì˜ ì”¬ì˜ ë³€ê²½ì‚¬í•ì´ ì‹¤í–‰ì¤‘ì¸ ê²Œìž„ì— ë°˜" -"ì˜ë©ë‹ˆë‹¤.\n" -"ê¸°ê¸°ì— ì›ê²©ìœ¼ë¡œ 사용ë˜ëŠ” 경우, ë„¤íŠ¸ì›Œí¬ íŒŒì¼ ì‹œìŠ¤í…œê³¼ 함께하면 ë”ìš± 효과ì 입니" -"다." +"ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, ì—디터ìƒì˜ ì”¬ì˜ ë³€ê²½ì‚¬í•ì´ ì‹¤í–‰ì¤‘ì¸ ê²Œìž„ì— " +"ë°˜ì˜ë©ë‹ˆë‹¤.\n" +"ê¸°ê¸°ì— ì›ê²©ìœ¼ë¡œ 사용ë˜ëŠ” 경우, ë„¤íŠ¸ì›Œí¬ íŒŒì¼ ì‹œìŠ¤í…œê³¼ 함께하면 ë”ìš± 효과ì ìž…" +"니다." #: tools/editor/editor_node.cpp msgid "Sync Script Changes" @@ -1789,8 +1867,8 @@ msgid "" msgstr "" "ì´ ì˜µì…˜ì´ í™œì„±í™” ë˜ì–´ ìžˆì„ ê²½ìš°, 스í¬ë¦½íŠ¸ë¥¼ ìˆ˜ì •í•˜ê³ ì €ìž¥í•˜ë©´ ì‹¤í–‰ì¤‘ì¸ ê²Œìž„ì—" "서 다시 ì½ì–´ 들입니다.\n" -"ê¸°ê¸°ì— ì›ê²©ìœ¼ë¡œ 사용ë˜ëŠ” 경우, ë„¤íŠ¸ì›Œí¬ íŒŒì¼ ì‹œìŠ¤í…œê³¼ 함께하면 ë”ìš± 효과ì 입니" -"다." +"ê¸°ê¸°ì— ì›ê²©ìœ¼ë¡œ 사용ë˜ëŠ” 경우, ë„¤íŠ¸ì›Œí¬ íŒŒì¼ ì‹œìŠ¤í…œê³¼ 함께하면 ë”ìš± 효과ì ìž…" +"니다." #: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp msgid "Settings" @@ -1842,25 +1920,23 @@ msgstr "디스í¬ì—서 기존 리소스를 로드하여 편집합니다." #: tools/editor/editor_node.cpp msgid "Save the currently edited resource." -msgstr "현재 íŽ¸ì§‘ëœ ë¦¬ì†ŒìŠ¤ ì €ìž¥" +msgstr "현재 íŽ¸ì§‘ëœ ë¦¬ì†ŒìŠ¤ ì €ìž¥." -#: tools/editor/editor_node.cpp -#: tools/editor/plugins/animation_player_editor_plugin.cpp -#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Save As.." -msgstr "다른 ì´ë¦„으로 ì €ìž¥" +msgstr "다른 ì´ë¦„으로 ì €ìž¥.." #: tools/editor/editor_node.cpp msgid "Go to the previous edited object in history." -msgstr "ížˆìŠ¤í† ë¦¬ìƒ ì´ì „ì— íŽ¸ì§‘í•œ 오브ì 트로 가기" +msgstr "ížˆìŠ¤í† ë¦¬ìƒ ì´ì „ì— íŽ¸ì§‘í•œ 오브ì 트로 가기." #: tools/editor/editor_node.cpp msgid "Go to the next edited object in history." -msgstr "ížˆìŠ¤í† ë¦¬ìƒ ë‹¤ìŒì— 편집한 오브ì 트로 가기" +msgstr "ížˆìŠ¤í† ë¦¬ìƒ ë‹¤ìŒì— 편집한 오브ì 트로 가기." #: tools/editor/editor_node.cpp msgid "History of recently edited objects." -msgstr "최근 편집 오브ì 트 ížˆìŠ¤í† ë¦¬" +msgstr "최근 편집 오브ì 트 ížˆìŠ¤í† ë¦¬." #: tools/editor/editor_node.cpp msgid "Object properties." @@ -2037,7 +2113,7 @@ msgstr "노드ì—서 ê°€ì ¸ì˜¤ê¸°:" #: tools/editor/file_type_cache.cpp msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" -msgstr "file_type_cache.cch를 열수 없어서, íŒŒì¼ íƒ€ìž… ìºì‰¬ë¥¼ ì €ìž¥í•˜ì§€ 않습니다." +msgstr "file_type_cache.cch를 열수 없어서, íŒŒì¼ íƒ€ìž… ìºì‰¬ë¥¼ ì €ìž¥í•˜ì§€ 않습니다!" #: tools/editor/groups_editor.cpp msgid "Add to Group" @@ -2060,7 +2136,7 @@ msgstr "ê°€ì ¸ì˜¬ 비트 마스í¬ê°€ 없습니다!" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Target path is empty." -msgstr "ëŒ€ìƒ ê²½ë¡œê°€ 없습니다!" +msgstr "ëŒ€ìƒ ê²½ë¡œê°€ 없습니다." #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp @@ -2119,7 +2195,7 @@ msgstr "소스 í°íЏ 파ì¼ì´ 없습니다!" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "No target font resource!" -msgstr "í°íЏ 리소스 경로가 없습니다." +msgstr "í°íЏ 리소스 경로가 없습니다!" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Can't load/process source font." @@ -2143,7 +2219,7 @@ msgstr "리소스 경로:" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "The quick brown fox jumps over the lazy dog." -msgstr "" +msgstr "The quick brown fox jumps over the lazy dog." #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Test:" @@ -2289,7 +2365,7 @@ msgstr "ê°€ì ¸ì˜¤ê¸° 후 ì‹¤í–‰í• ìŠ¤í¬ë¦½íŠ¸ê°€ ìœ íš¨í•˜ì§€ 않거나 ê¹¨ì ¸ #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Error importing scene." -msgstr "씬 ê°€ì ¸ì˜¤ê¸° ì—러" +msgstr "씬 ê°€ì ¸ì˜¤ê¸° ì—러." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Import 3D Scene" @@ -2489,8 +2565,8 @@ msgid "" "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " "the project." msgstr "" -"알림: 2D í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸°ê°€ 필수는 아닙니다. png/jpg 파ì¼ë“¤ì„ 프로ì íŠ¸ì— ë³µì‚¬í•´" -"서 ì‚¬ìš©í•´ë„ ë©ë‹ˆë‹¤." +"알림: 2D í…ìŠ¤ì³ ê°€ì ¸ì˜¤ê¸°ê°€ 필수는 아닙니다. png/jpg 파ì¼ë“¤ì„ 프로ì íŠ¸ì— ë³µì‚¬" +"해서 ì‚¬ìš©í•´ë„ ë©ë‹ˆë‹¤." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Crop empty space." @@ -2643,7 +2719,7 @@ msgstr "새 ì• ë‹ˆë©”ì´ì…˜ ì´ë¦„:" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "New Anim" -msgstr "" +msgstr "New Anim" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Change Animation Name:" @@ -2738,19 +2814,27 @@ msgstr "ì• ë‹ˆë©”ì´ì…˜ ìž¬ìƒ ì†ë„를 ì „ì²´ì 으로 ì¡°ì ˆ." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Create new animation in player." -msgstr "새로운 ì• ë‹ˆë©”ì´ì…˜ 만들기" +msgstr "새로운 ì• ë‹ˆë©”ì´ì…˜ 만들기." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "디스í¬ì—서 ì• ë‹ˆë©”ì´ì…˜ 로드." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load an animation from disk." -msgstr "디스í¬ì—서 ì• ë‹ˆë©”ì´ì…˜ 로드" +msgstr "디스í¬ì—서 ì• ë‹ˆë©”ì´ì…˜ 로드." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Save the current animation" msgstr "현재 ì• ë‹ˆë©”ì´ì…˜ ì €ìž¥" #: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As" +msgstr "다른 ì´ë¦„으로 ì €ìž¥" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." -msgstr "ì• ë‹ˆë©”ì´ì…˜ ëª©ë¡ í‘œì‹œ" +msgstr "ì• ë‹ˆë©”ì´ì…˜ ëª©ë¡ í‘œì‹œ." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Autoplay on Load" @@ -3006,7 +3090,7 @@ msgstr "ë¼ì´íŠ¸ë§µ 오í¬íŠ¸ë¦¬ 굽기 프로세스 ìž¬ì„¤ì • (처ìŒë¶€í„° ë‹ #: tools/editor/plugins/camera_editor_plugin.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Preview" -msgstr "미리보기:" +msgstr "미리보기" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Configure Snap" @@ -3101,7 +3185,7 @@ msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Click to change object's rotation pivot." -msgstr "오브ì íŠ¸ì˜ íšŒì „ 피벗 변경" +msgstr "오브ì íŠ¸ì˜ íšŒì „ 피벗 변경." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Pan Mode" @@ -3273,7 +3357,7 @@ msgstr "í´ë¦¬ê³¤ 편집 (ì ì‚ì œ)" #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Create a new polygon from scratch." -msgstr "처ìŒë¶€í„° 새로운 í´ë¦¬ê³¤ 만들기" +msgstr "처ìŒë¶€í„° 새로운 í´ë¦¬ê³¤ 만들기." #: tools/editor/plugins/collision_polygon_editor_plugin.cpp msgid "Create Poly3D" @@ -3346,17 +3430,17 @@ msgstr "기존 í´ë¦¬ê³¤ 편집:" #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "LMB: Move Point." -msgstr "좌í´ë¦: í¬ì¸íЏ ì´ë™" +msgstr "좌í´ë¦: í¬ì¸íЏ ì´ë™." #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Ctrl+LMB: Split Segment." -msgstr "컨트롤+좌í´ë¦: 세그먼트 ë¶„í• " +msgstr "컨트롤+좌í´ë¦: 세그먼트 ë¶„í• ." #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "RMB: Erase Point." -msgstr "ìš°í´ë¦: í¬ì¸íЏ ì‚ì œ" +msgstr "ìš°í´ë¦: í¬ì¸íЏ ì‚ì œ." #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh is empty!" @@ -3392,7 +3476,7 @@ msgstr "MeshInstanceì— ë©”ì‰¬ê°€ 없습니다!" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Could not create outline!" -msgstr "ì™¸ê³½ì„ ì„ ë§Œë“¤ìˆ˜ 없습니다." +msgstr "ì™¸ê³½ì„ ì„ ë§Œë“¤ìˆ˜ 없습니다!" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Outline" @@ -3806,7 +3890,7 @@ msgstr "샘플 íŒŒì¼ ì—´ê¸°" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "ERROR: Couldn't load sample!" -msgstr "ì—러: ìƒ˜í”Œì„ ë¡œë“œí• ìˆ˜ 없습니다." +msgstr "ì—러: ìƒ˜í”Œì„ ë¡œë“œí• ìˆ˜ 없습니다!" #: tools/editor/plugins/sample_library_editor_plugin.cpp msgid "Add Sample" @@ -3869,7 +3953,8 @@ msgstr "테마 ê°€ì ¸ì˜¤ê¸°" msgid "Save Theme As.." msgstr "테마 다른 ì´ë¦„으로 ì €ìž¥.." -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "File" msgstr "파ì¼" @@ -3941,14 +4026,11 @@ msgid "Auto Indent" msgstr "ìžë™ 들여쓰기" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script" +#, fuzzy +msgid "Soft Reload Script" msgstr "툴 스í¬ë¦½íЏ 다시 로드" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script (Soft)" -msgstr "툴 스í¬ë¦½íЏ 다시 로드 (소프트)" - -#: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/shader_editor_plugin.cpp msgid "Find.." msgstr "찾기.." @@ -4038,8 +4120,8 @@ msgid "Help" msgstr "ë„움ë§" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Contextual" -msgstr "ë¬¸ë§¥ìƒ ì°¾ê¸°" +msgid "Contextual Help" +msgstr "ë„ì›€ë§ ë³´ê¸°" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Tutorials" @@ -4063,15 +4145,15 @@ msgstr "ë„ì›€ë§ ê²€ìƒ‰" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Search the reference documentation." -msgstr "ë ˆí¼ëŸ°ìФ 문서 검색" +msgstr "ë ˆí¼ëŸ°ìФ 문서 검색." #: tools/editor/plugins/script_editor_plugin.cpp msgid "Go to previous edited document." -msgstr "ì´ì „ 편집 문서로 ì´ë™" +msgstr "ì´ì „ 편집 문서로 ì´ë™." #: tools/editor/plugins/script_editor_plugin.cpp msgid "Go to next edited document." -msgstr "ë‹¤ìŒ íŽ¸ì§‘ 문서로 ì´ë™" +msgstr "ë‹¤ìŒ íŽ¸ì§‘ 문서로 ì´ë™." #: tools/editor/plugins/script_editor_plugin.cpp msgid "Create Script" @@ -4247,10 +4329,6 @@ msgid "Transform Aborted." msgstr "변형 중단." #: tools/editor/plugins/spatial_editor_plugin.cpp -msgid "View Plane Transform." -msgstr "ë·° í‰ë©´ 변형." - -#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." msgstr "Xì¶• 변형." @@ -4263,6 +4341,10 @@ msgid "Z-Axis Transform." msgstr "Zì¶• 변형." #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "ë·° í‰ë©´ 변형." + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scaling to %s%%." msgstr "%s%%로 í¬ê¸° 변경." @@ -4484,7 +4566,7 @@ msgstr "íšŒì „ 스냅 (ë„):" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scale Snap (%):" -msgstr "í¬ê¸° 스냅 (%)" +msgstr "í¬ê¸° 스냅 (%):" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Viewport Settings" @@ -4532,11 +4614,11 @@ msgstr "변환 타입" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Pre" -msgstr "" +msgstr "Pre" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Post" -msgstr "" +msgstr "Post" #: tools/editor/plugins/sprite_frames_editor_plugin.cpp msgid "ERROR: Couldn't load frame resource!" @@ -4644,56 +4726,60 @@ msgid "Remove Class Items" msgstr "í´ëž˜ìФ ì•„ì´í…œ ì‚ì œ" #: tools/editor/plugins/theme_editor_plugin.cpp -msgid "Create Template" -msgstr "템플릿 만들기" +msgid "Create Empty Template" +msgstr "빈 템플릿 만들기" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "빈 ì—디터 템플릿 만들기" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio1" -msgstr "" +msgstr "CheckBox Radio1" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio2" -msgstr "" +msgstr "CheckBox Radio2" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Item" -msgstr "" +msgstr "Item" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Check Item" -msgstr "" +msgstr "Check Item" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Checked Item" -msgstr "" +msgstr "Checked Item" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Has" -msgstr "" +msgstr "Has" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Many" -msgstr "" +msgstr "Many" #: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_export.cpp msgid "Options" -msgstr "" +msgstr "옵션" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Have,Many,Several,Options!" -msgstr "" +msgstr "Have,Many,Several,Options!" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Tab 1" -msgstr "" +msgstr "Tab 1" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Tab 2" -msgstr "" +msgstr "Tab 2" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Tab 3" -msgstr "" +msgstr "Tab 3" #: tools/editor/plugins/theme_editor_plugin.cpp #: tools/editor/project_settings.cpp tools/editor/scene_tree_editor.cpp @@ -4731,32 +4817,36 @@ msgid "Erase TileMap" msgstr "타ì¼ë§µ 지우기" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Bucket" -msgstr "채우기" +msgid "Erase selection" +msgstr "ì„ íƒë¶€ë¶„ 지우기" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Pick Tile" -msgstr "íƒ€ì¼ ì„ íƒ" +msgid "Find tile" +msgstr "íƒ€ì¼ ì°¾ê¸°" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Select" -msgstr "ì„ íƒ" +msgid "Transpose" +msgstr "바꾸기" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Erase Selection" -msgstr "ì„ íƒ ì§€ìš°ê¸°" +msgid "Mirror X" +msgstr "Xì¶• 뒤집기" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Transpose" -msgstr "바꾸기" +msgid "Mirror Y" +msgstr "Yì¶• 뒤집기" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror X (A)" -msgstr "Xì¶• 뒤집기 (A)" +msgid "Bucket" +msgstr "채우기" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror Y (S)" -msgstr "Yì¶• 뒤집기 (S)" +msgid "Pick Tile" +msgstr "íƒ€ì¼ ì„ íƒ" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "ì„ íƒ" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 0 degrees" @@ -4809,15 +4899,15 @@ msgstr "스í¬ë¦½íЏ 옵션 편집" #: tools/editor/project_export.cpp msgid "Please export outside the project folder!" -msgstr "프로ì 트 í´ë” ë°”ê¹¥ì— ë‚´ë³´ë‚´ê¸°ë¥¼ 하세요." +msgstr "프로ì 트 í´ë” ë°”ê¹¥ì— ë‚´ë³´ë‚´ê¸°ë¥¼ 하세요!" #: tools/editor/project_export.cpp msgid "Error exporting project!" -msgstr "프로ì 트 내보내기 중 ì—러" +msgstr "프로ì 트 내보내기 중 ì—러!" #: tools/editor/project_export.cpp msgid "Error writing the project PCK!" -msgstr "프로ì 트 PCK 작성중 ì—러" +msgstr "프로ì 트 PCK 작성중 ì—러!" #: tools/editor/project_export.cpp msgid "No exporter for platform '%s' yet." @@ -4833,15 +4923,15 @@ msgstr "ì´ë¯¸ì§€ 그룹 변경" #: tools/editor/project_export.cpp msgid "Group name can't be empty!" -msgstr "그룹 ì´ë¦„ì„ ì§€ì •í•´ì•¼ 합니다." +msgstr "그룹 ì´ë¦„ì„ ì§€ì •í•´ì•¼ 합니다!" #: tools/editor/project_export.cpp msgid "Invalid character in group name!" -msgstr "그룹 ì´ë¦„ì— ìœ íš¨í•˜ì§€ ì•Šì€ ë¬¸ìžê°€ 사용ë˜ì—ˆìŠµë‹ˆë‹¤." +msgstr "그룹 ì´ë¦„ì— ìœ íš¨í•˜ì§€ ì•Šì€ ë¬¸ìžê°€ 사용ë˜ì—ˆìŠµë‹ˆë‹¤!" #: tools/editor/project_export.cpp msgid "Group name already exists!" -msgstr "그룹 ì´ë¦„ì´ ì´ë¯¸ 사용중입니다." +msgstr "그룹 ì´ë¦„ì´ ì´ë¯¸ 사용중입니다!" #: tools/editor/project_export.cpp msgid "Add Image Group" @@ -4873,15 +4963,15 @@ msgstr "리소스" #: tools/editor/project_export.cpp msgid "Export selected resources (including dependencies)." -msgstr "ì„ íƒëœ 리소스 내보내기 (종ì†ëœ 리소스 í¬í•¨)" +msgstr "ì„ íƒëœ 리소스 내보내기 (종ì†ëœ 리소스 í¬í•¨)." #: tools/editor/project_export.cpp msgid "Export all resources in the project." -msgstr "프로ì íŠ¸ì˜ ëª¨ë“ ë¦¬ì†ŒìŠ¤ 내보내기" +msgstr "프로ì íŠ¸ì˜ ëª¨ë“ ë¦¬ì†ŒìŠ¤ 내보내기." #: tools/editor/project_export.cpp msgid "Export all files in the project directory." -msgstr "프로ì 트 ë””ë ‰í† ë¦¬ ì•ˆì˜ ëª¨ë“ íŒŒì¼ ë‚´ë³´ë‚´ê¸°" +msgstr "프로ì 트 ë””ë ‰í† ë¦¬ ì•ˆì˜ ëª¨ë“ íŒŒì¼ ë‚´ë³´ë‚´ê¸°." #: tools/editor/project_export.cpp msgid "Export Mode:" @@ -4906,7 +4996,7 @@ msgstr "내보내기 시, ì œì™¸ì‹œí‚¬ íŒŒì¼ (콤마로 구분, 예: *.json, *. #: tools/editor/project_export.cpp msgid "Convert text scenes to binary on export." -msgstr "내보내기 시, í…스트 기반 씬 파ì¼ì„ ë°”ì´ë„ˆë¦¬ 형ì‹ìœ¼ë¡œ 변환" +msgstr "내보내기 시, í…스트 기반 씬 파ì¼ì„ ë°”ì´ë„ˆë¦¬ 형ì‹ìœ¼ë¡œ 변환." #: tools/editor/project_export.cpp msgid "Images" @@ -5163,7 +5253,7 @@ msgstr "종료" #: tools/editor/project_settings.cpp msgid "Key " -msgstr "키" +msgstr "키 " #: tools/editor/project_settings.cpp msgid "Joy Button" @@ -5179,7 +5269,7 @@ msgstr "마우스 버튼" #: tools/editor/project_settings.cpp msgid "Invalid action (anything goes but '/' or ':')." -msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ì•¡ì…˜ ('/' ë˜ëŠ” ':' ë¬¸ìž ì‚¬ìš© 불가)" +msgstr "ìœ íš¨í•˜ì§€ ì•Šì€ ì•¡ì…˜ ('/' ë˜ëŠ” ':' ë¬¸ìž ì‚¬ìš© 불가)." #: tools/editor/project_settings.cpp msgid "Action '%s' already exists!" @@ -5481,11 +5571,11 @@ msgstr "íŒŒì¼ ë¡œë“œ ì—러: 리소스가 아닙니다!" #: tools/editor/property_editor.cpp msgid "Couldn't load image" -msgstr "ì´ë¯¸ì§€ë¥¼ ë¡œë“œí• ìˆ˜ 없습니다." +msgstr "ì´ë¯¸ì§€ë¥¼ ë¡œë“œí• ìˆ˜ ì—†ìŒ" #: tools/editor/property_editor.cpp msgid "Bit %d, val %d." -msgstr "" +msgstr "Bit %d, val %d." #: tools/editor/property_editor.cpp msgid "On" @@ -5501,7 +5591,7 @@ msgstr "ì†ì„±:" #: tools/editor/property_editor.cpp msgid "Global" -msgstr "" +msgstr "Global" #: tools/editor/property_editor.cpp msgid "Sections:" @@ -5593,8 +5683,8 @@ msgstr "확ì¸" #: tools/editor/scene_tree_dock.cpp msgid "" -"Cannot instance the scene '%s' because the current scene exists within one of " -"its nodes." +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." msgstr "ë…¸ë“œì¤‘ì— í˜„ìž¬ ì”¬ì´ ì¡´ìž¬í•˜ê¸° 때문ì—, '%s' ì”¬ì„ ì¸ìŠ¤í„´ìŠ¤ í• ìˆ˜ 없습니다." #: tools/editor/scene_tree_dock.cpp @@ -5768,6 +5858,10 @@ msgid "Load As Placeholder" msgstr "Placeholderë¡œì¨ ë¡œë“œ" #: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "ì¸ìŠ¤í„´ìŠ¤ í기" + +#: tools/editor/scene_tree_editor.cpp msgid "Open in Editor" msgstr "ì—디터ì—서 열기" @@ -5801,7 +5895,7 @@ msgstr "ë””ë ‰í† ë¦¬ë¥¼ ìžì‹ 으로 ì´ë™í• 수 없습니다." #: tools/editor/scenes_dock.cpp msgid "Can't operate on '..'" -msgstr "'..'ì— ìˆ˜í–‰í• ìˆ˜ 없습니다." +msgstr "'..'ì— ìˆ˜í–‰í• ìˆ˜ ì—†ìŒ" #: tools/editor/scenes_dock.cpp msgid "Pick New Name and Location For:" @@ -5905,23 +5999,23 @@ msgstr "íŒŒì¼ ì‹œìŠ¤í…œì— ìŠ¤í¬ë¦½íŠ¸ë¥¼ ìƒì„±í• 수 없습니다." #: tools/editor/script_create_dialog.cpp msgid "Path is empty" -msgstr "경로가 비어 있습니다." +msgstr "경로가 비어 있ìŒ" #: tools/editor/script_create_dialog.cpp msgid "Path is not local" -msgstr "경로가 ë¡œì»¬ì´ ì•„ë‹™ë‹ˆë‹¤." +msgstr "경로가 ë¡œì»¬ì´ ì•„ë‹˜" #: tools/editor/script_create_dialog.cpp msgid "Invalid base path" -msgstr "기본 경로가 ìœ ìš”í•˜ì§€ 않습니다." +msgstr "기본 경로가 ìœ ìš”í•˜ì§€ 않ìŒ" #: tools/editor/script_create_dialog.cpp msgid "File exists" -msgstr "파ì¼ì´ 존재합니다." +msgstr "파ì¼ì´ 존재함" #: tools/editor/script_create_dialog.cpp msgid "Invalid extension" -msgstr "확장ìžê°€ ìœ ìš”í•˜ì§€ 않습니다." +msgstr "확장ìžê°€ ìœ ìš”í•˜ì§€ 않ìŒ" #: tools/editor/script_create_dialog.cpp msgid "Valid path" @@ -6001,7 +6095,7 @@ msgstr "실시간 씬 트리:" #: tools/editor/script_editor_debugger.cpp msgid "Remote Object Properties: " -msgstr "ì›ê²© 오브ì 트 ì†ì„±:" +msgstr "ì›ê²© 오브ì 트 ì†ì„±: " #: tools/editor/script_editor_debugger.cpp msgid "Profiler" @@ -6103,12 +6197,18 @@ msgstr "Ray Shape ê¸¸ì´ ë³€ê²½" msgid "Change Notifier Extents" msgstr "Notifier 범위 변경" +#~ msgid "Binds (Extra Params):" +#~ msgstr "ë°”ì¸ë“œ (추가 파ë¼ë¯¸í„°):" + +#~ msgid "Method In Node:" +#~ msgstr "ë…¸ë“œì˜ í•¨ìˆ˜:" + +#~ msgid "Reload Tool Script (Soft)" +#~ msgstr "툴 스í¬ë¦½íЏ 다시 로드 (소프트)" + #~ msgid "Edit Connections.." #~ msgstr "ì—°ê²° 편집.." -#~ msgid "Connections:" -#~ msgstr "ì—°ê²°:" - #~ msgid "Set Params" #~ msgstr "ì†ì„± ì ìš©" diff --git a/tools/translations/pt_BR.po b/tools/translations/pt_BR.po index 6481349562..dadd54d273 100644 --- a/tools/translations/pt_BR.po +++ b/tools/translations/pt_BR.po @@ -1,21 +1,66 @@ -# LANGUAGE translation of the Godot Engine editor +# Portuguese (Brazil) translation of the Godot Engine editor # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. +# # George Marques <george@gmarqu.es>, 2016. +# Joaquim Ferreira <joaquimferreira1996@bol.com.br>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: 2016-05-30\n" -"PO-Revision-Date: 2016-05-30\n" -"Last-Translator: George Marques <george@gmarqu.es>\n" -"Language-Team: Godot Brasil\n" +"PO-Revision-Date: 2016-06-20 01:48+0000\n" +"Last-Translator: George Marques <georgemjesus@gmail.com>\n" +"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects" +"/godot-engine/godot/pt_BR/>\n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 1.8.7\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 2.7-dev\n" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "Argumento de tipo inválido para convert(), use constantes TYPE_*." + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "Não há bytes suficientes para decodificar, ou o formato é inválido." + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "o argumento step é zero!" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "Não é um script com uma instância" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "Não é baseado num script" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "Não é baseado num arquivo de recurso" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "Formato de dicionário de instância inválido (faltando @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" +"Formato de dicionário de instância inválido (não se pôde carregar o script " +"em @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "Formato de dicionário de instância inválido (script inválido em @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "Dicionário de instância inválido (subclasses inválidas)" #: scene/2d/animated_sprite.cpp msgid "" @@ -23,7 +68,7 @@ msgid "" "order for AnimatedSprite to display frames." msgstr "" "Um recurso do tipo SpriteFrames deve ser criado ou definido na propriedade " -"\"Quadros\" para que o nó AnimatedSprite mostre quadros." +"\"Frames\" para que o nó AnimatedSprite mostre quadros." #: scene/2d/canvas_modulate.cpp msgid "" @@ -77,12 +122,13 @@ msgstr "" msgid "" "An occluder polygon must be set (or drawn) for this occluder to take effect." msgstr "" -"Um polÃgono de oclusão deve ser definido (ou desenhado) para que este oclusor " -"tenha efeito." +"Um polÃgono de oclusão deve ser definido (ou desenhado) para que este " +"oclusor tenha efeito." #: scene/2d/light_occluder_2d.cpp msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" -msgstr "O polÃgono para este oclusor está vazio. Por favor desenhe um polÃgono!" +msgstr "" +"O polÃgono para este oclusor está vazio. Por favor desenhe um polÃgono!" #: scene/2d/navigation_polygon.cpp msgid "" @@ -132,16 +178,16 @@ msgstr "" #: scene/2d/sprite.cpp msgid "" -"Path property must point to a valid Viewport node to work. Such Viewport must " -"be set to 'render target' mode." +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." msgstr "" "A propriedade \"Caminho\" deve apontar a um nó Viewport para funcionar. Tal " "Viewport deve estar no modo \"Destino de Render\"." #: scene/2d/sprite.cpp msgid "" -"The Viewport set in the path property must be set as 'render target' in order " -"for this sprite to work." +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." msgstr "" "O nó Viewport definido na propriedade \"Caminho\" deve ser marcado como " "\"destino de render\" para que este sprite funcione." @@ -169,8 +215,8 @@ msgid "" "A shape must be provided for CollisionShape to function. Please create a " "shape resource for it!" msgstr "" -"Uma forma deve ser fornecida para que o nó CollisionShape fucione. Por favor, " -"crie um recurso de forma a ele!" +"Uma forma deve ser fornecida para que o nó CollisionShape fucione. Por " +"favor, crie um recurso de forma a ele!" #: scene/3d/collision_polygon.cpp msgid "" @@ -194,11 +240,11 @@ msgstr "" #: scene/3d/navigation_mesh.cpp msgid "" -"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " -"only provides navigation data." +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." msgstr "" -"NavigationMeshInstance deve ser filho ou neto de um nó Navigation. Ele apenas " -"fornece dados de navegação." +"NavigationMeshInstance deve ser filho ou neto de um nó Navigation. Ele " +"apenas fornece dados de navegação." #: scene/3d/scenario_fx.cpp msgid "" @@ -216,13 +262,12 @@ msgstr "" "'amostras' para que o SpatialSamplePlayer possa tocar algum som." #: scene/3d/sprite_3d.cpp -#, fuzzy msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " "order for AnimatedSprite3D to display frames." msgstr "" "Um recurso do tipo SpriteFrames deve ser criado ou definido na propriedade " -"\"Quadros\" para que o nó AnimatedSprite mostre quadros." +"\"Frames\" para que o nó AnimatedSprite mostre quadros." #: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Cancel" @@ -260,24 +305,20 @@ msgid "Open" msgstr "Abrir" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a File" -msgstr "Abrir Arquivo(s) de Amostra" +msgstr "Abrir um Arquivo" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open File(s)" -msgstr "Abrir Arquivo(s) de Amostra" +msgstr "Abrir Arquivo(s)" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a Directory" -msgstr "Escolha um Diretório" +msgstr "Abrir um Diretório" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a File or Directory" -msgstr "Escolha um Diretório" +msgstr "Abrir Arquivo ou Diretório" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_node.cpp @@ -341,7 +382,7 @@ msgstr "Alt+" #: scene/gui/input_action.cpp msgid "Ctrl+" -msgstr "" +msgstr "Ctrl+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp @@ -404,7 +445,8 @@ msgstr "Colar" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_editor_plugin.cpp -#: tools/editor/plugins/shader_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "Select All" msgstr "Selecionar Tudo" @@ -424,8 +466,8 @@ msgstr "Desfazer" #: scene/gui/popup.cpp msgid "" "Popups will hide by default unless you call popup() or any of the popup*() " -"functions. Making them visible for editing is fine though, but they will hide " -"upon running." +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." msgstr "" "Popups são ocultos por padrão a menos que você chame alguma das funções " "popup*(). Torná-los visÃveis para editar não causa problema, mas eles " @@ -540,6 +582,18 @@ msgid "Anim Delete Keys" msgstr "Excluir Chaves da Anim" #: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "ContÃnuo" + +#: tools/editor/animation_editor.cpp +msgid "Discrete" +msgstr "Discreto" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "Gatilho" + +#: tools/editor/animation_editor.cpp msgid "Anim Add Key" msgstr "Adicionar Chave na Anim" @@ -647,6 +701,10 @@ msgid "Change Anim Loop" msgstr "Mudar Loop da Animação" #: tools/editor/animation_editor.cpp +msgid "Change Anim Loop Interpolation" +msgstr "Mudar Interpolação do Loop da Animação" + +#: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" msgstr "Criar Chave com Valor Definido" @@ -687,6 +745,10 @@ msgid "Enable/Disable looping in animation." msgstr "Habilitar/Desabilitar loop de animação." #: tools/editor/animation_editor.cpp +msgid "Enable/Disable interpolation when looping animation." +msgstr "Habilitar/Desabilitar interpolação quando repetindo a animação." + +#: tools/editor/animation_editor.cpp msgid "Add new tracks." msgstr "Adicionar novas trilhas." @@ -807,22 +869,20 @@ msgid "Site:" msgstr "Site:" #: tools/editor/asset_library_editor_plugin.cpp -#, fuzzy msgid "Support.." -msgstr "Exportar..." +msgstr "Suportado..." #: tools/editor/asset_library_editor_plugin.cpp msgid "Official" -msgstr "" +msgstr "Oficial" #: tools/editor/asset_library_editor_plugin.cpp msgid "Community" -msgstr "" +msgstr "Comunidade" #: tools/editor/asset_library_editor_plugin.cpp -#, fuzzy msgid "Testing" -msgstr "Configurações" +msgstr "Em teste" #: tools/editor/asset_library_editor_plugin.cpp msgid "Assets ZIP File" @@ -875,7 +935,7 @@ msgstr "Sem Correspondências" #: tools/editor/code_editor.cpp msgid "Replaced %d Ocurrence(s)." -msgstr "SubstituÃda(s) %d Ocorrência(s)" +msgstr "SubstituÃda(s) %d Ocorrência(s)." #: tools/editor/code_editor.cpp msgid "Replace" @@ -953,13 +1013,9 @@ msgid "Method in target Node must be specified!" msgstr "O método no Nó destino precisa ser especificado!" #: tools/editor/connections_dialog.cpp -msgid "Connect To Node:" +msgid "Conect To Node:" msgstr "Conectar ao Nó:" -#: tools/editor/connections_dialog.cpp -msgid "Binds (Extra Params):" -msgstr "Ligações (Parâmetros Extra):" - #: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp #: tools/editor/plugins/item_list_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp @@ -969,17 +1025,22 @@ msgstr "Adicionar" #: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp -#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp msgid "Remove" msgstr "Remover" #: tools/editor/connections_dialog.cpp -msgid "Path To Node:" -msgstr "Caminho para o Nó:" +msgid "Add Extra Call Argument:" +msgstr "Adicionar Argumento de Chamada Extra:" #: tools/editor/connections_dialog.cpp -msgid "Method In Node:" -msgstr "Método no Nó:" +msgid "Extra Call Arguments:" +msgstr "Argumentos de Chamada Extras:" + +#: tools/editor/connections_dialog.cpp +msgid "Path to Node:" +msgstr "Caminho para o Nó:" #: tools/editor/connections_dialog.cpp msgid "Make Function" @@ -1002,6 +1063,10 @@ msgid "Connect '%s' to '%s'" msgstr "Conectar \"%s\" a \"%s\"" #: tools/editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "Conectando Sinal:" + +#: tools/editor/connections_dialog.cpp msgid "Create Subscription" msgstr "Criar Conexão" @@ -1015,9 +1080,8 @@ msgid "Disconnect" msgstr "Disconectar" #: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp -#, fuzzy msgid "Signals" -msgstr "Sinais:" +msgstr "Sinais" #: tools/editor/create_dialog.cpp msgid "Create New" @@ -1071,7 +1135,7 @@ msgstr "Dependências:" #: tools/editor/dependency_editor.cpp msgid "Fix Broken" -msgstr "Consertar Quebradas:" +msgstr "Consertar Quebradas" #: tools/editor/dependency_editor.cpp msgid "Dependency Editor" @@ -1144,7 +1208,8 @@ msgid "Delete selected files?" msgstr "Excluir os arquivos selecionados?" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/item_list_editor_plugin.cpp tools/editor/scenes_dock.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp msgid "Delete" msgstr "Excluir" @@ -1278,9 +1343,8 @@ msgid "Setting Up.." msgstr "Ajustando..." #: tools/editor/editor_log.cpp -#, fuzzy msgid " Output:" -msgstr "SaÃda" +msgstr " SaÃda:" #: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp msgid "Re-Importing" @@ -1342,8 +1406,8 @@ msgstr "Criando Miniatura" msgid "" "Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." msgstr "" -"Não se pôde salvar a cena. É provável que dependências (instâncias) não foram " -"satisfeitas." +"Não se pôde salvar a cena. É provável que dependências (instâncias) não " +"foram satisfeitas." #: tools/editor/editor_node.cpp msgid "Failed to load resource." @@ -1394,9 +1458,8 @@ msgid "Copy Params" msgstr "Copiar Parâmetros" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Paste Params" -msgstr "Colar Quadro" +msgstr "Colar Params" #: tools/editor/editor_node.cpp #: tools/editor/plugins/resource_preloader_editor_plugin.cpp @@ -1416,9 +1479,8 @@ msgid "Make Sub-Resources Unique" msgstr "Tornar Únicos os Sub-recursos" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Open in Help" -msgstr "Abrir Cena" +msgstr "Abrir na Ajuda" #: tools/editor/editor_node.cpp msgid "There is no defined scene to run." @@ -1429,6 +1491,8 @@ msgid "" "No main scene has ever been defined.\n" "Select one from \"Project Settings\" under the 'application' category." msgstr "" +"A cena principal não foi definida.\n" +"Selecione uma nas \"Configurações do Projeto\" na categoria \"application\"." #: tools/editor/editor_node.cpp msgid "Current scene was never saved, please save it prior to running." @@ -1515,11 +1579,12 @@ msgid "Quick Run Scene.." msgstr "Rodar Cena Ãgil..." #: tools/editor/editor_node.cpp -#, fuzzy msgid "" "Open Project Manager? \n" "(Unsaved changes will be lost)" -msgstr "Fechar cena? (Mudanças não salvas serão perdidas)" +msgstr "" +"Abrir Gerenciador de Projetos?\n" +"(Mudanças não salvas serão perdidas)" #: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp msgid "Ugh" @@ -1527,8 +1592,8 @@ msgstr "Ugh" #: tools/editor/editor_node.cpp msgid "" -"Error loading scene, it must be inside the project path. Use 'Import' to open " -"the scene, then save it inside the project path." +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." msgstr "" "Erro ao carregar cena, ela deve estar dentro do caminho do projeto. Use " "\"Importar\" para abrir a cena e então salve-a dentro do projeto." @@ -1546,9 +1611,8 @@ msgid "Save Layout" msgstr "Salvar Layout" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Load Layout" -msgstr "Salvar Layout" +msgstr "Carregar Layout" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Default" @@ -1577,7 +1641,15 @@ msgstr "Cena" #: tools/editor/editor_node.cpp msgid "Go to previously opened scene." -msgstr "Ir para cena aberta anteriormente" +msgstr "Ir para cena aberta anteriormente." + +#: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "Modo Tela-Cheia" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "Modo Sem Distrações" #: tools/editor/editor_node.cpp msgid "Operations with scene files." @@ -1612,9 +1684,8 @@ msgid "Open Recent" msgstr "Abrir Recente" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Quick Filter Files.." -msgstr "Buscar Arquivo Ãgil..." +msgstr "Filtrar Arquivos Rapidamente..." #: tools/editor/editor_node.cpp msgid "Convert To.." @@ -1686,9 +1757,8 @@ msgid "Export" msgstr "Exportar" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play the project." -msgstr "Rodar o projeto (F5)." +msgstr "Roda o projeto." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -1700,14 +1770,12 @@ msgid "Pause the scene" msgstr "Pausar a cena" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Pause Scene" -msgstr "Pausar a cena" +msgstr "Pausa a cena" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Stop the scene." -msgstr "Parar a cena (F8)." +msgstr "Para a cena." #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -1715,14 +1783,12 @@ msgid "Stop" msgstr "Parar" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play the edited scene." -msgstr "Rodar a cena editada (F6)." +msgstr "Roda a cena editada." #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play Scene" -msgstr "Salvar Cena" +msgstr "Rodar Cena" #: tools/editor/editor_node.cpp msgid "Play custom scene" @@ -1733,19 +1799,20 @@ msgid "Debug options" msgstr "Opções de depuração" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Deploy with Remote Debug" msgstr "Instalar Depuração Remota" #: tools/editor/editor_node.cpp msgid "" -"When exporting or deploying, the resulting executable will attempt to connect " -"to the IP of this computer in order to be debugged." +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." msgstr "" +"Quando exportando ou instalando, o programa resultante tentará conectar ao " +"IP deste computador para poder ser depurado." #: tools/editor/editor_node.cpp msgid "Small Deploy with Network FS" -msgstr "" +msgstr "Instalação Pequena com FS em rede" #: tools/editor/editor_node.cpp msgid "" @@ -1753,9 +1820,14 @@ msgid "" "executable.\n" "The filesystem will be provided from the project by the editor over the " "network.\n" -"On Android, deploy will use the USB cable for faster performance. This option " -"speeds up testing for games with a large footprint." +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." msgstr "" +"Quando esta opção está habilitada, a exportação ou instalação produzirá um " +"executável mÃnimo.\n" +"O sistema de arquivos (FS) será fornecido ao projeto pelo editor via rede.\n" +"No Android, a instalação usará o cabo USB para melhor desempenho. Esta opção " +"acelera os testes de jogos com muito conteúdo." #: tools/editor/editor_node.cpp msgid "Visible Collision Shapes" @@ -1766,6 +1838,8 @@ msgid "" "Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " "running game if this option is turned on." msgstr "" +"Formas de colisão e nós do tipo RayCast (2D e 3D) serão visÃveis durante a " +"execução do jogo caso esta opção esteja habilitada." #: tools/editor/editor_node.cpp msgid "Visible Navigation" @@ -1776,10 +1850,12 @@ msgid "" "Navigation meshes and polygons will be visible on the running game if this " "option is turned on." msgstr "" +"Malhas e polÃgonos de navegação serão visÃveis no jogo se esta opção estiver " +"ligada." #: tools/editor/editor_node.cpp msgid "Sync Scene Changes" -msgstr "" +msgstr "Sincronizar Alterações na Cena" #: tools/editor/editor_node.cpp msgid "" @@ -1788,11 +1864,14 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"Quando essa opção está ativa, quaisquer modificações feitas à cena no editor " +"serão replicadas no jogo em execução.\n" +"Quando usado remotamente em um dispositivo, isso é mais eficiente com o " +"sistema de arquivos via rede." #: tools/editor/editor_node.cpp -#, fuzzy msgid "Sync Script Changes" -msgstr "Atualizar nas Mudanças" +msgstr "Sincronizar Mudanças no Script" #: tools/editor/editor_node.cpp msgid "" @@ -1801,6 +1880,10 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"Quando essa opção está ativa, qualquer script que é salvo será recarregado " +"no jogo em execução.\n" +"Quando usado remotamente em um dispositivo, isso é mais eficiente com o " +"sistema de arquivos via rede." #: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp msgid "Settings" @@ -1854,9 +1937,7 @@ msgstr "Carrega um recurso existente do disco e o edita." msgid "Save the currently edited resource." msgstr "Salva o recurso editado atualmente." -#: tools/editor/editor_node.cpp -#: tools/editor/plugins/animation_player_editor_plugin.cpp -#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Save As.." msgstr "Salvar Como..." @@ -1903,7 +1984,7 @@ msgstr "Obrigado!" #: tools/editor/editor_node.cpp msgid "Import Templates From ZIP File" -msgstr "Importar Modelos de um Arquivo ZIP." +msgstr "Importar Modelos de um Arquivo ZIP" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Export Project" @@ -2064,9 +2145,8 @@ msgid "Imported Resources" msgstr "Recursos Importados" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp -#, fuzzy msgid "No bit masks to import!" -msgstr "Nenhum item a importar!" +msgstr "Sem máscaras de bits para importar!" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp @@ -2096,9 +2176,8 @@ msgid "Save path is empty!" msgstr "Caminho de salvamento vazio!" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp -#, fuzzy msgid "Import BitMasks" -msgstr "Importar Textura" +msgstr "Importar Máscara de Bits" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp @@ -2125,7 +2204,7 @@ msgstr "Aceitar" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp msgid "Bit Mask" -msgstr "" +msgstr "Máscara de Bits" #: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "No source font file!" @@ -2295,7 +2374,7 @@ msgstr "Filtros" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Source path is empty." -msgstr "Caminho de origem está vazio" +msgstr "Caminho de origem está vazio." #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Couldn't load post-import script." @@ -2327,20 +2406,19 @@ msgstr "Compartilhado" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Target Texture Folder:" -msgstr "Pasta Destino para Textura" +msgstr "Pasta Destino para Textura:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Post-Process Script:" -msgstr "Script de Pós-Processamento" +msgstr "Script de Pós-Processamento:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Custom Root Node Type:" msgstr "Tipo Personalizado de Nó Raiz:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp -#, fuzzy msgid "Auto" -msgstr "AutoLoad" +msgstr "Auto" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "The Following Files are Missing:" @@ -2377,7 +2455,7 @@ msgstr "Não se pôde carregar script pós-importação:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Invalid/broken script for post-import:" -msgstr "Script pós-importação inválido/quebrado." +msgstr "Script pós-importação inválido/quebrado:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Error running post-import script:" @@ -2641,18 +2719,16 @@ msgid "MultiNode Set" msgstr "Múltiplos Nós definidos" #: tools/editor/node_dock.cpp -#, fuzzy msgid "Node" -msgstr "Misturar Nó" +msgstr "Nó" #: tools/editor/node_dock.cpp -#, fuzzy msgid "Groups" -msgstr "Grupos:" +msgstr "Grupos" #: tools/editor/node_dock.cpp msgid "Select a Node to edit Signals and Groups." -msgstr "" +msgstr "Selecione um Nó para editar Sinais e Grupos." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" @@ -2732,7 +2808,8 @@ msgstr "ERRO: Nenhuma animação para editar!" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" msgstr "" -"Iniciar animação selecionada de trás pra frente a partir da posição atual. (A)" +"Iniciar animação selecionada de trás pra frente a partir da posição atual. " +"(A)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from end. (Shift+A)" @@ -2764,6 +2841,10 @@ msgid "Create new animation in player." msgstr "Criar nova animação no player." #: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "Carregar uma animação do disco." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load an animation from disk." msgstr "Carregar uma animação do disco." @@ -2772,12 +2853,16 @@ msgid "Save the current animation" msgstr "Salvar a animação atual" #: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As" +msgstr "Salvar Como" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." msgstr "Mostrar lista de animações no player." #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Autoplay on Load" -msgstr "Reproduzir automaticamente ao carregar." +msgstr "Auto-reprodução ao Carregar" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Edit Target Blend Times" @@ -2813,7 +2898,7 @@ msgstr "Tempos de Mistura:" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Next (Auto Queue):" -msgstr "Próximo (Entrar na fila automaticamente)" +msgstr "Próximo (Auto-enfileirar):" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Cross-Animation Blend Times" @@ -2976,7 +3061,7 @@ msgstr "Triângulo nº" #: tools/editor/plugins/baked_light_baker.cpp msgid "Light Baker Setup:" -msgstr "Configurar Baker de Luz." +msgstr "Configurar Baker de Luz:" #: tools/editor/plugins/baked_light_baker.cpp msgid "Parsing Geometry" @@ -3053,7 +3138,7 @@ msgstr "Deslocamento de rotação:" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Rotation Step:" -msgstr "Passo de Rotação" +msgstr "Passo de Rotação:" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Pivot" @@ -3061,7 +3146,7 @@ msgstr "Mover Pivô" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Move Action" -msgstr "Mover Ação" +msgstr "Ação de Mover" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Edit IK Chain" @@ -3077,7 +3162,7 @@ msgstr "Alterar Âncoras" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Zoom (%):" -msgstr "Ampliar (%)" +msgstr "Ampliação (%):" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Paste Pose" @@ -3099,7 +3184,7 @@ msgstr "Alt+Arrastar: Mover" msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." msgstr "" "Aperte \"v\" para Mudar Pivô, \"Shift+v\" para Arrastar Pivô (enquanto " -"movendo)" +"movendo)." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Alt+RMB: Depth list selection" @@ -3298,7 +3383,7 @@ msgstr "Editar PolÃgono (Remover Ponto)" #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Create a new polygon from scratch." -msgstr "Criar um novo polÃgono do zero" +msgstr "Criar um novo polÃgono do zero." #: tools/editor/plugins/collision_polygon_editor_plugin.cpp msgid "Create Poly3D" @@ -3376,7 +3461,7 @@ msgstr "LMB: Mover Ponto." #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp msgid "Ctrl+LMB: Split Segment." -msgstr "Ctrl+LMB: Dividir Segmento" +msgstr "Ctrl+LMB: Dividir Segmento." #: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp #: tools/editor/plugins/navigation_polygon_editor_plugin.cpp @@ -3429,7 +3514,7 @@ msgstr "Criar Corpo Trimesh Estático" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Convex Static Body" -msgstr "Create Convex Static Body" +msgstr "Criar um Corpo Estático Convexo" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Trimesh Collision Sibling" @@ -3895,7 +3980,8 @@ msgstr "Importar Tema" msgid "Save Theme As.." msgstr "Salvar Tema Como..." -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "File" msgstr "Arquivo" @@ -3967,13 +4053,8 @@ msgid "Auto Indent" msgstr "Auto Recuar" #: tools/editor/plugins/script_editor_plugin.cpp -#, fuzzy -msgid "Reload Tool Script" -msgstr "Criar Script para Nó" - -#: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script (Soft)" -msgstr "" +msgid "Soft Reload Script" +msgstr "Recarregar Script (suave)" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/shader_editor_plugin.cpp @@ -4065,8 +4146,8 @@ msgid "Help" msgstr "Ajuda" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Contextual" -msgstr "Contextual" +msgid "Contextual Help" +msgstr "Ajuda Contextual" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Tutorials" @@ -4274,10 +4355,6 @@ msgid "Transform Aborted." msgstr "Transformação Abortada." #: tools/editor/plugins/spatial_editor_plugin.cpp -msgid "View Plane Transform." -msgstr "Visualizar Transformação do Plano." - -#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." msgstr "Transformação do Eixo-X." @@ -4290,6 +4367,10 @@ msgid "Z-Axis Transform." msgstr "Transformação do Eixo-Z." #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "Visualizar Transformação do Plano." + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scaling to %s%%." msgstr "Escalonando para %s%%." @@ -4299,7 +4380,7 @@ msgstr "Rotacionando %s degraus." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Bottom View." -msgstr "Visão inferior" +msgstr "Visão inferior." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Bottom" @@ -4351,7 +4432,7 @@ msgstr "Chaveamento está desativado (nenhuma chave inserida)." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Animation Key Inserted." -msgstr "Chave de Animação Inserida" +msgstr "Chave de Animação Inserida." #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Align with view" @@ -4430,9 +4511,8 @@ msgid "Scale Mode (R)" msgstr "Modo Escala (R)" #: tools/editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "Transform" -msgstr "Tipo de Transformação" +msgstr "Transformação" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Local Coords" @@ -4452,30 +4532,27 @@ msgstr "Usar sRGB Padrão" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "1 Viewport" -msgstr "" +msgstr "1 Viewport" #: tools/editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "2 Viewports" -msgstr "Configurações da Viewport:" +msgstr "2 Viewports" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "2 Viewports (Alt)" -msgstr "" +msgstr "2 Viewports (Alt)" #: tools/editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "3 Viewports" -msgstr "Configurações da Viewport:" +msgstr "3 Viewports" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "3 Viewports (Alt)" -msgstr "" +msgstr "3 Viewports (Alt)" #: tools/editor/plugins/spatial_editor_plugin.cpp -#, fuzzy msgid "4 Viewports" -msgstr "Configurações da Viewport:" +msgstr "4 Viewports" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Display Normal" @@ -4519,7 +4596,7 @@ msgstr "Escala do Snap (%):" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Viewport Settings" -msgstr "Configurações da Viewport:" +msgstr "Configurações da Viewport" #: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Default Light Normal:" @@ -4634,20 +4711,20 @@ msgid "StyleBox Preview:" msgstr "Pré-Visualização do StyleBox:" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Texture Region Editor" -msgstr "Editor de Região do Sprite" +msgstr "Editor de Região da Textura" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Scale Region Editor" -msgstr "Editor de Região do Sprite" +msgstr "Editor de Região de Escala" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "" "No texture in this node.\n" "Set a texture to be able to edit region." msgstr "" +"Sem textura nesse nó.\n" +"Defina uma textura para poder editar essa região." #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Can't save theme to file:" @@ -4675,8 +4752,12 @@ msgid "Remove Class Items" msgstr "Remover Itens de Classe" #: tools/editor/plugins/theme_editor_plugin.cpp -msgid "Create Template" -msgstr "Criar Modelo" +msgid "Create Empty Template" +msgstr "Criar Modelo Vazio" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "Criar Modelo de Editor Vazio" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio1" @@ -4762,32 +4843,36 @@ msgid "Erase TileMap" msgstr "Apagar TileMap" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Bucket" -msgstr "Balde" +msgid "Erase selection" +msgstr "Apagar Seleção" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Pick Tile" -msgstr "Pegar Tile" +msgid "Find tile" +msgstr "Localizar tile" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Select" -msgstr "Selecionar" +msgid "Transpose" +msgstr "Transpor" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Erase Selection" -msgstr "Apagar Seleção" +msgid "Mirror X" +msgstr "Espelhar X" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Transpose" -msgstr "Transpor" +msgid "Mirror Y" +msgstr "Espelhar Y" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "Balde" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror X (A)" -msgstr "Espelhar X (A)" +msgid "Pick Tile" +msgstr "Pegar Tile" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror Y (S)" -msgstr "Espelhar Y (S)" +msgid "Select" +msgstr "Selecionar" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 0 degrees" @@ -4930,8 +5015,8 @@ msgstr "Ação" msgid "" "Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" msgstr "" -"Filtros para exportar arquivos que não sejam recursos (separados por vÃrgula, " -"e.g.: *.json, *.txt):" +"Filtros para exportar arquivos que não sejam recursos (separados por " +"vÃrgula, e.g.: *.json, *.txt):" #: tools/editor/project_export.cpp msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" @@ -4977,7 +5062,7 @@ msgstr "Formatos de Compressão:" #: tools/editor/project_export.cpp msgid "Image Groups" -msgstr "Grupos de Imagens:" +msgstr "Grupos de Imagens" #: tools/editor/project_export.cpp msgid "Groups:" @@ -5105,7 +5190,7 @@ msgstr "Caminho de projeto inválido, o caminho deve existir!" #: tools/editor/project_manager.cpp msgid "Invalid project path, engine.cfg must not exist." -msgstr "Caminho de projeto inválido, engine.cfg não deve existir!" +msgstr "Caminho de projeto inválido, engine.cfg não deve existir." #: tools/editor/project_manager.cpp msgid "Invalid project path, engine.cfg must exist." @@ -5172,14 +5257,12 @@ msgid "Remove project from the list? (Folder contents will not be modified)" msgstr "Remover projeto da lista? (O conteúdo da pasta não será modificado)" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Project Manager" -msgstr "Nome do Projeto:" +msgstr "Gerenciador de Projetos" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Project List" -msgstr "Sair para a Lista de Projetos" +msgstr "Lista de Projetos" #: tools/editor/project_manager.cpp msgid "Run" @@ -5199,22 +5282,19 @@ msgstr "Sair" #: tools/editor/project_settings.cpp msgid "Key " -msgstr "" +msgstr "Chave " #: tools/editor/project_settings.cpp -#, fuzzy msgid "Joy Button" -msgstr "Botão" +msgstr "Botão do Joystick" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Joy Axis" -msgstr "Eixo" +msgstr "Eixo do Joystick" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Mouse Button" -msgstr "Botão do Mouse:" +msgstr "Botão do Mous" #: tools/editor/project_settings.cpp msgid "Invalid action (anything goes but '/' or ':')." @@ -5332,17 +5412,16 @@ msgstr "" #: tools/editor/project_settings.cpp msgid "Invalid name. Must not collide with an existing global constant name." msgstr "" -"Nome inválido. Não é permitido utilizar nomes de constantes globais da engine." +"Nome inválido. Não é permitido utilizar nomes de constantes globais da " +"engine." #: tools/editor/project_settings.cpp -#, fuzzy msgid "Autoload '%s' already exists!" -msgstr "A ação \"%s\" já existe!" +msgstr "Autoload \"%s\" já existe!" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Rename Autoload" -msgstr "Remover Autoload" +msgstr "Renomear Autoload" #: tools/editor/project_settings.cpp msgid "Toggle AutoLoad Globals" @@ -5454,7 +5533,7 @@ msgstr "Remapeamentos por Localidade:" #: tools/editor/project_settings.cpp msgid "Locale" -msgstr "Localidade:" +msgstr "Localidade" #: tools/editor/project_settings.cpp msgid "AutoLoad" @@ -5634,8 +5713,8 @@ msgstr "Ok" #: tools/editor/scene_tree_dock.cpp msgid "" -"Cannot instance the scene '%s' because the current scene exists within one of " -"its nodes." +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." msgstr "" "Não se pode instanciar a cena \"%s\" porque a cena atual existe dentro de um " "de seus nós." @@ -5813,6 +5892,10 @@ msgid "Load As Placeholder" msgstr "Carregar como Substituto" #: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "Descartar Instanciação" + +#: tools/editor/scene_tree_editor.cpp msgid "Open in Editor" msgstr "Abrir no Editor" @@ -5869,9 +5952,8 @@ msgid "View Owners.." msgstr "Visualizar Proprietários..." #: tools/editor/scenes_dock.cpp -#, fuzzy msgid "Copy Path" -msgstr "Copiar Parâmetros" +msgstr "Copiar Caminho" #: tools/editor/scenes_dock.cpp msgid "Rename or Move.." @@ -5975,7 +6057,7 @@ msgstr "Caminho válido" #: tools/editor/script_create_dialog.cpp msgid "Class Name:" -msgstr "Nome da Classe" +msgstr "Nome da Classe:" #: tools/editor/script_create_dialog.cpp msgid "Built-In Script" @@ -6042,18 +6124,16 @@ msgid "Remote Inspector" msgstr "Inspetor Remoto" #: tools/editor/script_editor_debugger.cpp -#, fuzzy msgid "Live Scene Tree:" -msgstr "Ãrvore de Cena:" +msgstr "Ãrvore de Cena ao vivo:" #: tools/editor/script_editor_debugger.cpp -#, fuzzy msgid "Remote Object Properties: " -msgstr "Propriedades do objeto." +msgstr "Propriedades do Objeto Remoto: " #: tools/editor/script_editor_debugger.cpp msgid "Profiler" -msgstr "" +msgstr "Profiler" #: tools/editor/script_editor_debugger.cpp msgid "Monitor" @@ -6064,9 +6144,8 @@ msgid "Value" msgstr "Valor" #: tools/editor/script_editor_debugger.cpp -#, fuzzy msgid "Monitors" -msgstr "Monitor" +msgstr "Monitores" #: tools/editor/script_editor_debugger.cpp msgid "List of Video Memory Usage by Resource:" @@ -6094,7 +6173,7 @@ msgstr "Uso" #: tools/editor/script_editor_debugger.cpp msgid "Misc" -msgstr "" +msgstr "Misc" #: tools/editor/script_editor_debugger.cpp msgid "Clicked Control:" @@ -6114,7 +6193,7 @@ msgstr "Definir a partir da árvore" #: tools/editor/settings_config_dialog.cpp msgid "Shortcuts" -msgstr "" +msgstr "Atalhos" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -6152,12 +6231,18 @@ msgstr "Mudar o tamanho do Shape Ray" msgid "Change Notifier Extents" msgstr "Alterar a Extensão do Notificador" +#~ msgid "Binds (Extra Params):" +#~ msgstr "Ligações (Parâmetros Extra):" + +#~ msgid "Method In Node:" +#~ msgstr "Método no Nó:" + +#~ msgid "Reload Tool Script (Soft)" +#~ msgstr "Recarregar Tool Script (suave)" + #~ msgid "Edit Connections.." #~ msgstr "Editar Conexões..." -#~ msgid "Connections:" -#~ msgstr "Conexões:" - #~ msgid "Set Params" #~ msgstr "Definir Parâmetros" diff --git a/tools/translations/ru.po b/tools/translations/ru.po index 138aa2c858..63fb6c4177 100644 --- a/tools/translations/ru.po +++ b/tools/translations/ru.po @@ -1,24 +1,66 @@ -# LANGUAGE translation of the Godot Engine editor +# Russian translation of the Godot Engine editor # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. -# DimOkGamer dimokgamer@gmail.com , 2016 -# Maxim toby3d Lebedev mail@toby3d.ru , 2016 # +# DimOkGamer <dimokgamer@gmail.com>, 2016. +# Maxim toby3d Lebedev <mail@toby3d.ru>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: \n" +"PO-Revision-Date: 2016-06-19 17:29+0300\n" "Last-Translator: DimOkGamer <dimokgamer@gmail.com>\n" -"Language-Team: Russian\n" +"Language-Team: Russian <https://hosted.weblate.org/projects/godot-" +"engine/godot/ru/>\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Poedit 1.8.8\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "Ðеверный тип аргумента Ð´Ð»Ñ convert(), иÑпользуйте TYPE_* конÑтанты." + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "Ðе хватает байтов Ð´Ð»Ñ Ð´ÐµÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±Ð°Ð¹Ñ‚Ð¾Ð², или неверный формат." + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "Ðргумент шага равен нулю!" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "Скрипт без ÑкземплÑра" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "ОÑнован не на Ñкрипте" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "ОÑнован не на файле реÑурÑов" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "ÐедопуÑтимый формат ÑкземплÑра ÑÐ»Ð¾Ð²Ð°Ñ€Ñ (отÑутÑтвует @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" +"ÐедопуÑтимый формат ÑкземплÑра ÑÐ»Ð¾Ð²Ð°Ñ€Ñ (невозможно загрузить Ñкрипт из @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "ÐедопуÑтимый формат ÑкземплÑра ÑÐ»Ð¾Ð²Ð°Ñ€Ñ (неверный Ñкрипт в @path)" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "ÐедопуÑтимый ÑкземплÑÑ€ ÑÐ»Ð¾Ð²Ð°Ñ€Ñ (неверные подклаÑÑÑ‹)" #: scene/2d/animated_sprite.cpp msgid "" @@ -44,8 +86,8 @@ msgid "" msgstr "" "CollisionPolygon2D Ñлужит только Ð´Ð»Ñ Ð¾Ð±ÐµÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ Ñтолкновений фигурам типа " "CollisionObject2D. ПожалуйÑта иÑпользовать его только в качеÑтве дочернего " -"Ð´Ð»Ñ Area2D, StaticBody2D, RigidBody2D, KinematicBody2D и др. чтобы придать им " -"форму." +"Ð´Ð»Ñ Area2D, StaticBody2D, RigidBody2D, KinematicBody2D и др. чтобы придать " +"им форму." #: scene/2d/collision_polygon_2d.cpp msgid "An empty CollisionPolygon2D has no effect on collision." @@ -59,8 +101,8 @@ msgid "" msgstr "" "CollisionShape2D Ñлужит только Ð´Ð»Ñ Ð¾Ð±ÐµÑÐ¿ÐµÑ‡ÐµÐ½Ð¸Ñ Ñтолкновений фигурам типа " "CollisionObject2D. ПожалуйÑта иÑпользовать его только в качеÑтве дочернего " -"Ð´Ð»Ñ Area2D, StaticBody2D, RigidBody2D, KinematicBody2D и др. чтобы придать им " -"форму." +"Ð´Ð»Ñ Area2D, StaticBody2D, RigidBody2D, KinematicBody2D и др. чтобы придать " +"им форму." #: scene/2d/collision_shape_2d.cpp msgid "" @@ -109,8 +151,8 @@ msgstr "" msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." msgstr "" -"Ðод ParallaxLayer работает только при уÑтановке его в качеÑтве дочернего узла " -"ParallaxBackground." +"Ðод ParallaxLayer работает только при уÑтановке его в качеÑтве дочернего " +"узла ParallaxBackground." #: scene/2d/particles_2d.cpp msgid "Path property must point to a valid Particles2D node to work." @@ -137,26 +179,27 @@ msgstr "" #: scene/2d/sprite.cpp msgid "" -"Path property must point to a valid Viewport node to work. Such Viewport must " -"be set to 'render target' mode." +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." msgstr "" "Ð”Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹, параметр Path должен указывать на дейÑтвительный Ðод Viewport. " "Такой Viewport должен быть уÑтановлен в качеÑтве цели рендеринга." #: scene/2d/sprite.cpp msgid "" -"The Viewport set in the path property must be set as 'render target' in order " -"for this sprite to work." +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." msgstr "" -"ОблаÑти проÑмотра уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð² ÑвойÑтве path должна быть назначена \"целью " -"визуализации\" Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы Ñтот Ñпрайт работал." +"ОблаÑти проÑмотра уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð² ÑвойÑтве path должна быть назначена \"" +"целью визуализации\" Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы Ñтот Ñпрайт работал." #: scene/2d/visibility_notifier_2d.cpp msgid "" "VisibilityEnable2D works best when used with the edited scene root directly " "as parent." msgstr "" -"VisibilityEnable2D работает лучше, когда иÑпользуетÑÑ, как дочерний нод корнÑ." +"VisibilityEnable2D работает лучше, когда иÑпользуетÑÑ, как дочерний нод " +"корнÑ." #: scene/3d/body_shape.cpp msgid "" @@ -196,8 +239,8 @@ msgstr "РеÑÑƒÑ€Ñ NavigationMesh должен быть уÑтановлен Ð #: scene/3d/navigation_mesh.cpp msgid "" -"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " -"only provides navigation data." +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." msgstr "" "NavigationMeshInstance должен быть ребёнком или внуком нода Navigation. Он " "обеÑпечивает только навигационные данные." @@ -401,7 +444,8 @@ msgstr "Ð’Ñтавить" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_editor_plugin.cpp -#: tools/editor/plugins/shader_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "Select All" msgstr "Выбрать вÑе" @@ -421,8 +465,8 @@ msgstr "Отменить" #: scene/gui/popup.cpp msgid "" "Popups will hide by default unless you call popup() or any of the popup*() " -"functions. Making them visible for editing is fine though, but they will hide " -"upon running." +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." msgstr "" "Ð’Ñплывающие окна будут ÑкрыватьÑÑ Ð¿Ð¾-умолчанию, еÑли Ð’Ñ‹ не вызовете popup() " "или любой из popup*(). Ð”ÐµÐ»Ð°Ñ Ð¸Ñ… доÑтупными Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ…Ð¾Ñ€Ð¾ÑˆÐ°Ñ Ð¼Ñ‹Ñль, " @@ -538,6 +582,18 @@ msgid "Anim Delete Keys" msgstr "Ключ удалён" #: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "ÐепрерывнаÑ" + +#: tools/editor/animation_editor.cpp +msgid "Discrete" +msgstr "ДиÑкретнаÑ" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "Триггер" + +#: tools/editor/animation_editor.cpp msgid "Anim Add Key" msgstr "Ключ добавлен" @@ -645,6 +701,10 @@ msgid "Change Anim Loop" msgstr "Изменено зацикливание анимации" #: tools/editor/animation_editor.cpp +msgid "Change Anim Loop Interpolation" +msgstr "Изменена интерполÑÑ†Ð¸Ñ Ð°Ð½Ð¸Ð¼Ð°Ñ†Ð¸Ð¸" + +#: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" msgstr "Создан ключ Ñ Ð²Ð²Ð¾Ð´Ð¸Ð¼Ñ‹Ð¼ значением" @@ -685,6 +745,10 @@ msgid "Enable/Disable looping in animation." msgstr "Включить/отключить зацикливание в анимации." #: tools/editor/animation_editor.cpp +msgid "Enable/Disable interpolation when looping animation." +msgstr "Включить/отключить интерполÑцию при зацикливании анимации." + +#: tools/editor/animation_editor.cpp msgid "Add new tracks." msgstr "Добавить новые дорожки." @@ -949,13 +1013,9 @@ msgid "Method in target Node must be specified!" msgstr "Метод должен быть указан в целевом Ðоде!" #: tools/editor/connections_dialog.cpp -msgid "Connect To Node:" +msgid "Conect To Node:" msgstr "ПриÑоединить к ноду:" -#: tools/editor/connections_dialog.cpp -msgid "Binds (Extra Params):" -msgstr "СвÑзи (необÑзательные параметры):" - #: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp #: tools/editor/plugins/item_list_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp @@ -965,17 +1025,22 @@ msgstr "Добавить" #: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp -#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp msgid "Remove" msgstr "Удалить" #: tools/editor/connections_dialog.cpp -msgid "Path To Node:" -msgstr "Путь к ноду:" +msgid "Add Extra Call Argument:" +msgstr "Добавить дополнительный параметр вызова:" #: tools/editor/connections_dialog.cpp -msgid "Method In Node:" -msgstr "Ðазвание метода:" +msgid "Extra Call Arguments:" +msgstr "Дополнительные параметры вызова:" + +#: tools/editor/connections_dialog.cpp +msgid "Path to Node:" +msgstr "Путь к ноду:" #: tools/editor/connections_dialog.cpp msgid "Make Function" @@ -998,6 +1063,10 @@ msgid "Connect '%s' to '%s'" msgstr "ПриÑоединить '%s' к '%s'" #: tools/editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "Подключение Ñигнала:" + +#: tools/editor/connections_dialog.cpp msgid "Create Subscription" msgstr "Создать подпиÑку" @@ -1138,7 +1207,8 @@ msgid "Delete selected files?" msgstr "Удалить выбранные файлы?" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/item_list_editor_plugin.cpp tools/editor/scenes_dock.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp msgid "Delete" msgstr "Удалить" @@ -1335,8 +1405,8 @@ msgstr "Создание ÑÑкизов" msgid "" "Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." msgstr "" -"Ðе возможно Ñохранить Ñцену. ВероÑтно, завиÑимоÑти (ÑкземплÑры) не могли быть " -"удовлетворены." +"Ðе возможно Ñохранить Ñцену. ВероÑтно, завиÑимоÑти (ÑкземплÑры) не могли " +"быть удовлетворены." #: tools/editor/editor_node.cpp msgid "Failed to load resource." @@ -1522,8 +1592,8 @@ msgstr "ЯÑно" #: tools/editor/editor_node.cpp msgid "" -"Error loading scene, it must be inside the project path. Use 'Import' to open " -"the scene, then save it inside the project path." +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." msgstr "" "Ошибка при загрузке Ñцены, она должна быть внутри каталога проекта. " "ИÑпользуйте \"Импорт\", чтобы открыть Ñцену, а затем Ñохраните её в каталоге " @@ -1575,6 +1645,14 @@ msgid "Go to previously opened scene." msgstr "Перейти к предыдущей открытой Ñцене." #: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "ПолноÑкранный режим" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "Свободный режим" + +#: tools/editor/editor_node.cpp msgid "Operations with scene files." msgstr "Операции Ñ Ñ„Ð°Ð¹Ð»Ð°Ð¼Ð¸ Ñцены." @@ -1727,8 +1805,8 @@ msgstr "Развернуть Ñ ÑƒÐ´Ð°Ð»Ñ‘Ð½Ð½Ð¾Ð¹ отладкой" #: tools/editor/editor_node.cpp msgid "" -"When exporting or deploying, the resulting executable will attempt to connect " -"to the IP of this computer in order to be debugged." +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." msgstr "" "При ÑкÑпорте или развёртывании, полученный иÑполнÑемый файл будет пытатьÑÑ " "подключитьÑÑ Ðº IP Ñтого компьютера Ñ Ñ†ÐµÐ»ÑŒÑŽ отладки." @@ -1743,8 +1821,8 @@ msgid "" "executable.\n" "The filesystem will be provided from the project by the editor over the " "network.\n" -"On Android, deploy will use the USB cable for faster performance. This option " -"speeds up testing for games with a large footprint." +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." msgstr "" "Когда Ñта Ð¾Ð¿Ñ†Ð¸Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð°, ÑкÑпорт или развёртывание будет Ñоздавать " "минимальный иÑполнÑемый файл.\n" @@ -1860,9 +1938,7 @@ msgstr "Загрузить ÑущеÑтвующий реÑÑƒÑ€Ñ Ñ Ð´Ð¸Ñка Ð msgid "Save the currently edited resource." msgstr "Сохранить текущий редактируемый реÑурÑ." -#: tools/editor/editor_node.cpp -#: tools/editor/plugins/animation_player_editor_plugin.cpp -#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Save As.." msgstr "Сохранить как.." @@ -2513,8 +2589,8 @@ msgid "" "NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " "the project." msgstr "" -"Ð’ÐИМÐÐИЕ: Импортирование 2D текÑтур не обÑзательно. ПроÑто Ñкопируйте png/jpg " -"файлы в папку проекта." +"Ð’ÐИМÐÐИЕ: Импортирование 2D текÑтур не обÑзательно. ПроÑто Ñкопируйте png/" +"jpg файлы в папку проекта." #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Crop empty space." @@ -2737,7 +2813,8 @@ msgstr "ОШИБКÐ: Ðет анимации Ð´Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from current pos. (A)" msgstr "" -"ВоÑпроизвеÑти выбранную анимацию в обратном направлении Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ позиции. (A)" +"ВоÑпроизвеÑти выбранную анимацию в обратном направлении Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ¹ позиции. " +"(A)" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Play selected animation backwards from end. (Shift+A)" @@ -2769,14 +2846,22 @@ msgid "Create new animation in player." msgstr "Создать новую анимацию." #: tools/editor/plugins/animation_player_editor_plugin.cpp -msgid "Load an animation from disk." +msgid "Load animation from disk." msgstr "Загрузить анимацию Ñ Ð´Ð¸Ñка." #: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "Загрузить Ñту анимацию Ñ Ð´Ð¸Ñка." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Save the current animation" msgstr "Сохранить текущую анимацию" #: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As" +msgstr "Сохранить как" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." msgstr "Показать ÑпиÑок анимаций." @@ -3899,7 +3984,8 @@ msgstr "Импортировать тему" msgid "Save Theme As.." msgstr "Сохранить тему как.." -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "File" msgstr "Файл" @@ -3971,12 +4057,8 @@ msgid "Auto Indent" msgstr "ÐвтоотÑтуп" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script" -msgstr "Перезагрузить инÑтрум. Ñкрипт" - -#: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script (Soft)" -msgstr "Перезагрузить инÑтрум. Ñкрипт (мÑгко)" +msgid "Soft Reload Script" +msgstr "МÑгко перезагрузить Ñкрипты" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/shader_editor_plugin.cpp @@ -4068,8 +4150,8 @@ msgid "Help" msgstr "Справка" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Contextual" -msgstr "КонтекÑтнаÑ" +msgid "Contextual Help" +msgstr "КонтекÑÑ‚Ð½Ð°Ñ Ñправка" #: tools/editor/plugins/script_editor_plugin.cpp msgid "Tutorials" @@ -4277,10 +4359,6 @@ msgid "Transform Aborted." msgstr "ÐŸÑ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°ÐµÑ‚ÑÑ." #: tools/editor/plugins/spatial_editor_plugin.cpp -msgid "View Plane Transform." -msgstr "Вид Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð»Ð¾ÑкоÑти." - -#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." msgstr "Преобразование по X." @@ -4293,6 +4371,10 @@ msgid "Z-Axis Transform." msgstr "Преобразование по Z." #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "Вид Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð»Ð¾ÑкоÑти." + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scaling to %s%%." msgstr "МаÑштабирование до %s%%." @@ -4674,8 +4756,12 @@ msgid "Remove Class Items" msgstr "Удалить Ñлемент клаÑÑа" #: tools/editor/plugins/theme_editor_plugin.cpp -msgid "Create Template" -msgstr "Создать шаблон" +msgid "Create Empty Template" +msgstr "Создать пуÑтой образец" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "Создать пуÑтой образец редактора" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "CheckBox Radio1" @@ -4761,32 +4847,36 @@ msgid "Erase TileMap" msgstr "Стирать карту тайлов" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Bucket" -msgstr "Заливка" +msgid "Erase selection" +msgstr "ОчиÑтить выделенное" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Pick Tile" -msgstr "Выбрать тайл" +msgid "Find tile" +msgstr "Ðайти тайл" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Select" -msgstr "Выделение" +msgid "Transpose" +msgstr "ТранÑпонировать" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Erase Selection" -msgstr "ОчиÑтить выделенное" +msgid "Mirror X" +msgstr "Зеркально по X" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Transpose" -msgstr "ТранÑпонировать" +msgid "Mirror Y" +msgstr "Зеркально по Y" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "Заливка" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror X (A)" -msgstr "Зеркально по X (A)" +msgid "Pick Tile" +msgstr "Выбрать тайл" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror Y (S)" -msgstr "Зеркально по Y (S)" +msgid "Select" +msgstr "Выделение" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 0 degrees" @@ -4929,8 +5019,8 @@ msgstr "ДейÑтвие" msgid "" "Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" msgstr "" -"Фильтр Ð´Ð»Ñ ÑкÑпорта не реÑурÑных файлов (через запÑтую, например: *.json, *." -"txt):" +"Фильтр Ð´Ð»Ñ ÑкÑпорта не реÑурÑных файлов (через запÑтую, например: *.json, " +"*.txt):" #: tools/editor/project_export.cpp msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" @@ -5315,7 +5405,8 @@ msgstr "ДопуÑтимые Ñимволы:" #: tools/editor/project_settings.cpp msgid "Invalid name. Must not collide with an existing engine class name." msgstr "" -"ÐедопуÑтимое имÑ. Ðе должно конфликтовать Ñ ÑущеÑтвующим именем клаÑÑа движка." +"ÐедопуÑтимое имÑ. Ðе должно конфликтовать Ñ ÑущеÑтвующим именем клаÑÑа " +"движка." #: tools/editor/project_settings.cpp msgid "Invalid name. Must not collide with an existing buit-in type name." @@ -5629,8 +5720,8 @@ msgstr "Ок" #: tools/editor/scene_tree_dock.cpp msgid "" -"Cannot instance the scene '%s' because the current scene exists within one of " -"its nodes." +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." msgstr "" "Ðевозможно добавить Ñцену %s, потому что Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ Ñцена ÑущеÑтвует в одном из " "его нодов." @@ -5764,8 +5855,8 @@ msgid "" "Instance a scene file as a Node. Creates an inherited scene if no root node " "exists." msgstr "" -"Добавить файл Ñцены как нод. Создаёт наÑледуемую Ñцену, еÑли корневой узел не " -"ÑущеÑтвует." +"Добавить файл Ñцены как нод. Создаёт наÑледуемую Ñцену, еÑли корневой узел " +"не ÑущеÑтвует." #: tools/editor/scene_tree_editor.cpp msgid "" @@ -5808,6 +5899,10 @@ msgid "Load As Placeholder" msgstr "Загрузить как заполнитель" #: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "ОтброÑить инÑтанÑинг" + +#: tools/editor/scene_tree_editor.cpp msgid "Open in Editor" msgstr "Открыть в редакторе" @@ -6143,12 +6238,18 @@ msgstr "Изменена длинна луча" msgid "Change Notifier Extents" msgstr "Изменены границы уведомителÑ" +#~ msgid "Binds (Extra Params):" +#~ msgstr "СвÑзи (необÑзательные параметры):" + +#~ msgid "Method In Node:" +#~ msgstr "Ðазвание метода:" + +#~ msgid "Reload Tool Script (Soft)" +#~ msgstr "Перезагрузить инÑтрум. Ñкрипт (мÑгко)" + #~ msgid "Edit Connections.." #~ msgstr "Изменить ÑвÑзи.." -#~ msgid "Connections:" -#~ msgstr "СвÑзи:" - #~ msgid "Set Params" #~ msgstr "Ðазначить параметры" diff --git a/tools/translations/sk.po b/tools/translations/sk.po new file mode 100644 index 0000000000..b21333b7f8 --- /dev/null +++ b/tools/translations/sk.po @@ -0,0 +1,6106 @@ +# Slovak translation of the Godot Engine editor +# Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community +# This file is distributed under the same license as the Godot source code. +# +# lablazer <avojtus@centrum.sk>, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"PO-Revision-Date: 2016-06-11 11:23+0000\n" +"Last-Translator: lablazer <avojtus@centrum.sk>\n" +"Language-Team: Slovak <https://hosted.weblate.org/projects/godot-engine/" +"godot/sk/>\n" +"Language: sk\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Weblate 2.7-dev\n" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite to display frames." +msgstr "" + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "Prázdny CollisionPolygon2D nemá žiaden efekt na kolÃziu." + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"CollisionShape2D slúži iba na pridelenie kolÃzneho tvaru objektu vydedeného " +"z CollisionObject2D uzlu. ProsÃm, použite ho iba ako dieÅ¥a objektu Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, atÄ. aby ste im dali tvar." + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "" +"MusÃte nastaviÅ¥ tvar objektu CollisionShape2D aby fungoval. ProsÃm, vytvorte " +"preň tvarový objekt!" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the 'texture' " +"property." +msgstr "Textúra s tvarom svetla musà maÅ¥ nastavenú vlastnosÅ¥ \"textúra\"." + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "" +"Okluzorový polygón musà byÅ¥ nastavený (alebo vykreslený) aby sa okluzor " +"prejavil." + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" + +#: scene/2d/particles_2d.cpp +msgid "Path property must point to a valid Particles2D node to work." +msgstr "" + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "" + +#: scene/2d/sample_player_2d.cpp scene/audio/sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SamplePlayer to play sound." +msgstr "" + +#: scene/2d/sprite.cpp +msgid "" +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." +msgstr "" + +#: scene/2d/sprite.cpp +msgid "" +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." +msgstr "" + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnable2D works best when used with the edited scene root directly " +"as parent." +msgstr "" + +#: scene/3d/body_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/body_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." +msgstr "" + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" + +#: scene/3d/spatial_sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SpatialSamplePlayer to play sound." +msgstr "" + +#: scene/3d/sprite_3d.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite3D to display frames." +msgstr "" + +#: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Cancel" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "OK" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Recognized" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Files (*)" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/scenes_dock.cpp +msgid "Open" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a File" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open File(s)" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a Directory" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a File or Directory" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Save a File" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Create Folder" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/script_create_dialog.cpp +msgid "Path:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Directories & Files:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "File:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Filter:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_plugin_settings.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Name:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Could not create folder." +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Must use a valid extension." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Shift+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Alt+" +msgstr "" + +#: scene/gui/input_action.cpp +msgid "Ctrl+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Meta+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Device" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Button" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Left Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Right Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Middle Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Up." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Down." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Axis" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Cut" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Copy" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Paste" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "Select All" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_log.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/rich_text_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Clear" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Undo" +msgstr "" + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." +msgstr "" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error initializing FreeType." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Unknown font format." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error loading font." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font size." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Disabled" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "All Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transition" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transform" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Value" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Call" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Up" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Down" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove Anim Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Set Transitions to:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Rename" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Value Mode" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Node Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Selection Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Delete Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Discrete" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Move Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale From Cursor" +msgstr "" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Duplicate Transposed" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Next Step" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Prev Step" +msgstr "" + +#: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp +msgid "Linear" +msgstr "" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In-Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out-In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Transitions" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Optimize Animation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "" + +#: tools/editor/animation_editor.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/particles_editor_plugin.cpp +#: tools/editor/project_manager.cpp tools/editor/script_create_dialog.cpp +msgid "Create" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create & Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Len" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create Typed Value Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Scale Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Call Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Animation zoom." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Length (s):" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Animation length (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Step (s):" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Cursor step snap (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable looping in animation." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable interpolation when looping animation." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track up." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track down." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove selected track." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Track tools" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable editing of individual keys by clicking them." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim. Optimizer" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Linear Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Angular Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Optimize" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Transition" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale Ratio:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Call Functions in Which Node?" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove invalid keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-up all animations" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Search:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Sort:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Reverse" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Category:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "All" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Site:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Support.." +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Official" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Community" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Testing" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Method List For '%s':" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: tools/editor/call_dialog.cpp tools/editor/connections_dialog.cpp +#: tools/editor/import_settings.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +#: tools/editor/run_settings_dialog.cpp tools/editor/settings_config_dialog.cpp +msgid "Close" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Method List:" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Arguments:" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Return:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Go to Line" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Line Number:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "No Matches" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d Ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace All" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Match Case" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Whole Words" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Selection Only" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Search" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +msgid "Find" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Next" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Not found!" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace By" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Case Sensitive" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Backwards" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Prompt On Replace" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Skip" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Line:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Col:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Method in target Node must be specified!" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Conect To Node:" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Add" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Remove" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Add Extra Call Argument:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Extra Call Arguments:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Path to Node:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Make Function" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Deferred" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Create Subscription" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect.." +msgstr "" + +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Disconnect" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp +msgid "Signals" +msgstr "" + +#: tools/editor/create_dialog.cpp +msgid "Create New" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +msgid "Matches:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will not take effect unless reloaded." +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will take effect when reloaded." +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Resource" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/project_manager.cpp +#: tools/editor/project_settings.cpp +msgid "Path" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Remove selected files from the project? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Scene failed to load due to missing dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Open Anyway" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owns" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +msgid "Orphan Resource Explorer" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Delete selected files?" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp +msgid "Delete" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating Scene" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Storing local changes.." +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating scene.." +msgstr "" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp tools/editor/scenes_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Preview:" +msgstr "" + +#: tools/editor/editor_file_system.cpp +msgid "Cannot go into subdir:" +msgstr "" + +#: tools/editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Classes" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Class List:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/property_editor.cpp +msgid "Class:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Inherits:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Inherited by:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Brief Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Public Methods:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Members:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "GUI Theme Items:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Signals:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Constants:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Method Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Text" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Added:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Removed:" +msgstr "" + +#: tools/editor/editor_import_export.cpp tools/editor/project_export.cpp +msgid "Error saving atlas:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Could not save atlas subtexture:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Storing File:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Packing" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Exporting for %s" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Setting Up.." +msgstr "" + +#: tools/editor/editor_log.cpp +msgid " Output:" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +msgid "Re-Importing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Importing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Node From Scene" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scenes_dock.cpp +msgid "Re-Import.." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Error saving resource!" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Save Resource As.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "I see.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error while saving." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Saving Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Analyzing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Failed to load resource." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open export templates zip." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Loading Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Params" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Paste Params" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Built-In" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open in Help" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"No main scene has ever been defined.\n" +"Select one from \"Project Settings\" under the 'application' category." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Script.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Yes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close scene? (Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Please save the scene first." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Translatable Strings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Run Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Open Project Manager? \n" +"(Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "Ugh" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error loading scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load Layout" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Default" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Delete Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s) or folder(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Inherited Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Goto Prev. Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Recent" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Filter Files.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Convert To.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Translatable Strings.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "MeshLibrary.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "TileSet.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Redo" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Run Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Project Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import assets to the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Import" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Tools" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export the project to many platforms." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Play" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause the scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Stop the scene." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stop" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the edited scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play custom scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Debug options" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Deploy with Remote Debug" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Small Deploy with Network FS" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is enabled, export or deploy will produce a minimal " +"executable.\n" +"The filesystem will be provided from the project by the editor over the " +"network.\n" +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " +"running game if this option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Navigation meshes and polygons will be visible on the running game if this " +"option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Scene Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any changes made to the scene in the editor " +"will be replicated in the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Script Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any script that is saved will be reloaded on " +"the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Settings" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp +msgid "Editor Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Editor Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Install Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "About" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Alerts when an external resource has changed." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Spins when the editor window repaints!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Always" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Inspector" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Save As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Object properties." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "FileSystem" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Output" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +#: tools/editor/import_settings.cpp +msgid "Re-Import" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_plugin_settings.cpp +msgid "Update" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks from the Godot community!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export Project" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Password:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load Errors" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Version:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Fixed Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp tools/editor/script_editor_debugger.cpp +msgid "Time:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Please wait for scan to complete." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Current scene must be saved to re-import." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Save & Re-Import" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import Changed Resources" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "" + +#: tools/editor/editor_settings.cpp +msgid "Default (Same as Editor)" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "" + +#: tools/editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Add to Group" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "" + +#: tools/editor/import_settings.cpp +msgid "Imported Resources" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "No bit masks to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must be a complete resource path." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must exist." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Save path is empty!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Import BitMasks" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Target Path:" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Accept" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Bit Mask" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No source font file!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No target font resource!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Can't load/process source font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Couldn't save font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Dest Resource:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "The quick brown fox jumps over the lazy dog." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Test:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Options:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font Import" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"This file is already a Godot font file, please supply a BMFont type file " +"instead." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Failed opening as BMFont file." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font custom source." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Font" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "No meshes to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Single Mesh Import" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Source Mesh(es):" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Surface %d" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "No samples to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Import Audio Samples" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Source Sample(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Audio Sample" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "New Clip" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Animation Options" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Flags" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Bake FPS:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Optimizer" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Linear Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angular Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angle" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Clips" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/project_manager.cpp tools/editor/project_settings.cpp +msgid "Name" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Start(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "End(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Loop" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Filters" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error importing scene." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import 3D Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source Scene:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Same as Target Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Shared" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Target Texture Folder:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Post-Process Script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Custom Root Node Type:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Auto" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "The Following Files are Missing:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Anyway" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import & Open" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Edited scene has not been saved, open imported scene anyway?" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Importing Scene.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Running Custom Script.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error running post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Can't import a file over itself:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't localize path: %s (already local)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Saving.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "3D Scene Animation" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Uncompressed" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossless (PNG)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossy (WebP)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress (VRAM)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Format" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Compression Quality (WebP):" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Options" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Please specify some files!" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "At least one file needed for Atlas." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Error importing:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Only one file is required for large texture." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Max Texture Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for Atlas (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cell Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Textures (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Base Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 2D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 3D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "2D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "3D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "" +"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " +"the project." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Crop empty space." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Load Source Image" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Slicing" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Inserting" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Saving" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save large texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Build Atlas For:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Loading Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't load image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Converting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cropping Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Blitting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save atlas image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save converted texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid translation source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Column" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Language" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No items to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No target path!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translations" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Couldn't import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translation" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Source CSV:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Ignore First Row" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Compress" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Add to Project (engine.cfg)" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Languages:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Translation" +msgstr "" + +#: tools/editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Groups" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Select a Node to edit Signals and Groups." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Invalid animation name!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Animation name already exists!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to copy!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation resource on clipboard!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to edit!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create new animation in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save the current animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Target Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Copy Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_create_dialog.cpp +msgid "Error!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Animation" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "New name:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Start!" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 0:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 1:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Current:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Add Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Delete Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Rename" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Import Animations.." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Filters.." +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing %d Triangles:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Light Baker Setup:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing Geometry" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Fixing Lights" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Making BVH" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Light Octree" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Octree Texture" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Transfer to Lightmaps:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Allocating Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Baking Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Post-Processing Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "BakedLightInstance does not contain a BakedLight resource." +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Bake!" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Reset the lightmap octree baking process (start over)." +msgstr "" + +#: tools/editor/plugins/camera_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Preview" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Pivot" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Action" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit CanvasItem" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom (%):" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Select Mode (Q)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode (W)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode (E)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Edit" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Show Grid" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Expand to Parent" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom In" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Out" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Reset" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Set.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchor" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Keys (Ins)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set a Value" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap (Pixels):" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create a new polygon from scratch." +msgstr "" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Poly3D" +msgstr "" + +#: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Add/Remove Color Ramp Point" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Color Ramp" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Creating Mesh Library" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Thumbnail.." +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import from Scene" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Edit existing polygon:" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "LMB: Move Point." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Ctrl+LMB: Split Segment." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "RMB: Erase Point." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh.." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Parent has no solid faces to populate." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Couldn't map area." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Remove Poly And Point" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image.." +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Set Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry (faces)." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Faces contain no area!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Mesh" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Node" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Clear Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Positions:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Fill:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Surface" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Select Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Close Curve" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Enable Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Load Resource" +msgstr "" + +#: tools/editor/plugins/rich_text_editor_plugin.cpp +msgid "Parse BBCode" +msgstr "" + +#: tools/editor/plugins/sample_editor_plugin.cpp +msgid "Length:" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Open Sample File(s)" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "ERROR: Couldn't load sample!" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Add Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Rename Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Delete Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "16 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "8 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stereo" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Mono" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Format" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Pitch" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "File" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_editor.cpp +msgid "New" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Prev" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Move Up" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Move Down" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Left" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Right" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Comment" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Clone Down" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Complete Symbol" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Trim Trailing Whitespace" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Auto Indent" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Soft Reload Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Previous" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Replace.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Function.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Goto Line.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debug" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Remove All Breakpoints" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Next Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Previous Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Over" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Into" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Break" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Continue" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Window" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Left" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Right" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Contextual Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Tutorials" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Open https://godotengine.org at tutorials section." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Classes" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the class hierarchy." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Debugger" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Vertex" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Fragment" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Lighting" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Toggle Rot Only" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Default Value" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change XForm Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Texture Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Cubemap Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Comment" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Color Ramp" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Input Name" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Connect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Disconnect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Remove Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Move Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Duplicate Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Delete Shader Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Cyclic Connection Link" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Missing Input Connections" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling to %s%%." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top (Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom (Shift+Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left (Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right (Shift+Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front (Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear (Shift+Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective (Num5)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal (Num5)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Environment" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Selection (F)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view (Ctrl+Shift+F)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "No scene selected to instance!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Instance at Cursor" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Could not instance scene!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode (R)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Local Coords" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog.." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default Light" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default sRGB" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Shadeless" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Default Light Normal:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Ambient Light Color:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Up" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Down" +msgstr "" + +#: tools/editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox Preview:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Texture Region Editor" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Scale Region Editor" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "" +"No texture in this node.\n" +"Set a texture to be able to edit region." +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Can't save theme to file:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_export.cpp +msgid "Options" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Have,Many,Several,Options!" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Style" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase selection" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Find tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror X" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror Y" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 0 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 90 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 180 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 270 degrees" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Could not find tile:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Item name or ID:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Error" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Edit Script Options" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Please export outside the project folder!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error exporting project!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error writing the project PCK!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "No exporter for platform '%s' yet." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Include" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Change Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name can't be empty!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Invalid character in group name!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name already exists!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Add Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Delete Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas Preview" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export Settings" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Target" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export to Platform" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export selected resources (including dependencies)." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all resources in the project." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all files in the project directory." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources to Export:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Action" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "" +"Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert text scenes to binary on export." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep Original" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy, WebP)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for RAM (BC/PVRTC/ETC)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert Images (*.png):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy) Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink All Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Formats:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Groups" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Groups:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Disk" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress RAM" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Lossy Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink By:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Preview Atlas" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Filter:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Select None" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Samples" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sample Conversion Mode: (.wav files):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress (RAM - IMA-ADPCM)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sampling Rate Limit (Hz):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trim" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trailing Silence:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Text" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compiled" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Project PCK" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export.." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Preset:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, the path must exist!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must not exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Imported Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Couldn't create engine.cfg in project path." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path (Must Exist):" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Name:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Create New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Browse" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Game Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "That's a BINGO!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to open more than one projects?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to run more than one projects?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Remove project from the list? (Folder contents will not be modified)" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project List" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Run" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Scan" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Exit" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Key " +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Axis" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid action (anything goes but '/' or ':')." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action '%s' already exists!" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Rename Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Control+" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Press a Key.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Left Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Right Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Middle Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 6" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 7" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 8" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 9" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Axis Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Erase Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Toggle Persisting" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Error saving settings." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Settings saved OK." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Valid characters:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing engine class name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing buit-in type name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing global constant name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Autoload '%s' already exists!" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Rename Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Move Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Remapped Path" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resource Remap Add Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Change Resource Remap Language" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap Option" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Enable" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Project Settings (engine.cfg)" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "General" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +msgid "Property:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Del" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Copy To Platform.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Input Map" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Device:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Localization" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resources:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps by Locale:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Locale" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "AutoLoad" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Node Name:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "List:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Singleton" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Plugins" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Preset.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Zero" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "File.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Dir.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Load" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Assign" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Couldn't load image" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "On" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Properties:" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Global" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Sections:" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Could not execute PVRTC tool:" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Can't load back converted image using PVRTC tool:" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Create New Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Open Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Save Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Resource Tools" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Make Local" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "OK :(" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)?" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save New Scene As.." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Makes Sense!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "New Scene Root" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Inherit Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Groups" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Connections" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Script" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save Branch as Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add/Create a New Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "" +"This item cannot be made visible because the parent is hidden. Unhide the " +"parent first." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle Spatial Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle CanvasItem Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Editable Children" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Load As Placeholder" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear!" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination files, doing nothing." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination paths, doing nothing." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Can't move directories to within themselves." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Can't operate on '..'" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Pick New Name and Location For:" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "No files selected!" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Instance" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Edit Dependencies.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "View Owners.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Copy Path" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Rename or Move.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Move To.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Info" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Show In File Manager" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Previous Directory" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Next Directory" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Move" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid parent class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid chars:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "N/A" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Parent class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid path!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Could not create script in filesystem." +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is empty" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is not local" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid base path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "File exists" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid extension" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Built-In Script" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Create Node Script" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Warning" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Function:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Child Process Connected" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Variable" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Trace (if applicable):" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Inspector" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Scene Tree:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Object Properties: " +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Value" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Video Mem" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Type" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "" + +#: tools/editor/settings_config_dialog.cpp +msgid "Shortcuts" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Notifier Extents" +msgstr "" diff --git a/tools/translations/tools.pot b/tools/translations/tools.pot index f007a7be36..854f8fef78 100644 --- a/tools/translations/tools.pot +++ b/tools/translations/tools.pot @@ -1,6 +1,7 @@ # LANGUAGE translation of the Godot Engine editor # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. +# # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # #, fuzzy @@ -10,6 +11,46 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8-bit\n" +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -98,14 +139,14 @@ msgstr "" #: scene/2d/sprite.cpp msgid "" -"Path property must point to a valid Viewport node to work. Such Viewport must " -"be set to 'render target' mode." +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." msgstr "" #: scene/2d/sprite.cpp msgid "" -"The Viewport set in the path property must be set as 'render target' in order " -"for this sprite to work." +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." msgstr "" #: scene/2d/visibility_notifier_2d.cpp @@ -144,8 +185,8 @@ msgstr "" #: scene/3d/navigation_mesh.cpp msgid "" -"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " -"only provides navigation data." +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." msgstr "" #: scene/3d/scenario_fx.cpp @@ -341,7 +382,8 @@ msgstr "" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_editor_plugin.cpp -#: tools/editor/plugins/shader_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "Select All" msgstr "" @@ -361,8 +403,8 @@ msgstr "" #: scene/gui/popup.cpp msgid "" "Popups will hide by default unless you call popup() or any of the popup*() " -"functions. Making them visible for editing is fine though, but they will hide " -"upon running." +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." msgstr "" #: scene/main/viewport.cpp @@ -470,6 +512,18 @@ msgid "Anim Delete Keys" msgstr "" #: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Discrete" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "" + +#: tools/editor/animation_editor.cpp msgid "Anim Add Key" msgstr "" @@ -577,6 +631,10 @@ msgid "Change Anim Loop" msgstr "" #: tools/editor/animation_editor.cpp +msgid "Change Anim Loop Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" msgstr "" @@ -617,6 +675,10 @@ msgid "Enable/Disable looping in animation." msgstr "" #: tools/editor/animation_editor.cpp +msgid "Enable/Disable interpolation when looping animation." +msgstr "" + +#: tools/editor/animation_editor.cpp msgid "Add new tracks." msgstr "" @@ -884,10 +946,6 @@ msgstr "" msgid "Connect To Node:" msgstr "" -#: tools/editor/connections_dialog.cpp -msgid "Binds (Extra Params):" -msgstr "" - #: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp #: tools/editor/plugins/item_list_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp @@ -897,16 +955,21 @@ msgstr "" #: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp -#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp msgid "Remove" msgstr "" #: tools/editor/connections_dialog.cpp -msgid "Path To Node:" +msgid "Add Extra Call Argument:" msgstr "" #: tools/editor/connections_dialog.cpp -msgid "Method In Node:" +msgid "Extra Call Arguments:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Path to Node:" msgstr "" #: tools/editor/connections_dialog.cpp @@ -930,6 +993,10 @@ msgid "Connect '%s' to '%s'" msgstr "" #: tools/editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "" + +#: tools/editor/connections_dialog.cpp msgid "Create Subscription" msgstr "" @@ -1064,7 +1131,8 @@ msgid "Delete selected files?" msgstr "" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/item_list_editor_plugin.cpp tools/editor/scenes_dock.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp msgid "Delete" msgstr "" @@ -1441,8 +1509,8 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "" -"Error loading scene, it must be inside the project path. Use 'Import' to open " -"the scene, then save it inside the project path." +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." msgstr "" #: tools/editor/editor_node.cpp @@ -1458,7 +1526,7 @@ msgid "Save Layout" msgstr "" #: tools/editor/editor_node.cpp -msgid "Load Layout" +msgid "Delete Layout" msgstr "" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp @@ -1466,10 +1534,6 @@ msgid "Default" msgstr "" #: tools/editor/editor_node.cpp -msgid "Delete Layout" -msgstr "" - -#: tools/editor/editor_node.cpp msgid "Switch Scene Tab" msgstr "" @@ -1491,6 +1555,14 @@ msgid "Go to previously opened scene." msgstr "" #: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Operations with scene files." msgstr "" @@ -1643,8 +1715,8 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "" -"When exporting or deploying, the resulting executable will attempt to connect " -"to the IP of this computer in order to be debugged." +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." msgstr "" #: tools/editor/editor_node.cpp @@ -1657,8 +1729,8 @@ msgid "" "executable.\n" "The filesystem will be provided from the project by the editor over the " "network.\n" -"On Android, deploy will use the USB cable for faster performance. This option " -"speeds up testing for games with a large footprint." +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." msgstr "" #: tools/editor/editor_node.cpp @@ -1757,9 +1829,7 @@ msgstr "" msgid "Save the currently edited resource." msgstr "" -#: tools/editor/editor_node.cpp -#: tools/editor/plugins/animation_player_editor_plugin.cpp -#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Save As.." msgstr "" @@ -2035,6 +2105,12 @@ msgid "No target font resource!" msgstr "" #: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"Invalid file extension.\n" +"Please use .fnt." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp msgid "Can't load/process source font." msgstr "" @@ -2652,6 +2728,10 @@ msgid "Create new animation in player." msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load an animation from disk." msgstr "" @@ -2660,6 +2740,10 @@ msgid "Save the current animation" msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." msgstr "" @@ -3778,7 +3862,8 @@ msgstr "" msgid "Save Theme As.." msgstr "" -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "File" msgstr "" @@ -3850,11 +3935,7 @@ msgid "Auto Indent" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script" -msgstr "" - -#: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script (Soft)" +msgid "Soft Reload Script" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp @@ -3947,7 +4028,7 @@ msgid "Help" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Contextual" +msgid "Contextual Help" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp @@ -4154,10 +4235,6 @@ msgid "Transform Aborted." msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp -msgid "View Plane Transform." -msgstr "" - -#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." msgstr "" @@ -4170,6 +4247,10 @@ msgid "Z-Axis Transform." msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scaling to %s%%." msgstr "" @@ -4549,7 +4630,11 @@ msgid "Remove Class Items" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp -msgid "Create Template" +msgid "Create Empty Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp @@ -4636,31 +4721,35 @@ msgid "Erase TileMap" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Bucket" +msgid "Erase selection" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Pick Tile" +msgid "Find tile" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Select" +msgid "Transpose" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Erase Selection" +msgid "Mirror X" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Transpose" +msgid "Mirror Y" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror X (A)" +msgid "Pick Tile" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror Y (S)" +msgid "Select" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp @@ -5495,8 +5584,8 @@ msgstr "" #: tools/editor/scene_tree_dock.cpp msgid "" -"Cannot instance the scene '%s' because the current scene exists within one of " -"its nodes." +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." msgstr "" #: tools/editor/scene_tree_dock.cpp @@ -5574,31 +5663,27 @@ msgid "Error duplicating scene to save it." msgstr "" #: tools/editor/scene_tree_dock.cpp -msgid "New Scene Root" -msgstr "" - -#: tools/editor/scene_tree_dock.cpp -msgid "Inherit Scene" +msgid "Edit Groups" msgstr "" #: tools/editor/scene_tree_dock.cpp -msgid "Add Child Node" +msgid "Edit Connections" msgstr "" #: tools/editor/scene_tree_dock.cpp -msgid "Instance Child Scene" +msgid "Delete Node(s)" msgstr "" #: tools/editor/scene_tree_dock.cpp -msgid "Change Type" +msgid "Add Child Node" msgstr "" #: tools/editor/scene_tree_dock.cpp -msgid "Edit Groups" +msgid "Instance Child Scene" msgstr "" #: tools/editor/scene_tree_dock.cpp -msgid "Edit Connections" +msgid "Change Type" msgstr "" #: tools/editor/scene_tree_dock.cpp @@ -5614,10 +5699,6 @@ msgid "Save Branch as Scene" msgstr "" #: tools/editor/scene_tree_dock.cpp -msgid "Delete Node(s)" -msgstr "" - -#: tools/editor/scene_tree_dock.cpp msgid "Add/Create a New Node" msgstr "" @@ -5666,6 +5747,10 @@ msgid "Load As Placeholder" msgstr "" #: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp msgid "Open in Editor" msgstr "" diff --git a/tools/translations/zh_CN.po b/tools/translations/zh_CN.po index b35419f445..70b7845f9d 100644 --- a/tools/translations/zh_CN.po +++ b/tools/translations/zh_CN.po @@ -1,38 +1,81 @@ -# LANGUAGE translation of the Godot Engine editor +# Chinese (China) translation of the Godot Engine editor # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# # Geequlim <geequlim@gmail.com>, 2016. # msgid "" msgstr "" "Project-Id-Version: Godot Engine editor\n" "POT-Creation-Date: \n" -"PO-Revision-Date: 2016-05-31 23:28+0800\n" +"PO-Revision-Date: 2016-06-11 11:37+0000\n" "Last-Translator: Geequlim <geequlim@gmail.com>\n" -"Language-Team: æ±‰è¯ <geequlim@gmail.com>\n" +"Language-Team: Chinese (China) <https://hosted.weblate.org/projects/godot-" +"engine/godot/zh_CN/>\n" "Language: zh_CN\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Gtranslator 2.91.7\n" "Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 2.7-dev\n" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +#, fuzzy +msgid "Not a script with an instance" +msgstr "没有选用è¦å®žä¾‹åŒ–的场景ï¼" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +#, fuzzy +msgid "Not based on a resource file" +msgstr "è¯·è®¾ç½®ç›®æ ‡å—体资æºï¼" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " "order for AnimatedSprite to display frames." msgstr "" -"SpriteFrames资æºå¿…须是通过AnimatedSprite节点的frames属性创建的,å¦åˆ™æ— 法显示动" -"画帧。" +"SpriteFrames资æºå¿…须是通过AnimatedSprite节点的frames属性创建的,å¦åˆ™æ— 法显示" +"动画帧。" #: scene/2d/canvas_modulate.cpp msgid "" "Only one visible CanvasModulate is allowed per scene (or set of instanced " "scenes). The first created one will work, while the rest will be ignored." msgstr "" -"æ¯ä¸ªåœºæ™¯ä¸åªå…许有一个CanvasModulate类型的节点,场景ä¸çš„第一个CanvasModulate节" -"点能æ£å¸¸å·¥ä½œï¼Œå…¶ä½™çš„将被忽略。" +"æ¯ä¸ªåœºæ™¯ä¸åªå…许有一个CanvasModulate类型的节点,场景ä¸çš„第一个CanvasModulate" +"节点能æ£å¸¸å·¥ä½œï¼Œå…¶ä½™çš„将被忽略。" #: scene/2d/collision_polygon_2d.cpp msgid "" @@ -66,7 +109,7 @@ msgstr "形状资æºå¿…须是通过CollisionShape2D节点的shape属性创建的 msgid "" "A texture with the shape of the light must be supplied to the 'texture' " "property." -msgstr "" +msgstr "光照的形状与纹ç†å¿…é¡»æä¾›ç»™çº¹ç†å±žæ€§ã€‚" #: scene/2d/light_occluder_2d.cpp msgid "" @@ -95,7 +138,8 @@ msgstr "" #: scene/2d/parallax_layer.cpp msgid "" "ParallaxLayer node only works when set as child of a ParallaxBackground node." -msgstr "ParallaxLayer类型的节点必须作为ParallaxBackgroundçš„å节点æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" +msgstr "" +"ParallaxLayer类型的节点必须作为ParallaxBackgroundçš„å节点æ‰èƒ½æ£å¸¸å·¥ä½œã€‚" #: scene/2d/particles_2d.cpp msgid "Path property must point to a valid Particles2D node to work." @@ -114,21 +158,21 @@ msgid "" "A SampleLibrary resource must be created or set in the 'samples' property in " "order for SamplePlayer to play sound." msgstr "" -"SampleLibrary类型的资æºå¿…须是通过SamplePlayer类型节点的sampleså±žæ€§åˆ›å»ºçš„ï¼Œè¿™æ ·" -"çš„èµ„æºæ‰èƒ½ç”¨äºŽæ’放声音。" +"SampleLibrary类型的资æºå¿…须是通过SamplePlayer类型节点的samples属性创建的,这" +"æ ·çš„èµ„æºæ‰èƒ½ç”¨äºŽæ’放声音。" #: scene/2d/sprite.cpp msgid "" -"Path property must point to a valid Viewport node to work. Such Viewport must " -"be set to 'render target' mode." +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." msgstr "" "Path属性必须指å‘ä¸€ä¸ªåˆæ³•çš„Viewport节点æ‰èƒ½å·¥ä½œï¼ŒåŒæ—¶æ¤Viewport还需è¦å¯" "用'render target'。" #: scene/2d/sprite.cpp msgid "" -"The Viewport set in the path property must be set as 'render target' in order " -"for this sprite to work." +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." msgstr "" "为了让æ¤ç²¾çµæ£å¸¸å·¥ä½œï¼Œå®ƒçš„path属性所指å‘çš„Viewport需è¦å¼€å¯'render target'。" @@ -174,8 +218,8 @@ msgstr "æ¤èŠ‚ç‚¹éœ€è¦è®¾ç½®NavigationMeshèµ„æºæ‰èƒ½å·¥ä½œã€‚" #: scene/3d/navigation_mesh.cpp msgid "" -"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " -"only provides navigation data." +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." msgstr "" "NavigationMeshInstance类型节点必须作为Navigation节点的å噿‰èƒ½æä¾›å¯¼èˆªæ•°æ®ã€‚" @@ -193,13 +237,12 @@ msgstr "" "æ£å¸¸æ’放声音。" #: scene/3d/sprite_3d.cpp -#, fuzzy msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " "order for AnimatedSprite3D to display frames." msgstr "" -"SpriteFrames资æºå¿…须是通过AnimatedSprite节点的frames属性创建的,å¦åˆ™æ— 法显示动" -"画帧。" +"SpriteFrame资æºå¿…须是通过AnimatedSprite3D节点的Frames属性创建的,å¦åˆ™æ— 法显示" +"动画帧。" #: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Cancel" @@ -215,7 +258,7 @@ msgstr "æç¤ºï¼" #: scene/gui/dialogs.cpp msgid "Please Confirm..." -msgstr "请确认" +msgstr "请确认..." #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp msgid "File Exists, Overwrite?" @@ -237,24 +280,20 @@ msgid "Open" msgstr "打开" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a File" -msgstr "打开声音文件" +msgstr "打开文件" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open File(s)" -msgstr "打开声音文件" +msgstr "打开文件" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a Directory" -msgstr "选择目录" +msgstr "打开目录" #: scene/gui/file_dialog.cpp -#, fuzzy msgid "Open a File or Directory" -msgstr "选择目录" +msgstr "打开文件或目录" #: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp #: tools/editor/editor_node.cpp @@ -295,7 +334,7 @@ msgstr "ç›é€‰ï¼š" #: tools/editor/editor_file_dialog.cpp tools/editor/editor_plugin_settings.cpp #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Name:" -msgstr "åç§°" +msgstr "åç§°:" #: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp #: tools/editor/editor_file_dialog.cpp @@ -318,7 +357,7 @@ msgstr "Alt+" #: scene/gui/input_action.cpp msgid "Ctrl+" -msgstr "" +msgstr "Ctrl+" #: scene/gui/input_action.cpp tools/editor/project_settings.cpp #: tools/editor/settings_config_dialog.cpp @@ -381,7 +420,8 @@ msgstr "粘贴" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_editor_plugin.cpp -#: tools/editor/plugins/shader_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "Select All" msgstr "全选" @@ -401,11 +441,11 @@ msgstr "撤销" #: scene/gui/popup.cpp msgid "" "Popups will hide by default unless you call popup() or any of the popup*() " -"functions. Making them visible for editing is fine though, but they will hide " -"upon running." +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." msgstr "" -"Popupå¯¹è±¡åœ¨ä½ è°ƒç”¨popup()方法之å‰å°†ä¿æŒéšè—,这里设置为å¯è§å¹¶ä¸ä»£è¡¨æ‰§è¡Œåœºæ™¯æ—¶å®ƒ" -"会出现。" +"Popupå¯¹è±¡åœ¨ä½ è°ƒç”¨popup()方法之å‰å°†ä¿æŒéšè—,这里设置为å¯è§å¹¶ä¸ä»£è¡¨æ‰§è¡Œåœºæ™¯æ—¶" +"它会出现。" #: scene/main/viewport.cpp msgid "" @@ -414,6 +454,9 @@ msgid "" "obtain a size. Otherwise, make it a RenderTarget and assign its internal " "texture to some node for display." msgstr "" +"这个Viewport未设置render targetã€‚å¦‚æžœä½ åˆ»æ„为之,直接在å±å¹•上显示其内容,使其" +"æˆä¸ºå控件的所以它å¯ä»¥èŽ·å–大å°ã€‚å¦åˆ™è¯·è®¾ç½®render target,将其内部纹ç†åˆ†é…给一" +"些节点显示。" #: scene/resources/dynamic_font.cpp #: tools/editor/io_plugins/editor_font_import_plugin.cpp @@ -512,6 +555,20 @@ msgid "Anim Delete Keys" msgstr "åˆ é™¤å…³é”®å¸§" #: tools/editor/animation_editor.cpp +#, fuzzy +msgid "Continuous" +msgstr "ç»§ç»" + +#: tools/editor/animation_editor.cpp +#, fuzzy +msgid "Discrete" +msgstr "åˆ é™¤äº‹ä»¶è¿žæŽ¥" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "" + +#: tools/editor/animation_editor.cpp msgid "Anim Add Key" msgstr "æ·»åŠ å…³é”®å¸§" @@ -619,6 +676,11 @@ msgid "Change Anim Loop" msgstr "修改动画循环" #: tools/editor/animation_editor.cpp +#, fuzzy +msgid "Change Anim Loop Interpolation" +msgstr "修改动画循环" + +#: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" msgstr "" @@ -659,6 +721,11 @@ msgid "Enable/Disable looping in animation." msgstr "å¯ç”¨/ç¦ç”¨å¾ªçޝ" #: tools/editor/animation_editor.cpp +#, fuzzy +msgid "Enable/Disable interpolation when looping animation." +msgstr "å¯ç”¨/ç¦ç”¨å¾ªçޝ" + +#: tools/editor/animation_editor.cpp msgid "Add new tracks." msgstr "新建轨é“" @@ -779,26 +846,24 @@ msgid "Site:" msgstr "站点:" #: tools/editor/asset_library_editor_plugin.cpp -#, fuzzy msgid "Support.." -msgstr "导出.." +msgstr "支æŒ.." #: tools/editor/asset_library_editor_plugin.cpp msgid "Official" -msgstr "" +msgstr "官方" #: tools/editor/asset_library_editor_plugin.cpp msgid "Community" -msgstr "" +msgstr "社区" #: tools/editor/asset_library_editor_plugin.cpp -#, fuzzy msgid "Testing" -msgstr "设置" +msgstr "测试" #: tools/editor/asset_library_editor_plugin.cpp msgid "Assets ZIP File" -msgstr "" +msgstr "ZIP资æºåŒ…" #: tools/editor/call_dialog.cpp msgid "Method List For '%s':" @@ -925,13 +990,10 @@ msgid "Method in target Node must be specified!" msgstr "必须设置方法的对象节点ï¼" #: tools/editor/connections_dialog.cpp -msgid "Connect To Node:" +#, fuzzy +msgid "Conect To Node:" msgstr "连接到节点:" -#: tools/editor/connections_dialog.cpp -msgid "Binds (Extra Params):" -msgstr "ç»‘å®šï¼ˆé™„åŠ å‚æ•°ï¼‰ï¼š" - #: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp #: tools/editor/plugins/item_list_editor_plugin.cpp #: tools/editor/plugins/theme_editor_plugin.cpp @@ -941,17 +1003,24 @@ msgstr "æ·»åŠ " #: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp -#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp msgid "Remove" msgstr "移除" #: tools/editor/connections_dialog.cpp -msgid "Path To Node:" -msgstr "节点路径:" +msgid "Add Extra Call Argument:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +#, fuzzy +msgid "Extra Call Arguments:" +msgstr "傿•°ï¼š" #: tools/editor/connections_dialog.cpp -msgid "Method In Node:" -msgstr "节点方法:" +#, fuzzy +msgid "Path to Node:" +msgstr "节点路径:" #: tools/editor/connections_dialog.cpp msgid "Make Function" @@ -974,6 +1043,11 @@ msgid "Connect '%s' to '%s'" msgstr "连接'%s'到'%s'" #: tools/editor/connections_dialog.cpp +#, fuzzy +msgid "Connecting Signal:" +msgstr "事件:" + +#: tools/editor/connections_dialog.cpp msgid "Create Subscription" msgstr "" @@ -987,9 +1061,8 @@ msgid "Disconnect" msgstr "åˆ é™¤äº‹ä»¶è¿žæŽ¥" #: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp -#, fuzzy msgid "Signals" -msgstr "事件:" +msgstr "ä¿¡å·" #: tools/editor/create_dialog.cpp msgid "Create New" @@ -1109,7 +1182,8 @@ msgid "Delete selected files?" msgstr "åˆ é™¤é€‰ä¸çš„æ–‡ä»¶ï¼Ÿ" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/item_list_editor_plugin.cpp tools/editor/scenes_dock.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp msgid "Delete" msgstr "åˆ é™¤" @@ -1243,7 +1317,6 @@ msgid "Setting Up.." msgstr "é…ç½®.." #: tools/editor/editor_log.cpp -#, fuzzy msgid " Output:" msgstr "输出" @@ -1314,11 +1387,11 @@ msgstr "åŠ è½½èµ„æºå¤±è´¥ã€‚" #: tools/editor/editor_node.cpp msgid "Can't load MeshLibrary for merging!" -msgstr "" +msgstr "æ— æ³•åŠ è½½è¦åˆå¹¶çš„MeshLibrary" #: tools/editor/editor_node.cpp msgid "Error saving MeshLibrary!" -msgstr "" +msgstr "ä¿å˜MeshLibrary出错ï¼" #: tools/editor/editor_node.cpp msgid "Can't load TileSet for merging!" @@ -1357,7 +1430,6 @@ msgid "Copy Params" msgstr "æ‹·è´å‚æ•°" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Paste Params" msgstr "粘贴帧" @@ -1379,9 +1451,8 @@ msgid "Make Sub-Resources Unique" msgstr "" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Open in Help" -msgstr "打开场景" +msgstr "查看帮助" #: tools/editor/editor_node.cpp msgid "There is no defined scene to run." @@ -1392,6 +1463,8 @@ msgid "" "No main scene has ever been defined.\n" "Select one from \"Project Settings\" under the 'application' category." msgstr "" +"尚未定义主场景。\n" +"请在项目设置的application分类下设置选择主场景。" #: tools/editor/editor_node.cpp msgid "Current scene was never saved, please save it prior to running." @@ -1407,7 +1480,7 @@ msgstr "打开场景" #: tools/editor/editor_node.cpp msgid "Open Base Scene" -msgstr "" +msgstr "打开父场景" #: tools/editor/editor_node.cpp msgid "Quick Open Scene.." @@ -1443,7 +1516,7 @@ msgstr "ä¿å˜å¯ç¿»è¯‘å—符串" #: tools/editor/editor_node.cpp msgid "Export Mesh Library" -msgstr "" +msgstr "导出MeshLibrary" #: tools/editor/editor_node.cpp msgid "Export Tile Set" @@ -1489,8 +1562,8 @@ msgstr "é¢" #: tools/editor/editor_node.cpp msgid "" -"Error loading scene, it must be inside the project path. Use 'Import' to open " -"the scene, then save it inside the project path." +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." msgstr "" "åŠ è½½åœºæ™¯å‡ºé”™ï¼Œåœºæ™¯å¿…é¡»æ”¾åœ¨é¡¹ç›®ç›®å½•ä¸‹ã€‚è¯·å°è¯•使用'导入'èœå•导入æ¤åœºæ™¯åŽå†è¯•。" @@ -1507,9 +1580,8 @@ msgid "Save Layout" msgstr "ä¿å˜å¸ƒå±€" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Load Layout" -msgstr "ä¿å˜å¸ƒå±€" +msgstr "åŠ è½½å¸ƒå±€" #: tools/editor/editor_node.cpp tools/editor/project_export.cpp msgid "Default" @@ -1541,6 +1613,14 @@ msgid "Go to previously opened scene." msgstr "å‰å¾€ä¸Šä¸€ä¸ªæ‰“开的场景。" #: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Operations with scene files." msgstr "æ“作场景文件。" @@ -1573,9 +1653,8 @@ msgid "Open Recent" msgstr "最近打开" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Quick Filter Files.." -msgstr "快速查找文件.." +msgstr "快速ç›é€‰æ–‡ä»¶.." #: tools/editor/editor_node.cpp msgid "Convert To.." @@ -1587,7 +1666,7 @@ msgstr "å¯ç¿»è¯‘å—符串" #: tools/editor/editor_node.cpp msgid "MeshLibrary.." -msgstr "" +msgstr "MeshLibrary.." #: tools/editor/editor_node.cpp msgid "TileSet.." @@ -1647,7 +1726,6 @@ msgid "Export" msgstr "导出" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play the project." msgstr "è¿è¡Œæ¤é¡¹ç›®ï¼ˆF5)" @@ -1661,14 +1739,12 @@ msgid "Pause the scene" msgstr "æš‚åœè¿è¡Œåœºæ™¯" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Pause Scene" msgstr "æš‚åœè¿è¡Œåœºæ™¯" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Stop the scene." -msgstr "åœæ¢è¿è¡Œåœºæ™¯ï¼ˆF8)" +msgstr "åœæ¢è¿è¡Œåœºæ™¯" #: tools/editor/editor_node.cpp #: tools/editor/plugins/sample_library_editor_plugin.cpp @@ -1676,14 +1752,12 @@ msgid "Stop" msgstr "åœæ¢" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play the edited scene." -msgstr "è¿è¡Œæ‰“开的场景(F6)" +msgstr "打开并è¿è¡Œåœºæ™¯" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Play Scene" -msgstr "ä¿å˜åœºæ™¯" +msgstr "è¿è¡Œåœºæ™¯" #: tools/editor/editor_node.cpp msgid "Play custom scene" @@ -1694,19 +1768,19 @@ msgid "Debug options" msgstr "调试选项" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Deploy with Remote Debug" msgstr "部署远程调试" #: tools/editor/editor_node.cpp msgid "" -"When exporting or deploying, the resulting executable will attempt to connect " -"to the IP of this computer in order to be debugged." +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." msgstr "" +"导出或å‘å¸ƒé¡¹ç›®æ—¶ï¼Œä¸ºäº†èƒ½å¤Ÿè°ƒè¯•é¡¹ç›®ï¼Œå¯æ‰§è¡Œæ–‡ä»¶å°†è¯•图通过本机IP连接到调试器。" #: tools/editor/editor_node.cpp msgid "Small Deploy with Network FS" -msgstr "" +msgstr "å‘布基于网络文件系统的最å°åº”用包" #: tools/editor/editor_node.cpp msgid "" @@ -1714,9 +1788,13 @@ msgid "" "executable.\n" "The filesystem will be provided from the project by the editor over the " "network.\n" -"On Android, deploy will use the USB cable for faster performance. This option " -"speeds up testing for games with a large footprint." +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." msgstr "" +"当å¯ç”¨æ¤é¡¹åŽï¼Œå°†åœ¨å¯¼å‡ºæˆ–å‘å¸ƒé¡¹ç›®æ—¶ç”Ÿæˆæœ€å°åŒ–å¯è‡ªè¡Œæ–‡ä»¶ã€‚\n" +"文件系统将通过网络连接到编辑器æ¥å®žçŽ°ã€‚\n" +"在Androidå¹³å°ï¼Œé€šè¿‡USBå‘布能获得更快的效率。\n" +"æ¤é€‰é¡¹ç”¨äºŽåŠ å¿«æ¸¸æˆçš„æµ‹è¯•。" #: tools/editor/editor_node.cpp msgid "Visible Collision Shapes" @@ -1726,7 +1804,7 @@ msgstr "碰撞区域å¯è§" msgid "" "Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " "running game if this option is turned on." -msgstr "" +msgstr "如果å¯ç”¨æ¤é¡¹ï¼ŒèŠ‚ç‚¹çš„ç¢°æ’žåŒºåŸŸå’Œraycast将在游æˆè¿è¡Œæ—¶å¯è§ã€‚" #: tools/editor/editor_node.cpp msgid "Visible Navigation" @@ -1736,11 +1814,11 @@ msgstr "Navigationå¯è§" msgid "" "Navigation meshes and polygons will be visible on the running game if this " "option is turned on." -msgstr "" +msgstr "如果å¯ç”¨æ¤é¡¹ï¼Œç”¨äºŽå¯¼èˆªçš„mesh和多边形将在游æˆè¿è¡Œæ—¶å¯è§ã€‚" #: tools/editor/editor_node.cpp msgid "Sync Scene Changes" -msgstr "" +msgstr "åŒæ¥åœºæ™¯ä¿®æ”¹" #: tools/editor/editor_node.cpp msgid "" @@ -1749,11 +1827,12 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"开坿¤é¡¹åŽï¼Œåœ¨ç¼–辑器ä¸å¯¹åœºæ™¯çš„æ‰€æœ‰ä¿®æ”¹éƒ½ä¼šè¢«åº”用与æ£åœ¨è¿è¡Œçš„æ¸¸æˆä¸ã€‚\n" +"当使用远程设备调试时,使用网络文件系统能有效æé«˜ç¼–辑效率。" #: tools/editor/editor_node.cpp -#, fuzzy msgid "Sync Script Changes" -msgstr "有更改时更新UI" +msgstr "åŒæ¥è„šæœ¬å˜æ›´" #: tools/editor/editor_node.cpp msgid "" @@ -1762,6 +1841,8 @@ msgid "" "When used remotely on a device, this is more efficient with network " "filesystem." msgstr "" +"开坿¤é¡¹åŽï¼Œæ‰€æœ‰è„šæœ¬åœ¨ä¿å˜æ—¶éƒ½ä¼šè¢«æ£åœ¨è¿è¡Œçš„æ¸¸æˆé‡æ–°åŠ è½½ã€‚\n" +"当使用远程设备调试时,使用网络文件系统能有效æé«˜ç¼–辑效率。" #: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp msgid "Settings" @@ -1815,9 +1896,7 @@ msgstr "从ç£ç›˜ä¸åŠ è½½èµ„æºå¹¶ç¼–辑。" msgid "Save the currently edited resource." msgstr "ä¿å˜å½“å‰ç¼–辑的资æºã€‚" -#: tools/editor/editor_node.cpp -#: tools/editor/plugins/animation_player_editor_plugin.cpp -#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Save As.." msgstr "å¦å˜ä¸º" @@ -2023,9 +2102,8 @@ msgid "Imported Resources" msgstr "已导入的资æº" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp -#, fuzzy msgid "No bit masks to import!" -msgstr "没有è¦å¯¼å…¥çš„项目ï¼" +msgstr "没有è¦å¯¼å…¥çš„bit masksï¼" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_sample_import_plugin.cpp @@ -2055,9 +2133,8 @@ msgid "Save path is empty!" msgstr "ä¿å˜è·¯å¾„为空ï¼" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp -#, fuzzy msgid "Import BitMasks" -msgstr "导入贴图" +msgstr "导入BitMask" #: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp #: tools/editor/io_plugins/editor_texture_import_plugin.cpp @@ -2201,15 +2278,15 @@ msgstr "动画选项" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Flags" -msgstr "" +msgstr "æ ‡è®°" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Bake FPS:" -msgstr "" +msgstr "烘培FPS:" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Optimizer" -msgstr "" +msgstr "优化" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Max Linear Error" @@ -2248,7 +2325,7 @@ msgstr "循环" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Filters" -msgstr "" +msgstr "ç›é€‰" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Source path is empty." @@ -2292,7 +2369,7 @@ msgstr "" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Custom Root Node Type:" -msgstr "" +msgstr "è‡ªå®šä¹‰æ ¹èŠ‚ç‚¹ç±»åž‹ï¼š" #: tools/editor/io_plugins/editor_scene_import_plugin.cpp msgid "Auto" @@ -2413,7 +2490,7 @@ msgstr "导入2Dç²¾çµé›†" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Cell Size:" -msgstr "" +msgstr "å•元尺寸:" #: tools/editor/io_plugins/editor_texture_import_plugin.cpp msgid "Large Texture" @@ -2597,16 +2674,15 @@ msgstr "" #: tools/editor/node_dock.cpp msgid "Node" -msgstr "" +msgstr "节点" #: tools/editor/node_dock.cpp -#, fuzzy msgid "Groups" msgstr "分组:" #: tools/editor/node_dock.cpp msgid "Select a Node to edit Signals and Groups." -msgstr "" +msgstr "请选择一个节点æ¥è®¾ç½®ä¿¡å·æˆ–分组。" #: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Toggle Autoplay" @@ -2716,6 +2792,11 @@ msgid "Create new animation in player." msgstr "åœ¨æ’æ”¾ä¸åˆ›å»ºåŠ¨ç”»ã€‚" #: tools/editor/plugins/animation_player_editor_plugin.cpp +#, fuzzy +msgid "Load animation from disk." +msgstr "从ç£ç›˜ä¸åŠ è½½åŠ¨ç”»ã€‚" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load an animation from disk." msgstr "从ç£ç›˜ä¸åŠ è½½åŠ¨ç”»ã€‚" @@ -2724,6 +2805,11 @@ msgid "Save the current animation" msgstr "ä¿å˜å½“å‰åŠ¨ç”»" #: tools/editor/plugins/animation_player_editor_plugin.cpp +#, fuzzy +msgid "Save As" +msgstr "å¦å˜ä¸º" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." msgstr "åœ¨æ’æ”¾å™¨ä¸æ˜¾ç¤ºåŠ¨ç”»åˆ—è¡¨ã€‚" @@ -2968,11 +3054,11 @@ msgstr "" #: tools/editor/plugins/baked_light_editor_plugin.cpp msgid "BakedLightInstance does not contain a BakedLight resource." -msgstr "" +msgstr "BakedLightInstance未包å«BakedLight资æºã€‚" #: tools/editor/plugins/baked_light_editor_plugin.cpp msgid "Bake!" -msgstr "" +msgstr "烘培ï¼" #: tools/editor/plugins/baked_light_editor_plugin.cpp msgid "Reset the lightmap octree baking process (start over)." @@ -3138,7 +3224,7 @@ msgstr "" #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Skeleton.." -msgstr "" +msgstr "骨骼.." #: tools/editor/plugins/canvas_item_editor_plugin.cpp msgid "Make Bones" @@ -3293,7 +3379,7 @@ msgstr "从场景ä¸å¯¼å…¥" #: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp msgid "Update from Scene" -msgstr "" +msgstr "ä»Žåœºæ™¯ä¸æ›´æ–°" #: tools/editor/plugins/item_list_editor_plugin.cpp msgid "Item %d" @@ -3333,7 +3419,7 @@ msgstr "é¼ æ ‡å³é”®ï¼šç§»é™¤ç‚¹" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Mesh is empty!" -msgstr "" +msgstr "Mesh为空ï¼" #: tools/editor/plugins/mesh_instance_editor_plugin.cpp msgid "Create Static Trimesh Body" @@ -3727,12 +3813,12 @@ msgstr "清除UV" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Snap" -msgstr "" +msgstr "å¸é™„" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "Enable Snap" -msgstr "" +msgstr "å¯ç”¨å¸é™„" #: tools/editor/plugins/polygon_2d_editor_plugin.cpp #: tools/editor/plugins/texture_region_editor_plugin.cpp @@ -3842,7 +3928,8 @@ msgstr "导入主题" msgid "Save Theme As.." msgstr "主题å¦å˜ä¸º" -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "File" msgstr "文件" @@ -3915,12 +4002,8 @@ msgstr "自动缩进" #: tools/editor/plugins/script_editor_plugin.cpp #, fuzzy -msgid "Reload Tool Script" -msgstr "创建脚本" - -#: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script (Soft)" -msgstr "" +msgid "Soft Reload Script" +msgstr "釿–°åŠ è½½Tool脚本" #: tools/editor/plugins/script_editor_plugin.cpp #: tools/editor/plugins/shader_editor_plugin.cpp @@ -4012,7 +4095,8 @@ msgid "Help" msgstr "帮助" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Contextual" +#, fuzzy +msgid "Contextual Help" msgstr "æœç´¢å…‰æ ‡ä½ç½®" #: tools/editor/plugins/script_editor_plugin.cpp @@ -4221,10 +4305,6 @@ msgid "Transform Aborted." msgstr "å·²å¿½ç•¥å˜æ¢ã€‚" #: tools/editor/plugins/spatial_editor_plugin.cpp -msgid "View Plane Transform." -msgstr "" - -#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." msgstr "Xè½´å˜æ¢ã€‚" @@ -4237,6 +4317,10 @@ msgid "Z-Axis Transform." msgstr "Zè½´å˜æ¢ã€‚" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scaling to %s%%." msgstr "缩放到%s%%" @@ -4577,20 +4661,18 @@ msgid "StyleBox Preview:" msgstr "StyleBox预览:" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Texture Region Editor" -msgstr "ç²¾çµçº¹ç†åŒºåŸŸç¼–辑" +msgstr "纹ç†åŒºåŸŸç¼–辑" #: tools/editor/plugins/texture_region_editor_plugin.cpp -#, fuzzy msgid "Scale Region Editor" -msgstr "ç²¾çµçº¹ç†åŒºåŸŸç¼–辑" +msgstr "缩放区域编辑" #: tools/editor/plugins/texture_region_editor_plugin.cpp msgid "" "No texture in this node.\n" "Set a texture to be able to edit region." -msgstr "" +msgstr "æ¤èŠ‚ç‚¹æ²¡æœ‰è´´å›¾ï¼Œè¯·å…ˆä¸ºå®ƒè®¾ç½®è´´å›¾åŽå†è¯•。" #: tools/editor/plugins/theme_editor_plugin.cpp msgid "Can't save theme to file:" @@ -4618,7 +4700,13 @@ msgid "Remove Class Items" msgstr "移除类项目" #: tools/editor/plugins/theme_editor_plugin.cpp -msgid "Create Template" +#, fuzzy +msgid "Create Empty Template" +msgstr "创建模æ¿" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#, fuzzy +msgid "Create Empty Editor Template" msgstr "创建模æ¿" #: tools/editor/plugins/theme_editor_plugin.cpp @@ -4705,34 +4793,42 @@ msgid "Erase TileMap" msgstr "æ“¦é™¤ç –å—地图" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Bucket" -msgstr "" - -#: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Pick Tile" -msgstr "é€‰æ‹©ç –å—" - -#: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Select" -msgstr "选择" +#, fuzzy +msgid "Erase selection" +msgstr "擦除选ä¸" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Erase Selection" -msgstr "擦除选ä¸" +#, fuzzy +msgid "Find tile" +msgstr "查找下一项" #: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Transpose" msgstr "转置" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror X (A)" +#, fuzzy +msgid "Mirror X" msgstr "沿X轴翻转(A)" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror Y (S)" +#, fuzzy +msgid "Mirror Y" msgstr "沿Y轴翻转(S)" #: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "é€‰æ‹©ç –å—" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "选择" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp msgid "Rotate 0 degrees" msgstr "旋转0度" @@ -5111,14 +5207,12 @@ msgid "Remove project from the list? (Folder contents will not be modified)" msgstr "移除æ¤é¡¹ç›®ï¼ˆé¡¹ç›®çš„æ–‡ä»¶ä¸å—å½±å“)" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Project Manager" -msgstr "项目å称:" +msgstr "项目管ç†å™¨" #: tools/editor/project_manager.cpp -#, fuzzy msgid "Project List" -msgstr "退出到项目列表" +msgstr "项目列表" #: tools/editor/project_manager.cpp msgid "Run" @@ -5269,12 +5363,10 @@ msgid "Invalid name. Must not collide with an existing global constant name." msgstr "åç§°éžæ³•,与已å˜åœ¨çš„全局常é‡å称冲çªã€‚" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Autoload '%s' already exists!" -msgstr "动作%så·²å˜åœ¨ï¼" +msgstr "Autoload %så·²å˜åœ¨ï¼" #: tools/editor/project_settings.cpp -#, fuzzy msgid "Rename Autoload" msgstr "移除Autoload" @@ -5568,8 +5660,8 @@ msgstr "好的" #: tools/editor/scene_tree_dock.cpp msgid "" -"Cannot instance the scene '%s' because the current scene exists within one of " -"its nodes." +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." msgstr "æ— æ³•å®žä¾‹åŒ–åœºæ™¯%s当å‰åœºæ™¯å·²å˜åœ¨äºŽå®ƒçš„å节点ä¸ã€‚" #: tools/editor/scene_tree_dock.cpp @@ -5739,6 +5831,10 @@ msgid "Load As Placeholder" msgstr "åŠ è½½ä¸ºå ä½ç¬¦" #: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp msgid "Open in Editor" msgstr "åœ¨ç¼–è¾‘å™¨ä¸æ‰“å¼€" @@ -5795,9 +5891,8 @@ msgid "View Owners.." msgstr "查看所有者" #: tools/editor/scenes_dock.cpp -#, fuzzy msgid "Copy Path" -msgstr "æ‹·è´å‚æ•°" +msgstr "æ‹·è´è·¯å¾„" #: tools/editor/scenes_dock.cpp msgid "Rename or Move.." @@ -5885,7 +5980,7 @@ msgstr "必须是项目路径" #: tools/editor/script_create_dialog.cpp msgid "Invalid base path" -msgstr "" +msgstr "çˆ¶è·¯å¾„éžæ³•" #: tools/editor/script_create_dialog.cpp msgid "File exists" @@ -6037,7 +6132,7 @@ msgstr "ä»Žåœºæ™¯æ ‘è®¾ç½®" #: tools/editor/settings_config_dialog.cpp msgid "Shortcuts" -msgstr "" +msgstr "å¿«æ·é”®" #: tools/editor/spatial_editor_gizmos.cpp msgid "Change Light Radius" @@ -6075,12 +6170,18 @@ msgstr "" msgid "Change Notifier Extents" msgstr "" +#~ msgid "Binds (Extra Params):" +#~ msgstr "ç»‘å®šï¼ˆé™„åŠ å‚æ•°ï¼‰ï¼š" + +#~ msgid "Method In Node:" +#~ msgstr "节点方法:" + +#~ msgid "Reload Tool Script (Soft)" +#~ msgstr "釿–°åŠ è½½Tool脚本(Soft)" + #~ msgid "Edit Connections.." #~ msgstr "编辑事件连接" -#~ msgid "Connections:" -#~ msgstr "事件:" - #~ msgid "Set Params" #~ msgstr "è®¾ç½®å‚æ•°" diff --git a/tools/translations/zh_HK.po b/tools/translations/zh_HK.po index 62fd341155..8f6476594b 100644 --- a/tools/translations/zh_HK.po +++ b/tools/translations/zh_HK.po @@ -1,6 +1,7 @@ -# LANGUAGE translation of the Godot Engine editor +# Chinese (Honk Kong) translation of the Godot Engine editor # Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community # This file is distributed under the same license as the Godot source code. +# # Wesley <ZX_WT@ymail.com>, 2016. # msgid "" @@ -14,6 +15,46 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" + #: scene/2d/animated_sprite.cpp msgid "" "A SpriteFrames resource must be created or set in the 'Frames' property in " @@ -102,14 +143,14 @@ msgstr "" #: scene/2d/sprite.cpp msgid "" -"Path property must point to a valid Viewport node to work. Such Viewport must " -"be set to 'render target' mode." +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." msgstr "" #: scene/2d/sprite.cpp msgid "" -"The Viewport set in the path property must be set as 'render target' in order " -"for this sprite to work." +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." msgstr "" #: scene/2d/visibility_notifier_2d.cpp @@ -148,8 +189,8 @@ msgstr "" #: scene/3d/navigation_mesh.cpp msgid "" -"NavigationMeshInstance must be a child or grandchild to a Navigation node. It " -"only provides navigation data." +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." msgstr "" #: scene/3d/scenario_fx.cpp @@ -348,7 +389,8 @@ msgstr "貼上" #: scene/gui/line_edit.cpp scene/gui/text_edit.cpp #: tools/editor/plugins/script_editor_plugin.cpp -#: tools/editor/plugins/shader_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "Select All" msgstr "å…¨é¸" @@ -368,8 +410,8 @@ msgstr "復原" #: scene/gui/popup.cpp msgid "" "Popups will hide by default unless you call popup() or any of the popup*() " -"functions. Making them visible for editing is fine though, but they will hide " -"upon running." +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." msgstr "" #: scene/main/viewport.cpp @@ -477,6 +519,19 @@ msgid "Anim Delete Keys" msgstr "" #: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "" + +#: tools/editor/animation_editor.cpp +#, fuzzy +msgid "Discrete" +msgstr "䏿–·" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "" + +#: tools/editor/animation_editor.cpp msgid "Anim Add Key" msgstr "" @@ -584,6 +639,10 @@ msgid "Change Anim Loop" msgstr "" #: tools/editor/animation_editor.cpp +msgid "Change Anim Loop Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp msgid "Anim Create Typed Value Key" msgstr "" @@ -624,6 +683,10 @@ msgid "Enable/Disable looping in animation." msgstr "" #: tools/editor/animation_editor.cpp +msgid "Enable/Disable interpolation when looping animation." +msgstr "" + +#: tools/editor/animation_editor.cpp msgid "Add new tracks." msgstr "" @@ -889,11 +952,7 @@ msgid "Method in target Node must be specified!" msgstr "" #: tools/editor/connections_dialog.cpp -msgid "Connect To Node:" -msgstr "" - -#: tools/editor/connections_dialog.cpp -msgid "Binds (Extra Params):" +msgid "Conect To Node:" msgstr "" #: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp @@ -905,16 +964,21 @@ msgstr "æ·»åŠ " #: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp #: tools/editor/plugins/animation_tree_editor_plugin.cpp -#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_manager.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp msgid "Remove" msgstr "移除" #: tools/editor/connections_dialog.cpp -msgid "Path To Node:" +msgid "Add Extra Call Argument:" msgstr "" #: tools/editor/connections_dialog.cpp -msgid "Method In Node:" +msgid "Extra Call Arguments:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Path to Node:" msgstr "" #: tools/editor/connections_dialog.cpp @@ -938,6 +1002,11 @@ msgid "Connect '%s' to '%s'" msgstr "ç”± '%s' 連到 '%s'" #: tools/editor/connections_dialog.cpp +#, fuzzy +msgid "Connecting Signal:" +msgstr "連接" + +#: tools/editor/connections_dialog.cpp msgid "Create Subscription" msgstr "" @@ -1072,7 +1141,8 @@ msgid "Delete selected files?" msgstr "è¦åˆªé™¤é¸ä¸æª”案?" #: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp -#: tools/editor/plugins/item_list_editor_plugin.cpp tools/editor/scenes_dock.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp msgid "Delete" msgstr "刪除" @@ -1450,8 +1520,8 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "" -"Error loading scene, it must be inside the project path. Use 'Import' to open " -"the scene, then save it inside the project path." +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." msgstr "" #: tools/editor/editor_node.cpp @@ -1500,6 +1570,14 @@ msgid "Go to previously opened scene." msgstr "" #: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp msgid "Operations with scene files." msgstr "" @@ -1655,8 +1733,8 @@ msgstr "" #: tools/editor/editor_node.cpp msgid "" -"When exporting or deploying, the resulting executable will attempt to connect " -"to the IP of this computer in order to be debugged." +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." msgstr "" #: tools/editor/editor_node.cpp @@ -1669,8 +1747,8 @@ msgid "" "executable.\n" "The filesystem will be provided from the project by the editor over the " "network.\n" -"On Android, deploy will use the USB cable for faster performance. This option " -"speeds up testing for games with a large footprint." +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." msgstr "" #: tools/editor/editor_node.cpp @@ -1770,9 +1848,7 @@ msgstr "" msgid "Save the currently edited resource." msgstr "" -#: tools/editor/editor_node.cpp -#: tools/editor/plugins/animation_player_editor_plugin.cpp -#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp msgid "Save As.." msgstr "å¦å˜ç‚º.." @@ -2665,6 +2741,10 @@ msgid "Create new animation in player." msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Load an animation from disk." msgstr "" @@ -2673,6 +2753,11 @@ msgid "Save the current animation" msgstr "" #: tools/editor/plugins/animation_player_editor_plugin.cpp +#, fuzzy +msgid "Save As" +msgstr "å¦å˜ç‚º.." + +#: tools/editor/plugins/animation_player_editor_plugin.cpp msgid "Display list of animations in player." msgstr "" @@ -3791,7 +3876,8 @@ msgstr "" msgid "Save Theme As.." msgstr "" -#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/project_export.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp msgid "File" msgstr "檔案" @@ -3863,11 +3949,7 @@ msgid "Auto Indent" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script" -msgstr "" - -#: tools/editor/plugins/script_editor_plugin.cpp -msgid "Reload Tool Script (Soft)" +msgid "Soft Reload Script" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp @@ -3960,7 +4042,7 @@ msgid "Help" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp -msgid "Contextual" +msgid "Contextual Help" msgstr "" #: tools/editor/plugins/script_editor_plugin.cpp @@ -4167,10 +4249,6 @@ msgid "Transform Aborted." msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp -msgid "View Plane Transform." -msgstr "" - -#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "X-Axis Transform." msgstr "" @@ -4183,6 +4261,10 @@ msgid "Z-Axis Transform." msgstr "" #: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp msgid "Scaling to %s%%." msgstr "" @@ -4562,7 +4644,11 @@ msgid "Remove Class Items" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp -msgid "Create Template" +msgid "Create Empty Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" msgstr "" #: tools/editor/plugins/theme_editor_plugin.cpp @@ -4649,31 +4735,35 @@ msgid "Erase TileMap" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Bucket" +msgid "Erase selection" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Pick Tile" +msgid "Find tile" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Select" +msgid "Transpose" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Erase Selection" +msgid "Mirror X" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Transpose" +msgid "Mirror Y" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror X (A)" +msgid "Pick Tile" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp -msgid "Mirror Y (S)" +msgid "Select" msgstr "" #: tools/editor/plugins/tile_map_editor_plugin.cpp @@ -5508,8 +5598,8 @@ msgstr "Ok" #: tools/editor/scene_tree_dock.cpp msgid "" -"Cannot instance the scene '%s' because the current scene exists within one of " -"its nodes." +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." msgstr "" #: tools/editor/scene_tree_dock.cpp @@ -5679,6 +5769,10 @@ msgid "Load As Placeholder" msgstr "" #: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp msgid "Open in Editor" msgstr "" @@ -6019,9 +6113,6 @@ msgstr "" #~ msgid "Edit Connections.." #~ msgstr "編輯連接" -#~ msgid "Connections:" -#~ msgstr "連接" - #~ msgid "Live Editing" #~ msgstr "峿™‚編輯" diff --git a/tools/translations/zh_TW.po b/tools/translations/zh_TW.po new file mode 100644 index 0000000000..64399c4826 --- /dev/null +++ b/tools/translations/zh_TW.po @@ -0,0 +1,6105 @@ +# Chinese (Taiwan) translation of the Godot Engine editor +# Copyright (C) 2016 Juan Linietsky, Ariel Manzur and the Godot community +# This file is distributed under the same license as the Godot source code. +# +# popcade <popcade@gmail.com>, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: Godot Engine editor\n" +"PO-Revision-Date: 2016-06-13 13:57+0000\n" +"Last-Translator: popcade <popcade@gmail.com>\n" +"Language-Team: Chinese (Taiwan) <https://hosted.weblate.org/projects/godot-" +"engine/godot/zh_TW/>\n" +"Language: zh_TW\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8-bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 2.7-dev\n" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid type argument to convert(), use TYPE_* constants." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not enough bytes for decoding bytes, or invalid format." +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "step argument is zero!" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not a script with an instance" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a script" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Not based on a resource file" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (missing @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (can't load script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary format (invalid script at @path)" +msgstr "" + +#: modules/gdscript/gd_functions.cpp +msgid "Invalid instance dictionary (invalid subclasses)" +msgstr "" + +#: scene/2d/animated_sprite.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite to display frames." +msgstr "SpriteFrames資æºå¿…é ˆåœ¨Frames屬性ä¸è¢«å‰µå»ºæˆ–è¨ç½®æ‰èƒ½å¤ é¡¯ç¤ºå‹•ç•«æ ¼ã€‚" + +#: scene/2d/canvas_modulate.cpp +msgid "" +"Only one visible CanvasModulate is allowed per scene (or set of instanced " +"scenes). The first created one will work, while the rest will be ignored." +msgstr "" +"æ¯å€‹å ´æ™¯ä¸åƒ…å…許一個å¯è¦‹çš„CanvasModulateï¼Œåªæœ‰ç¬¬ä¸€å€‹CanvasModulate會有作用," +"其餘的將被忽略。" + +#: scene/2d/collision_polygon_2d.cpp +msgid "" +"CollisionPolygon2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"CollisionPolygon2Dåªèƒ½ç‚ºCollisionObject2Dè¡ç”Ÿçš„節點æä¾›ç¢°æ’žå½¢ç‹€è³‡è¨Šï¼Œè«‹å°‡å…¶ä½¿" +"用於Area2Dã€StaticBody2Dã€RigidBody2Dã€KinematicBody2D這類的節點下。" + +#: scene/2d/collision_polygon_2d.cpp +msgid "An empty CollisionPolygon2D has no effect on collision." +msgstr "空白的CollisionPolygon2Dä¸èµ·ç¢°æ’žåµæ¸¬çš„作用。" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"CollisionShape2D only serves to provide a collision shape to a " +"CollisionObject2D derived node. Please only use it as a child of Area2D, " +"StaticBody2D, RigidBody2D, KinematicBody2D, etc. to give them a shape." +msgstr "" +"CollisionShape2Dåªèƒ½ç‚ºCollisionObject2Dè¡ç”Ÿçš„節點æä¾›ç¢°æ’žå½¢ç‹€è³‡è¨Šï¼Œè«‹å°‡å…¶ä½¿ç”¨" +"æ–¼Area2Dã€StaticBody2Dã€RigidBody2Dã€KinematicBody2D這類的節點下。" + +#: scene/2d/collision_shape_2d.cpp +msgid "" +"A shape must be provided for CollisionShape2D to function. Please create a " +"shape resource for it!" +msgstr "CollisionShape2Då¿…é ˆè¢«è³¦äºˆå½¢ç‹€æ‰èƒ½é‹ä½œï¼Œè«‹ç‚ºå®ƒå»ºç«‹å€‹å½¢ç‹€å§ï¼" + +#: scene/2d/light_2d.cpp +msgid "" +"A texture with the shape of the light must be supplied to the 'texture' " +"property." +msgstr "光照形狀的æè³ªå¿…é ˆè¢«è³¦èˆ‡åœ¨æè³ªçš„屬性ä¸ã€‚" + +#: scene/2d/light_occluder_2d.cpp +msgid "" +"An occluder polygon must be set (or drawn) for this occluder to take effect." +msgstr "æ¤é®å…‰é«”å¿…é ˆè¢«å»ºç«‹æˆ–è¨ç½®é®è”½å½¢ç‹€æ‰èƒ½ç™¼æ®é®è”½ä½œç”¨ã€‚" + +#: scene/2d/light_occluder_2d.cpp +msgid "The occluder polygon for this occluder is empty. Please draw a polygon!" +msgstr "æ¤é®å…‰é«”沒有被賦予形狀,請繪製一個å§ï¼" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"A NavigationPolygon resource must be set or created for this node to work. " +"Please set a property or draw a polygon." +msgstr "" + +#: scene/2d/navigation_polygon.cpp +msgid "" +"NavigationPolygonInstance must be a child or grandchild to a Navigation2D " +"node. It only provides navigation data." +msgstr "" + +#: scene/2d/parallax_layer.cpp +msgid "" +"ParallaxLayer node only works when set as child of a ParallaxBackground node." +msgstr "" + +#: scene/2d/particles_2d.cpp +msgid "Path property must point to a valid Particles2D node to work." +msgstr "" + +#: scene/2d/path_2d.cpp +msgid "PathFollow2D only works when set as a child of a Path2D node." +msgstr "" + +#: scene/2d/remote_transform_2d.cpp +msgid "Path property must point to a valid Node2D node to work." +msgstr "" + +#: scene/2d/sample_player_2d.cpp scene/audio/sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SamplePlayer to play sound." +msgstr "" + +#: scene/2d/sprite.cpp +msgid "" +"Path property must point to a valid Viewport node to work. Such Viewport " +"must be set to 'render target' mode." +msgstr "" + +#: scene/2d/sprite.cpp +msgid "" +"The Viewport set in the path property must be set as 'render target' in " +"order for this sprite to work." +msgstr "" + +#: scene/2d/visibility_notifier_2d.cpp +msgid "" +"VisibilityEnable2D works best when used with the edited scene root directly " +"as parent." +msgstr "" + +#: scene/3d/body_shape.cpp +msgid "" +"CollisionShape only serves to provide a collision shape to a CollisionObject " +"derived node. Please only use it as a child of Area, StaticBody, RigidBody, " +"KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/body_shape.cpp +msgid "" +"A shape must be provided for CollisionShape to function. Please create a " +"shape resource for it!" +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "" +"CollisionPolygon only serves to provide a collision shape to a " +"CollisionObject derived node. Please only use it as a child of Area, " +"StaticBody, RigidBody, KinematicBody, etc. to give them a shape." +msgstr "" + +#: scene/3d/collision_polygon.cpp +msgid "An empty CollisionPolygon has no effect on collision." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "A NavigationMesh resource must be set or created for this node to work." +msgstr "" + +#: scene/3d/navigation_mesh.cpp +msgid "" +"NavigationMeshInstance must be a child or grandchild to a Navigation node. " +"It only provides navigation data." +msgstr "" + +#: scene/3d/scenario_fx.cpp +msgid "" +"Only one WorldEnvironment is allowed per scene (or set of instanced scenes)." +msgstr "" + +#: scene/3d/spatial_sample_player.cpp +msgid "" +"A SampleLibrary resource must be created or set in the 'samples' property in " +"order for SpatialSamplePlayer to play sound." +msgstr "" + +#: scene/3d/sprite_3d.cpp +msgid "" +"A SpriteFrames resource must be created or set in the 'Frames' property in " +"order for AnimatedSprite3D to display frames." +msgstr "" + +#: scene/gui/dialogs.cpp tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Cancel" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "OK" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Alert!" +msgstr "" + +#: scene/gui/dialogs.cpp +msgid "Please Confirm..." +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "File Exists, Overwrite?" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Recognized" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "All Files (*)" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/scenes_dock.cpp +msgid "Open" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a File" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open File(s)" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a Directory" +msgstr "" + +#: scene/gui/file_dialog.cpp +msgid "Open a File or Directory" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Save a File" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Create Folder" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/script_create_dialog.cpp +msgid "Path:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Directories & Files:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "File:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Filter:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp tools/editor/editor_plugin_settings.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Name:" +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_dir_dialog.cpp +#: tools/editor/editor_file_dialog.cpp +msgid "Could not create folder." +msgstr "" + +#: scene/gui/file_dialog.cpp tools/editor/editor_file_dialog.cpp +msgid "Must use a valid extension." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Shift+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Alt+" +msgstr "" + +#: scene/gui/input_action.cpp +msgid "Ctrl+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Meta+" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Device" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Button" +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Left Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Right Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Middle Button." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Up." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Wheel Down." +msgstr "" + +#: scene/gui/input_action.cpp tools/editor/project_settings.cpp +msgid "Axis" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Cut" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Copy" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/resources_dock.cpp +msgid "Paste" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "Select All" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_log.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/rich_text_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Clear" +msgstr "" + +#: scene/gui/line_edit.cpp scene/gui/text_edit.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Undo" +msgstr "" + +#: scene/gui/popup.cpp +msgid "" +"Popups will hide by default unless you call popup() or any of the popup*() " +"functions. Making them visible for editing is fine though, but they will " +"hide upon running." +msgstr "" + +#: scene/main/viewport.cpp +msgid "" +"This viewport is not set as render target. If you intend for it to display " +"its contents directly to the screen, make it a child of a Control so it can " +"obtain a size. Otherwise, make it a RenderTarget and assign its internal " +"texture to some node for display." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error initializing FreeType." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Unknown font format." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Error loading font." +msgstr "" + +#: scene/resources/dynamic_font.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font size." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Disabled" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "All Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transition" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Transform" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Value" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Change Call" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Up" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move Anim Track Down" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove Anim Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Duplicate Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Set Transitions to:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Rename" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Track Change Value Mode" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Node Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Edit Selection Curve" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Delete Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Continuous" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Discrete" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Trigger" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Move Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale From Cursor" +msgstr "" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Duplicate Selection" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Duplicate Transposed" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Next Step" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Goto Prev Step" +msgstr "" + +#: tools/editor/animation_editor.cpp tools/editor/property_editor.cpp +msgid "Linear" +msgstr "" + +#: tools/editor/animation_editor.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Constant" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "In-Out" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Out-In" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Transitions" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Optimize Animation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Create NEW track for %s and insert key?" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Create %d NEW tracks and insert keys?" +msgstr "" + +#: tools/editor/animation_editor.cpp tools/editor/create_dialog.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/particles_editor_plugin.cpp +#: tools/editor/project_manager.cpp tools/editor/script_create_dialog.cpp +msgid "Create" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create & Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Track & Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Len" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Change Anim Loop Interpolation" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Create Typed Value Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Insert" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Scale Keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim Add Call Track" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Animation zoom." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Length (s):" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Animation length (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Step (s):" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Cursor step snap (in seconds)." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable looping in animation." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable/Disable interpolation when looping animation." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Add new tracks." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track up." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Move current track down." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove selected track." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Track tools" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Enable editing of individual keys by clicking them." +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Anim. Optimizer" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Linear Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max. Angular Error:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Max Optimizable Angle:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Optimize" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Key" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Transition" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Scale Ratio:" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Call Functions in Which Node?" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove invalid keys" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Remove unresolved and empty tracks" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-up all animations" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up Animation(s) (NO UNDO!)" +msgstr "" + +#: tools/editor/animation_editor.cpp +msgid "Clean-Up" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Resize Array" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value Type" +msgstr "" + +#: tools/editor/array_property_edit.cpp +msgid "Change Array Value" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp tools/editor/create_dialog.cpp +#: tools/editor/editor_help.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +#: tools/editor/settings_config_dialog.cpp +msgid "Search:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Sort:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Reverse" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Category:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "All" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Site:" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Support.." +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Official" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Community" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Testing" +msgstr "" + +#: tools/editor/asset_library_editor_plugin.cpp +msgid "Assets ZIP File" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Method List For '%s':" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Call" +msgstr "" + +#: tools/editor/call_dialog.cpp tools/editor/connections_dialog.cpp +#: tools/editor/import_settings.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +#: tools/editor/run_settings_dialog.cpp tools/editor/settings_config_dialog.cpp +msgid "Close" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Method List:" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Arguments:" +msgstr "" + +#: tools/editor/call_dialog.cpp +msgid "Return:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Go to Line" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Line Number:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "No Matches" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d Ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace All" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Match Case" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Whole Words" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Selection Only" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Search" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/editor_help.cpp +msgid "Find" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Next" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replaced %d ocurrence(s)." +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Not found!" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Replace By" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Case Sensitive" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Backwards" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Prompt On Replace" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Skip" +msgstr "" + +#: tools/editor/code_editor.cpp tools/editor/script_editor_debugger.cpp +msgid "Line:" +msgstr "" + +#: tools/editor/code_editor.cpp +msgid "Col:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Method in target Node must be specified!" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Conect To Node:" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/groups_editor.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp +msgid "Add" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/dependency_editor.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Remove" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Add Extra Call Argument:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Extra Call Arguments:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Path to Node:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Make Function" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Deferred" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Oneshot" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect '%s' to '%s'" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connecting Signal:" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Create Subscription" +msgstr "" + +#: tools/editor/connections_dialog.cpp +msgid "Connect.." +msgstr "" + +#: tools/editor/connections_dialog.cpp +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Disconnect" +msgstr "" + +#: tools/editor/connections_dialog.cpp tools/editor/node_dock.cpp +msgid "Signals" +msgstr "" + +#: tools/editor/create_dialog.cpp +msgid "Create New" +msgstr "" + +#: tools/editor/create_dialog.cpp tools/editor/editor_help.cpp +#: tools/editor/plugins/script_editor_plugin.cpp tools/editor/quick_open.cpp +msgid "Matches:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement For:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies For:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Scene '%s' is currently being edited.\n" +"Changes will not take effect unless reloaded." +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"Resource '%s' is in use.\n" +"Changes will take effect when reloaded." +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Resource" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/project_manager.cpp +#: tools/editor/project_settings.cpp +msgid "Path" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Broken" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Dependency Editor" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Search Replacement Resource:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owners Of:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "" +"The files being removed are required by other resources in order for them to " +"work.\n" +"Remove them anyway? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Remove selected files from the project? (no undo)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Error loading:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Scene failed to load due to missing dependencies:" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Open Anyway" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Which action should be taken?" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Fix Dependencies" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Errors loading!" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Permanently delete %d item(s)? (No undo!)" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Owns" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Resources Without Explicit Ownership:" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +msgid "Orphan Resource Explorer" +msgstr "" + +#: tools/editor/dependency_editor.cpp +msgid "Delete selected files?" +msgstr "" + +#: tools/editor/dependency_editor.cpp tools/editor/editor_node.cpp +#: tools/editor/plugins/item_list_editor_plugin.cpp +#: tools/editor/scenes_dock.cpp +msgid "Delete" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating Scene" +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Storing local changes.." +msgstr "" + +#: tools/editor/editor_data.cpp +msgid "Updating scene.." +msgstr "" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose a Directory" +msgstr "" + +#: tools/editor/editor_dir_dialog.cpp +msgid "Choose" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp tools/editor/scenes_dock.cpp +msgid "Favorites:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Recent:" +msgstr "" + +#: tools/editor/editor_file_dialog.cpp +msgid "Preview:" +msgstr "" + +#: tools/editor/editor_file_system.cpp +msgid "Cannot go into subdir:" +msgstr "" + +#: tools/editor/editor_file_system.cpp +msgid "ScanSources" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Classes" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Class List:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/property_editor.cpp +msgid "Class:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Inherits:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Inherited by:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Brief Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Public Methods:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Members:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "GUI Theme Items:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Signals:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Constants:" +msgstr "" + +#: tools/editor/editor_help.cpp tools/editor/script_editor_debugger.cpp +msgid "Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Method Description:" +msgstr "" + +#: tools/editor/editor_help.cpp +msgid "Search Text" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Added:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Removed:" +msgstr "" + +#: tools/editor/editor_import_export.cpp tools/editor/project_export.cpp +msgid "Error saving atlas:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Could not save atlas subtexture:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Storing File:" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Packing" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Exporting for %s" +msgstr "" + +#: tools/editor/editor_import_export.cpp +msgid "Setting Up.." +msgstr "" + +#: tools/editor/editor_log.cpp +msgid " Output:" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +msgid "Re-Importing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Importing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Node From Scene" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scenes_dock.cpp +msgid "Re-Import.." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Error saving resource!" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/resources_dock.cpp +msgid "Save Resource As.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "I see.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open file for writing:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Requested file format unknown:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error while saving." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Saving Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Analyzing" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Creating Thumbnail" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Couldn't save scene. Likely dependencies (instances) couldn't be satisfied." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Failed to load resource." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load MeshLibrary for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving MeshLibrary!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't load TileSet for merging!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error saving TileSet!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't open export templates zip." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Loading Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error trying to save layout!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Default editor layout overridden." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Layout name not found!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Restored default layout to base settings." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Params" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Paste Params" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Paste Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Copy Resource" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Built-In" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Make Sub-Resources Unique" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open in Help" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "There is no defined scene to run." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"No main scene has ever been defined.\n" +"Select one from \"Project Settings\" under the 'application' category." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene was never saved, please save it prior to running." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Could not start subprocess!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Base Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Open Script.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Yes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close scene? (Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This scene has never been saved. Save before running?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Please save the scene first." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Translatable Strings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Mesh Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Tile Set" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Exit the editor?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Current scene not saved. Open anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Can't reload a scene that was never saved." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "This action cannot be undone. Revert anyway?" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Run Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Open Project Manager? \n" +"(Unsaved changes will be lost)" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/scene_tree_dock.cpp +msgid "Ugh" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Error loading scene, it must be inside the project path. Use 'Import' to " +"open the scene, then save it inside the project path." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Error loading scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Scene '%s' has broken dependencies:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load Layout" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Default" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Delete Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Switch Scene Tab" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "%d more file(s) or folder(s)" +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to previously opened scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Fullscreen Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Distraction Free Mode" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Operations with scene files." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "New Inherited Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Scene.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Close Goto Prev. Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open Recent" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quick Filter Files.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Convert To.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Translatable Strings.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "MeshLibrary.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "TileSet.." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Redo" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Run Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Project Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Revert Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Quit to Project List" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import assets to the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Import" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Miscellaneous project or scene-wide tools." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Tools" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export the project to many platforms." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the project." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Play" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause the scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Pause Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Stop the scene." +msgstr "" + +#: tools/editor/editor_node.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stop" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play the edited scene." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play Scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Play custom scene" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Debug options" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Deploy with Remote Debug" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When exporting or deploying, the resulting executable will attempt to " +"connect to the IP of this computer in order to be debugged." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Small Deploy with Network FS" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is enabled, export or deploy will produce a minimal " +"executable.\n" +"The filesystem will be provided from the project by the editor over the " +"network.\n" +"On Android, deploy will use the USB cable for faster performance. This " +"option speeds up testing for games with a large footprint." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Collision Shapes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Collision shapes and raycast nodes (for 2D and 3D) will be visible on the " +"running game if this option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Visible Navigation" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"Navigation meshes and polygons will be visible on the running game if this " +"option is turned on." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Scene Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any changes made to the scene in the editor " +"will be replicated in the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Sync Script Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "" +"When this option is turned on, any script that is saved will be reloaded on " +"the running game.\n" +"When used remotely on a device, this is more efficient with network " +"filesystem." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Settings" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/settings_config_dialog.cpp +msgid "Editor Settings" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Editor Layout" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Install Export Templates" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "About" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Alerts when an external resource has changed." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Spins when the editor window repaints!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Always" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Update Changes" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Inspector" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Create a new resource in memory and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load an existing resource from disk and edit it." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Save the currently edited resource." +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/plugins/script_editor_plugin.cpp +msgid "Save As.." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the previous edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Go to the next edited object in history." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "History of recently edited objects." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Object properties." +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "FileSystem" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Output" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_reimport_dialog.cpp +#: tools/editor/import_settings.cpp +msgid "Re-Import" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/editor_plugin_settings.cpp +msgid "Update" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks from the Godot community!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Thanks!" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Import Templates From ZIP File" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Export Project" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Export Library" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Merge With Existing" +msgstr "" + +#: tools/editor/editor_node.cpp tools/editor/project_export.cpp +msgid "Password:" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Open & Run a Script" +msgstr "" + +#: tools/editor/editor_node.cpp +msgid "Load Errors" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Installed Plugins:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Version:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Author:" +msgstr "" + +#: tools/editor/editor_plugin_settings.cpp +msgid "Status:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Stop Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Start Profiling" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Measure:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Average Time (sec)" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Fixed Frame %" +msgstr "" + +#: tools/editor/editor_profiler.cpp tools/editor/script_editor_debugger.cpp +msgid "Time:" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Inclusive" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Self" +msgstr "" + +#: tools/editor/editor_profiler.cpp +msgid "Frame #:" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Please wait for scan to complete." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Current scene must be saved to re-import." +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Save & Re-Import" +msgstr "" + +#: tools/editor/editor_reimport_dialog.cpp +msgid "Re-Import Changed Resources" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Write your logic in the _run() method." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "There is an edited scene already." +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't instance script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the 'tool' keyword?" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Couldn't run script:" +msgstr "" + +#: tools/editor/editor_run_script.cpp +msgid "Did you forget the '_run' method?" +msgstr "" + +#: tools/editor/editor_settings.cpp +msgid "Default (Same as Editor)" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Select Node(s) to Import" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Scene Path:" +msgstr "" + +#: tools/editor/editor_sub_scene.cpp +msgid "Import From Node:" +msgstr "" + +#: tools/editor/file_type_cache.cpp +msgid "Can't open file_type_cache.cch for writing, not saving file type cache!" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Add to Group" +msgstr "" + +#: tools/editor/groups_editor.cpp +msgid "Remove from Group" +msgstr "" + +#: tools/editor/import_settings.cpp +msgid "Imported Resources" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "No bit masks to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must be a complete resource path." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Target path must exist." +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Save path is empty!" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Import BitMasks" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Target Path:" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Accept" +msgstr "" + +#: tools/editor/io_plugins/editor_bitmask_import_plugin.cpp +msgid "Bit Mask" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No source font file!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "No target font resource!" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Can't load/process source font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Couldn't save font." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Source Font Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Dest Resource:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "The quick brown fox jumps over the lazy dog." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Test:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Options:" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Font Import" +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "" +"This file is already a Godot font file, please supply a BMFont type file " +"instead." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Failed opening as BMFont file." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +msgid "Invalid font custom source." +msgstr "" + +#: tools/editor/io_plugins/editor_font_import_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Font" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "No meshes to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Single Mesh Import" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Source Mesh(es):" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh" +msgstr "" + +#: tools/editor/io_plugins/editor_mesh_import_plugin.cpp +msgid "Surface %d" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "No samples to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Import Audio Samples" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Source Sample(s):" +msgstr "" + +#: tools/editor/io_plugins/editor_sample_import_plugin.cpp +msgid "Audio Sample" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "New Clip" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Animation Options" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Flags" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Bake FPS:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Optimizer" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Linear Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angular Error" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Max Angle" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Clips" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/project_manager.cpp tools/editor/project_settings.cpp +msgid "Name" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Start(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "End(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Loop" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Filters" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source path is empty." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error importing scene." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import 3D Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Source Scene:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Same as Target Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Shared" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Target Texture Folder:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Post-Process Script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Custom Root Node Type:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Auto" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "The Following Files are Missing:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Anyway" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import & Open" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Edited scene has not been saved, open imported scene anyway?" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import Scene" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Importing Scene.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Running Custom Script.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't load post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Invalid/broken script for post-import:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Error running post-import script:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Import Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Can't import a file over itself:" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Couldn't localize path: %s (already local)" +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "Saving.." +msgstr "" + +#: tools/editor/io_plugins/editor_scene_import_plugin.cpp +msgid "3D Scene Animation" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Uncompressed" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossless (PNG)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress Lossy (WebP)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Compress (VRAM)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Format" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Compression Quality (WebP):" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture Options" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Please specify some files!" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "At least one file needed for Atlas." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Error importing:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Only one file is required for large texture." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Max Texture Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for Atlas (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cell Size:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Textures (2D)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Base Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Source Texture(s)" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 2D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures for 3D" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Textures" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "2D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "3D Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Atlas Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "" +"NOTICE: Importing 2D textures is not mandatory. Just copy png/jpg files to " +"the project." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Crop empty space." +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Import Large Texture" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Load Source Image" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Slicing" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Inserting" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Saving" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save large texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Build Atlas For:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Loading Image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't load image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Converting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Cropping Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Blitting Images" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save atlas image:" +msgstr "" + +#: tools/editor/io_plugins/editor_texture_import_plugin.cpp +msgid "Couldn't save converted texture:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Invalid translation source!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Column" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +#: tools/editor/script_create_dialog.cpp +msgid "Language" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No items to import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "No target path!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translations" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Couldn't import!" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Translation" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Source CSV:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Ignore First Row" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Compress" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Add to Project (engine.cfg)" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Import Languages:" +msgstr "" + +#: tools/editor/io_plugins/editor_translation_import_plugin.cpp +msgid "Translation" +msgstr "" + +#: tools/editor/multi_node_edit.cpp +msgid "MultiNode Set" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Node" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Groups" +msgstr "" + +#: tools/editor/node_dock.cpp +msgid "Select a Node to edit Signals and Groups." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Toggle Autoplay" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "New Anim" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Remove Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Invalid animation name!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: Animation name already exists!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Rename Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Next Changed" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Change Blend Time" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Duplicate Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to copy!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation resource on clipboard!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Pasted Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Paste Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "ERROR: No animation to edit!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from current pos. (A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation backwards from end. (Shift+A)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Stop animation playback. (S)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from start. (Shift+D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Play selected animation from current pos. (D)" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation position (in seconds)." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Scale animation playback globally for the node." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create new animation in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Load an animation from disk." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save the current animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Save As" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Display list of animations in player." +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Autoplay on Load" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Edit Target Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Tools" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Copy Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Create New Animation" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Animation Name:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +#: tools/editor/property_editor.cpp tools/editor/script_create_dialog.cpp +msgid "Error!" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Blend Times:" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Next (Auto Queue):" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +msgid "Cross-Animation Blend Times" +msgstr "" + +#: tools/editor/plugins/animation_player_editor_plugin.cpp +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Animation" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "New name:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Scale:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade In (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Fade Out (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Auto Restart:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Random Restart (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Start!" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Amount:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 0:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend 1:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "X-Fade Time (s):" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Current:" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Add Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Clear Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Set Auto-Advance" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Delete Input" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Rename" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is valid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation tree is invalid." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Animation Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "OneShot Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Mix Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend2 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend3 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Blend4 Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeScale Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "TimeSeek Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Transition Node" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Import Animations.." +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Edit Node Filters" +msgstr "" + +#: tools/editor/plugins/animation_tree_editor_plugin.cpp +msgid "Filters.." +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing %d Triangles:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Light Baker Setup:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Parsing Geometry" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Fixing Lights" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Making BVH" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Light Octree" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Creating Octree Texture" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Transfer to Lightmaps:" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Allocating Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Baking Triangle #" +msgstr "" + +#: tools/editor/plugins/baked_light_baker.cpp +msgid "Post-Processing Texture #" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "BakedLightInstance does not contain a BakedLight resource." +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Bake!" +msgstr "" + +#: tools/editor/plugins/baked_light_editor_plugin.cpp +msgid "Reset the lightmap octree baking process (start over)." +msgstr "" + +#: tools/editor/plugins/camera_editor_plugin.cpp +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Preview" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Configure Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Offset:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Rotation Step:" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Pivot" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Move Action" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Edit CanvasItem" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Change Anchors" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom (%):" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Paste Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Select Mode (Q)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Drag: Rotate" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+Drag: Move" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Press 'v' to Change Pivot, 'Shift+v' to Drag Pivot (while moving)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Alt+RMB: Depth list selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Move Mode (W)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Mode (E)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "" +"Show a list of all objects at the position clicked\n" +"(same as Alt+RMB in select mode)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Click to change object's rotation pivot." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Pan Mode" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Lock the selected object in place (can't be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Unlock the selected object (can be moved)." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Makes sure the object's children are not selectable." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Restores the object's children's ability to be selected." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +#: tools/editor/project_manager.cpp +msgid "Edit" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Show Grid" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Rotation Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap Relative" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Configure Snap.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Use Pixel Snap" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Expand to Parent" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Skeleton.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Bones" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Make IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear IK Chain" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom In" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Out" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Reset" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Zoom Set.." +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Center Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Frame Selection" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Anchor" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Keys (Ins)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Insert Key (Existing Tracks)" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Copy Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Clear Pose" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Set a Value" +msgstr "" + +#: tools/editor/plugins/canvas_item_editor_plugin.cpp +msgid "Snap (Pixels):" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Edit Poly (Remove Point)" +msgstr "" + +#: tools/editor/plugins/collision_polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create a new polygon from scratch." +msgstr "" + +#: tools/editor/plugins/collision_polygon_editor_plugin.cpp +msgid "Create Poly3D" +msgstr "" + +#: tools/editor/plugins/collision_shape_2d_editor_plugin.cpp +msgid "Set Handle" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +msgid "Add/Remove Color Ramp Point" +msgstr "" + +#: tools/editor/plugins/color_ramp_editor_plugin.cpp +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Color Ramp" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Creating Mesh Library" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Thumbnail.." +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove item %d?" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Add Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Remove Selected Item" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Import from Scene" +msgstr "" + +#: tools/editor/plugins/cube_grid_theme_editor_plugin.cpp +msgid "Update from Scene" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item %d" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Items" +msgstr "" + +#: tools/editor/plugins/item_list_editor_plugin.cpp +msgid "Item List Editor" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +msgid "Create Occluder Polygon" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Edit existing polygon:" +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "LMB: Move Point." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Ctrl+LMB: Split Segment." +msgstr "" + +#: tools/editor/plugins/light_occluder_2d_editor_plugin.cpp +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "RMB: Erase Point." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Mesh is empty!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Trimesh Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Static Convex Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "This doesn't work on scene root!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Shape" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Navigation Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "MeshInstance lacks a Mesh!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Could not create outline!" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Static Body" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Trimesh Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Convex Collision Sibling" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh.." +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Create Outline Mesh" +msgstr "" + +#: tools/editor/plugins/mesh_instance_editor_plugin.cpp +msgid "Outline Size:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and no MultiMesh set in node)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No mesh source specified (and MultiMesh contains no Mesh)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (not a MeshInstance)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh source is invalid (contains no Mesh resource)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "No surface source specified." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (invalid path)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no geometry)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Surface source is invalid (no faces)." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Parent has no solid faces to populate." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Couldn't map area." +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Select a Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate Surface" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate MultiMesh" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Target Surface:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Source Mesh:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "X-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Y-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Z-Axis" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Mesh Up Axis:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Rotation:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Tilt:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Random Scale:" +msgstr "" + +#: tools/editor/plugins/multimesh_editor_plugin.cpp +msgid "Populate" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Create Navigation Polygon" +msgstr "" + +#: tools/editor/plugins/navigation_polygon_editor_plugin.cpp +msgid "Remove Poly And Point" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Error loading image:" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "No pixels with transparency > 128 in image.." +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Set Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Clear Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Load Emission Mask" +msgstr "" + +#: tools/editor/plugins/particles_2d_editor_plugin.cpp +msgid "Generated Point Count:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Node does not contain geometry (faces)." +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Faces contain no area!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "No faces!" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Generate AABB" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Mesh" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter From Node" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Clear Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Create Emitter" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Positions:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Emission Fill:" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Surface" +msgstr "" + +#: tools/editor/plugins/particles_editor_plugin.cpp +msgid "Volume" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Remove Point from Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point to Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Point in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move In-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Move Out-Control in Curve" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Select Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Shift+Drag: Select Control Points" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Click: Add Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Right Click: Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +msgid "Select Control Points (Shift+Drag)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Add Point (in empty space)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Segment (in curve)" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Delete Point" +msgstr "" + +#: tools/editor/plugins/path_2d_editor_plugin.cpp +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Close Curve" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Curve Point #" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Point Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve In Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Set Curve Out Pos" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Split Path" +msgstr "" + +#: tools/editor/plugins/path_editor_plugin.cpp +msgid "Remove Path Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Create UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Transform UV Map" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon 2D UV Editor" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Point" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Ctrl: Rotate" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift: Move All" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Shift+Ctrl: Scale" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Move Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Rotate Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Scale Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Polygon->UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "UV->Polygon" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +msgid "Clear UV" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Enable Snap" +msgstr "" + +#: tools/editor/plugins/polygon_2d_editor_plugin.cpp +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Grid" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "ERROR: Couldn't load resource!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Add Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Rename Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Delete Resource" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +msgid "Resource clipboard is empty!" +msgstr "" + +#: tools/editor/plugins/resource_preloader_editor_plugin.cpp +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Load Resource" +msgstr "" + +#: tools/editor/plugins/rich_text_editor_plugin.cpp +msgid "Parse BBCode" +msgstr "" + +#: tools/editor/plugins/sample_editor_plugin.cpp +msgid "Length:" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Open Sample File(s)" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "ERROR: Couldn't load sample!" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Add Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Rename Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Delete Sample" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "16 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "8 Bits" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Stereo" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Mono" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Format" +msgstr "" + +#: tools/editor/plugins/sample_library_editor_plugin.cpp +msgid "Pitch" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error while saving theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error saving" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Error importing" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Import Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/project_export.cpp +msgid "File" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/property_editor.cpp +msgid "New" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save All" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Prev" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "History Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Save Theme As" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Move Up" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Move Down" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Left" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Indent Right" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Comment" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Clone Down" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Complete Symbol" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Trim Trailing Whitespace" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Auto Indent" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Soft Reload Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Next" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Find Previous" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Replace.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Function.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Goto Line.." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Debug" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Toggle Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Remove All Breakpoints" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Next Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Goto Previous Breakpoint" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Over" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Step Into" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Break" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Continue" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Keep Debugger Open" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Window" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Left" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Move Right" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Contextual Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Tutorials" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Open https://godotengine.org at tutorials section." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Classes" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the class hierarchy." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search Help" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Search the reference documentation." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to previous edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Go to next edited document." +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Create Script" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "" +"The following files are newer on disk.\n" +"What action should be taken?:" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Reload" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +msgid "Resave" +msgstr "" + +#: tools/editor/plugins/script_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Debugger" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Vertex" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Fragment" +msgstr "" + +#: tools/editor/plugins/shader_editor_plugin.cpp +msgid "Lighting" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Constant" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Scalar Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Operator" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Toggle Rot Only" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Function" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Scalar Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Vec Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change RGB Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Default Value" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change XForm Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Texture Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Cubemap Uniform" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Comment" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Color Ramp" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add/Remove to Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Modify Curve Map" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Change Input Name" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Connect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Disconnect Graph Nodes" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Remove Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Move Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Duplicate Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Delete Shader Graph Node(s)" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Cyclic Connection Link" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Error: Missing Input Connections" +msgstr "" + +#: tools/editor/plugins/shader_graph_editor_plugin.cpp +msgid "Add Shader Graph Node" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Aborted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "X-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Y-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Z-Axis Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Plane Transform." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scaling to %s%%." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotating %s degrees." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right View." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Keying is disabled (no key inserted)." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Animation Key Inserted." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Top (Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Bottom (Shift+Num7)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Left (Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Right (Shift+Num3)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Front (Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rear (Shift+Num1)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective (Num5)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Orthogonal (Num5)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Environment" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Audio Listener" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Gizmos" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Selection (F)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Align with view (Ctrl+Shift+F)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "XForm Dialog" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "No scene selected to instance!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Instance at Cursor" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Could not instance scene!" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Mode (R)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Local Coords" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Dialog.." +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default Light" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Use Default sRGB" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "1 Viewport" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "2 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "3 Viewports (Alt)" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "4 Viewports" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Normal" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Wireframe" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Overdraw" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Display Shadeless" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Origin" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Grid" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Snap Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate Snap:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate Snap (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale Snap (%):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Viewport Settings" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Default Light Normal:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Ambient Light Color:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Perspective FOV (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Near:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "View Z-Far:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Change" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Translate:" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Rotate (deg.):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Scale (ratio):" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Transform Type" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Pre" +msgstr "" + +#: tools/editor/plugins/spatial_editor_plugin.cpp +msgid "Post" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "ERROR: Couldn't load frame resource!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Resource clipboard is empty or not a texture!" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Paste Frame" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Add Empty" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation Loop" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Change Animation FPS" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "(empty)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animations" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Speed (FPS):" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Animation Frames" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (Before)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Insert Empty (After)" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Up" +msgstr "" + +#: tools/editor/plugins/sprite_frames_editor_plugin.cpp +msgid "Down" +msgstr "" + +#: tools/editor/plugins/style_box_editor_plugin.cpp +msgid "StyleBox Preview:" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Texture Region Editor" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "Scale Region Editor" +msgstr "" + +#: tools/editor/plugins/texture_region_editor_plugin.cpp +msgid "" +"No texture in this node.\n" +"Set a texture to be able to edit region." +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Can't save theme to file:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add All" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Remove Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Add Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Remove Class Items" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Create Empty Editor Template" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "CheckBox Radio2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Check Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Checked Item" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Has" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Many" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp tools/editor/project_export.cpp +msgid "Options" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Have,Many,Several,Options!" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 1" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 2" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Tab 3" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +#: tools/editor/project_settings.cpp tools/editor/scene_tree_editor.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Data Type:" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Icon" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Style" +msgstr "" + +#: tools/editor/plugins/theme_editor_plugin.cpp +msgid "Color" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Paint TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase TileMap" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Erase selection" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Find tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Transpose" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror X" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Mirror Y" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Bucket" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Pick Tile" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Select" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 0 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 90 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 180 degrees" +msgstr "" + +#: tools/editor/plugins/tile_map_editor_plugin.cpp +msgid "Rotate 270 degrees" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Could not find tile:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Item name or ID:" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from scene?" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Create from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +msgid "Merge from Scene" +msgstr "" + +#: tools/editor/plugins/tile_set_editor_plugin.cpp +#: tools/editor/script_editor_debugger.cpp +msgid "Error" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Edit Script Options" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Please export outside the project folder!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error exporting project!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Error writing the project PCK!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "No exporter for platform '%s' yet." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Include" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Change Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name can't be empty!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Invalid character in group name!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group name already exists!" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Add Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Delete Image Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas Preview" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export Settings" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Target" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export to Platform" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export selected resources (including dependencies)." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all resources in the project." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export all files in the project directory." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Resources to Export:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Action" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "" +"Filters to export non-resource files (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Filters to exclude from export (comma-separated, e.g.: *.json, *.txt):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert text scenes to binary on export." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep Original" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy, WebP)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for RAM (BC/PVRTC/ETC)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Convert Images (*.png):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress for Disk (Lossy) Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink All Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Formats:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Groups" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Groups:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Disk" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress RAM" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Lossy Quality:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Atlas:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Shrink By:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Preview Atlas" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Image Filter:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Images:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Select None" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Group" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Samples" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sample Conversion Mode: (.wav files):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Keep" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compress (RAM - IMA-ADPCM)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Sampling Rate Limit (Hz):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trim" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Trailing Silence:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Export Mode:" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Text" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Compiled" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Encrypted (Provide Key Below)" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Script Encryption Key (256-bits as hex):" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export PCK/Zip" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Project PCK" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export.." +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Project Export" +msgstr "" + +#: tools/editor/project_export.cpp +msgid "Export Preset:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, the path must exist!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must not exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path, engine.cfg must exist." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Imported Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Invalid project path (changed anything?)." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Couldn't create engine.cfg in project path." +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Import Existing Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path (Must Exist):" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Name:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Create New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Path:" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Browse" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Game Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "That's a BINGO!" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Unnamed Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to open more than one projects?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Are you sure to run more than one projects?" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Remove project from the list? (Folder contents will not be modified)" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project Manager" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Project List" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Run" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Scan" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "New Project" +msgstr "" + +#: tools/editor/project_manager.cpp +msgid "Exit" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Key " +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joy Axis" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid action (anything goes but '/' or ':')." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action '%s' already exists!" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Rename Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Control+" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "Press a Key.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Mouse Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Left Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Right Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Middle Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Up Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Wheel Down Button" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 6" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 7" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 8" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Button 9" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Axis Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Joystick Button Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Input Action" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Erase Input Action Event" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Toggle Persisting" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Error saving settings." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Settings saved OK." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Valid characters:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing engine class name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing buit-in type name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Invalid name. Must not collide with an existing global constant name." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Autoload '%s' already exists!" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Rename Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Toggle AutoLoad Globals" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Move Autoload" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Translation" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add Remapped Path" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resource Remap Add Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Change Resource Remap Language" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remove Resource Remap Option" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Enable" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Project Settings (engine.cfg)" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/settings_config_dialog.cpp +msgid "General" +msgstr "" + +#: tools/editor/project_settings.cpp tools/editor/property_editor.cpp +msgid "Property:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Del" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Copy To Platform.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Input Map" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Action:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Device:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Index:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Localization" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Translations:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Add.." +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Resources:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Remaps by Locale:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Locale" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "AutoLoad" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Node Name:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "List:" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Singleton" +msgstr "" + +#: tools/editor/project_settings.cpp +msgid "Plugins" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Preset.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Ease Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Zero" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing In-Out" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Easing Out-In" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "File.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Dir.." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Load" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Assign" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Error loading file: Not a resource!" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Couldn't load image" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Bit %d, val %d." +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "On" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Set" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Properties:" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Global" +msgstr "" + +#: tools/editor/property_editor.cpp +msgid "Sections:" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Could not execute PVRTC tool:" +msgstr "" + +#: tools/editor/pvrtc_compress.cpp +msgid "Can't load back converted image using PVRTC tool:" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent Node" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Reparent Location (Select new Parent):" +msgstr "" + +#: tools/editor/reparent_dialog.cpp +msgid "Keep Global Transform" +msgstr "" + +#: tools/editor/reparent_dialog.cpp tools/editor/scene_tree_dock.cpp +msgid "Reparent" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Create New Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Open Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Save Resource" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Resource Tools" +msgstr "" + +#: tools/editor/resources_dock.cpp +msgid "Make Local" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Run Mode:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Current Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Main Scene Arguments:" +msgstr "" + +#: tools/editor/run_settings_dialog.cpp +msgid "Scene Run Settings" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "OK :(" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "No parent to instance a child at." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error loading scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error instancing scene from %s" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Ok" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Cannot instance the scene '%s' because the current scene exists within one " +"of its nodes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Scene(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on the tree root." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Node In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Move Nodes In Parent" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Duplicate Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)?" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done without a scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation requires a single selected node." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "This operation can't be done on instanced scenes." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save New Scene As.." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Makes Sense!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes from a foreign scene!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Can't operate on nodes the current scene inherits from!" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Remove Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Create Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Couldn't save new scene. Likely dependencies (instances) couldn't be " +"satisfied." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error saving scene." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Error duplicating scene to save it." +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "New Scene Root" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Inherit Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Child Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Instance Child Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Change Type" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Groups" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Edit Connections" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add Script" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Merge From Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Save Branch as Scene" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Delete Node(s)" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "Add/Create a New Node" +msgstr "" + +#: tools/editor/scene_tree_dock.cpp +msgid "" +"Instance a scene file as a Node. Creates an inherited scene if no root node " +"exists." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "" +"This item cannot be made visible because the parent is hidden. Unhide the " +"parent first." +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle Spatial Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Toggle CanvasItem Visible" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Instance:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Invalid node name, the following characters are not allowed:" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Rename Node" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Scene Tree (Nodes):" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Editable Children" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Load As Placeholder" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Discard Instancing" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Open in Editor" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear Inheritance? (No Undo!)" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Clear!" +msgstr "" + +#: tools/editor/scene_tree_editor.cpp +msgid "Select a Node" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination files, doing nothing." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Same source and destination paths, doing nothing." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Can't move directories to within themselves." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Can't operate on '..'" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Pick New Name and Location For:" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "No files selected!" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Instance" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Edit Dependencies.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "View Owners.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Copy Path" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Rename or Move.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Move To.." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Info" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Show In File Manager" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Previous Directory" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Next Directory" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Re-Scan Filesystem" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Toggle folder status as Favorite" +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Instance the selected scene(s) as child of the selected node." +msgstr "" + +#: tools/editor/scenes_dock.cpp +msgid "Move" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid parent class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid chars:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid class name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid name" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "N/A" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Parent class name is invalid!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid path!" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Could not create script in filesystem." +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is empty" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Path is not local" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid base path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "File exists" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Invalid extension" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Valid path" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Class Name:" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Built-In Script" +msgstr "" + +#: tools/editor/script_create_dialog.cpp +msgid "Create Node Script" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Bytes:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Warning" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Error:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Source:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Function:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Child Process Connected" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Previous Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Inspect Next Instance" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Frames" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Variable" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Errors:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Stack Trace (if applicable):" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Inspector" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Scene Tree:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Remote Object Properties: " +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Profiler" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitor" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Value" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Monitors" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "List of Video Memory Usage by Resource:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Total:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Video Mem" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Resource Path" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Type" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Usage" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Misc" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Clicked Control Type:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Live Edit Root:" +msgstr "" + +#: tools/editor/script_editor_debugger.cpp +msgid "Set From Tree" +msgstr "" + +#: tools/editor/settings_config_dialog.cpp +msgid "Shortcuts" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Light Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera FOV" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Camera Size" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Sphere Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Box Shape Extents" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Radius" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Capsule Shape Height" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Ray Shape Length" +msgstr "" + +#: tools/editor/spatial_editor_gizmos.cpp +msgid "Change Notifier Extents" +msgstr "" |