Tuesday 17 December 2013

Steganography 2

Do you remember my old post about steganography? It's here: http://rebol.informe.com/blog/2012/10/10/steganography/

Now I'll sow you another post, but it's all line command driven. Let's see an example:

message: "I love Steganography!!"
key: "1234"

img: img-load-or-create %test.png
img-save %crypted.png (img-encode message key img)


Now image file crypted.png contains a secret message. To retrieve your message:


img: img-load-or-create %crypted.png
print img-decode key img


Here is the source code:

REBOL [
    Title: "Steganography"
    Description: "Ukrywanie informacji tekstowych w plikach graficznych"
    Purpose: "Functions to hide text data in the noise pixels of an image"
    Date: 2007/01/10
    Version: 1.1.0
    Author: "Piotr Gapinski"
    Email: {news [at] rowery! olsztyn.pl}
    File: %steganography.r
    Url: http://www.rowery.olsztyn.pl/wspolpraca/rebol/steganography/
    Copyright: "Olsztynska Strona Rowerowa http://www.rowery.olsztyn.pl"
    License: "GNU Lesser General Public License (Version 2.1)"
]
ctx-steganography: context [
    greyscale: false
    set 'img-load-or-create func [
        "Wczytuje plik graficzny lub tworzy obrazek o kolorze bialym."
        imgname [string! file!] "nazwa pliku do wczytania"] [
        any [
            attempt [load to-file imgname]
            make image! reduce [300x300 white]
        ]
    ]
    set 'img-save-png func [
        "Zapisuje dane graficzne do pliku PNG"
        imgname [string! file!] "nazwa pliku"
        img [image!] "dane grafine do zapisania"] [
       
        save/png (to-file imgname) img
    ]
    set 'img-encode func [
        "Koduje wiadomosc kluczem i umieszcza w pliku graficznym."
        text [string!] "wiadomosc do zakodowania"
        key [string!]   "klucz prywatny kodowanych danych"
        img [image!] "obrazek w ktorym beda umieszczone dane"
        /local text-len rgb r g b key-len key-index color-index byte k color i] [
       
        text-len: length? text
       
        ;; zakoduj długosc wiadomosci w pierwszym pixelu
        pixel: 1
        rgb: to-tuple reduce [
            r: to-integer (text-len / power 2 2)
            g: to-integer (text-len - (r * power 2 2)) / power 2 1
            b: to-integer (text-len - (r * power 2 2) - (g * power 2 1))
        ]
        poke img pixel rgb
       
        key-len: length? key
        key-index: color-index: i: 1 ;; skladowa rgb w ktorej bedzie umieszczony zakodowany bajt
       
        foreach byte text [
            pixel: pixel + (to-integer key/:key-index)
            rgb: img/:pixel
           
            crypted-value: to-integer (byte xor key/:key-index)
            either greyscale [
                rgb: to-tuple reduce [crypted-value crypted-value crypted-value]
            ][rgb: poke rgb color-index crypted-value ]
            poke img pixel rgb
           
            key-index: (i // key-len) + 1
            color-index: (i // 3) + 1
            i: i + 1
        ]
        return img
    ]
    set 'img-decode func [
        "Rozkodowuje wiadomosc z pliku graficznego na podstawie klucza."
        key [string!] "klucz prywatny zakodowanych danych"
        img [image!] "obrazek zawierajacy zakodowane dane"
        /local text pixel text-len key-len key-index color-index i] [
        ;; długosc wiadomosci jest zakodowana w pierwszym pixelu
        pixel: 1
        text: copy ""
        text-len: to-integer ((img/:pixel/1 * power 2 2) + (img/:pixel/2 * power 2 1) + img/:pixel/3)
        key-len: length? key
        key-index: color-index: i: 1 ;; skladowa rgb w ktorej bedzie umieszczony zakodowany bajt
       
        loop text-len [
            pixel: pixel + to-integer key/:key-index
            byte: img/:pixel/:color-index
            append text (to-char byte) xor key/:key-index
           
            key-index: (i // key-len) + 1
            color-index: (i // 3) + 1
            i: i + 1
        ]
        return text
    ]
]

Monday 2 December 2013

Placing an image on a sphere

Rebol programmers continue to surprise me, the following script can place any image on the surface of a rotating 3D sphere! Mr. Phil Bevan is a 3D master!



Here is the source code:

rebol [
    Title:   "Mapping a picture onto a 3D Sphere"
    Date:     19-Feb-2006
    File:     %sphere.r
    Version: 1.0.1
    Email: phil.bevan@gmail.com
    Category: [demo]
    License: {Copyright (c) <2006>, <Phil Bevan>
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
}
    Purpose:   " A 3D Perspective demo"
    license:   'mit
    History: [
        0.0.1 - Initial Version
        1.0.0 - Initial Release
        1.0.1 - Allow selection of Image
        2.0.1 - start with earth image ; by Massimiliano Vessi
      ]
]
objs: [
[
    [0 0 0 0 340 135] [[0.418113853070614 0.0 3.97808758147309] [0.408977062214588 8.69307581462395E-2 3.97808758147309] [0.381966011250105 0.17006222502143 3.97808758147309] [0.338261212717716 0.245761156614089 3.97808758147309] [0.279772776032178 0.310719146369842 3.97808758147309] [0.209056926535307 0.362097218433346 3.97808758147309] [0.12920428618241 0.397649904516082 3.97808758147309] [4.37047985323887E-2 0.415823381635519 3.97808758147309] [-4.37047985323888E-2 0.415823381635519 3.97808758147309] [-0.129204286182409 0.397649904516082 3.97808758147309] [-0.209056926535307 0.362097218433346 3.97808758147309] [-0.279772776032178 0.310719146369842 3.97808758147309] [-0.338261212717716 0.245761156614089 3.97808758147309] [-0.381966011250105 0.17006222502143 3.97808758147309] [-0.408977062214588 8.69307581462395E-2 3.97808758147309] [-0.418113853070614 0.0 3.97808758147309] [-0.408977062214588 -8.69307581462397E-2 3.97808758147309] [-0.381966011250105 -0.17006222502143 3.97808758147309] [-0.338261212717716 -0.245761156614089 3.97808758147309] [-0.279772776032178 -0.310719146369842 3.97808758147309] [-0.209056926535307 -0.362097218433346 3.97808758147309] [-0.129204286182409 -0.397649904516082 3.97808758147309] [-4.37047985323886E-2 -0.415823381635519 3.97808758147309] [4.3704798532389E-2 -0.415823381635519 3.97808758147309] [0.12920428618241 -0.397649904516082 3.97808758147309] [0.209056926535307 -0.362097218433346 3.97808758147309] [0.279772776032178 -0.310719146369842 3.97808758147309] [0.338261212717716 -0.245761156614089 3.97808758147309] [0.381966011250105 -0.17006222502143 3.97808758147309] [0.408977062214588 -8.69307581462396E-2 3.97808758147309] [0.967687582398671 0.0 3.88118290510399] [0.946541286983157 0.201193561439857 3.88118290510399] [0.884026595317456 0.393593998810972 3.88118290510399] [0.782875699406132 0.568792489760496 3.88118290510399] [0.64750937877636 0.719132019538302 3.88118290510399] [0.483843791199336 0.838042029283996 3.88118290510399] [0.299031908206797 0.920325580978159 3.88118290510399] [0.101150895911324 0.962386488571468 3.88118290510399] [-0.101150895911324 0.962386488571468 3.88118290510399] [-0.299031908206796 0.920325580978159 3.88118290510399] [-0.483843791199335 0.838042029283996 3.88118290510399] [-0.64750937877636 0.719132019538302 3.88118290510399] [-0.782875699406132 0.568792489760496 3.88118290510399] [-0.884026595317456 0.393593998810972 3.88118290510399] [-0.946541286983157 0.201193561439857 3.88118290510399] [-0.967687582398671 0.0 3.88118290510399] [-0.946541286983157 -0.201193561439858 3.88118290510399] [-0.884026595317456 -0.393593998810972 3.88118290510399] [-0.782875699406132 -0.568792489760496 3.88118290510399] [-0.64750937877636 -0.719132019538302 3.88118290510399] [-0.483843791199336 -0.838042029283996 3.88118290510399] [-0.299031908206796 -0.920325580978159 3.88118290510399] [-0.101150895911324 -0.962386488571468 3.88118290510399] [0.101150895911324 -0.962386488571468 3.88118290510399] [0.299031908206797 -0.920325580978159 3.88118290510399] [0.483843791199336 -0.838042029283996 3.88118290510399] [0.64750937877636 -0.719132019538302 3.88118290510399] [0.782875699406132 -0.568792489760496 3.88118290510399] [0.884026595317456 -0.393593998810972 3.88118290510399] [0.946541286983157 -0.201193561439858 3.88118290510399] [1.49842637366365 0.0 3.70873541826715] [1.46568216227535 0.311540360914333 3.70873541826715] [1.3688806072723 0.609464913120197 3.70873541826715] [1.21225240111352 0.880752924085583 3.70873541826715] [1.00264294799366 1.113547805947 3.70873541826715] [0.749213186831824 1.29767530529331 3.70873541826715] [0.463039214281692 1.42508816686133 3.70873541826715] [0.156628206158784 1.49021783720578 3.70873541826715] [-0.156628206158784 1.49021783720578 3.70873541826715] [-0.463039214281692 1.42508816686133 3.70873541826715] [-0.749213186831824 1.29767530529331 3.70873541826715] [-1.00264294799366 1.113547805947 3.70873541826715] [-1.21225240111352 0.880752924085583 3.70873541826715] [-1.3688806072723 0.609464913120197 3.70873541826715] [-1.46568216227535 0.311540360914333 3.70873541826715] [-1.49842637366365 0.0 3.70873541826715] [-1.46568216227535 -0.311540360914333 3.70873541826715] [-1.3688806072723 -0.609464913120197 3.70873541826715] [-1.21225240111352 -0.880752924085583 3.70873541826715] [-1.00264294799366 -1.113547805947 3.70873541826715] [-0.749213186831824 -1.29767530529331 3.70873541826715] [-0.463039214281692 -1.42508816686133 3.70873541826715] [-0.156628206158783 -1.49021783720578 3.70873541826715] [0.156628206158785 -1.49021783720578 3.70873541826715] [0.463039214281692 -1.42508816686133 3.70873541826715] [0.749213186831824 -1.29767530529331 3.70873541826715] [1.00264294799366 -1.113547805947 3.70873541826715] [1.21225240111352 -0.880752924085583 3.70873541826715] [1.3688806072723 -0.609464913120196 3.70873541826715] [1.46568216227535 -0.311540360914333 3.70873541826715] [2.0 0.0 3.46410161513775] [1.95629520146761 0.415823381635519 3.46410161513775] [1.8270909152852 0.8134732861516 3.46410161513775] [1.61803398874989 1.17557050458495 3.46410161513775] [1.33826121271772 1.48628965095479 3.46410161513775] [1.0 1.73205080756888 3.46410161513775] [0.618033988749895 1.90211303259031 3.46410161513775] [0.209056926535307 1.98904379073655 3.46410161513775] [-0.209056926535307 1.98904379073655 3.46410161513775] [-0.618033988749895 1.90211303259031 3.46410161513775] [-0.999999999999999 1.73205080756888 3.46410161513775] [-1.33826121271772 1.48628965095479 3.46410161513775] [-1.61803398874989 1.17557050458495 3.46410161513775] [-1.8270909152852 0.813473286151601 3.46410161513775] [-1.95629520146761 0.415823381635519 3.46410161513775] [-2.0 0.0 3.46410161513775] [-1.95629520146761 -0.415823381635519 3.46410161513775] [-1.8270909152852 -0.813473286151601 3.46410161513775] [-1.61803398874989 -1.17557050458495 3.46410161513775] [-1.33826121271772 -1.48628965095479 3.46410161513775] [-1.0 -1.73205080756888 3.46410161513775] [-0.618033988749895 -1.90211303259031 3.46410161513775] [-0.209056926535306 -1.98904379073655 3.46410161513775] [0.209056926535308 -1.98904379073655 3.46410161513775] [0.618033988749895 -1.90211303259031 3.46410161513775] [1.0 -1.73205080756888 3.46410161513775] [1.33826121271772 -1.48628965095479 3.46410161513775] [1.61803398874989 -1.17557050458495 3.46410161513775] [1.8270909152852 -0.8134732861516 3.46410161513775] [1.95629520146761 -0.415823381635519 3.46410161513775] [2.46264590130263 0.0 3.15204301442689] [2.40883117981611 0.512012873225255 3.15204301442689] [2.24973897691719 1.00164832698021 3.15204301442689] [1.99232238528164 1.44750694240419 3.15204301442689] [1.64783174518579 1.83010255853617 3.15204301442689] [1.23132295065132 2.13271391105371 3.15204301442689] [0.760999434630323 2.34211543176142 3.15204301442689] [0.25741659163555 2.4491552693844 3.15204301442689] [-0.25741659163555 2.4491552693844 3.15204301442689] [-0.760999434630323 2.34211543176142 3.15204301442689] [-1.23132295065132 2.13271391105371 3.15204301442689] [-1.64783174518579 1.83010255853617 3.15204301442689] [-1.99232238528164 1.44750694240419 3.15204301442689] [-2.24973897691719 1.00164832698021 3.15204301442689] [-2.40883117981611 0.512012873225255 3.15204301442689] [-2.46264590130263 0.0 3.15204301442689] [-2.40883117981611 -0.512012873225256 3.15204301442689] [-2.24973897691719 -1.00164832698021 3.15204301442689] [-1.99232238528164 -1.44750694240419 3.15204301442689] [-1.64783174518579 -1.83010255853617 3.15204301442689] [-1.23132295065132 -2.1327139110537 3.15204301442689] [-0.760999434630323 -2.34211543176142 3.15204301442689] [-0.257416591635549 -2.4491552693844 3.15204301442689] [0.257416591635551 -2.4491552693844 3.15204301442689] [0.760999434630323 -2.34211543176142 3.15204301442689] [1.23132295065132 -2.1327139110537 3.15204301442689] [1.64783174518579 -1.83010255853617 3.15204301442689] [1.99232238528164 -1.44750694240419 3.15204301442689] [2.24973897691719 -1.00164832698021 3.15204301442689] [2.40883117981611 -0.512012873225256 3.15204301442689] [2.8773592013546 0.0 2.77863348183599] [2.81448199925435 0.598236616643673 2.77863348183599] [2.62859842840364 1.17032742248224 2.77863348183599] [2.327832492817 1.69126930410429 2.77863348183599] [1.92532910711465 2.13829460152644 2.77863348183599] [1.4386796006773 2.49186616418599 2.77863348183599] [0.889152892139699 2.73653121817012 2.77863348183599] [0.300765935586639 2.86159672658652 2.77863348183599] [-0.30076593558664 2.86159672658652 2.77863348183599] [-0.889152892139699 2.73653121817012 2.77863348183599] [-1.4386796006773 2.49186616418599 2.77863348183599] [-1.92532910711465 2.13829460152644 2.77863348183599] [-2.327832492817 1.69126930410429 2.77863348183599] [-2.62859842840364 1.17032742248224 2.77863348183599] [-2.81448199925435 0.598236616643673 2.77863348183599] [-2.8773592013546 0.0 2.77863348183599] [-2.81448199925435 -0.598236616643675 2.77863348183599] [-2.62859842840364 -1.17032742248224 2.77863348183599] [-2.327832492817 -1.69126930410429 2.77863348183599] [-1.92532910711465 -2.13829460152644 2.77863348183599] [-1.4386796006773 -2.49186616418599 2.77863348183599] [-0.889152892139699 -2.73653121817012 2.77863348183599] [-0.300765935586638 -2.86159672658652 2.77863348183599] [0.300765935586641 -2.86159672658652 2.77863348183599] [0.889152892139699 -2.73653121817012 2.77863348183599] [1.4386796006773 -2.49186616418599 2.77863348183599] [1.92532910711465 -2.13829460152644 2.77863348183599] [2.327832492817 -1.69126930410429 2.77863348183599] [2.62859842840364 -1.17032742248224 2.77863348183599] [2.81448199925435 -0.598236616643674 2.77863348183599] [3.23606797749979 0.0 2.35114100916989] [3.16535212800292 0.672816364803188 2.35114100916989] [2.95629520146761 1.31622742593336 2.35114100916989] [2.61803398874989 1.90211303259031 2.35114100916989] [2.16535212800292 2.40486717237207 2.35114100916989] [1.6180339887499 2.80251707688815 2.35114100916989] [1.0 3.07768353717525 2.35114100916989] [0.338261212717716 3.21834045852367 2.35114100916989] [-0.338261212717717 3.21834045852367 2.35114100916989] [-1.0 3.07768353717525 2.35114100916989] [-1.61803398874989 2.80251707688815 2.35114100916989] [-2.16535212800292 2.40486717237207 2.35114100916989] [-2.61803398874989 1.90211303259031 2.35114100916989] [-2.95629520146761 1.31622742593336 2.35114100916989] [-3.16535212800292 0.672816364803188 2.35114100916989] [-3.23606797749979 0.0 2.35114100916989] [-3.16535212800292 -0.672816364803189 2.35114100916989] [-2.95629520146761 -1.31622742593336 2.35114100916989] [-2.61803398874989 -1.90211303259031 2.35114100916989] [-2.16535212800292 -2.40486717237207 2.35114100916989] [-1.6180339887499 -2.80251707688815 2.35114100916989] [-1.0 -3.07768353717525 2.35114100916989] [-0.338261212717715 -3.21834045852367 2.35114100916989] [0.338261212717719 -3.21834045852367 2.35114100916989] [1.0 -3.07768353717525 2.35114100916989] [1.6180339887499 -2.80251707688815 2.35114100916989] [2.16535212800292 -2.40486717237207 2.35114100916989] [2.61803398874989 -1.90211303259031 2.35114100916989] [2.95629520146761 -1.31622742593336 2.35114100916989] [3.16535212800292 -0.672816364803189 2.35114100916989] [3.53179037143571 0.0 1.87788625114356] [3.45461227811459 0.73430050773908 1.87788625114356] [3.22645105117096 1.43650855972519 1.87788625114356] [2.8572784310613 2.07593429451846 1.87788625114356] [2.36322903277115 2.62463173920333 1.87788625114356] [1.76589518571785 3.0586201825046 1.87788625114356] [1.09138324534344 3.35893224694241 1.87788625114356] [0.36917262010967 3.51244285424366 1.87788625114356] [-0.36917262010967 3.51244285424366 1.87788625114356] [-1.09138324534344 3.35893224694241 1.87788625114356] [-1.76589518571785 3.0586201825046 1.87788625114356] [-2.36322903277115 2.62463173920333 1.87788625114356] [-2.8572784310613 2.07593429451847 1.87788625114356] [-3.22645105117096 1.43650855972519 1.87788625114356] [-3.45461227811459 0.73430050773908 1.87788625114356] [-3.53179037143571 0.0 1.87788625114356] [-3.45461227811459 -0.734300507739082 1.87788625114356] [-3.22645105117096 -1.43650855972519 1.87788625114356] [-2.8572784310613 -2.07593429451847 1.87788625114356] [-2.36322903277115 -2.62463173920333 1.87788625114356] [-1.76589518571785 -3.0586201825046 1.87788625114356] [-1.09138324534344 -3.35893224694241 1.87788625114356] [-0.369172620109668 -3.51244285424366 1.87788625114356] [0.369172620109672 -3.51244285424366 1.87788625114356] [1.09138324534344 -3.35893224694241 1.87788625114356] [1.76589518571785 -3.0586201825046 1.87788625114356] [2.36322903277115 -2.62463173920333 1.87788625114356] [2.8572784310613 -2.07593429451846 1.87788625114356] [3.22645105117097 -1.43650855972519 1.87788625114356] [3.45461227811459 -0.734300507739081 1.87788625114356] [3.75877048314363 0.0 1.36808057330268] [3.67663232979599 0.781492326546279 1.36808057330268] [3.43380770119695 1.52882968840625 1.36808057330268] [3.04090919881813 2.20934985674408 1.36808057330268] [2.51510837254968 2.79331083470536 1.36808057330268] [1.87938524157182 3.25519072539749 1.36808057330268] [1.16152395724631 3.57480316125163 1.36808057330268] [0.392898502378819 3.73817954515033 1.36808057330268] [-0.39289850237882 3.73817954515033 1.36808057330268] [-1.16152395724631 3.57480316125164 1.36808057330268] [-1.87938524157182 3.25519072539749 1.36808057330268] [-2.51510837254968 2.79331083470536 1.36808057330268] [-3.04090919881813 2.20934985674408 1.36808057330268] [-3.43380770119695 1.52882968840625 1.36808057330268] [-3.67663232979599 0.781492326546279 1.36808057330268] [-3.75877048314363 0.0 1.36808057330268] [-3.67663232979599 -0.78149232654628 1.36808057330268] [-3.43380770119695 -1.52882968840625 1.36808057330268] [-3.04090919881813 -2.20934985674408 1.36808057330268] [-2.51510837254968 -2.79331083470536 1.36808057330268] [-1.87938524157182 -3.25519072539749 1.36808057330268] [-1.16152395724631 -3.57480316125164 1.36808057330268] [-0.392898502378818 -3.73817954515033 1.36808057330268] [0.392898502378822 -3.73817954515033 1.36808057330268] [1.16152395724631 -3.57480316125163 1.36808057330268] [1.87938524157182 -3.25519072539749 1.36808057330268] [2.51510837254968 -2.79331083470536 1.36808057330268] [3.04090919881813 -2.20934985674408 1.36808057330268] [3.43380770119695 -1.52882968840624 1.36808057330268] [3.67663232979599 -0.78149232654628 1.36808057330268] [3.91259040293522 0.0 0.831646763271038] [3.8270909152852 0.8134732861516 0.831646763271038] [3.57432919021751 1.59139388622046 0.831646763271038] [3.16535212800292 2.29976293710639 0.831646763271038] [2.61803398874989 2.90762131215382 0.831646763271038] [1.95629520146761 3.3884026835451 0.831646763271038] [1.20905692653531 3.72109459830542 0.831646763271038] [0.408977062214588 3.89115682332685 0.831646763271038] [-0.408977062214588 3.89115682332685 0.831646763271038] [-1.20905692653531 3.72109459830542 0.831646763271038] [-1.95629520146761 3.3884026835451 0.831646763271038] [-2.61803398874989 2.90762131215382 0.831646763271038] [-3.16535212800292 2.29976293710639 0.831646763271038] [-3.57432919021751 1.59139388622047 0.831646763271038] [-3.8270909152852 0.8134732861516 0.831646763271038] [-3.91259040293522 0.0 0.831646763271038] [-3.8270909152852 -0.813473286151602 0.831646763271038] [-3.57432919021751 -1.59139388622047 0.831646763271038] [-3.16535212800292 -2.29976293710639 0.831646763271038] [-2.61803398874989 -2.90762131215382 0.831646763271038] [-1.95629520146761 -3.38840268354509 0.831646763271038] [-1.20905692653531 -3.72109459830542 0.831646763271038] [-0.408977062214586 -3.89115682332685 0.831646763271038] [0.40897706221459 -3.89115682332685 0.831646763271038] [1.20905692653531 -3.72109459830542 0.831646763271038] [1.95629520146761 -3.38840268354509 0.831646763271038] [2.61803398874989 -2.90762131215382 0.831646763271038] [3.16535212800292 -2.29976293710639 0.831646763271038] [3.57432919021751 -1.59139388622046 0.831646763271038] [3.8270909152852 -0.813473286151602 0.831646763271038] [3.9902562010393 0.0 0.279025894976501] [3.90305952935978 0.829620913554129 0.279025894976501] [3.64528042728967 1.62298341222312 0.279025894976501] [3.22818507855081 2.34541374783949 0.279025894976501] [2.67000255132862 2.96533824813144 0.279025894976501] [1.99512810051965 3.45566323770842 0.279025894976501] [1.23305697803116 3.79495916168557 0.279025894976501] [0.417095348738863 3.96839716006261 0.279025894976501] [-0.417095348738863 3.96839716006261 0.279025894976501] [-1.23305697803116 3.79495916168557 0.279025894976501] [-1.99512810051965 3.45566323770842 0.279025894976501] [-2.67000255132862 2.96533824813144 0.279025894976501] [-3.22818507855081 2.34541374783949 0.279025894976501] [-3.64528042728967 1.62298341222312 0.279025894976501] [-3.90305952935978 0.829620913554129 0.279025894976501] [-3.9902562010393 0.0 0.279025894976501] [-3.90305952935978 -0.829620913554131 0.279025894976501] [-3.64528042728967 -1.62298341222312 0.279025894976501] [-3.22818507855081 -2.34541374783949 0.279025894976501] [-2.67000255132862 -2.96533824813144 0.279025894976501] [-1.99512810051965 -3.45566323770842 0.279025894976501] [-1.23305697803116 -3.79495916168557 0.279025894976501] [-0.417095348738861 -3.96839716006261 0.279025894976501] [0.417095348738865 -3.96839716006261 0.279025894976501] [1.23305697803116 -3.79495916168557 0.279025894976501] [1.99512810051965 -3.45566323770842 0.279025894976501] [2.67000255132862 -2.96533824813144 0.279025894976501] [3.22818507855081 -2.34541374783949 0.279025894976501] [3.64528042728967 -1.62298341222312 0.279025894976501] [3.90305952935978 -0.82962091355413 0.279025894976501] [3.9902562010393 0.0 -0.279025894976501] [3.90305952935978 0.829620913554129 -0.279025894976501] [3.64528042728967 1.62298341222312 -0.279025894976501] [3.22818507855081 2.34541374783949 -0.279025894976501] [2.67000255132862 2.96533824813144 -0.279025894976501] [1.99512810051965 3.45566323770842 -0.279025894976501] [1.23305697803116 3.79495916168557 -0.279025894976501] [0.417095348738863 3.96839716006261 -0.279025894976501] [-0.417095348738863 3.96839716006261 -0.279025894976501] [-1.23305697803116 3.79495916168557 -0.279025894976501] [-1.99512810051965 3.45566323770842 -0.279025894976501] [-2.67000255132862 2.96533824813144 -0.279025894976501] [-3.22818507855081 2.34541374783949 -0.279025894976501] [-3.64528042728967 1.62298341222312 -0.279025894976501] [-3.90305952935978 0.829620913554129 -0.279025894976501] [-3.9902562010393 0.0 -0.279025894976501] [-3.90305952935978 -0.829620913554131 -0.279025894976501] [-3.64528042728967 -1.62298341222312 -0.279025894976501] [-3.22818507855081 -2.34541374783949 -0.279025894976501] [-2.67000255132862 -2.96533824813144 -0.279025894976501] [-1.99512810051965 -3.45566323770842 -0.279025894976501] [-1.23305697803116 -3.79495916168557 -0.279025894976501] [-0.417095348738861 -3.96839716006261 -0.279025894976501] [0.417095348738865 -3.96839716006261 -0.279025894976501] [1.23305697803116 -3.79495916168557 -0.279025894976501] [1.99512810051965 -3.45566323770842 -0.279025894976501] [2.67000255132862 -2.96533824813144 -0.279025894976501] [3.22818507855081 -2.34541374783949 -0.279025894976501] [3.64528042728967 -1.62298341222312 -0.279025894976501] [3.90305952935978 -0.82962091355413 -0.279025894976501] [3.91259040293522 0.0 -0.831646763271037] [3.8270909152852 0.813473286151601 -0.831646763271037] [3.57432919021751 1.59139388622047 -0.831646763271037] [3.16535212800292 2.29976293710639 -0.831646763271037] [2.61803398874989 2.90762131215382 -0.831646763271037] [1.95629520146761 3.3884026835451 -0.831646763271037] [1.20905692653531 3.72109459830542 -0.831646763271037] [0.408977062214588 3.89115682332685 -0.831646763271037] [-0.408977062214588 3.89115682332685 -0.831646763271037] [-1.20905692653531 3.72109459830542 -0.831646763271037] [-1.95629520146761 3.3884026835451 -0.831646763271037] [-2.61803398874989 2.90762131215382 -0.831646763271037] [-3.16535212800292 2.29976293710639 -0.831646763271037] [-3.57432919021751 1.59139388622047 -0.831646763271037] [-3.8270909152852 0.8134732861516 -0.831646763271037] [-3.91259040293522 0.0 -0.831646763271037] [-3.8270909152852 -0.813473286151602 -0.831646763271037] [-3.57432919021751 -1.59139388622047 -0.831646763271037] [-3.16535212800292 -2.29976293710639 -0.831646763271037] [-2.61803398874989 -2.90762131215382 -0.831646763271037] [-1.95629520146761 -3.3884026835451 -0.831646763271037] [-1.20905692653531 -3.72109459830542 -0.831646763271037] [-0.408977062214587 -3.89115682332685 -0.831646763271037] [0.40897706221459 -3.89115682332685 -0.831646763271037] [1.20905692653531 -3.72109459830542 -0.831646763271037] [1.95629520146761 -3.3884026835451 -0.831646763271037] [2.61803398874989 -2.90762131215382 -0.831646763271037] [3.16535212800292 -2.29976293710639 -0.831646763271037] [3.57432919021751 -1.59139388622046 -0.831646763271037] [3.8270909152852 -0.813473286151602 -0.831646763271037] [3.75877048314363 0.0 -1.36808057330268] [3.67663232979599 0.781492326546279 -1.36808057330268] [3.43380770119695 1.52882968840625 -1.36808057330268] [3.04090919881813 2.20934985674408 -1.36808057330268] [2.51510837254968 2.79331083470536 -1.36808057330268] [1.87938524157182 3.25519072539749 -1.36808057330268] [1.16152395724631 3.57480316125163 -1.36808057330268] [0.392898502378819 3.73817954515033 -1.36808057330268] [-0.39289850237882 3.73817954515033 -1.36808057330268] [-1.16152395724631 3.57480316125164 -1.36808057330268] [-1.87938524157182 3.25519072539749 -1.36808057330268] [-2.51510837254968 2.79331083470536 -1.36808057330268] [-3.04090919881813 2.20934985674408 -1.36808057330268] [-3.43380770119695 1.52882968840625 -1.36808057330268] [-3.67663232979599 0.781492326546279 -1.36808057330268] [-3.75877048314363 0.0 -1.36808057330268] [-3.67663232979599 -0.78149232654628 -1.36808057330268] [-3.43380770119695 -1.52882968840625 -1.36808057330268] [-3.04090919881813 -2.20934985674408 -1.36808057330268] [-2.51510837254968 -2.79331083470536 -1.36808057330268] [-1.87938524157182 -3.25519072539749 -1.36808057330268] [-1.16152395724631 -3.57480316125164 -1.36808057330268] [-0.392898502378818 -3.73817954515033 -1.36808057330268] [0.392898502378822 -3.73817954515033 -1.36808057330268] [1.16152395724631 -3.57480316125163 -1.36808057330268] [1.87938524157182 -3.25519072539749 -1.36808057330268] [2.51510837254968 -2.79331083470536 -1.36808057330268] [3.04090919881813 -2.20934985674408 -1.36808057330268] [3.43380770119695 -1.52882968840624 -1.36808057330268] [3.67663232979599 -0.78149232654628 -1.36808057330268] [3.53179037143571 0.0 -1.87788625114356] [3.45461227811459 0.73430050773908 -1.87788625114356] [3.22645105117096 1.43650855972519 -1.87788625114356] [2.8572784310613 2.07593429451846 -1.87788625114356] [2.36322903277115 2.62463173920333 -1.87788625114356] [1.76589518571785 3.0586201825046 -1.87788625114356] [1.09138324534344 3.35893224694241 -1.87788625114356] [0.36917262010967 3.51244285424366 -1.87788625114356] [-0.36917262010967 3.51244285424366 -1.87788625114356] [-1.09138324534344 3.35893224694241 -1.87788625114356] [-1.76589518571785 3.0586201825046 -1.87788625114356] [-2.36322903277115 2.62463173920333 -1.87788625114356] [-2.8572784310613 2.07593429451847 -1.87788625114356] [-3.22645105117096 1.43650855972519 -1.87788625114356] [-3.45461227811459 0.73430050773908 -1.87788625114356] [-3.53179037143571 0.0 -1.87788625114356] [-3.45461227811459 -0.734300507739082 -1.87788625114356] [-3.22645105117096 -1.43650855972519 -1.87788625114356] [-2.8572784310613 -2.07593429451847 -1.87788625114356] [-2.36322903277115 -2.62463173920333 -1.87788625114356] [-1.76589518571785 -3.0586201825046 -1.87788625114356] [-1.09138324534344 -3.35893224694241 -1.87788625114356] [-0.369172620109668 -3.51244285424366 -1.87788625114356] [0.369172620109672 -3.51244285424366 -1.87788625114356] [1.09138324534344 -3.35893224694241 -1.87788625114356] [1.76589518571785 -3.0586201825046 -1.87788625114356] [2.36322903277115 -2.62463173920333 -1.87788625114356] [2.8572784310613 -2.07593429451846 -1.87788625114356] [3.22645105117097 -1.43650855972519 -1.87788625114356] [3.45461227811459 -0.734300507739081 -1.87788625114356] [3.23606797749979 0.0 -2.35114100916989] [3.16535212800292 0.672816364803188 -2.35114100916989] [2.95629520146761 1.31622742593336 -2.35114100916989] [2.61803398874989 1.90211303259031 -2.35114100916989] [2.16535212800292 2.40486717237207 -2.35114100916989] [1.6180339887499 2.80251707688815 -2.35114100916989] [1.0 3.07768353717525 -2.35114100916989] [0.338261212717716 3.21834045852367 -2.35114100916989] [-0.338261212717717 3.21834045852367 -2.35114100916989] [-1.0 3.07768353717525 -2.35114100916989] [-1.61803398874989 2.80251707688815 -2.35114100916989] [-2.16535212800292 2.40486717237207 -2.35114100916989] [-2.61803398874989 1.90211303259031 -2.35114100916989] [-2.95629520146761 1.31622742593336 -2.35114100916989] [-3.16535212800292 0.672816364803188 -2.35114100916989] [-3.23606797749979 0.0 -2.35114100916989] [-3.16535212800292 -0.672816364803189 -2.35114100916989] [-2.95629520146761 -1.31622742593336 -2.35114100916989] [-2.61803398874989 -1.90211303259031 -2.35114100916989] [-2.16535212800292 -2.40486717237207 -2.35114100916989] [-1.6180339887499 -2.80251707688815 -2.35114100916989] [-1.0 -3.07768353717525 -2.35114100916989] [-0.338261212717715 -3.21834045852367 -2.35114100916989] [0.338261212717719 -3.21834045852367 -2.35114100916989] [1.0 -3.07768353717525 -2.35114100916989] [1.6180339887499 -2.80251707688815 -2.35114100916989] [2.16535212800292 -2.40486717237207 -2.35114100916989] [2.61803398874989 -1.90211303259031 -2.35114100916989] [2.95629520146761 -1.31622742593336 -2.35114100916989] [3.16535212800292 -0.672816364803189 -2.35114100916989] [2.8773592013546 0.0 -2.77863348183599] [2.81448199925435 0.598236616643673 -2.77863348183599] [2.62859842840364 1.17032742248224 -2.77863348183599] [2.327832492817 1.69126930410429 -2.77863348183599] [1.92532910711465 2.13829460152644 -2.77863348183599] [1.4386796006773 2.49186616418599 -2.77863348183599] [0.889152892139699 2.73653121817012 -2.77863348183599] [0.300765935586639 2.86159672658652 -2.77863348183599] [-0.30076593558664 2.86159672658652 -2.77863348183599] [-0.889152892139699 2.73653121817012 -2.77863348183599] [-1.4386796006773 2.49186616418599 -2.77863348183599] [-1.92532910711465 2.13829460152644 -2.77863348183599] [-2.327832492817 1.69126930410429 -2.77863348183599] [-2.62859842840364 1.17032742248224 -2.77863348183599] [-2.81448199925435 0.598236616643673 -2.77863348183599] [-2.8773592013546 0.0 -2.77863348183599] [-2.81448199925435 -0.598236616643675 -2.77863348183599] [-2.62859842840364 -1.17032742248224 -2.77863348183599] [-2.327832492817 -1.69126930410429 -2.77863348183599] [-1.92532910711465 -2.13829460152644 -2.77863348183599] [-1.4386796006773 -2.49186616418599 -2.77863348183599] [-0.889152892139699 -2.73653121817012 -2.77863348183599] [-0.300765935586638 -2.86159672658652 -2.77863348183599] [0.300765935586641 -2.86159672658652 -2.77863348183599] [0.889152892139699 -2.73653121817012 -2.77863348183599] [1.4386796006773 -2.49186616418599 -2.77863348183599] [1.92532910711465 -2.13829460152644 -2.77863348183599] [2.327832492817 -1.69126930410429 -2.77863348183599] [2.62859842840364 -1.17032742248224 -2.77863348183599] [2.81448199925435 -0.598236616643674 -2.77863348183599] [2.46264590130263 0.0 -3.15204301442689] [2.40883117981611 0.512012873225255 -3.15204301442689] [2.24973897691719 1.00164832698021 -3.15204301442689] [1.99232238528164 1.44750694240419 -3.15204301442689] [1.64783174518579 1.83010255853617 -3.15204301442689] [1.23132295065132 2.1327139110537 -3.15204301442689] [0.760999434630323 2.34211543176142 -3.15204301442689] [0.25741659163555 2.4491552693844 -3.15204301442689] [-0.25741659163555 2.4491552693844 -3.15204301442689] [-0.760999434630323 2.34211543176142 -3.15204301442689] [-1.23132295065132 2.13271391105371 -3.15204301442689] [-1.64783174518579 1.83010255853617 -3.15204301442689] [-1.99232238528164 1.44750694240419 -3.15204301442689] [-2.24973897691719 1.00164832698021 -3.15204301442689] [-2.40883117981611 0.512012873225255 -3.15204301442689] [-2.46264590130263 0.0 -3.15204301442689] [-2.40883117981611 -0.512012873225256 -3.15204301442689] [-2.24973897691719 -1.00164832698021 -3.15204301442689] [-1.99232238528164 -1.44750694240419 -3.15204301442689] [-1.64783174518579 -1.83010255853617 -3.15204301442689] [-1.23132295065132 -2.1327139110537 -3.15204301442689] [-0.760999434630323 -2.34211543176142 -3.15204301442689] [-0.257416591635549 -2.4491552693844 -3.15204301442689] [0.257416591635551 -2.4491552693844 -3.15204301442689] [0.760999434630323 -2.34211543176142 -3.15204301442689] [1.23132295065132 -2.1327139110537 -3.15204301442689] [1.64783174518579 -1.83010255853617 -3.15204301442689] [1.99232238528164 -1.44750694240419 -3.15204301442689] [2.24973897691719 -1.00164832698021 -3.15204301442689] [2.40883117981611 -0.512012873225256 -3.15204301442689] [2.0 0.0 -3.46410161513775] [1.95629520146761 0.415823381635519 -3.46410161513775] [1.8270909152852 0.8134732861516 -3.46410161513775] [1.61803398874989 1.17557050458495 -3.46410161513775] [1.33826121271772 1.48628965095479 -3.46410161513775] [1.0 1.73205080756888 -3.46410161513775] [0.618033988749895 1.90211303259031 -3.46410161513775] [0.209056926535307 1.98904379073655 -3.46410161513775] [-0.209056926535307 1.98904379073655 -3.46410161513775] [-0.618033988749895 1.90211303259031 -3.46410161513775] [-0.999999999999999 1.73205080756888 -3.46410161513775] [-1.33826121271772 1.48628965095479 -3.46410161513775] [-1.61803398874989 1.17557050458495 -3.46410161513775] [-1.8270909152852 0.813473286151601 -3.46410161513775] [-1.95629520146761 0.415823381635519 -3.46410161513775] [-2.0 0.0 -3.46410161513775] [-1.95629520146761 -0.415823381635519 -3.46410161513775] [-1.8270909152852 -0.813473286151601 -3.46410161513775] [-1.61803398874989 -1.17557050458495 -3.46410161513775] [-1.33826121271772 -1.48628965095479 -3.46410161513775] [-1.0 -1.73205080756888 -3.46410161513775] [-0.618033988749895 -1.90211303259031 -3.46410161513775] [-0.209056926535306 -1.98904379073655 -3.46410161513775] [0.209056926535308 -1.98904379073655 -3.46410161513775] [0.618033988749895 -1.90211303259031 -3.46410161513775] [1.0 -1.73205080756888 -3.46410161513775] [1.33826121271772 -1.48628965095479 -3.46410161513775] [1.61803398874989 -1.17557050458495 -3.46410161513775] [1.8270909152852 -0.8134732861516 -3.46410161513775] [1.95629520146761 -0.415823381635519 -3.46410161513775] [1.49842637366365 0.0 -3.70873541826715] [1.46568216227535 0.311540360914333 -3.70873541826715] [1.3688806072723 0.609464913120196 -3.70873541826715] [1.21225240111352 0.880752924085582 -3.70873541826715] [1.00264294799366 1.113547805947 -3.70873541826715] [0.749213186831824 1.29767530529331 -3.70873541826715] [0.463039214281692 1.42508816686133 -3.70873541826715] [0.156628206158784 1.49021783720578 -3.70873541826715] [-0.156628206158784 1.49021783720578 -3.70873541826715] [-0.463039214281692 1.42508816686133 -3.70873541826715] [-0.749213186831823 1.29767530529331 -3.70873541826715] [-1.00264294799366 1.113547805947 -3.70873541826715] [-1.21225240111352 0.880752924085583 -3.70873541826715] [-1.3688806072723 0.609464913120197 -3.70873541826715] [-1.46568216227535 0.311540360914333 -3.70873541826715] [-1.49842637366365 0.0 -3.70873541826715] [-1.46568216227535 -0.311540360914333 -3.70873541826715] [-1.3688806072723 -0.609464913120197 -3.70873541826715] [-1.21225240111352 -0.880752924085583 -3.70873541826715] [-1.00264294799366 -1.113547805947 -3.70873541826715] [-0.749213186831824 -1.29767530529331 -3.70873541826715] [-0.463039214281692 -1.42508816686133 -3.70873541826715] [-0.156628206158783 -1.49021783720578 -3.70873541826715] [0.156628206158785 -1.49021783720578 -3.70873541826715] [0.463039214281692 -1.42508816686133 -3.70873541826715] [0.749213186831824 -1.29767530529331 -3.70873541826715] [1.00264294799366 -1.113547805947 -3.70873541826715] [1.21225240111352 -0.880752924085582 -3.70873541826715] [1.3688806072723 -0.609464913120196 -3.70873541826715] [1.46568216227535 -0.311540360914333 -3.70873541826715] [0.967687582398669 0.0 -3.88118290510399] [0.946541286983155 0.201193561439857 -3.88118290510399] [0.884026595317454 0.393593998810972 -3.88118290510399] [0.782875699406131 0.568792489760495 -3.88118290510399] [0.647509378776359 0.719132019538301 -3.88118290510399] [0.483843791199335 0.838042029283995 -3.88118290510399] [0.299031908206796 0.920325580978158 -3.88118290510399] [0.101150895911324 0.962386488571467 -3.88118290510399] [-0.101150895911324 0.962386488571467 -3.88118290510399] [-0.299031908206796 0.920325580978158 -3.88118290510399] [-0.483843791199334 0.838042029283995 -3.88118290510399] [-0.647509378776359 0.719132019538301 -3.88118290510399] [-0.782875699406131 0.568792489760495 -3.88118290510399] [-0.884026595317454 0.393593998810972 -3.88118290510399] [-0.946541286983155 0.201193561439857 -3.88118290510399] [-0.967687582398669 0.0 -3.88118290510399] [-0.946541286983155 -0.201193561439858 -3.88118290510399] [-0.884026595317454 -0.393593998810972 -3.88118290510399] [-0.782875699406131 -0.568792489760495 -3.88118290510399] [-0.647509378776359 -0.719132019538301 -3.88118290510399] [-0.483843791199335 -0.838042029283995 -3.88118290510399] [-0.299031908206796 -0.920325580978158 -3.88118290510399] [-0.101150895911323 -0.962386488571467 -3.88118290510399] [0.101150895911324 -0.962386488571467 -3.88118290510399] [0.299031908206796 -0.920325580978158 -3.88118290510399] [0.483843791199335 -0.838042029283995 -3.88118290510399] [0.647509378776359 -0.719132019538301 -3.88118290510399] [0.782875699406131 -0.568792489760495 -3.88118290510399] [0.884026595317454 -0.393593998810971 -3.88118290510399] [0.946541286983155 -0.201193561439857 -3.88118290510399] [0.418113853070615 0.0 -3.97808758147309] [0.408977062214589 8.69307581462398E-2 -3.97808758147309] [0.381966011250106 0.17006222502143 -3.97808758147309] [0.338261212717717 0.245761156614089 -3.97808758147309] [0.279772776032179 0.310719146369843 -3.97808758147309] [0.209056926535308 0.362097218433347 -3.97808758147309] [0.12920428618241 0.397649904516083 -3.97808758147309] [4.37047985323888E-2 0.41582338163552 -3.97808758147309] [-4.37047985323889E-2 0.41582338163552 -3.97808758147309] [-0.12920428618241 0.397649904516083 -3.97808758147309] [-0.209056926535307 0.362097218433347 -3.97808758147309] [-0.279772776032179 0.310719146369843 -3.97808758147309] [-0.338261212717717 0.245761156614089 -3.97808758147309] [-0.381966011250106 0.17006222502143 -3.97808758147309] [-0.408977062214589 8.69307581462397E-2 -3.97808758147309] [-0.418113853070615 0.0 -3.97808758147309] [-0.408977062214589 -8.69307581462399E-2 -3.97808758147309] [-0.381966011250106 -0.17006222502143 -3.97808758147309] [-0.338261212717717 -0.245761156614089 -3.97808758147309] [-0.279772776032179 -0.310719146369843 -3.97808758147309] [-0.209056926535308 -0.362097218433347 -3.97808758147309] [-0.12920428618241 -0.397649904516083 -3.97808758147309] [-4.37047985323887E-2 -0.41582338163552 -3.97808758147309] [4.37047985323891E-2 -0.41582338163552 -3.97808758147309] [0.12920428618241 -0.397649904516083 -3.97808758147309] [0.209056926535308 -0.362097218433347 -3.97808758147309] [0.279772776032179 -0.310719146369843 -3.97808758147309] [0.338261212717717 -0.245761156614089 -3.97808758147309] [0.381966011250106 -0.17006222502143 -3.97808758147309] [0.408977062214589 -8.69307581462399E-2 -3.97808758147309]]
    []
    [] [[[1 31 32 2] false [2 1] 0] [[2 32 33 3] false [2 1] 0] [[3 33 34 4] false [2 1] 0] [[4 34 35 5] false [2 1] 0] [[5 35 36 6] false [2 1] 0] [[6 36 37 7] false [2 1] 0] [[7 37 38 8] false [2 1] 0] [[8 38 39 9] false [2 1] 0] [[9 39 40 10] false [2 1] 0] [[10 40 41 11] false [2 1] 0] [[11 41 42 12] false [2 1] 0] [[12 42 43 13] false [2 1] 0] [[13 43 44 14] false [2 1] 0] [[14 44 45 15] false [2 1] 0] [[15 45 46 16] false [2 1] 0] [[16 46 47 17] false [2 1] 0] [[17 47 48 18] false [2 1] 0] [[18 48 49 19] false [2 1] 0] [[19 49 50 20] false [2 1] 0] [[20 50 51 21] false [2 1] 0] [[21 51 52 22] false [2 1] 0] [[22 52 53 23] false [2 1] 0] [[23 53 54 24] false [2 1] 0] [[24 54 55 25] false [2 1] 0] [[25 55 56 26] false [2 1] 0] [[26 56 57 27] false [2 1] 0] [[27 57 58 28] false [2 1] 0] [[28 58 59 29] false [2 1] 0] [[29 59 60 30] false [2 1] 0] [[30 60 31 1] false [2 1] 0] [[31 61 62 32] false [2 2] 0] [[32 62 63 33] false [2 2] 0] [[33 63 64 34] false [2 2] 0] [[34 64 65 35] false [2 2] 0] [[35 65 66 36] false [2 2] 0] [[36 66 67 37] false [2 2] 0] [[37 67 68 38] false [2 2] 0] [[38 68 69 39] false [2 2] 0] [[39 69 70 40] false [2 2] 0] [[40 70 71 41] false [2 2] 0] [[41 71 72 42] false [2 2] 0] [[42 72 73 43] false [2 2] 0] [[43 73 74 44] false [2 2] 0] [[44 74 75 45] false [2 2] 0] [[45 75 76 46] false [2 2] 0] [[46 76 77 47] false [2 2] 0] [[47 77 78 48] false [2 2] 0] [[48 78 79 49] false [2 2] 0] [[49 79 80 50] false [2 2] 0] [[50 80 81 51] false [2 2] 0] [[51 81 82 52] false [2 2] 0] [[52 82 83 53] false [2 2] 0] [[53 83 84 54] false [2 2] 0] [[54 84 85 55] false [2 2] 0] [[55 85 86 56] false [2 2] 0] [[56 86 87 57] false [2 2] 0] [[57 87 88 58] false [2 2] 0] [[58 88 89 59] false [2 2] 0] [[59 89 90 60] false [2 2] 0] [[60 90 61 31] false [2 2] 0] [[61 91 92 62] false [2 3] 0] [[62 92 93 63] false [2 3] 0] [[63 93 94 64] false [2 3] 0] [[64 94 95 65] false [2 3] 0] [[65 95 96 66] false [2 3] 0] [[66 96 97 67] false [2 3] 0] [[67 97 98 68] false [2 3] 0] [[68 98 99 69] false [2 3] 0] [[69 99 100 70] false [2 3] 0] [[70 100 101 71] false [2 3] 0] [[71 101 102 72] false [2 3] 0] [[72 102 103 73] false [2 3] 0] [[73 103 104 74] false [2 3] 0] [[74 104 105 75] false [2 3] 0] [[75 105 106 76] false [2 3] 0] [[76 106 107 77] false [2 3] 0] [[77 107 108 78] false [2 3] 0] [[78 108 109 79] false [2 3] 0] [[79 109 110 80] false [2 3] 0] [[80 110 111 81] false [2 3] 0] [[81 111 112 82] false [2 3] 0] [[82 112 113 83] false [2 3] 0] [[83 113 114 84] false [2 3] 0] [[84 114 115 85] false [2 3] 0] [[85 115 116 86] false [2 3] 0] [[86 116 117 87] false [2 3] 0] [[87 117 118 88] false [2 3] 0] [[88 118 119 89] false [2 3] 0] [[89 119 120 90] false [2 3] 0] [[90 120 91 61] false [2 3] 0] [[91 121 122 92] false [2 4] 0] [[92 122 123 93] false [2 4] 0] [[93 123 124 94] false [2 4] 0] [[94 124 125 95] false [2 4] 0] [[95 125 126 96] false [2 4] 0] [[96 126 127 97] false [2 4] 0] [[97 127 128 98] false [2 4] 0] [[98 128 129 99] false [2 4] 0] [[99 129 130 100] false [2 4] 0] [[100 130 131 101] false [2 4] 0] [[101 131 132 102] false [2 4] 0] [[102 132 133 103] false [2 4] 0] [[103 133 134 104] false [2 4] 0] [[104 134 135 105] false [2 4] 0] [[105 135 136 106] false [2 4] 0] [[106 136 137 107] false [2 4] 0] [[107 137 138 108] false [2 4] 0] [[108 138 139 109] false [2 4] 0] [[109 139 140 110] false [2 4] 0] [[110 140 141 111] false [2 4] 0] [[111 141 142 112] false [2 4] 0] [[112 142 143 113] false [2 4] 0] [[113 143 144 114] false [2 4] 0] [[114 144 145 115] false [2 4] 0] [[115 145 146 116] false [2 4] 0] [[116 146 147 117] false [2 4] 0] [[117 147 148 118] false [2 4] 0] [[118 148 149 119] false [2 4] 0] [[119 149 150 120] false [2 4] 0] [[120 150 121 91] false [2 4] 0] [[121 151 152 122] false [2 5] 0] [[122 152 153 123] false [2 5] 0] [[123 153 154 124] false [2 5] 0] [[124 154 155 125] false [2 5] 0] [[125 155 156 126] false [2 5] 0] [[126 156 157 127] false [2 5] 0] [[127 157 158 128] false [2 5] 0] [[128 158 159 129] false [2 5] 0] [[129 159 160 130] false [2 5] 0] [[130 160 161 131] false [2 5] 0] [[131 161 162 132] false [2 5] 0] [[132 162 163 133] false [2 5] 0] [[133 163 164 134] false [2 5] 0] [[134 164 165 135] false [2 5] 0] [[135 165 166 136] false [2 5] 0] [[136 166 167 137] false [2 5] 0] [[137 167 168 138] false [2 5] 0] [[138 168 169 139] false [2 5] 0] [[139 169 170 140] false [2 5] 0] [[140 170 171 141] false [2 5] 0] [[141 171 172 142] false [2 5] 0] [[142 172 173 143] false [2 5] 0] [[143 173 174 144] false [2 5] 0] [[144 174 175 145] false [2 5] 0] [[145 175 176 146] false [2 5] 0] [[146 176 177 147] false [2 5] 0] [[147 177 178 148] false [2 5] 0] [[148 178 179 149] false [2 5] 0] [[149 179 180 150] false [2 5] 0] [[150 180 151 121] false [2 5] 0] [[151 181 182 152] false [2 6] 0] [[152 182 183 153] false [2 6] 0] [[153 183 184 154] false [2 6] 0] [[154 184 185 155] false [2 6] 0] [[155 185 186 156] false [2 6] 0] [[156 186 187 157] false [2 6] 0] [[157 187 188 158] false [2 6] 0] [[158 188 189 159] false [2 6] 0] [[159 189 190 160] false [2 6] 0] [[160 190 191 161] false [2 6] 0] [[161 191 192 162] false [2 6] 0] [[162 192 193 163] false [2 6] 0] [[163 193 194 164] false [2 6] 0] [[164 194 195 165] false [2 6] 0] [[165 195 196 166] false [2 6] 0] [[166 196 197 167] false [2 6] 0] [[167 197 198 168] false [2 6] 0] [[168 198 199 169] false [2 6] 0] [[169 199 200 170] false [2 6] 0] [[170 200 201 171] false [2 6] 0] [[171 201 202 172] false [2 6] 0] [[172 202 203 173] false [2 6] 0] [[173 203 204 174] false [2 6] 0] [[174 204 205 175] false [2 6] 0] [[175 205 206 176] false [2 6] 0] [[176 206 207 177] false [2 6] 0] [[177 207 208 178] false [2 6] 0] [[178 208 209 179] false [2 6] 0] [[179 209 210 180] false [2 6] 0] [[180 210 181 151] false [2 6] 0] [[181 211 212 182] false [2 7] 0] [[182 212 213 183] false [2 7] 0] [[183 213 214 184] false [2 7] 0] [[184 214 215 185] false [2 7] 0] [[185 215 216 186] false [2 7] 0] [[186 216 217 187] false [2 7] 0] [[187 217 218 188] false [2 7] 0] [[188 218 219 189] false [2 7] 0] [[189 219 220 190] false [2 7] 0] [[190 220 221 191] false [2 7] 0] [[191 221 222 192] false [2 7] 0] [[192 222 223 193] false [2 7] 0] [[193 223 224 194] false [2 7] 0] [[194 224 225 195] false [2 7] 0] [[195 225 226 196] false [2 7] 0] [[196 226 227 197] false [2 7] 0] [[197 227 228 198] false [2 7] 0] [[198 228 229 199] false [2 7] 0] [[199 229 230 200] false [2 7] 0] [[200 230 231 201] false [2 7] 0] [[201 231 232 202] false [2 7] 0] [[202 232 233 203] false [2 7] 0] [[203 233 234 204] false [2 7] 0] [[204 234 235 205] false [2 7] 0] [[205 235 236 206] false [2 7] 0] [[206 236 237 207] false [2 7] 0] [[207 237 238 208] false [2 7] 0] [[208 238 239 209] false [2 7] 0] [[209 239 240 210] false [2 7] 0] [[210 240 211 181] false [2 7] 0] [[211 241 242 212] false [2 8] 0] [[212 242 243 213] false [2 8] 0] [[213 243 244 214] false [2 8] 0] [[214 244 245 215] false [2 8] 0] [[215 245 246 216] false [2 8] 0] [[216 246 247 217] false [2 8] 0] [[217 247 248 218] false [2 8] 0] [[218 248 249 219] false [2 8] 0] [[219 249 250 220] false [2 8] 0] [[220 250 251 221] false [2 8] 0] [[221 251 252 222] false [2 8] 0] [[222 252 253 223] false [2 8] 0] [[223 253 254 224] false [2 8] 0] [[224 254 255 225] false [2 8] 0] [[225 255 256 226] false [2 8] 0] [[226 256 257 227] false [2 8] 0] [[227 257 258 228] false [2 8] 0] [[228 258 259 229] false [2 8] 0] [[229 259 260 230] false [2 8] 0] [[230 260 261 231] false [2 8] 0] [[231 261 262 232] false [2 8] 0] [[232 262 263 233] false [2 8] 0] [[233 263 264 234] false [2 8] 0] [[234 264 265 235] false [2 8] 0] [[235 265 266 236] false [2 8] 0] [[236 266 267 237] false [2 8] 0] [[237 267 268 238] false [2 8] 0] [[238 268 269 239] false [2 8] 0] [[239 269 270 240] false [2 8] 0] [[240 270 241 211] false [2 8] 0] [[241 271 272 242] false [2 9] 0] [[242 272 273 243] false [2 9] 0] [[243 273 274 244] false [2 9] 0] [[244 274 275 245] false [2 9] 0] [[245 275 276 246] false [2 9] 0] [[246 276 277 247] false [2 9] 0] [[247 277 278 248] false [2 9] 0] [[248 278 279 249] false [2 9] 0] [[249 279 280 250] false [2 9] 0] [[250 280 281 251] false [2 9] 0] [[251 281 282 252] false [2 9] 0] [[252 282 283 253] false [2 9] 0] [[253 283 284 254] false [2 9] 0] [[254 284 285 255] false [2 9] 0] [[255 285 286 256] false [2 9] 0] [[256 286 287 257] false [2 9] 0] [[257 287 288 258] false [2 9] 0] [[258 288 289 259] false [2 9] 0] [[259 289 290 260] false [2 9] 0] [[260 290 291 261] false [2 9] 0] [[261 291 292 262] false [2 9] 0] [[262 292 293 263] false [2 9] 0] [[263 293 294 264] false [2 9] 0] [[264 294 295 265] false [2 9] 0] [[265 295 296 266] false [2 9] 0] [[266 296 297 267] false [2 9] 0] [[267 297 298 268] false [2 9] 0] [[268 298 299 269] false [2 9] 0] [[269 299 300 270] false [2 9] 0] [[270 300 271 241] false [2 9] 0] [[271 301 302 272] false [2 10] 0] [[272 302 303 273] false [2 10] 0] [[273 303 304 274] false [2 10] 0] [[274 304 305 275] false [2 10] 0] [[275 305 306 276] false [2 10] 0] [[276 306 307 277] false [2 10] 0] [[277 307 308 278] false [2 10] 0] [[278 308 309 279] false [2 10] 0] [[279 309 310 280] false [2 10] 0] [[280 310 311 281] false [2 10] 0] [[281 311 312 282] false [2 10] 0] [[282 312 313 283] false [2 10] 0] [[283 313 314 284] false [2 10] 0] [[284 314 315 285] false [2 10] 0] [[285 315 316 286] false [2 10] 0] [[286 316 317 287] false [2 10] 0] [[287 317 318 288] false [2 10] 0] [[288 318 319 289] false [2 10] 0] [[289 319 320 290] false [2 10] 0] [[290 320 321 291] false [2 10] 0] [[291 321 322 292] false [2 10] 0] [[292 322 323 293] false [2 10] 0] [[293 323 324 294] false [2 10] 0] [[294 324 325 295] false [2 10] 0] [[295 325 326 296] false [2 10] 0] [[296 326 327 297] false [2 10] 0] [[297 327 328 298] false [2 10] 0] [[298 328 329 299] false [2 10] 0] [[299 329 330 300] false [2 10] 0] [[300 330 301 271] false [2 10] 0] [[301 331 332 302] false [2 11] 0] [[302 332 333 303] false [2 11] 0] [[303 333 334 304] false [2 11] 0] [[304 334 335 305] false [2 11] 0] [[305 335 336 306] false [2 11] 0] [[306 336 337 307] false [2 11] 0] [[307 337 338 308] false [2 11] 0] [[308 338 339 309] false [2 11] 0] [[309 339 340 310] false [2 11] 0] [[310 340 341 311] false [2 11] 0] [[311 341 342 312] false [2 11] 0] [[312 342 343 313] false [2 11] 0] [[313 343 344 314] false [2 11] 0] [[314 344 345 315] false [2 11] 0] [[315 345 346 316] false [2 11] 0] [[316 346 347 317] false [2 11] 0] [[317 347 348 318] false [2 11] 0] [[318 348 349 319] false [2 11] 0] [[319 349 350 320] false [2 11] 0] [[320 350 351 321] false [2 11] 0] [[321 351 352 322] false [2 11] 0] [[322 352 353 323] false [2 11] 0] [[323 353 354 324] false [2 11] 0] [[324 354 355 325] false [2 11] 0] [[325 355 356 326] false [2 11] 0] [[326 356 357 327] false [2 11] 0] [[327 357 358 328] false [2 11] 0] [[328 358 359 329] false [2 11] 0] [[329 359 360 330] false [2 11] 0] [[330 360 331 301] false [2 11] 0] [[331 361 362 332] false [2 12] 0] [[332 362 363 333] false [2 12] 0] [[333 363 364 334] false [2 12] 0] [[334 364 365 335] false [2 12] 0] [[335 365 366 336] false [2 12] 0] [[336 366 367 337] false [2 12] 0] [[337 367 368 338] false [2 12] 0] [[338 368 369 339] false [2 12] 0] [[339 369 370 340] false [2 12] 0] [[340 370 371 341] false [2 12] 0] [[341 371 372 342] false [2 12] 0] [[342 372 373 343] false [2 12] 0] [[343 373 374 344] false [2 12] 0] [[344 374 375 345] false [2 12] 0] [[345 375 376 346] false [2 12] 0] [[346 376 377 347] false [2 12] 0] [[347 377 378 348] false [2 12] 0] [[348 378 379 349] false [2 12] 0] [[349 379 380 350] false [2 12] 0] [[350 380 381 351] false [2 12] 0] [[351 381 382 352] false [2 12] 0] [[352 382 383 353] false [2 12] 0] [[353 383 384 354] false [2 12] 0] [[354 384 385 355] false [2 12] 0] [[355 385 386 356] false [2 12] 0] [[356 386 387 357] false [2 12] 0] [[357 387 388 358] false [2 12] 0] [[358 388 389 359] false [2 12] 0] [[359 389 390 360] false [2 12] 0] [[360 390 361 331] false [2 12] 0] [[361 391 392 362] false [2 13] 0] [[362 392 393 363] false [2 13] 0] [[363 393 394 364] false [2 13] 0] [[364 394 395 365] false [2 13] 0] [[365 395 396 366] false [2 13] 0] [[366 396 397 367] false [2 13] 0] [[367 397 398 368] false [2 13] 0] [[368 398 399 369] false [2 13] 0] [[369 399 400 370] false [2 13] 0] [[370 400 401 371] false [2 13] 0] [[371 401 402 372] false [2 13] 0] [[372 402 403 373] false [2 13] 0] [[373 403 404 374] false [2 13] 0] [[374 404 405 375] false [2 13] 0] [[375 405 406 376] false [2 13] 0] [[376 406 407 377] false [2 13] 0] [[377 407 408 378] false [2 13] 0] [[378 408 409 379] false [2 13] 0] [[379 409 410 380] false [2 13] 0] [[380 410 411 381] false [2 13] 0] [[381 411 412 382] false [2 13] 0] [[382 412 413 383] false [2 13] 0] [[383 413 414 384] false [2 13] 0] [[384 414 415 385] false [2 13] 0] [[385 415 416 386] false [2 13] 0] [[386 416 417 387] false [2 13] 0] [[387 417 418 388] false [2 13] 0] [[388 418 419 389] false [2 13] 0] [[389 419 420 390] false [2 13] 0] [[390 420 391 361] false [2 13] 0] [[391 421 422 392] false [2 14] 0] [[392 422 423 393] false [2 14] 0] [[393 423 424 394] false [2 14] 0] [[394 424 425 395] false [2 14] 0] [[395 425 426 396] false [2 14] 0] [[396 426 427 397] false [2 14] 0] [[397 427 428 398] false [2 14] 0] [[398 428 429 399] false [2 14] 0] [[399 429 430 400] false [2 14] 0] [[400 430 431 401] false [2 14] 0] [[401 431 432 402] false [2 14] 0] [[402 432 433 403] false [2 14] 0] [[403 433 434 404] false [2 14] 0] [[404 434 435 405] false [2 14] 0] [[405 435 436 406] false [2 14] 0] [[406 436 437 407] false [2 14] 0] [[407 437 438 408] false [2 14] 0] [[408 438 439 409] false [2 14] 0] [[409 439 440 410] false [2 14] 0] [[410 440 441 411] false [2 14] 0] [[411 441 442 412] false [2 14] 0] [[412 442 443 413] false [2 14] 0] [[413 443 444 414] false [2 14] 0] [[414 444 445 415] false [2 14] 0] [[415 445 446 416] false [2 14] 0] [[416 446 447 417] false [2 14] 0] [[417 447 448 418] false [2 14] 0] [[418 448 449 419] false [2 14] 0] [[419 449 450 420] false [2 14] 0] [[420 450 421 391] false [2 14] 0] [[421 451 452 422] false [2 15] 0] [[422 452 453 423] false [2 15] 0] [[423 453 454 424] false [2 15] 0] [[424 454 455 425] false [2 15] 0] [[425 455 456 426] false [2 15] 0] [[426 456 457 427] false [2 15] 0] [[427 457 458 428] false [2 15] 0] [[428 458 459 429] false [2 15] 0] [[429 459 460 430] false [2 15] 0] [[430 460 461 431] false [2 15] 0] [[431 461 462 432] false [2 15] 0] [[432 462 463 433] false [2 15] 0] [[433 463 464 434] false [2 15] 0] [[434 464 465 435] false [2 15] 0] [[435 465 466 436] false [2 15] 0] [[436 466 467 437] false [2 15] 0] [[437 467 468 438] false [2 15] 0] [[438 468 469 439] false [2 15] 0] [[439 469 470 440] false [2 15] 0] [[440 470 471 441] false [2 15] 0] [[441 471 472 442] false [2 15] 0] [[442 472 473 443] false [2 15] 0] [[443 473 474 444] false [2 15] 0] [[444 474 475 445] false [2 15] 0] [[445 475 476 446] false [2 15] 0] [[446 476 477 447] false [2 15] 0] [[447 477 478 448] false [2 15] 0] [[448 478 479 449] false [2 15] 0] [[449 479 480 450] false [2 15] 0] [[450 480 451 421] false [2 15] 0] [[451 481 482 452] false [2 16] 0] [[452 482 483 453] false [2 16] 0] [[453 483 484 454] false [2 16] 0] [[454 484 485 455] false [2 16] 0] [[455 485 486 456] false [2 16] 0] [[456 486 487 457] false [2 16] 0] [[457 487 488 458] false [2 16] 0] [[458 488 489 459] false [2 16] 0] [[459 489 490 460] false [2 16] 0] [[460 490 491 461] false [2 16] 0] [[461 491 492 462] false [2 16] 0] [[462 492 493 463] false [2 16] 0] [[463 493 494 464] false [2 16] 0] [[464 494 495 465] false [2 16] 0] [[465 495 496 466] false [2 16] 0] [[466 496 497 467] false [2 16] 0] [[467 497 498 468] false [2 16] 0] [[468 498 499 469] false [2 16] 0] [[469 499 500 470] false [2 16] 0] [[470 500 501 471] false [2 16] 0] [[471 501 502 472] false [2 16] 0] [[472 502 503 473] false [2 16] 0] [[473 503 504 474] false [2 16] 0] [[474 504 505 475] false [2 16] 0] [[475 505 506 476] false [2 16] 0] [[476 506 507 477] false [2 16] 0] [[477 507 508 478] false [2 16] 0] [[478 508 509 479] false [2 16] 0] [[479 509 510 480] false [2 16] 0] [[480 510 481 451] false [2 16] 0] [[481 511 512 482] false [2 17] 0] [[482 512 513 483] false [2 17] 0] [[483 513 514 484] false [2 17] 0] [[484 514 515 485] false [2 17] 0] [[485 515 516 486] false [2 17] 0] [[486 516 517 487] false [2 17] 0] [[487 517 518 488] false [2 17] 0] [[488 518 519 489] false [2 17] 0] [[489 519 520 490] false [2 17] 0] [[490 520 521 491] false [2 17] 0] [[491 521 522 492] false [2 17] 0] [[492 522 523 493] false [2 17] 0] [[493 523 524 494] false [2 17] 0] [[494 524 525 495] false [2 17] 0] [[495 525 526 496] false [2 17] 0] [[496 526 527 497] false [2 17] 0] [[497 527 528 498] false [2 17] 0] [[498 528 529 499] false [2 17] 0] [[499 529 530 500] false [2 17] 0] [[500 530 531 501] false [2 17] 0] [[501 531 532 502] false [2 17] 0] [[502 532 533 503] false [2 17] 0] [[503 533 534 504] false [2 17] 0] [[504 534 535 505] false [2 17] 0] [[505 535 536 506] false [2 17] 0] [[506 536 537 507] false [2 17] 0] [[507 537 538 508] false [2 17] 0] [[508 538 539 509] false [2 17] 0] [[509 539 540 510] false [2 17] 0] [[510 540 511 481] false [2 17] 0] [[511 541 542 512] false [2 18] 0] [[512 542 543 513] false [2 18] 0] [[513 543 544 514] false [2 18] 0] [[514 544 545 515] false [2 18] 0] [[515 545 546 516] false [2 18] 0] [[516 546 547 517] false [2 18] 0] [[517 547 548 518] false [2 18] 0] [[518 548 549 519] false [2 18] 0] [[519 549 550 520] false [2 18] 0] [[520 550 551 521] false [2 18] 0] [[521 551 552 522] false [2 18] 0] [[522 552 553 523] false [2 18] 0] [[523 553 554 524] false [2 18] 0] [[524 554 555 525] false [2 18] 0] [[525 555 556 526] false [2 18] 0] [[526 556 557 527] false [2 18] 0] [[527 557 558 528] false [2 18] 0] [[528 558 559 529] false [2 18] 0] [[529 559 560 530] false [2 18] 0] [[530 560 561 531] false [2 18] 0] [[531 561 562 532] false [2 18] 0] [[532 562 563 533] false [2 18] 0] [[533 563 564 534] false [2 18] 0] [[534 564 565 535] false [2 18] 0] [[535 565 566 536] false [2 18] 0] [[536 566 567 537] false [2 18] 0] [[537 567 568 538] false [2 18] 0] [[538 568 569 539] false [2 18] 0] [[539 569 570 540] false [2 18] 0] [[540 570 541 511] false [2 18] 0] [[541 571 572 542] false [2 19] 0] [[542 572 573 543] false [2 19] 0] [[543 573 574 544] false [2 19] 0] [[544 574 575 545] false [2 19] 0] [[545 575 576 546] false [2 19] 0] [[546 576 577 547] false [2 19] 0] [[547 577 578 548] false [2 19] 0] [[548 578 579 549] false [2 19] 0] [[549 579 580 550] false [2 19] 0] [[550 580 581 551] false [2 19] 0] [[551 581 582 552] false [2 19] 0] [[552 582 583 553] false [2 19] 0] [[553 583 584 554] false [2 19] 0] [[554 584 585 555] false [2 19] 0] [[555 585 586 556] false [2 19] 0] [[556 586 587 557] false [2 19] 0] [[557 587 588 558] false [2 19] 0] [[558 588 589 559] false [2 19] 0] [[559 589 590 560] false [2 19] 0] [[560 590 591 561] false [2 19] 0] [[561 591 592 562] false [2 19] 0] [[562 592 593 563] false [2 19] 0] [[563 593 594 564] false [2 19] 0] [[564 594 595 565] false [2 19] 0] [[565 595 596 566] false [2 19] 0] [[566 596 597 567] false [2 19] 0] [[567 597 598 568] false [2 19] 0] [[568 598 599 569] false [2 19] 0] [[569 599 600 570] false [2 19] 0] [[570 600 571 541] false [2 19] 0] [[571 601 602 572] false [2 20] 0] [[572 602 603 573] false [2 20] 0] [[573 603 604 574] false [2 20] 0] [[574 604 605 575] false [2 20] 0] [[575 605 606 576] false [2 20] 0] [[576 606 607 577] false [2 20] 0] [[577 607 608 578] false [2 20] 0] [[578 608 609 579] false [2 20] 0] [[579 609 610 580] false [2 20] 0] [[580 610 611 581] false [2 20] 0] [[581 611 612 582] false [2 20] 0] [[582 612 613 583] false [2 20] 0] [[583 613 614 584] false [2 20] 0] [[584 614 615 585] false [2 20] 0] [[585 615 616 586] false [2 20] 0] [[586 616 617 587] false [2 20] 0] [[587 617 618 588] false [2 20] 0] [[588 618 619 589] false [2 20] 0] [[589 619 620 590] false [2 20] 0] [[590 620 621 591] false [2 20] 0] [[591 621 622 592] false [2 20] 0] [[592 622 623 593] false [2 20] 0] [[593 623 624 594] false [2 20] 0] [[594 624 625 595] false [2 20] 0] [[595 625 626 596] false [2 20] 0] [[596 626 627 597] false [2 20] 0] [[597 627 628 598] false [2 20] 0] [[598 628 629 599] false [2 20] 0] [[599 629 630 600] false [2 20] 0] [[600 630 601 571] false [2 20] 0] [[601 631 632 602] false [2 21] 0] [[602 632 633 603] false [2 21] 0] [[603 633 634 604] false [2 21] 0] [[604 634 635 605] false [2 21] 0] [[605 635 636 606] false [2 21] 0] [[606 636 637 607] false [2 21] 0] [[607 637 638 608] false [2 21] 0] [[608 638 639 609] false [2 21] 0] [[609 639 640 610] false [2 21] 0] [[610 640 641 611] false [2 21] 0] [[611 641 642 612] false [2 21] 0] [[612 642 643 613] false [2 21] 0] [[613 643 644 614] false [2 21] 0] [[614 644 645 615] false [2 21] 0] [[615 645 646 616] false [2 21] 0] [[616 646 647 617] false [2 21] 0] [[617 647 648 618] false [2 21] 0] [[618 648 649 619] false [2 21] 0] [[619 649 650 620] false [2 21] 0] [[620 650 651 621] false [2 21] 0] [[621 651 652 622] false [2 21] 0] [[622 652 653 623] false [2 21] 0] [[623 653 654 624] false [2 21] 0] [[624 654 655 625] false [2 21] 0] [[625 655 656 626] false [2 21] 0] [[626 656 657 627] false [2 21] 0] [[627 657 658 628] false [2 21] 0] [[628 658 659 629] false [2 21] 0] [[629 659 660 630] false [2 21] 0] [[630 660 631 601] false [2 21] 0]] [138.28.139 152.30.155 165.35.173 178.41.189 189.49.203 199.58.214 208.69.221 216.81.225 221.93.227 225.107.227 227.121.227 227.134.227 225.148.227 221.162.227 216.174.225 208.186.221 199.197.214 189.206.203 178.214.189 165.220.173 152.225.155 138.227.139]
]
]
camera: [0 0 10 0 0 400 400] ; x y z a1 a2 xsc ysc

; Split an image
fn-split-image: func [x [integer!] y [integer!] img-file [file! URL!]] [
    context [
        img: load img-file
        sz: img/size
        sz/x: sz/x / x
        sz/y: sz/y / y
        off: 0x0
        dx: sz * 1x0
        dy: sz * 0x1
        c: 0
        for i 0 (y - 1) 1 [
            for j 0 (x - 1) 1 [
                off: (j * dx) + (i * dy)
                c: c + 1
                poke objs/1/5/:c/3 1 1
                poke objs/1/5/:c/3 2 copy/part skip img off sz
            ]
        ]
    ]
]
; draw order for all faces
draw-o: []
; draw block
draw-bl: []
; Auto rotate
rot: true
; Perform a rotation on a 3D Object
fn-rot: func [obj [block!]][
    context [
        c1: cosine obj/1/4
        c2: cosine obj/1/5
        c3: cosine obj/1/6
        s1: sine obj/1/4
        s2: sine obj/1/5
        s3: sine obj/1/6
        clear obj/3
        clear obj/4
        obj/3: copy/deep obj/2
        ; calculate the perspective of the points after the roation & translation
        foreach point obj/3 [
            ; Roation about z axis
            x1: (point/1 * c1) - (point/2 * s1)
            y1: (point/1 * s1) + (point/2 * c1)
            z1: point/3
            ; Roation about y axis
            x2: (x1 * c2) + (point/3 * s2)
            y2: y1
            z2: - (x1 * s2) + (point/3 * c2)
           
            x3: x2 + obj/1/1
            y3: (y2 * c3) - (z2 * s3) + obj/1/2
            z3: (y2 * s3) + (z2 * c3) + obj/1/3
            poke point 1 (x3 + camera/1)
            poke point 2 (y3 + camera/2)
            poke point 3 (z3 + camera/3)
            x: point/1 / point/3 * camera/6
            y: point/2 / point/3 * camera/7
            append obj/4 to pair! reduce[(x + 250) (y + 250)]
        ]
        foreach f obj/5 [
            p1: f/1/1
            p2: f/1/2
            p3: f/1/3
            d1: reduce [(obj/3/:p2/1 - obj/3/:p1/1) (obj/3/:p2/2 - obj/3/:p1/2) (obj/3/:p2/3 - obj/3/:p1/3)]
            d2: reduce [(obj/3/:p3/1 - obj/3/:p1/1) (obj/3/:p3/2 - obj/3/:p1/2) (obj/3/:p3/3 - obj/3/:p1/3)]
            poke f 4 (-2 * obj/3/:p1/3 - d1/3 - d2/3)
            n1: (d1/2 * d2/3) - (d1/3 * d2/2)
            n2: - (d1/1 * d2/3) + (d1/3 * d2/1)
            n3: (d1/1 * d2/2) - (d1/2 * d2/1)
            v: 0 > ((obj/3/:p1/1 * n1) + (obj/3/:p1/2 * n2) + (obj/3/:p1/3 * n3))
            poke f 2 v
        ]
    ]
]
; Create a draw block and show the face
fn-show: func [][
    context [
    ; setup the faces to be shown
    pts: []
    clear draw-o
    foreach o objs [
        foreach f o/5 [
            if f/2 = true [
                append draw-o f/4
                switch f/3/1 [
                    1 [append/only draw-o reduce ['image f/3/2 pick o/4 f/1/1 pick o/4 f/1/4 pick o/4 f/1/3 pick o/4 f/1/2]]
                    2 [
                        pts: copy reduce ['fill-pen (pick o/6 f/3/2) 'polygon]
                        foreach coord f/1 [append pts pick o/4 coord]
                        append/only draw-o pts
                    ]
                ]
            ]
        ]
    ]
    ; sort the faces
    sort/skip draw-o 2
   
    ; reset the draw-block
    clear draw-bl
    append draw-bl reduce ['anti-alias 'off 'pen black]
   
    ; create the draw block
    forskip draw-o 2 [append draw-bl draw-o/2]
   
    ; show the face
    show f-box
    f-angles/text: rejoin [to string! objs/1/1/4 " / " to string! objs/1/1/5   " / " to string! objs/1/1/6]
    show f-angles
    ]
]
; Instructions
;alert "Select an Image to map onto a sphere"

; Initial Rotation
foreach o objs [fn-rot o]
fn-req-image: func []
[
; Get Picture
pic: request-file/title/path/keep "Select an Image" "OK" %.
if pic = none [alert "No image selected" quit]
fn-split-image 30 21 rejoin [pic/1 pic/2]
]
;fn-req-image

fn-split-image 30 21   http://www.evl.uic.edu/pape/data/Earth/512/BigEarth.jpg
lv-lay: layout [
    across
    backdrop 10.120.10
    banner "Map Picture ontp a 3D Sphere"
    return
    vh2 "Rotate - left, right, up, down, page-up, page-down"
    return
    vh2 "Zoom - ^"+^" ^"-^"" font-fixed
    return
    f-box: box 500x500 effect [draw draw-bl] rate 60   edge [size: 2x2 color: gray effect: 'bevel]
    feel [
        engage: func [face action event][
            if all[action = 'time   rot][
                objs/1/1/4: objs/1/1/4 + 3 if objs/1/1/4 > 360 [objs/1/1/4: objs/1/1/4 - 360]
                objs/1/1/5: objs/1/1/5 + 0 if objs/1/1/5 > 360 [objs/1/1/5: objs/1/1/5 - 360]
                objs/1/1/6: objs/1/1/6 + 0 if objs/1/1/6 > 360 [objs/1/1/6: objs/1/1/6 - 360]
                fn-rot objs/1
                fn-show
            ]
        ]
    ]
    return
    sensor 0x0 keycode [up down left right page-up page-down #"+" #"-"] [
        switch value [
            up [objs/1/1/4: objs/1/1/4 + 5 fn-rot objs/1 fn-show if objs/1/1/4 > 360 [objs/1/1/4: objs/1/1/4 - 360]]
            down [objs/1/1/4: objs/1/1/4 - 5 fn-rot objs/1 fn-show if objs/1/1/4 < 0 [objs/1/1/4: objs/1/1/4 + 360]]
            left [objs/1/1/5: objs/1/1/5 + 5 fn-rot objs/1 fn-show if objs/1/1/5 > 360 [objs/1/1/5: objs/1/1/5 - 360]]
            right [objs/1/1/5: objs/1/1/5 - 5 fn-rot objs/1 fn-show if objs/1/1/5 < 0 [objs/1/1/5: objs/1/1/5 + 360]]
            page-up [objs/1/1/6: objs/1/1/6 + 5 fn-rot objs/1 fn-show if objs/1/1/6 > 360 [objs/1/1/6: objs/1/1/6 - 360]]
            page-down [objs/1/1/6: objs/1/1/6 - 5 fn-rot objs/1 fn-show if objs/1/1/6 < 0 [objs/1/1/6: objs/1/1/6 + 360]]
            #"+" [if camera/6 < 2000 [camera/6: camera/6 + 10 camera/7: camera/7 + 10 fn-rot objs/1 fn-show]]
            #"-" [if camera/6 > 200 [camera/6: camera/6 - 10 camera/7: camera/7 - 10 fn-rot objs/1 fn-show]]
        ]        
    ]
    btn "New Image" [fn-req-image]
    btn "Auto-Rotate" [either rot [rot: false][rot: true]]
    f-angles: field 400
]
fn-show
view lv-lay
quit