-
Notifications
You must be signed in to change notification settings - Fork 0
/
RedFNP.vex
1 lines (1 loc) · 22 KB
/
RedFNP.vex
1
./___ThIsisATemPoRaRyFiLE___.json 000644 000765 000024 0000050026 13452270660 020202 0 ustar 00Kevin 000000 000000 13452270660 13452270660 {"title":"RedFNP","description":"Use this template for all competition code.","version":"0.0.1","icon":"USER000x.bmp","competition":true,"files":{"robot-config.h":"dXNpbmcgbmFtZXNwYWNlIHZleDsKdmV4OjpicmFpbiBCcmFpbjsKdmV4Ojptb3RvciBMZWZ0QmFja0RyaXZlICh2ZXg6OlBPUlQxLCB2ZXg6OmdlYXJTZXR0aW5nOjpyYXRpbzE4XzEsZmFsc2UpOwp2ZXg6Om1vdG9yIExlZnRGcm9udERyaXZlICh2ZXg6OlBPUlQyLCB2ZXg6OmdlYXJTZXR0aW5nOjpyYXRpbzE4XzEsdHJ1ZSk7CnZleDo6bW90b3IgRmx5ICh2ZXg6OlBPUlQzLCB2ZXg6OmdlYXJTZXR0aW5nOjpyYXRpbzE4XzEsZmFsc2UpOwp2ZXg6Om1vdG9yIEludGFrZSAodmV4OjpQT1JUNSwgdmV4OjpnZWFyU2V0dGluZzo6cmF0aW8xOF8xLGZhbHNlKTsKdmV4Ojptb3RvciBGZWVkZXIgKHZleDo6UE9SVDYsIHZleDo6Z2VhclNldHRpbmc6OnJhdGlvMThfMSxmYWxzZSk7CnZleDo6bW90b3IgUmlnaHRGcm9udERyaXZlICh2ZXg6OlBPUlQ3LCB2ZXg6OmdlYXJTZXR0aW5nOjpyYXRpbzE4XzEsZmFsc2UpOwp2ZXg6Om1vdG9yIFJpZ2h0QmFja0RyaXZlICh2ZXg6OlBPUlQ4LCB2ZXg6OmdlYXJTZXR0aW5nOjpyYXRpbzE4XzEsdHJ1ZSk7CnZleDo6bW90b3IgU2VjcmV0V2VhcG9uICh2ZXg6OlBPUlQ5LCB2ZXg6OmdlYXJTZXR0aW5nOjpyYXRpbzE4XzEsdHJ1ZSk7CnZleDo6Y29udHJvbGxlciBDb250cm9sbGVyMTsKdmV4Ojpjb21wZXRpdGlvbiBDb21wZXRpdGlvbjs=","main.cpp":"LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwovKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGV4ICBLbGF0c2t5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi8qICAgICAgICBSYW5uZXkgU2Nob29sICAtICAzODE1TSAgLSAgU3BpdGZpcmUgKEJsaXR6IEFsbGlhbmNlKSAgICAgICAgKi8KLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgojaW5jbHVkZSA8cm9ib3QtY29uZmlnLmg+CnVzaW5nIG5hbWVzcGFjZSB2ZXg7CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdmV4OjpsaW5lIGxpbmUxKEJyYWluLlRocmVlV2lyZVBvcnQuQSk7CnZleDo6bGluZSBsaW5lMihCcmFpbi5UaHJlZVdpcmVQb3J0LkIpOwoKdm9pZCBwcmVfYXV0b24oIHZvaWQgKSB7ICAKICAgIAp9CgoKdm9pZCBmb3J3YXJkKGludCB4LGludCB2KXsKICAgIFJpZ2h0RnJvbnREcml2ZS5zdGFydFJvdGF0ZUZvcih4LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBSaWdodEJhY2tEcml2ZS5zdGFydFJvdGF0ZUZvcih4LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBMZWZ0RnJvbnREcml2ZS5zdGFydFJvdGF0ZUZvcih4LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBMZWZ0QmFja0RyaXZlLnN0YXJ0Um90YXRlRm9yKHgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKfQp2b2lkIGJhY2t3YXJkKGludCB4LGludCB2KXsKICAgIFJpZ2h0RnJvbnREcml2ZS5zdGFydFJvdGF0ZUZvcigteCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgUmlnaHRCYWNrRHJpdmUuc3RhcnRSb3RhdGVGb3IoLXgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIExlZnRGcm9udERyaXZlLnN0YXJ0Um90YXRlRm9yKC14LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBMZWZ0QmFja0RyaXZlLnN0YXJ0Um90YXRlRm9yKC14LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7Cn0Kdm9pZCB0dXJuUmlnaHQoaW50IHgsaW50IHYpewogICAgUmlnaHRGcm9udERyaXZlLnN0YXJ0Um90YXRlRm9yKC14LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBSaWdodEJhY2tEcml2ZS5zdGFydFJvdGF0ZUZvcigteCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgTGVmdEZyb250RHJpdmUuc3RhcnRSb3RhdGVGb3IoeCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgTGVmdEJhY2tEcml2ZS5zdGFydFJvdGF0ZUZvcih4LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7Cn0Kdm9pZCB0dXJuTGVmdChpbnQgeCxpbnQgdil7CiAgICBSaWdodEZyb250RHJpdmUuc3RhcnRSb3RhdGVGb3IoeCxyb3RhdGlvblVuaXRzOjpkZWcsNjUsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIFJpZ2h0QmFja0RyaXZlLnN0YXJ0Um90YXRlRm9yKHgscm90YXRpb25Vbml0czo6ZGVnLDY1LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBMZWZ0RnJvbnREcml2ZS5zdGFydFJvdGF0ZUZvcigteCxyb3RhdGlvblVuaXRzOjpkZWcsNjUsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIExlZnRCYWNrRHJpdmUuc3RhcnRSb3RhdGVGb3IoLXgscm90YXRpb25Vbml0czo6ZGVnLDY1LHZlbG9jaXR5VW5pdHM6OnBjdCk7Cn0KCgoKCgoKdm9pZCBhdXRvbm9tb3VzKCB2b2lkICkgewogICAKICAgIEludGFrZS5zZXRNYXhUb3JxdWUoMTAwLHBlcmNlbnRVbml0czo6cGN0KTsgCiAgICAKICAgIEZseS5zcGluKGRpcmVjdGlvblR5cGU6OnJldiwxMDAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIEludGFrZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwxMDAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIAogICAgLyoKICAgIGZvcndhcmQoMTAwMCw2NSk7CiAgICB0YXNrOjpzbGVlcCgyMjAwKTsKICAgIGJhY2t3YXJkKDEwMzAsNjUpOwogICAgdGFzazo6c2xlZXAoMTcwMCk7CiAgICB0dXJuTGVmdCgzMDUsNTUpOwogICAgdGFzazo6c2xlZXAoMTEwMCk7CiAgICBGZWVkZXIucm90YXRlRm9yKDIwMCxyb3RhdGlvblVuaXRzOjpkZWcsMTAwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBmb3J3YXJkKDk1MCw5MCk7CiAgICB0YXNrOjpzbGVlcCg2MDApOwogICAgRmVlZGVyLnJvdGF0ZUZvcig1MDAscm90YXRpb25Vbml0czo6ZGVnLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgUmlnaHRGcm9udERyaXZlLnN0YXJ0Um90YXRlRm9yKDExMCxyb3RhdGlvblVuaXRzOjpkZWcsOTAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIFJpZ2h0QmFja0RyaXZlLnN0YXJ0Um90YXRlRm9yKDExMCxyb3RhdGlvblVuaXRzOjpkZWcsOTAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIHRhc2s6OnNsZWVwKDUwMCk7CiAgICBmb3J3YXJkKDEwMCw5MCk7CiAgICBTZWNyZXRXZWFwb24ucm90YXRlRm9yKDg1MCxyb3RhdGlvblVuaXRzOjpkZWcsMTAwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBSaWdodEZyb250RHJpdmUuc3RhcnRSb3RhdGVGb3IoLTEyMCxyb3RhdGlvblVuaXRzOjpkZWcsOTAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIFJpZ2h0QmFja0RyaXZlLnN0YXJ0Um90YXRlRm9yKC0xMjAscm90YXRpb25Vbml0czo6ZGVnLDkwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICB0YXNrOjpzbGVlcCg2MDApOwogICAgKi8KICAgIAogICAgCiAgICBmb3J3YXJkKDEwMDAsNjUpOwogICAgdGFzazo6c2xlZXAoMjIwMCk7CiAgICBiYWNrd2FyZCgxMDE1LDY1KTsKICAgIHRhc2s6OnNsZWVwKDE1MDApOwogICAgdHVybkxlZnQoMzAyLDU1KTsKICAgIHRhc2s6OnNsZWVwKDExMDApOwogICAgRmVlZGVyLnJvdGF0ZUZvcigyMDAscm90YXRpb25Vbml0czo6ZGVnLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgZm9yd2FyZCg5NTAsOTApOwogICAgdGFzazo6c2xlZXAoNjAwKTsKICAgIEZlZWRlci5yb3RhdGVGb3IoNTAwLHJvdGF0aW9uVW5pdHM6OmRlZywxMDAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIFJpZ2h0RnJvbnREcml2ZS5zdGFydFJvdGF0ZUZvcigxNDAscm90YXRpb25Vbml0czo6ZGVnLDkwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBSaWdodEJhY2tEcml2ZS5zdGFydFJvdGF0ZUZvcigxNDAscm90YXRpb25Vbml0czo6ZGVnLDkwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICB0YXNrOjpzbGVlcCg1MDApOwogICAgZm9yd2FyZCgxMDAsOTApOwogICAgU2VjcmV0V2VhcG9uLnJvdGF0ZUZvcig4NTAscm90YXRpb25Vbml0czo6ZGVnLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgUmlnaHRGcm9udERyaXZlLnN0YXJ0Um90YXRlRm9yKC0xNDAscm90YXRpb25Vbml0czo6ZGVnLDkwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBSaWdodEJhY2tEcml2ZS5zdGFydFJvdGF0ZUZvcigtMTQwLHJvdGF0aW9uVW5pdHM6OmRlZyw5MCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgdGFzazo6c2xlZXAoNjAwKTsKICAgIAogICAgU2VjcmV0V2VhcG9uLnN0YXJ0Um90YXRlRm9yKC04NTAscm90YXRpb25Vbml0czo6ZGVnLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgYmFja3dhcmQoOTAwLDYwKTsKICAgIHRhc2s6OnNsZWVwKDE0MDApOwogICAgdHVyblJpZ2h0KDE4MCw2NSk7CiAgICB0YXNrOjpzbGVlcCgxNDAwKTsKICAgIEludGFrZS5zcGluKGRpcmVjdGlvblR5cGU6OnJldiwxMDAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIGZvcndhcmQoNTgwLDY1KTsKICAgIEZlZWRlci5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwxMDAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgCn0KCgovL1VTRVJDT05UUk9MCnZvaWQgdXNlcmNvbnRyb2woIHZvaWQgKSB7CiAgLy8gVXNlciBjb250cm9sIGNvZGUgaGVyZSwgaW5zaWRlIHRoZSBsb29wCiAgd2hpbGUgKDEpewogICAgUmlnaHRGcm9udERyaXZlLnNldE1heFRvcnF1ZSgxMDAscGVyY2VudFVuaXRzOjpwY3QpOwogICAgUmlnaHRCYWNrRHJpdmUuc2V0TWF4VG9ycXVlKDEwMCxwZXJjZW50VW5pdHM6OnBjdCk7IAogICAgTGVmdEZyb250RHJpdmUuc2V0TWF4VG9ycXVlKDEwMCxwZXJjZW50VW5pdHM6OnBjdCk7IAogICAgTGVmdEJhY2tEcml2ZS5zZXRNYXhUb3JxdWUoMTAwLHBlcmNlbnRVbml0czo6cGN0KTsKICAgIEZseS5zZXRNYXhUb3JxdWUoMTAwLHBlcmNlbnRVbml0czo6cGN0KTsgCiAgICAgIFNlY3JldFdlYXBvbi5zZXRNYXhUb3JxdWUoMTAwLHBlcmNlbnRVbml0czo6cGN0KTsgCiAgICAgCiAgICAvL0NoYW5nZSBTZW5zaXRpdml0eSBvZiBDb250cm9sbGVyLCBBeGlzMQogICAgaW50IHZhbHVlMT0wOwogICAgaW50IHZhbHVlMz0wOwogICAgICAKICAgIGlmKENvbnRyb2xsZXIxLkF4aXMxLnZhbHVlKCk+MCYmQ29udHJvbGxlcjEuQXhpczEudmFsdWUoKTw9MTAwKXsKICAgICAgICB2YWx1ZTE9Q29udHJvbGxlcjEuQXhpczEudmFsdWUoKS8yOwogICAgfQogICAgZWxzZSBpZihDb250cm9sbGVyMS5BeGlzMS52YWx1ZSgpPjEwMCl7CiAgICAgICAgdmFsdWUxPXBvdyhDb250cm9sbGVyMS5BeGlzMS52YWx1ZSgpLDIpLzIwMDsKICAgIH0KICAgIGlmKENvbnRyb2xsZXIxLkF4aXMxLnZhbHVlKCk8MCYmQ29udHJvbGxlcjEuQXhpczEudmFsdWUoKT49LTEwMCl7CiAgICAgICAgdmFsdWUxPUNvbnRyb2xsZXIxLkF4aXMxLnZhbHVlKCkvMjsKICAgIH0KICAgIGVsc2UgaWYoQ29udHJvbGxlcjEuQXhpczEudmFsdWUoKTwtMTAwKXsKICAgICAgICB2YWx1ZTE9LXBvdyhDb250cm9sbGVyMS5BeGlzMS52YWx1ZSgpLDIpLzIwMDsKICAgIH0gCiAgICAgIAogICAgLy9WYWx1ZSAzIFVuY2hhbmdlZAogICAgdmFsdWUzPShDb250cm9sbGVyMS5BeGlzMy52YWx1ZSgpKTsgCiAgICBMZWZ0RnJvbnREcml2ZS5zcGluKHZleDo6ZGlyZWN0aW9uVHlwZTo6ZndkLCh2YWx1ZTErdmFsdWUzKSx2ZXg6OnZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBMZWZ0QmFja0RyaXZlLnNwaW4odmV4OjpkaXJlY3Rpb25UeXBlOjpmd2QsKHZhbHVlMSt2YWx1ZTMpLHZleDo6dmVsb2NpdHlVbml0czo6cGN0KTsgCiAgICBSaWdodEZyb250RHJpdmUuc3Bpbih2ZXg6OmRpcmVjdGlvblR5cGU6OnJldiwodmFsdWUxLXZhbHVlMyksdmV4Ojp2ZWxvY2l0eVVuaXRzOjpwY3QpOyAKICAgIFJpZ2h0QmFja0RyaXZlLnNwaW4odmV4OjpkaXJlY3Rpb25UeXBlOjpyZXYsKHZhbHVlMS12YWx1ZTMpLHZleDo6dmVsb2NpdHlVbml0czo6cGN0KTsKICAgIAogICAgCiAgICBpZihDb250cm9sbGVyMS5CdXR0b25SMi5wcmVzc2luZygpKQogICAgewogICAgICAgIEludGFrZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwyMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgIH0KICAgIGVsc2UgaWYoQ29udHJvbGxlcjEuQnV0dG9uUjEucHJlc3NpbmcoKSkKICAgIHsKICAgICAgICBJbnRha2Uuc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIEludGFrZS5zdG9wKGJyYWtlVHlwZTo6Y29hc3QpOwogICAgICAgCiAgICB9CiAgICAgIAogICAgCiAgICAvKgogICAgaWYoQ29udHJvbGxlcjEuQnV0dG9uTDEucHJlc3NpbmcoKSkKICAgIHsKICAgICAgICBJbnRha2Uuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgRmVlZGVyLnJvdGF0ZUZvcigyMDAscm90YXRpb25Vbml0czo6ZGVnLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgIFNlY3JldFdlYXBvbi5zcGluKGRpcmVjdGlvblR5cGU6OnJldiwyMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICB0YXNrOjpzbGVlcCgxMDApOwogICAgICAgIEZlZWRlci5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwyMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICB0YXNrOjpzbGVlcCgzMDApOwogICAgICAgIFNlY3JldFdlYXBvbi5zdG9wKGJyYWtlVHlwZTo6aG9sZCk7CiAgICAgICAgSW50YWtlLnN0b3AoYnJha2VUeXBlOjpjb2FzdCk7CiAgICAgICAgRmVlZGVyLnN0b3AoYnJha2VUeXBlOjpjb2FzdCk7CiAgICAgICAgdGFzazo6c2xlZXAoMzAwKTsKICAgICAgICBTZWNyZXRXZWFwb24ucm90YXRlRm9yKC0xNSxyb3RhdGlvblVuaXRzOjpkZWcsMTAwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICB9ICAKICAgICovCiAgICAgIAogICAgICBpZihDb250cm9sbGVyMS5CdXR0b25MMS5wcmVzc2luZygpKQogICAgewogICAgICAgIEZlZWRlci5zdGFydFJvdGF0ZUZvcigyMDAscm90YXRpb25Vbml0czo6ZGVnLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgIEludGFrZS5zdGFydFJvdGF0ZUZvcigxMDAscm90YXRpb25Vbml0czo6ZGVnLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgICAgdGFzazo6c2xlZXAoMjAwKTsKICAgICAgICAgIFJpZ2h0RnJvbnREcml2ZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwyMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICAgIFJpZ2h0QmFja0RyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgICAgTGVmdEZyb250RHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICBMZWZ0QmFja0RyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgICAgU2VjcmV0V2VhcG9uLnNwaW4oZGlyZWN0aW9uVHlwZTo6cmV2LDEwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgIHRhc2s6OnNsZWVwKDEwMCk7CiAgICAgICAgRmVlZGVyLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgIEludGFrZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwyMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICBTZWNyZXRXZWFwb24uc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMTAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgdGFzazo6c2xlZXAoMzAwKTsgCiAgICB9IAogICAgICAKICAgLy9GZWVkZXIgIAogICAgaWYoQ29udHJvbGxlcjEuQnV0dG9uTDIucHJlc3NpbmcoKSkKICAgIHsKICAgICAgICBJbnRha2Uuc3RhcnRSb3RhdGVGb3IoMjAwMCxyb3RhdGlvblVuaXRzOjpkZWcsMTAwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICAgICAgRmVlZGVyLnJvdGF0ZUZvcigyMDAscm90YXRpb25Vbml0czo6ZGVnLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwoKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgICBGZWVkZXIuc3RvcChicmFrZVR5cGU6OmNvYXN0KTsKICAgIH0KICAgICAgIGlmKENvbnRyb2xsZXIxLkJ1dHRvbkIucHJlc3NpbmcoKSkKICAgIHsKICAgICAgICBGZWVkZXIuc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICB9CiAgICAvL1NXICAKICAgIGlmKENvbnRyb2xsZXIxLkJ1dHRvbkEucHJlc3NpbmcoKSkKICAgIHsKICAgICAgICBTZWNyZXRXZWFwb24uc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMTcwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICB9CiAgICBlbHNlIGlmKENvbnRyb2xsZXIxLkJ1dHRvblkucHJlc3NpbmcoKSkKICAgIHsKICAgICAgICBTZWNyZXRXZWFwb24uc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMTcwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICBTZWNyZXRXZWFwb24uc3RvcChicmFrZVR5cGU6OmNvYXN0KTsKICAgIH0gIAogICAgICAKICAgIAogICAgLy9GbHkKICAgIGlmKENvbnRyb2xsZXIxLkJ1dHRvblVwLnByZXNzaW5nKCkpCiAgICB7CiAgICAgICAgRmx5LnNwaW4oZGlyZWN0aW9uVHlwZTo6cmV2LDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgfQogICAgZWxzZSBpZihDb250cm9sbGVyMS5CdXR0b25Eb3duLnByZXNzaW5nKCkpCiAgICB7IAogICAgICAgIEZseS5zdG9wKGJyYWtlVHlwZTo6Y29hc3QpOyAgIAogICAgfQogICAgZWxzZQogICAgewogICAgICAgIAogICAgfQogICAgCiAgIAogICAgICAKICAgICAgCiAgICB2ZXg6OnRhc2s6OnNsZWVwKDIwKTsKICB9Cn0KICAgCgoKCgoKLy9TVEFSVCBQSUQKaW50IHNnbihkb3VibGUgdmFsKQp7CiAgICByZXR1cm4gdmFsID4gMCA/IDEgOiAtMTsKfQp2b2lkIHR1cm5Ubyhkb3VibGUgZGVncmVlcywgZG91YmxlIHNwZWVkID0gNjApCnsKICAgIGRlZ3JlZXMgKj0gOTYuMC85MC4wOwogICAgZG91YmxlIFAgPSAwLCBrcCA9Ljc7CiAgICBkb3VibGUgSSA9IDAsIGtpID0gMC4wMDQ7CiAgICBkb3VibGUgRCA9IDAsIGtkID0gMC4wMzsKICAgIGRvdWJsZSBlcnJvciA9IDEwMDsgCiAgICBkb3VibGUgbGFzdEVycm9yID0gMTAwOwogICAgZG91YmxlIG1vdG9yUG93ZXIgPSAwOwogICAgaW50IGlUaHJlc2ggPSAyNTsKICAgIHdoaWxlKHRydWUpCiAgICB7CiAgICAgICAgbGFzdEVycm9yID0gZXJyb3I7CiAgICAgICAgLy9lcnJvciA9IGRlZ3JlZXMgLSBHeXJvMS52YWx1ZShyb3RhdGlvblVuaXRzOjpkZWcpOwoKICAgICAgICBpZiAoYWJzKGVycm9yKSA+IDE4MCkKICAgICAgICAgICAgZXJyb3IgPSAgc2duKGVycm9yKSAqICgzNjAgLSBhYnMoZXJyb3IpKTsKCiAgICAgICAgUCA9IGVycm9yICoga3A7CiAgICAgICAgRCA9IGtkICogKGVycm9yIC0gbGFzdEVycm9yKTsKCiAgICAgICAgaWYgKGFicyhlcnJvcikgPCBpVGhyZXNoKQogICAgICAgICAgICBJICs9IGVycm9yICoga2k7CgogICAgICAgIGlmIChhYnMoSSkgPiAxNSkKICAgICAgICAgIEkgPSAxNSAqIHNnbihlcnJvcik7CgogICAgICAgIG1vdG9yUG93ZXIgPSBQICsgSSArIEQ7CgogICAgICAgIGlmKGFicyhlcnJvcikgPD0gMC4xICYmIGFicyhsYXN0RXJyb3IpIDw9IC4xKSBicmVhazsgLy8gQnJlYWsgc3RhdGVtZW50CgogICAgICAgIGlmKGFicyhtb3RvclBvd2VyKSA+IGFicyhzcGVlZCkpCiAgICAgICAgICAgIG1vdG9yUG93ZXIgPSBzcGVlZCAqIHNnbihtb3RvclBvd2VyKTsKCiAgICAgICAgTGVmdEJhY2tEcml2ZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwgbW90b3JQb3dlciwgdmVsb2NpdHlVbml0czo6cGN0KTsKICAgICAgICBSaWdodEJhY2tEcml2ZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwgLW1vdG9yUG93ZXIsIHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICAgICAgUmlnaHRGcm9udERyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLCAtbW90b3JQb3dlciwgdmVsb2NpdHlVbml0czo6cGN0KTsKICAgICAgICBMZWZ0RnJvbnREcml2ZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwgbW90b3JQb3dlciwgdmVsb2NpdHlVbml0czo6cGN0KTsKCiAgICAgICAgdGFzazo6c2xlZXAoMTApOwogICAgfQogICAgTGVmdEJhY2tEcml2ZS5zdG9wKGJyYWtlVHlwZTo6YnJha2UpOwogICAgUmlnaHRCYWNrRHJpdmUuc3RvcChicmFrZVR5cGU6OmJyYWtlKTsKICAgIFJpZ2h0RnJvbnREcml2ZS5zdG9wKGJyYWtlVHlwZTo6YnJha2UpOwogICAgTGVmdEZyb250RHJpdmUuc3RvcChicmFrZVR5cGU6OmJyYWtlKTsKICAgIHRhc2s6OnNsZWVwKDUwKTsgLy8gU2xlZXAgaGVyZSBzbyB3ZSBkbyBub3QgaGF2ZSB0byBpbiB0aGUgYXV0b25vbW91cyBmdW5jdGlvbgp9Cgpkb3VibGUgc3RibENvbnN0ID0gLjc7Cgpkb3VibGUgcmFtcFVwKGRvdWJsZSBkZWx0YVYsIGludCBjeWNsZXMsIGludCB0aW1lU2xpY2UsIGRvdWJsZSBhbmdsZSA9IDApCnsKICAgIGRvdWJsZSBjdXJyVmVsID0gUmlnaHRGcm9udERyaXZlLnZlbG9jaXR5KHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBSaWdodEZyb250RHJpdmUucmVzZXRSb3RhdGlvbigpOwogICAgCiAgICAvLyBHeXJvIFN0YWJpbGl6YXRpb24gdmFyaWFibGVzCiAgICBkb3VibGUgbGVmdEFkanVzdFB3ciA9IDA7CiAgICBkb3VibGUgaW5pdCA9IGFuZ2xlOwogICAgCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGN5Y2xlczsgaSsrKQogICAgewogICAgICAgIGN1cnJWZWwgKz0gZGVsdGFWL2N5Y2xlczsKICAgIAogICAgICAgIC8vbGVmdEFkanVzdFB3ciA9IHN0YmxDb25zdCAqIChHeXJvMS52YWx1ZShyb3RhdGlvblVuaXRzOjpkZWcpIC0gaW5pdCk7IC8vIFRyYWNraW5nIGRpZmZlcmVuY2UgaW4gZ3lybyB2YWx1ZQoKICAgICAgICAvLyBTZXR0aW5nIG1vdG9yIHBvd2VycwogICAgICAgIExlZnRCYWNrRHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsIGN1cnJWZWwgLSBsZWZ0QWRqdXN0UHdyLCB2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgIFJpZ2h0QmFja0RyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLCBjdXJyVmVsLCB2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgIFJpZ2h0RnJvbnREcml2ZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwgY3VyclZlbCwgdmVsb2NpdHlVbml0czo6cGN0KTsKICAgICAgICBMZWZ0RnJvbnREcml2ZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwgY3VyclZlbCAtIGxlZnRBZGp1c3RQd3IsIHZlbG9jaXR5VW5pdHM6OnBjdCk7CgogICAgICAgIHRhc2s6OnNsZWVwKHRpbWVTbGljZSk7CiAgICB9CgogICAgcmV0dXJuIFJpZ2h0RnJvbnREcml2ZS5yb3RhdGlvbihyb3RhdGlvblVuaXRzOjpyZXYpOwp9Cgp2b2lkIGRyaXZlKGRvdWJsZSBpbmNoZXMsIGRvdWJsZSBzcGVlZCwgaW50IGN5Y2xlcyA9IDE1LCBpbnQgdGltZVNsaWNlID0gNTAsIGRvdWJsZSBoZWFkaW5nID0gLTEyMSwgYm9vbCB0dXJuID0gdHJ1ZSkKewogICAgLy8gQ29udmVydGluZyBpbmNoZXMgdG8gbW90b3Igcm90YXRpb25zCiAgICBkb3VibGUgaW5pdCA9IDA7CiAgICAvL2lmKGhlYWRpbmcgIT0gLTEyMSkgaW5pdCA9IGhlYWRpbmc7CiAgICBkb3VibGUgcm90cyA9IGluY2hlcyAvICg0ICogMy4xNDE1KTsKICAgIHJvdHMgLT0gcmFtcFVwKHNwZWVkLCBjeWNsZXMsIHRpbWVTbGljZSwgaW5pdCk7IC8vIFN1YnRyYWN0aW5nIHJhbXBpbmcgZGlzdGFuY2UgZnJvbSB0b3RhbAoKICAgIC8vIFBJRCBWYXJpYWJsZXMKICAgIGRvdWJsZSBQID0gMCwga3AgPSAxNTA7IC8vNzUKICAgIGRvdWJsZSBJID0gMCwga2kgPSAuOTU7CiAgICBkb3VibGUgRCA9IDAsIGtkID0gMjUwOyAvLzIzMAogICAgZG91YmxlIGVycm9yID0gMCwgbEVycm9yID0gMDsKICAgIGRvdWJsZSBpVGhyZXNoID0gLjU7CiAgICBkb3VibGUgbW90b3JQb3dlciA9IDA7CgogICAgLy8gR3lybyBTdGFiaWxpemF0aW9uIHZhcmlhYmxlcwogICAgZG91YmxlIGxlZnRBZGp1c3RQd3IgPSAwOwoKICAgIC8vIFJlc2V0IHJvdGF0aW9ucyBiZWZvcmUgUElEIGxvb3AKICAgIFJpZ2h0RnJvbnREcml2ZS5yZXNldFJvdGF0aW9uKCk7CgogICAgLy8gUmVzZXQgQnJhaW4gVGltZXIgQmVmb3JlIFBJRCBMb29wCiAgICBCcmFpbi5yZXNldFRpbWVyKCk7CiAgICAvL2ludCB0aGVvcmV0aWNhbFRpbWUgPSBhYnMocm90cyAvIChzcGVlZCAqIDIpIC8gNjApOwoKICAgIC8vIFBJRCBMb29wCiAgICB3aGlsZSAoYWJzKFJpZ2h0RnJvbnREcml2ZS5yb3RhdGlvbihyb3RhdGlvblVuaXRzOjpyZXYpKSA8IGFicyhyb3RzKS8qICYmIEJyYWluLnRpbWVyKHRpbWVVbml0czo6bXNlYykgPCB0aGVvcmV0aWNhbFRpbWUgKyAxMDAwKi8pCiAgICB7CiAgICAgICAgLy8gU2V0dGluZyBQSUQgVmFyaWFibGVzCiAgICAgICAgZXJyb3IgPSByb3RzIC0gKFJpZ2h0RnJvbnREcml2ZS5yb3RhdGlvbihyb3RhdGlvblVuaXRzOjpyZXYpKTsKICAgICAgICBQID0gZXJyb3IgKiBrcDsKICAgICAgICBEID0gKGVycm9yIC0gbEVycm9yKSAqIGtkOwoKICAgICAgICBpZiAoYWJzKGVycm9yKSA8IGlUaHJlc2gpCiAgICAgICAgICAgIEkgKz0gZXJyb3IgKiBraTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIEkgPSAwOwoKICAgICAgICBtb3RvclBvd2VyID0gYWJzKFApICsgYWJzKEkpIC0gYWJzKEQpOyAvLyBNYW51YWxseSBzZXR0aW5nIG1vdG9yIHBvd2VyCgogICAgICAgIGlmIChhYnMobW90b3JQb3dlcikgPiBhYnMoc3BlZWQpKSAvLyBMaW1pdGluZyBtb3RvciBwb3dlciB0byB0b3Agc3BlZWQKICAgICAgICAgICAgbW90b3JQb3dlciA9IGFicyhzcGVlZCk7CgogICAgICAgIGlmKHNwZWVkIDwgMCkgLy8gSW4gY2FzZSBvZiBnb2luZyBiYWNrd2FyZHMKICAgICAgICAgICAgbW90b3JQb3dlciAqPSAtMTsKCiAgICAgICAgLy9sZWZ0QWRqdXN0UHdyID0gc3RibENvbnN0ICogKEd5cm8xLnZhbHVlKHJvdGF0aW9uVW5pdHM6OmRlZykgLSBpbml0KTsgLy8gVHJhY2tpbmcgZGlmZmVyZW5jZSBpbiBneXJvIHZhbHVlCgogICAgICAgIC8vIFNldHRpbmcgbW90b3IgcG93ZXJzCiAgICAgICAgTGVmdEJhY2tEcml2ZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwgbW90b3JQb3dlciAtIGxlZnRBZGp1c3RQd3IsIHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICAgICAgUmlnaHRCYWNrRHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsIG1vdG9yUG93ZXIsIHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICAgICAgUmlnaHRGcm9udERyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLCBtb3RvclBvd2VyLCB2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgIExlZnRGcm9udERyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLCBtb3RvclBvd2VyIC0gbGVmdEFkanVzdFB3ciwgdmVsb2NpdHlVbml0czo6cGN0KTsKCiAgICAgICAgdGFzazo6c2xlZXAoNTApOwogICAgICAgIGxFcnJvciA9IGVycm9yOwogICAgfQoKICAgIC8vIFN0b3BwaW5nIG1vdG9ycyBhZnRlciBsb29wIGVuZHMKICAgIExlZnRCYWNrRHJpdmUuc3RvcChicmFrZVR5cGU6OmJyYWtlKTsKICAgIFJpZ2h0QmFja0RyaXZlLnN0b3AoYnJha2VUeXBlOjpicmFrZSk7CiAgICBSaWdodEZyb250RHJpdmUuc3RvcChicmFrZVR5cGU6OmJyYWtlKTsKICAgIExlZnRGcm9udERyaXZlLnN0b3AoYnJha2VUeXBlOjpicmFrZSk7CiAgICAvKmlmKHR1cm4pCiAgICAgICAgdHVyblRvKGluaXQpOwogICAgICAgICovCiAgICAvLyBTbGVlcCBoZXJlIHNvIHdlIGRvIG5vdCBoYXZlIHRvIGluIHRoZSBhdXRvbm9tb3VzIGZ1bmN0aW9uCiAgICBpZiAoYWJzKGluY2hlcykgPj0gMTYpCiAgICAgICAgdGFzazo6c2xlZXAoMTAwKTsKICAgIGVsc2UKICAgICAgICB0YXNrOjpzbGVlcCg1MCk7Cn0KLy9FTkQgUElECgoKCgoKaW50IG1haW4oKSB7CiAgICBwcmVfYXV0b24oKTsKICAgIENvbXBldGl0aW9uLmF1dG9ub21vdXMoIGF1dG9ub21vdXMgKTsKICAgIENvbXBldGl0aW9uLmRyaXZlcmNvbnRyb2woIHVzZXJjb250cm9sICk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgd2hpbGUoMSkgewogICAgICB2ZXg6OnRhc2s6OnNsZWVwKDEwMCk7Ly9TbGVlcCB0aGUgdGFzayBmb3IgYSBzaG9ydCBhbW91bnQgb2YgdGltZSB0byBwcmV2ZW50IHdhc3RlZCByZXNvdXJjZXMuCiAgICB9ICAgIAogICAgICAgCn0="},"device":{"slot":2,"type":"vexV5"},"language":{"name":"vc++"},"components":[{"name":"RightFrontDrive","class":"vex::motor","port":"7","left":251,"top":318,"type":"motor","data":{"gears":200,"reversed":false}},{"name":"RightBackDrive","class":"vex::motor","port":"8","left":251,"top":486,"type":"motor","data":{"gears":200,"reversed":true}},{"name":"LeftFrontDrive","class":"vex::motor","port":"2","left":64,"top":476,"type":"motor","data":{"gears":200,"reversed":true}},{"name":"Controller1","class":"vex::controller","left":463,"top":192,"type":"controller"},{"name":"Fly","class":"vex::motor","port":"3","left":368,"top":0,"type":"motor","data":{"gears":200,"reversed":false}},{"name":"Feeder","class":"vex::motor","port":"6","left":553,"top":0,"type":"motor","data":{"gears":200,"reversed":false}},{"name":"Intake","class":"vex::motor","port":"5","left":642,"top":467,"type":"motor","data":{"gears":200,"reversed":false}},{"name":"LeftBackDrive","class":"vex::motor","port":"1","left":62,"top":311,"type":"motor","data":{"gears":200,"reversed":false}},{"name":"SecretWeapon","class":"vex::motor","port":"9","left":663,"top":124,"type":"motor","data":{"gears":200,"reversed":true}}]}