-
Notifications
You must be signed in to change notification settings - Fork 0
/
RedFP.vex
1 lines (1 loc) · 21 KB
/
RedFP.vex
1
./___ThIsisATemPoRaRyFiLE___.json 000666 000000 000000 0000046301 13456110470 017146 0 ustar 00 000000 000000 13456110470 13456110470 {"title":"RedFP","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+CiNpbmNsdWRlIDxzdGRsaWIuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdmV4OjpsaW5lIGxpbmUxKEJyYWluLlRocmVlV2lyZVBvcnQuQSk7CnZleDo6bGluZSBsaW5lMihCcmFpbi5UaHJlZVdpcmVQb3J0LkIpOwoKCgp2b2lkIHByZV9hdXRvbiggdm9pZCApIHsgIAogICAgCn0KCgp2b2lkIGZvcndhcmQoaW50IHgsaW50IHYpewogICAgUmlnaHRGcm9udERyaXZlLnN0YXJ0Um90YXRlRm9yKHgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIFJpZ2h0QmFja0RyaXZlLnN0YXJ0Um90YXRlRm9yKHgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIExlZnRGcm9udERyaXZlLnN0YXJ0Um90YXRlRm9yKHgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIExlZnRCYWNrRHJpdmUuc3RhcnRSb3RhdGVGb3IoeCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwp9CnZvaWQgYmFja3dhcmQoaW50IHgsaW50IHYpewogICAgUmlnaHRGcm9udERyaXZlLnN0YXJ0Um90YXRlRm9yKC14LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBSaWdodEJhY2tEcml2ZS5zdGFydFJvdGF0ZUZvcigteCxyb3RhdGlvblVuaXRzOjpkZWcsdix2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgTGVmdEZyb250RHJpdmUuc3RhcnRSb3RhdGVGb3IoLXgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIExlZnRCYWNrRHJpdmUuc3RhcnRSb3RhdGVGb3IoLXgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKfQp2b2lkIHR1cm5SaWdodChpbnQgeCxpbnQgdil7CiAgICBSaWdodEZyb250RHJpdmUuc3RhcnRSb3RhdGVGb3IoLXgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIFJpZ2h0QmFja0RyaXZlLnN0YXJ0Um90YXRlRm9yKC14LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBMZWZ0RnJvbnREcml2ZS5zdGFydFJvdGF0ZUZvcih4LHJvdGF0aW9uVW5pdHM6OmRlZyx2LHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBMZWZ0QmFja0RyaXZlLnN0YXJ0Um90YXRlRm9yKHgscm90YXRpb25Vbml0czo6ZGVnLHYsdmVsb2NpdHlVbml0czo6cGN0KTsKfQp2b2lkIHR1cm5MZWZ0KGludCB4LGludCB2KXsKICAgIFJpZ2h0RnJvbnREcml2ZS5zdGFydFJvdGF0ZUZvcih4LHJvdGF0aW9uVW5pdHM6OmRlZyw2NSx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgUmlnaHRCYWNrRHJpdmUuc3RhcnRSb3RhdGVGb3IoeCxyb3RhdGlvblVuaXRzOjpkZWcsNjUsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIExlZnRGcm9udERyaXZlLnN0YXJ0Um90YXRlRm9yKC14LHJvdGF0aW9uVW5pdHM6OmRlZyw2NSx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgTGVmdEJhY2tEcml2ZS5zdGFydFJvdGF0ZUZvcigteCxyb3RhdGlvblVuaXRzOjpkZWcsNjUsdmVsb2NpdHlVbml0czo6cGN0KTsKfQoKdm9pZCBhdXRvbm9tb3VzKCB2b2lkICkgewogICAgUmlnaHRGcm9udERyaXZlLnNldE1heFRvcnF1ZSgxMDAscGVyY2VudFVuaXRzOjpwY3QpOwogICAgUmlnaHRCYWNrRHJpdmUuc2V0TWF4VG9ycXVlKDEwMCxwZXJjZW50VW5pdHM6OnBjdCk7IAogICAgTGVmdEZyb250RHJpdmUuc2V0TWF4VG9ycXVlKDEwMCxwZXJjZW50VW5pdHM6OnBjdCk7IAogICAgTGVmdEJhY2tEcml2ZS5zZXRNYXhUb3JxdWUoMTAwLHBlcmNlbnRVbml0czo6cGN0KTsKICAgIEludGFrZS5zZXRNYXhUb3JxdWUoMTAwLHBlcmNlbnRVbml0czo6cGN0KTsgCiAgICBGbHkuc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMTAwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBJbnRha2Uuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMTAwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBmb3J3YXJkKDEwMDAsNjUpOwogICAgdGFzazo6c2xlZXAoMjIwMCk7CiAgICBiYWNrd2FyZCgxMDMwLDY1KTsKICAgIHRhc2s6OnNsZWVwKDE3MDApOwogICAgdHVybkxlZnQoMzA1LDU1KTsKICAgIHRhc2s6OnNsZWVwKDExMDApOwogICAgRmVlZGVyLnJvdGF0ZUZvcigyMDAscm90YXRpb25Vbml0czo6ZGVnLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgZm9yd2FyZCg5NTAsOTApOwogICAgdGFzazo6c2xlZXAoNjAwKTsKICAgIEZlZWRlci5yb3RhdGVGb3IoNTAwLHJvdGF0aW9uVW5pdHM6OmRlZywxMDAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIFJpZ2h0RnJvbnREcml2ZS5zdGFydFJvdGF0ZUZvcigxMTAscm90YXRpb25Vbml0czo6ZGVnLDkwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBSaWdodEJhY2tEcml2ZS5zdGFydFJvdGF0ZUZvcigxMTAscm90YXRpb25Vbml0czo6ZGVnLDkwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICB0YXNrOjpzbGVlcCg1MDApOwogICAgZm9yd2FyZCgxMDAsOTApOwogICAgU2VjcmV0V2VhcG9uLnJvdGF0ZUZvcig4NTAscm90YXRpb25Vbml0czo6ZGVnLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgUmlnaHRGcm9udERyaXZlLnN0YXJ0Um90YXRlRm9yKC0xMjAscm90YXRpb25Vbml0czo6ZGVnLDkwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICBSaWdodEJhY2tEcml2ZS5zdGFydFJvdGF0ZUZvcigtMTIwLHJvdGF0aW9uVW5pdHM6OmRlZyw5MCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgdGFzazo6c2xlZXAoNjAwKTsKICAgIFNlY3JldFdlYXBvbi5zdGFydFJvdGF0ZUZvcigtODUwLHJvdGF0aW9uVW5pdHM6OmRlZywxMDAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIGJhY2t3YXJkKDE2ODAsNjApOwogICAgdGFzazo6c2xlZXAoMjUwMCk7CiAgICB0dXJuTGVmdCgzMTAsNTUpOwogICAgdGFzazo6c2xlZXAoNjAwKTsKICAgIGJhY2t3YXJkKDIwMCw0MCk7CiAgICB0YXNrOjpzbGVlcCg1MDApOwogICAgYmFja3dhcmQoOTAwLDYwKTsKICAgIHRhc2s6OnNsZWVwKDE1MDApOwogICAKfQoKCi8vVVNFUkNPTlRST0wKdm9pZCB1c2VyY29udHJvbCggdm9pZCApIHsKICAvLyBVc2VyIGNvbnRyb2wgY29kZSBoZXJlLCBpbnNpZGUgdGhlIGxvb3AKICB3aGlsZSAoMSl7CiAgICBSaWdodEZyb250RHJpdmUuc2V0TWF4VG9ycXVlKDEwMCxwZXJjZW50VW5pdHM6OnBjdCk7CiAgICBSaWdodEJhY2tEcml2ZS5zZXRNYXhUb3JxdWUoMTAwLHBlcmNlbnRVbml0czo6cGN0KTsgCiAgICBMZWZ0RnJvbnREcml2ZS5zZXRNYXhUb3JxdWUoMTAwLHBlcmNlbnRVbml0czo6cGN0KTsgCiAgICBMZWZ0QmFja0RyaXZlLnNldE1heFRvcnF1ZSgxMDAscGVyY2VudFVuaXRzOjpwY3QpOwogICAgRmx5LnNldE1heFRvcnF1ZSgxMDAscGVyY2VudFVuaXRzOjpwY3QpOyAKICAgICAgU2VjcmV0V2VhcG9uLnNldE1heFRvcnF1ZSgxMDAscGVyY2VudFVuaXRzOjpwY3QpOyAKICAgICAKICAgIC8vQ2hhbmdlIFNlbnNpdGl2aXR5IG9mIENvbnRyb2xsZXIsIEF4aXMxCiAgICBpbnQgdmFsdWUxPTA7CiAgICBpbnQgdmFsdWUzPTA7CiAgICAgIAogICAgaWYoQ29udHJvbGxlcjEuQXhpczEudmFsdWUoKT4wJiZDb250cm9sbGVyMS5BeGlzMS52YWx1ZSgpPD04MCl7CiAgICAgICAgdmFsdWUxPUNvbnRyb2xsZXIxLkF4aXMxLnZhbHVlKCkvMi41OwogICAgfQogICAgZWxzZSBpZihDb250cm9sbGVyMS5BeGlzMS52YWx1ZSgpPjgwKXsKICAgICAgICB2YWx1ZTE9cG93KENvbnRyb2xsZXIxLkF4aXMxLnZhbHVlKCksMikvMjAwOwogICAgfQogICAgaWYoQ29udHJvbGxlcjEuQXhpczEudmFsdWUoKTwwJiZDb250cm9sbGVyMS5BeGlzMS52YWx1ZSgpPj0tODApewogICAgICAgIHZhbHVlMT1Db250cm9sbGVyMS5BeGlzMS52YWx1ZSgpLzIuNTsKICAgIH0KICAgIGVsc2UgaWYoQ29udHJvbGxlcjEuQXhpczEudmFsdWUoKTwtODApewogICAgICAgIHZhbHVlMT0tcG93KENvbnRyb2xsZXIxLkF4aXMxLnZhbHVlKCksMikvMjAwOwogICAgfSAKICAgICAgCiAgICAvL1ZhbHVlIDMgVW5jaGFuZ2VkCiAgICB2YWx1ZTM9KENvbnRyb2xsZXIxLkF4aXMzLnZhbHVlKCkpOyAKICAgIExlZnRGcm9udERyaXZlLnNwaW4odmV4OjpkaXJlY3Rpb25UeXBlOjpmd2QsKHZhbHVlMSt2YWx1ZTMpLHZleDo6dmVsb2NpdHlVbml0czo6cGN0KTsKICAgIExlZnRCYWNrRHJpdmUuc3Bpbih2ZXg6OmRpcmVjdGlvblR5cGU6OmZ3ZCwodmFsdWUxK3ZhbHVlMyksdmV4Ojp2ZWxvY2l0eVVuaXRzOjpwY3QpOyAKICAgIFJpZ2h0RnJvbnREcml2ZS5zcGluKHZleDo6ZGlyZWN0aW9uVHlwZTo6cmV2LCh2YWx1ZTEtdmFsdWUzKSx2ZXg6OnZlbG9jaXR5VW5pdHM6OnBjdCk7IAogICAgUmlnaHRCYWNrRHJpdmUuc3Bpbih2ZXg6OmRpcmVjdGlvblR5cGU6OnJldiwodmFsdWUxLXZhbHVlMyksdmV4Ojp2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgCiAgICAKICAgIGlmKENvbnRyb2xsZXIxLkJ1dHRvblIyLnByZXNzaW5nKCkpCiAgICB7CiAgICAgICAgSW50YWtlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgfQogICAgZWxzZSBpZihDb250cm9sbGVyMS5CdXR0b25SMS5wcmVzc2luZygpKQogICAgewogICAgICAgIEludGFrZS5zcGluKGRpcmVjdGlvblR5cGU6OnJldiwyMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgSW50YWtlLnN0b3AoYnJha2VUeXBlOjpjb2FzdCk7CiAgICAgICAKICAgIH0KICAgICAgCiAgICAvKgogICAgCiAgICBpZihDb250cm9sbGVyMS5CdXR0b25MMS5wcmVzc2luZygpKQogICAgewogICAgICAgIEludGFrZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwyMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICBGZWVkZXIucm90YXRlRm9yKDIwMCxyb3RhdGlvblVuaXRzOjpkZWcsMTAwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICAgICAgU2VjcmV0V2VhcG9uLnNwaW4oZGlyZWN0aW9uVHlwZTo6cmV2LDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgIHRhc2s6OnNsZWVwKDEwMCk7CiAgICAgICAgRmVlZGVyLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgIHRhc2s6OnNsZWVwKDMwMCk7CiAgICAgICAgU2VjcmV0V2VhcG9uLnN0b3AoYnJha2VUeXBlOjpob2xkKTsKICAgICAgICBJbnRha2Uuc3RvcChicmFrZVR5cGU6OmNvYXN0KTsKICAgICAgICBGZWVkZXIuc3RvcChicmFrZVR5cGU6OmNvYXN0KTsKICAgICAgICB0YXNrOjpzbGVlcCgzMDApOwogICAgICAgIFNlY3JldFdlYXBvbi5yb3RhdGVGb3IoLTE1LHJvdGF0aW9uVW5pdHM6OmRlZywxMDAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgIH0gCiAgICAgICovCiAgICAgIAogICAgICBpZihDb250cm9sbGVyMS5CdXR0b25MMS5wcmVzc2luZygpKQogICAgewogICAgICAgIEZlZWRlci5zdGFydFJvdGF0ZUZvcigyMDAscm90YXRpb25Vbml0czo6ZGVnLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgIEludGFrZS5zdGFydFJvdGF0ZUZvcigxMDAscm90YXRpb25Vbml0czo6ZGVnLDEwMCx2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgIHRhc2s6OnNsZWVwKDIwMCk7CiAgICAgICAgICAvKgogICAgICAgICAgUmlnaHRGcm9udERyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgICAgUmlnaHRCYWNrRHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICBMZWZ0RnJvbnREcml2ZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwyMDAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgICAgICAgIExlZnRCYWNrRHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgICBTZWNyZXRXZWFwb24uc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMTAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgdGFzazo6c2xlZXAoMTAwKTsKICAgICAgICAqLwogICAgICAgIFNlY3JldFdlYXBvbi5zcGluKGRpcmVjdGlvblR5cGU6OnJldiwxMDAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgICAgICBGZWVkZXIuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICAgICAgSW50YWtlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLDIwMCx2ZWxvY2l0eVVuaXRzOjpycG0pOwogICAgICAgIHRhc2s6OnNsZWVwKDMwMCk7CiAgICAgICAgU2VjcmV0V2VhcG9uLnJvdGF0ZUZvcig1MCxyb3RhdGlvblVuaXRzOjpkZWcsMTAwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICAgICAgdGFzazo6c2xlZXAoMTAwKTsKICAgIH0gCiAgICAgIAogICAvL0ZlZWRlciAgCiAgICBpZihDb250cm9sbGVyMS5CdXR0b25MMi5wcmVzc2luZygpKQogICAgewogICAgICAgIEludGFrZS5zdGFydFJvdGF0ZUZvcigyMDAwLHJvdGF0aW9uVW5pdHM6OmRlZywxMDAsdmVsb2NpdHlVbml0czo6cGN0KTsKICAgICAgICBGZWVkZXIucm90YXRlRm9yKDIwMCxyb3RhdGlvblVuaXRzOjpkZWcsMTAwLHZlbG9jaXR5VW5pdHM6OnBjdCk7CgogICAgfQogICAgZWxzZQogICAgewogICAgICAgIEZlZWRlci5zdG9wKGJyYWtlVHlwZTo6Y29hc3QpOwogICAgfQogICAgICAKICAgIC8vU1cgIAogICAgaWYoQ29udHJvbGxlcjEuQnV0dG9uQS5wcmVzc2luZygpKQogICAgewogICAgICAgIFNlY3JldFdlYXBvbi5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwxNzAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgIH0KICAgIGVsc2UgaWYoQ29udHJvbGxlcjEuQnV0dG9uWS5wcmVzc2luZygpKQogICAgewogICAgICAgIFNlY3JldFdlYXBvbi5zcGluKGRpcmVjdGlvblR5cGU6OnJldiwxNzAsdmVsb2NpdHlVbml0czo6cnBtKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgIFNlY3JldFdlYXBvbi5zdG9wKGJyYWtlVHlwZTo6Y29hc3QpOwogICAgfSAgCiAgICAgIAogICAgCiAgICAvL0ZseQogICAgaWYoQ29udHJvbGxlcjEuQnV0dG9uVXAucHJlc3NpbmcoKSkKICAgIHsKICAgICAgICBGbHkuc3BpbihkaXJlY3Rpb25UeXBlOjpyZXYsMjAwLHZlbG9jaXR5VW5pdHM6OnJwbSk7CiAgICB9CiAgICBlbHNlIGlmKENvbnRyb2xsZXIxLkJ1dHRvbkRvd24ucHJlc3NpbmcoKSkKICAgIHsgCiAgICAgICAgRmx5LnN0b3AoYnJha2VUeXBlOjpjb2FzdCk7ICAgCiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgCiAgICB9CiAgICAKICAgCiAgICAgIAogICAgICAKICAgIHZleDo6dGFzazo6c2xlZXAoMjApOwogIH0KfQogICAKCi8vU1RBUlQgUElECmludCBzZ24oZG91YmxlIHZhbCkKewogICAgcmV0dXJuIHZhbCA+IDAgPyAxIDogLTE7Cn0Kdm9pZCB0dXJuVG8oZG91YmxlIGRlZ3JlZXMsIGRvdWJsZSBzcGVlZCA9IDYwKQp7CiAgICBkZWdyZWVzICo9IDk2LjAvOTAuMDsKICAgIGRvdWJsZSBQID0gMCwga3AgPS43OwogICAgZG91YmxlIEkgPSAwLCBraSA9IDAuMDA0OwogICAgZG91YmxlIEQgPSAwLCBrZCA9IDAuMDM7CiAgICBkb3VibGUgZXJyb3IgPSAxMDA7IAogICAgZG91YmxlIGxhc3RFcnJvciA9IDEwMDsKICAgIGRvdWJsZSBtb3RvclBvd2VyID0gMDsKICAgIGludCBpVGhyZXNoID0gMjU7CiAgICB3aGlsZSh0cnVlKQogICAgewogICAgICAgIGxhc3RFcnJvciA9IGVycm9yOwogICAgICAgIC8vZXJyb3IgPSBkZWdyZWVzIC0gR3lybzEudmFsdWUocm90YXRpb25Vbml0czo6ZGVnKTsKCiAgICAgICAgaWYgKGFicyhlcnJvcikgPiAxODApCiAgICAgICAgICAgIGVycm9yID0gIHNnbihlcnJvcikgKiAoMzYwIC0gYWJzKGVycm9yKSk7CgogICAgICAgIFAgPSBlcnJvciAqIGtwOwogICAgICAgIEQgPSBrZCAqIChlcnJvciAtIGxhc3RFcnJvcik7CgogICAgICAgIGlmIChhYnMoZXJyb3IpIDwgaVRocmVzaCkKICAgICAgICAgICAgSSArPSBlcnJvciAqIGtpOwoKICAgICAgICBpZiAoYWJzKEkpID4gMTUpCiAgICAgICAgICBJID0gMTUgKiBzZ24oZXJyb3IpOwoKICAgICAgICBtb3RvclBvd2VyID0gUCArIEkgKyBEOwoKICAgICAgICBpZihhYnMoZXJyb3IpIDw9IDAuMSAmJiBhYnMobGFzdEVycm9yKSA8PSAuMSkgYnJlYWs7IC8vIEJyZWFrIHN0YXRlbWVudAoKICAgICAgICBpZihhYnMobW90b3JQb3dlcikgPiBhYnMoc3BlZWQpKQogICAgICAgICAgICBtb3RvclBvd2VyID0gc3BlZWQgKiBzZ24obW90b3JQb3dlcik7CgogICAgICAgIExlZnRCYWNrRHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsIG1vdG9yUG93ZXIsIHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICAgICAgUmlnaHRCYWNrRHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsIC1tb3RvclBvd2VyLCB2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgIFJpZ2h0RnJvbnREcml2ZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwgLW1vdG9yUG93ZXIsIHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICAgICAgTGVmdEZyb250RHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsIG1vdG9yUG93ZXIsIHZlbG9jaXR5VW5pdHM6OnBjdCk7CgogICAgICAgIHRhc2s6OnNsZWVwKDEwKTsKICAgIH0KICAgIExlZnRCYWNrRHJpdmUuc3RvcChicmFrZVR5cGU6OmJyYWtlKTsKICAgIFJpZ2h0QmFja0RyaXZlLnN0b3AoYnJha2VUeXBlOjpicmFrZSk7CiAgICBSaWdodEZyb250RHJpdmUuc3RvcChicmFrZVR5cGU6OmJyYWtlKTsKICAgIExlZnRGcm9udERyaXZlLnN0b3AoYnJha2VUeXBlOjpicmFrZSk7CiAgICB0YXNrOjpzbGVlcCg1MCk7IC8vIFNsZWVwIGhlcmUgc28gd2UgZG8gbm90IGhhdmUgdG8gaW4gdGhlIGF1dG9ub21vdXMgZnVuY3Rpb24KfQoKZG91YmxlIHN0YmxDb25zdCA9IC43OwoKZG91YmxlIHJhbXBVcChkb3VibGUgZGVsdGFWLCBpbnQgY3ljbGVzLCBpbnQgdGltZVNsaWNlLCBkb3VibGUgYW5nbGUgPSAwKQp7CiAgICBkb3VibGUgY3VyclZlbCA9IFJpZ2h0RnJvbnREcml2ZS52ZWxvY2l0eSh2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgUmlnaHRGcm9udERyaXZlLnJlc2V0Um90YXRpb24oKTsKICAgIAogICAgLy8gR3lybyBTdGFiaWxpemF0aW9uIHZhcmlhYmxlcwogICAgZG91YmxlIGxlZnRBZGp1c3RQd3IgPSAwOwogICAgZG91YmxlIGluaXQgPSBhbmdsZTsKICAgIAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjeWNsZXM7IGkrKykKICAgIHsKICAgICAgICBjdXJyVmVsICs9IGRlbHRhVi9jeWNsZXM7CiAgICAKICAgICAgICAvL2xlZnRBZGp1c3RQd3IgPSBzdGJsQ29uc3QgKiAoR3lybzEudmFsdWUocm90YXRpb25Vbml0czo6ZGVnKSAtIGluaXQpOyAvLyBUcmFja2luZyBkaWZmZXJlbmNlIGluIGd5cm8gdmFsdWUKCiAgICAgICAgLy8gU2V0dGluZyBtb3RvciBwb3dlcnMKICAgICAgICBMZWZ0QmFja0RyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLCBjdXJyVmVsIC0gbGVmdEFkanVzdFB3ciwgdmVsb2NpdHlVbml0czo6cGN0KTsKICAgICAgICBSaWdodEJhY2tEcml2ZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwgY3VyclZlbCwgdmVsb2NpdHlVbml0czo6cGN0KTsKICAgICAgICBSaWdodEZyb250RHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsIGN1cnJWZWwsIHZlbG9jaXR5VW5pdHM6OnBjdCk7CiAgICAgICAgTGVmdEZyb250RHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsIGN1cnJWZWwgLSBsZWZ0QWRqdXN0UHdyLCB2ZWxvY2l0eVVuaXRzOjpwY3QpOwoKICAgICAgICB0YXNrOjpzbGVlcCh0aW1lU2xpY2UpOwogICAgfQoKICAgIHJldHVybiBSaWdodEZyb250RHJpdmUucm90YXRpb24ocm90YXRpb25Vbml0czo6cmV2KTsKfQoKdm9pZCBkcml2ZShkb3VibGUgaW5jaGVzLCBkb3VibGUgc3BlZWQsIGludCBjeWNsZXMgPSAxNSwgaW50IHRpbWVTbGljZSA9IDUwLCBkb3VibGUgaGVhZGluZyA9IC0xMjEsIGJvb2wgdHVybiA9IHRydWUpCnsKICAgIC8vIENvbnZlcnRpbmcgaW5jaGVzIHRvIG1vdG9yIHJvdGF0aW9ucwogICAgZG91YmxlIGluaXQgPSAwOwogICAgLy9pZihoZWFkaW5nICE9IC0xMjEpIGluaXQgPSBoZWFkaW5nOwogICAgZG91YmxlIHJvdHMgPSBpbmNoZXMgLyAoNCAqIDMuMTQxNSk7CiAgICByb3RzIC09IHJhbXBVcChzcGVlZCwgY3ljbGVzLCB0aW1lU2xpY2UsIGluaXQpOyAvLyBTdWJ0cmFjdGluZyByYW1waW5nIGRpc3RhbmNlIGZyb20gdG90YWwKCiAgICAvLyBQSUQgVmFyaWFibGVzCiAgICBkb3VibGUgUCA9IDAsIGtwID0gMTUwOyAvLzc1CiAgICBkb3VibGUgSSA9IDAsIGtpID0gLjk1OwogICAgZG91YmxlIEQgPSAwLCBrZCA9IDI1MDsgLy8yMzAKICAgIGRvdWJsZSBlcnJvciA9IDAsIGxFcnJvciA9IDA7CiAgICBkb3VibGUgaVRocmVzaCA9IC41OwogICAgZG91YmxlIG1vdG9yUG93ZXIgPSAwOwoKICAgIC8vIEd5cm8gU3RhYmlsaXphdGlvbiB2YXJpYWJsZXMKICAgIGRvdWJsZSBsZWZ0QWRqdXN0UHdyID0gMDsKCiAgICAvLyBSZXNldCByb3RhdGlvbnMgYmVmb3JlIFBJRCBsb29wCiAgICBSaWdodEZyb250RHJpdmUucmVzZXRSb3RhdGlvbigpOwoKICAgIC8vIFJlc2V0IEJyYWluIFRpbWVyIEJlZm9yZSBQSUQgTG9vcAogICAgQnJhaW4ucmVzZXRUaW1lcigpOwogICAgLy9pbnQgdGhlb3JldGljYWxUaW1lID0gYWJzKHJvdHMgLyAoc3BlZWQgKiAyKSAvIDYwKTsKCiAgICAvLyBQSUQgTG9vcAogICAgd2hpbGUgKGFicyhSaWdodEZyb250RHJpdmUucm90YXRpb24ocm90YXRpb25Vbml0czo6cmV2KSkgPCBhYnMocm90cykvKiAmJiBCcmFpbi50aW1lcih0aW1lVW5pdHM6Om1zZWMpIDwgdGhlb3JldGljYWxUaW1lICsgMTAwMCovKQogICAgewogICAgICAgIC8vIFNldHRpbmcgUElEIFZhcmlhYmxlcwogICAgICAgIGVycm9yID0gcm90cyAtIChSaWdodEZyb250RHJpdmUucm90YXRpb24ocm90YXRpb25Vbml0czo6cmV2KSk7CiAgICAgICAgUCA9IGVycm9yICoga3A7CiAgICAgICAgRCA9IChlcnJvciAtIGxFcnJvcikgKiBrZDsKCiAgICAgICAgaWYgKGFicyhlcnJvcikgPCBpVGhyZXNoKQogICAgICAgICAgICBJICs9IGVycm9yICoga2k7CiAgICAgICAgZWxzZQogICAgICAgICAgICBJID0gMDsKCiAgICAgICAgbW90b3JQb3dlciA9IGFicyhQKSArIGFicyhJKSAtIGFicyhEKTsgLy8gTWFudWFsbHkgc2V0dGluZyBtb3RvciBwb3dlcgoKICAgICAgICBpZiAoYWJzKG1vdG9yUG93ZXIpID4gYWJzKHNwZWVkKSkgLy8gTGltaXRpbmcgbW90b3IgcG93ZXIgdG8gdG9wIHNwZWVkCiAgICAgICAgICAgIG1vdG9yUG93ZXIgPSBhYnMoc3BlZWQpOwoKICAgICAgICBpZihzcGVlZCA8IDApIC8vIEluIGNhc2Ugb2YgZ29pbmcgYmFja3dhcmRzCiAgICAgICAgICAgIG1vdG9yUG93ZXIgKj0gLTE7CgogICAgICAgIC8vbGVmdEFkanVzdFB3ciA9IHN0YmxDb25zdCAqIChHeXJvMS52YWx1ZShyb3RhdGlvblVuaXRzOjpkZWcpIC0gaW5pdCk7IC8vIFRyYWNraW5nIGRpZmZlcmVuY2UgaW4gZ3lybyB2YWx1ZQoKICAgICAgICAvLyBTZXR0aW5nIG1vdG9yIHBvd2VycwogICAgICAgIExlZnRCYWNrRHJpdmUuc3BpbihkaXJlY3Rpb25UeXBlOjpmd2QsIG1vdG9yUG93ZXIgLSBsZWZ0QWRqdXN0UHdyLCB2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgIFJpZ2h0QmFja0RyaXZlLnNwaW4oZGlyZWN0aW9uVHlwZTo6ZndkLCBtb3RvclBvd2VyLCB2ZWxvY2l0eVVuaXRzOjpwY3QpOwogICAgICAgIFJpZ2h0RnJvbnREcml2ZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwgbW90b3JQb3dlciwgdmVsb2NpdHlVbml0czo6cGN0KTsKICAgICAgICBMZWZ0RnJvbnREcml2ZS5zcGluKGRpcmVjdGlvblR5cGU6OmZ3ZCwgbW90b3JQb3dlciAtIGxlZnRBZGp1c3RQd3IsIHZlbG9jaXR5VW5pdHM6OnBjdCk7CgogICAgICAgIHRhc2s6OnNsZWVwKDUwKTsKICAgICAgICBsRXJyb3IgPSBlcnJvcjsKICAgIH0KCiAgICAvLyBTdG9wcGluZyBtb3RvcnMgYWZ0ZXIgbG9vcCBlbmRzCiAgICBMZWZ0QmFja0RyaXZlLnN0b3AoYnJha2VUeXBlOjpicmFrZSk7CiAgICBSaWdodEJhY2tEcml2ZS5zdG9wKGJyYWtlVHlwZTo6YnJha2UpOwogICAgUmlnaHRGcm9udERyaXZlLnN0b3AoYnJha2VUeXBlOjpicmFrZSk7CiAgICBMZWZ0RnJvbnREcml2ZS5zdG9wKGJyYWtlVHlwZTo6YnJha2UpOwogICAgLyppZih0dXJuKQogICAgICAgIHR1cm5Ubyhpbml0KTsKICAgICAgICAqLwogICAgLy8gU2xlZXAgaGVyZSBzbyB3ZSBkbyBub3QgaGF2ZSB0byBpbiB0aGUgYXV0b25vbW91cyBmdW5jdGlvbgogICAgaWYgKGFicyhpbmNoZXMpID49IDE2KQogICAgICAgIHRhc2s6OnNsZWVwKDEwMCk7CiAgICBlbHNlCiAgICAgICAgdGFzazo6c2xlZXAoNTApOwp9Ci8vRU5EIFBJRAoKCmludCBtYWluKCkgewogICAgcHJlX2F1dG9uKCk7CiAgICBDb21wZXRpdGlvbi5hdXRvbm9tb3VzKCBhdXRvbm9tb3VzICk7CiAgICBDb21wZXRpdGlvbi5kcml2ZXJjb250cm9sKCB1c2VyY29udHJvbCApOwogICAgICAgICAgICAgICAgICAgICAKICAgIHdoaWxlKDEpIHsKICAgICAgdmV4Ojp0YXNrOjpzbGVlcCgxMDApOy8vU2xlZXAgdGhlIHRhc2sgZm9yIGEgc2hvcnQgYW1vdW50IG9mIHRpbWUgdG8gcHJldmVudCB3YXN0ZWQgcmVzb3VyY2VzLgogICAgfSAgICAKICAgICAgIAp9"},"device":{"slot":1,"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":false}},{"name":"LeftFrontDrive","class":"vex::motor","port":"2","left":64,"top":476,"type":"motor","data":{"gears":200,"reversed":false}},{"name":"Intake","class":"vex::motor","port":"5","left":474,"top":423,"type":"motor","data":{"gears":200,"reversed":false}},{"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":"SecretWeapon","class":"vex::motor","port":"9","left":616,"top":144,"type":"motor","data":{"gears":200,"reversed":true}},{"name":"Controller1","class":"vex::controller","left":352.6000061035156,"top":163,"type":"controller"},{"name":"LeftBackDrive","class":"vex::motor","port":"1","left":62,"top":311,"type":"motor","data":{"gears":200,"reversed":false}}]}