diff --git a/Aircraft/Generic/DualControl/AUTHORS b/Aircraft/Generic/DualControl/AUTHORS
new file mode 100644
index 000000000..869a954d6
--- /dev/null
+++ b/Aircraft/Generic/DualControl/AUTHORS
@@ -0,0 +1,22 @@
+Anders Gidenstam (anders(at)gidenstam.org)
+ - Dual control Nasal modules
+ - Configuration of dual-control 3d instruments.
+
+DualControl borrows content from the following authors' contributions
+to FlightGear:
+
+Syd Adams - from Aircraft/Instruments-3d/
+ - KY-196 Comm Radio.
+ - VHF 22 Comm Radio.
+ - VIR 32 Nav Radio.
+ - KI-206 VOR Gauge.
+ - KR-97 ADF Radio.
+ - KI-227 ADF Gauge.
+
+Torsten Dreyer - from Aircraft/SenceaII/Instruments-3d/
+ - KX-165 Nav Comm Radio.
+ - KR-87 ADF Radio.
+
+Ron Jensen - from Aircraft/Instruments-3d
+ - KAP140 Autopilot 3d.
+
diff --git a/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl-62.png b/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl-62.png
new file mode 100644
index 000000000..79bd04060
Binary files /dev/null and b/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl-62.png differ
diff --git a/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62-adf1.xml b/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62-adf1.xml
new file mode 100644
index 000000000..384244a6e
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62-adf1.xml
@@ -0,0 +1,380 @@
+
+
+
+
+
+ ctl62.ac
+
+
+ select
+ freq.002
+ freq.003
+ freq.dec
+ freq.004
+ freq.005
+
+
+ systems/electrical/outputs/adf
+ 1
+
+
+
+
+
+ select
+ stby.002
+ stby.003
+ stby.dec
+ stby.004
+ stby.005
+
+
+ systems/electrical/outputs/adf
+ 1
+
+
+
+
+
+ select
+ freq.001
+
+
+
+ systems/electrical/outputs/adf
+ 1
+
+
+ instrumentation/adf/frequencies/selected-khz
+ 999.5
+
+
+
+
+
+
+ select
+ stby.001
+
+
+
+ systems/electrical/outputs/adf
+ 1
+
+
+ instrumentation/adf/frequencies/standby-khz
+ 999.5
+
+
+
+
+
+
+ select
+ mem.annun
+
+
+ systems/electrical/outputs/adf
+ 1
+
+
+
+
+
+ rotate
+ CTL-62.pwr
+ instrumentation/adf/serviceable
+
+ 00
+ 1.030
+
+
+ 0.0
+ -0.014
+ -0.018
+
+
+ -1
+ 0
+ 0
+
+
+
+
+
+
+ textranslate
+ freq.001
+ instrumentation/adf/frequencies/selected-khz
+ 0.0001
+ 1000
+ 0.05
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ freq.002
+ instrumentation/adf/frequencies/selected-khz
+ 0.001
+ 100
+ 0.05
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ freq.003
+ instrumentation/adf/frequencies/selected-khz
+ 0.01
+ 10
+ 0.05
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ freq.004
+ instrumentation/adf/frequencies/selected-khz
+ 0.1
+ 1
+ 0.05
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ freq.005
+ instrumentation/adf/frequencies/selected-khz
+ 1.0
+ 0.1
+ 0.05
+
+ 0
+ 1
+ 0
+
+
+
+
+
+
+ textranslate
+ stby.001
+ instrumentation/adf/frequencies/standby-khz
+ 0.0001
+ 1000
+ 0.05
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ stby.002
+ instrumentation/adf/frequencies/standby-khz
+ 0.001
+ 100
+ 0.05
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ stby.003
+ instrumentation/adf/frequencies/standby-khz
+ 0.01
+ 10
+ 0.05
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ stby.004
+ instrumentation/adf/frequencies/standby-khz
+ 0.1
+ 1
+ 0.05
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ stby.005
+ instrumentation/adf/frequencies/standby-khz
+ 1.0
+ 0.1
+ 0.05
+
+ 0
+ 1
+ 0
+
+
+
+
+
+
+ pick
+ CTL-62.xfr
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ pwr.off
+
+
+ false
+
+ property-assign
+ instrumentation/adf/serviceable
+ false
+
+
+
+
+
+ pick
+ pwr.on
+
+
+ false
+
+ property-assign
+ instrumentation/adf/serviceable
+ true
+
+
+
+
+
+ pick
+ freq.knob.small
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ freq.knob.large
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
diff --git a/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62.ac b/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62.ac
new file mode 100644
index 000000000..f3d3c7a5b
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62.ac
@@ -0,0 +1,2449 @@
+AC3Db
+MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
+MATERIAL "DefaultWhite.001" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
+MATERIAL "dimlit" rgb 1 1 1 amb 1 1 1 emis 0.5 0.5 0.5 spec 0.5 0.5 0.5 shi 64 trans 0
+MATERIAL "lit" rgb 1 1 1 amb 1 1 1 emis 1 1 1 spec 0.5 0.5 0.5 shi 64 trans 0
+OBJECT world
+kids 29
+OBJECT poly
+name "CTL-62"
+data 4
+Mesh
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 8
+0.00288 0.033556 0.030053
+0.002878 -0.033556 0.030053
+0.002878 -0.033556 -0.030053
+0.00288 0.033556 -0.030053
+1e-06 0.033557 0.030053
+-1e-06 -0.033557 0.030053
+-1e-06 -0.033557 -0.030053
+1e-06 0.033557 -0.030054
+numsurf 7
+SURF 0x00
+mat 1
+refs 3
+2 0.0318928062916 0.52865421772
+6 0.0318928062916 0.471345812082
+7 0.0892012119293 0.471345812082
+SURF 0x00
+mat 1
+refs 3
+1 0.0318928062916 0.52865421772
+4 0.0318928062916 0.471345812082
+5 0.0892012119293 0.471345812082
+SURF 0x00
+mat 1
+refs 4
+4 0.0318928062916 0.52865421772
+0 0.0318928062916 0.471345812082
+3 0.0892012119293 0.471345812082
+7 0.0892012119293 0.52865421772
+SURF 0x00
+mat 1
+refs 4
+6 0.0318928062916 0.52865421772
+2 0.0318928062916 0.471345812082
+1 0.0892012119293 0.471345812082
+5 0.0892012119293 0.52865421772
+SURF 0x00
+mat 1
+refs 3
+1 0.0318928062916 0.52865421772
+0 0.0318928062916 0.471345812082
+4 0.0892012119293 0.471345812082
+SURF 0x00
+mat 1
+refs 3
+3 0.0318928062916 0.52865421772
+2 0.0318928062916 0.471345812082
+7 0.0892012119293 0.471345812082
+SURF 0x00
+mat 1
+refs 4
+0 0.00467306375504 0.99786221981
+1 0.00467306375504 0.10612988472
+2 0.803326964378 0.106129825115
+3 0.803327083588 0.99786221981
+kids 0
+OBJECT poly
+name "CTL-62.mem"
+data 8
+Mesh.001
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003175 0.002595 -0.027258
+0.003175 0.002595 -0.017239
+0.003175 0.012924 -0.027258
+0.003175 0.012924 -0.017239
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.765544474125 0.593913197517
+2 0.765544474125 0.72511190176
+3 0.638291478157 0.725111961365
+1 0.638291418552 0.593913197517
+kids 0
+OBJECT poly
+name "CTL-62.pwr"
+data 8
+Mesh.002
+texture "ctl-62.png"
+texrep 1 1
+crease 40.000000
+numvert 61
+0.011466 -0.015393 0.01504
+0.011476 -0.015129 0.01383
+0.011475 -0.015347 0.012612
+0.011464 -0.017031 0.010863
+0.011471 -0.019458 0.010815
+0.011463 -0.0205 0.011484
+0.011464 -0.021208 0.012499
+0.011474 -0.021473 0.013707
+0.011475 -0.021255 0.014926
+0.011476 -0.020587 0.015968
+0.011467 -0.018363 0.016942
+0.011479 -0.017144 0.016723
+0.011467 -0.016101 0.016056
+0.010939 -0.0145 0.017787
+0.010936 -0.016318 0.018952
+0.010939 -0.018442 0.019331
+0.010934 -0.020548 0.018869
+0.010936 -0.022319 0.017636
+0.010934 -0.023483 0.01582
+0.010932 -0.023861 0.013696
+0.010934 -0.0234 0.011587
+0.010928 -0.022167 0.009817
+0.010933 -0.02035 0.008654
+0.010928 -0.018226 0.008274
+0.010934 -0.016119 0.008735
+0.010932 -0.014348 0.009969
+0.010934 -0.013185 0.011786
+0.010936 -0.012805 0.01391
+0.010934 -0.013267 0.016017
+0.003255 -0.0145 0.017787
+0.003253 -0.016317 0.018951
+0.003255 -0.018441 0.019331
+0.003252 -0.020549 0.018868
+0.003253 -0.022319 0.017635
+0.003252 -0.023483 0.015818
+0.003251 -0.023862 0.013695
+0.003252 -0.023401 0.011588
+0.003249 -0.022167 0.009817
+0.003251 -0.020351 0.008653
+0.003249 -0.018226 0.008273
+0.003252 -0.016119 0.008735
+0.003251 -0.014349 0.009969
+0.003252 -0.013185 0.011786
+0.003253 -0.012805 0.013909
+0.003252 -0.013267 0.016017
+0.002948 -0.013119 0.019223
+0.002944 -0.011442 0.016814
+0.002944 -0.01482 0.020668
+0.002949 -0.019252 0.021461
+0.002944 -0.021347 0.020694
+0.002945 -0.023755 0.019016
+0.002944 -0.025338 0.016545
+0.002942 -0.025854 0.013656
+0.002944 -0.025225 0.01079
+0.002939 -0.023548 0.008381
+0.002943 -0.021077 0.006799
+0.002939 -0.018187 0.006282
+0.002944 -0.01532 0.00691
+0.002942 -0.012913 0.008588
+0.002944 -0.01133 0.011059
+0.002945 -0.010813 0.013948
+numsurf 47
+SURF 0x10
+mat 1
+refs 4
+0 0.242616027594 0.34228309989
+1 0.253560334444 0.330271661282
+27 0.27686715126 0.344839572906
+28 0.258591175079 0.36488327384
+SURF 0x10
+mat 1
+refs 4
+26 0.286074966192 0.31933516264
+27 0.27686715126 0.344839572906
+1 0.253560334444 0.330271661282
+2 0.259069859982 0.314993470907
+SURF 0x10
+mat 1
+refs 4
+25 0.284832298756 0.292247921228
+26 0.286074966192 0.31933516264
+2 0.259069859982 0.314993470907
+3 0.258331537247 0.298769056797
+SURF 0x10
+mat 1
+refs 3
+24 0.273313134909 0.267678141594
+25 0.284832298756 0.292247921228
+3 0.258331537247 0.298769056797
+SURF 0x10
+mat 1
+refs 3
+23 0.253274142742 0.249411016703
+24 0.273313134909 0.267678141594
+3 0.251419782639 0.284074395895
+SURF 0x10
+mat 1
+refs 4
+22 0.227752551436 0.240196049213
+23 0.253274142742 0.249411016703
+3 0.239418447018 0.27314016223
+4 0.224144220352 0.267609983683
+SURF 0x10
+mat 1
+refs 4
+21 0.200660303235 0.241442531347
+22 0.227752551436 0.240196049213
+4 0.224144220352 0.267609983683
+5 0.207917496562 0.26836925745
+SURF 0x10
+mat 1
+refs 4
+20 0.176110818982 0.252956539392
+21 0.200660303235 0.241442531347
+5 0.207917496562 0.26836925745
+6 0.193216666579 0.275259315968
+SURF 0x10
+mat 1
+refs 4
+19 0.157832920551 0.273013472557
+20 0.176110818982 0.252956539392
+6 0.193216666579 0.275259315968
+7 0.182275414467 0.287250161171
+SURF 0x10
+mat 1
+refs 4
+18 0.148611694574 0.298515945673
+19 0.157832920551 0.273013472557
+7 0.182275414467 0.287250161171
+8 0.17675408721 0.302526503801
+SURF 0x10
+mat 1
+refs 4
+17 0.149867773056 0.325605154037
+18 0.148611694574 0.298515945673
+8 0.17675408721 0.302526503801
+9 0.17750428617 0.318752765656
+SURF 0x10
+mat 1
+refs 4
+16 0.161388874054 0.350161790848
+17 0.149867773056 0.325605154037
+9 0.17750428617 0.318752765656
+10 0.184401065111 0.333466231823
+SURF 0x10
+mat 1
+refs 3
+15 0.181427836418 0.368428856134
+16 0.161388874054 0.350161790848
+10 0.184401065111 0.333466231823
+SURF 0x10
+mat 1
+refs 4
+14 0.206934183836 0.377653956413
+15 0.181427836418 0.368428856134
+10 0.196400627494 0.344412237406
+11 0.211677893996 0.349921613932
+SURF 0x10
+mat 1
+refs 4
+13 0.234041765332 0.37639734149
+14 0.206934183836 0.377653956413
+11 0.211677893996 0.349921613932
+12 0.227901563048 0.349183142185
+SURF 0x10
+mat 1
+refs 4
+12 0.227901563048 0.349183142185
+0 0.242616027594 0.34228309989
+28 0.258591175079 0.36488327384
+13 0.234041765332 0.37639734149
+SURF 0x10
+mat 1
+refs 4
+28 0.313261419535 0.912568569183
+44 0.313261419535 0.819853067398
+29 0.40597692132 0.819853067398
+13 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+30 0.313261419535 0.912568569183
+14 0.313261419535 0.819853067398
+13 0.40597692132 0.819853067398
+29 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+31 0.313261419535 0.912568569183
+15 0.313261419535 0.819853067398
+14 0.40597692132 0.819853067398
+30 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+32 0.313261419535 0.912568569183
+16 0.313261419535 0.819853067398
+15 0.40597692132 0.819853067398
+31 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+33 0.313261419535 0.912568569183
+17 0.313261419535 0.819853067398
+16 0.40597692132 0.819853067398
+32 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+34 0.313261419535 0.912568569183
+18 0.313261419535 0.819853067398
+17 0.40597692132 0.819853067398
+33 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+35 0.313261419535 0.912568569183
+19 0.313261419535 0.819853067398
+18 0.40597692132 0.819853067398
+34 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+36 0.313261419535 0.912568569183
+20 0.313261419535 0.819853067398
+19 0.40597692132 0.819853067398
+35 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+37 0.313261419535 0.912568569183
+21 0.313261419535 0.819853067398
+20 0.40597692132 0.819853067398
+36 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+38 0.313261419535 0.912568569183
+22 0.313261419535 0.819853067398
+21 0.40597692132 0.819853067398
+37 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+39 0.313261419535 0.912568569183
+23 0.313261419535 0.819853067398
+22 0.40597692132 0.819853067398
+38 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+40 0.313261419535 0.912568569183
+24 0.313261419535 0.819853067398
+23 0.40597692132 0.819853067398
+39 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+41 0.313261419535 0.912568569183
+25 0.313261419535 0.819853067398
+24 0.40597692132 0.819853067398
+40 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+42 0.313261419535 0.912568569183
+26 0.313261419535 0.819853067398
+25 0.40597692132 0.819853067398
+41 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+43 0.313261419535 0.912568569183
+27 0.313261419535 0.819853067398
+26 0.40597692132 0.819853067398
+42 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+44 0.313261419535 0.912568569183
+28 0.313261419535 0.819853067398
+27 0.40597692132 0.819853067398
+43 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+29 0.82833224535 0.541667699814
+44 0.82833224535 0.498332291842
+46 0.871667683125 0.498332291842
+45 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+30 0.82833224535 0.541667699814
+29 0.82833224535 0.498332291842
+45 0.871667683125 0.498332291842
+47 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+32 0.82833224535 0.541667699814
+31 0.82833224535 0.498332291842
+48 0.871667683125 0.498332291842
+49 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+33 0.82833224535 0.541667699814
+32 0.82833224535 0.498332291842
+49 0.871667683125 0.498332291842
+50 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+34 0.82833224535 0.541667699814
+33 0.82833224535 0.498332291842
+50 0.871667683125 0.498332291842
+51 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+35 0.82833224535 0.541667699814
+34 0.82833224535 0.498332291842
+51 0.871667683125 0.498332291842
+52 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+36 0.82833224535 0.541667699814
+35 0.82833224535 0.498332291842
+52 0.871667683125 0.498332291842
+53 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+37 0.82833224535 0.541667699814
+36 0.82833224535 0.498332291842
+53 0.871667683125 0.498332291842
+54 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+38 0.82833224535 0.541667699814
+37 0.82833224535 0.498332291842
+54 0.871667683125 0.498332291842
+55 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+39 0.82833224535 0.541667699814
+38 0.82833224535 0.498332291842
+55 0.871667683125 0.498332291842
+56 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+40 0.82833224535 0.541667699814
+39 0.82833224535 0.498332291842
+56 0.871667683125 0.498332291842
+57 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+41 0.82833224535 0.541667699814
+40 0.82833224535 0.498332291842
+57 0.871667683125 0.498332291842
+58 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+42 0.82833224535 0.541667699814
+41 0.82833224535 0.498332291842
+58 0.871667683125 0.498332291842
+59 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+43 0.82833224535 0.541667699814
+42 0.82833224535 0.498332291842
+59 0.871667683125 0.498332291842
+60 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+44 0.82833224535 0.541667699814
+43 0.82833224535 0.498332291842
+60 0.871667683125 0.498332291842
+46 0.871667683125 0.541667699814
+kids 0
+OBJECT poly
+name "CTL-62.toggle"
+data 8
+Mesh.003
+texture "ctl-62.png"
+texrep 1 1
+crease 50.000000
+numvert 16
+0.00288 0.013648 -0.023997
+0.00288 0.0122 -0.023997
+0.00288 0.011176 -0.022972
+0.00288 0.011176 -0.021524
+0.00288 0.0122 -0.0205
+0.00288 0.013648 -0.0205
+0.00288 0.014672 -0.021524
+0.00288 0.014672 -0.022973
+0.009506 0.014166 -0.025409
+0.009506 0.011682 -0.025409
+0.009506 0.011463 -0.025282
+0.009506 0.011464 -0.019214
+0.009506 0.011682 -0.019088
+0.009506 0.014166 -0.019088
+0.009506 0.014385 -0.019215
+0.009506 0.014384 -0.025283
+numsurf 11
+SURF 0x10
+mat 1
+refs 4
+1 0.403194278479 0.371655732393
+0 0.403194278479 0.337494283915
+8 0.437355726957 0.337494283915
+9 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+2 0.403194278479 0.371655732393
+1 0.403194278479 0.337494283915
+9 0.437355726957 0.337494283915
+10 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+3 0.403194278479 0.371655732393
+2 0.403194278479 0.337494283915
+10 0.437355726957 0.337494283915
+11 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+4 0.403194278479 0.371655732393
+3 0.403194278479 0.337494283915
+11 0.437355726957 0.337494283915
+12 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+5 0.403194278479 0.371655732393
+4 0.403194278479 0.337494283915
+12 0.437355726957 0.337494283915
+13 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+6 0.403194278479 0.371655732393
+5 0.403194278479 0.337494283915
+13 0.437355726957 0.337494283915
+14 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+7 0.403194278479 0.371655732393
+6 0.403194278479 0.337494283915
+14 0.437355726957 0.337494283915
+15 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+8 0.403194278479 0.371655732393
+0 0.403194278479 0.337494283915
+7 0.437355726957 0.337494283915
+15 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+11 0.403194278479 0.371655732393
+14 0.403194278479 0.337494283915
+13 0.437355726957 0.337494283915
+12 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+8 0.403194278479 0.371655732393
+15 0.403194278479 0.337494283915
+10 0.437355726957 0.337494283915
+9 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+10 0.403194278479 0.371655732393
+15 0.403194278479 0.337494283915
+14 0.437355726957 0.337494283915
+11 0.437355726957 0.371655732393
+kids 0
+OBJECT poly
+name "CTL-62.vol"
+data 8
+Mesh.004
+texture "ctl-62.png"
+texrep 1 1
+crease 40.000000
+numvert 33
+0.011467 -0.016005 0.016157
+0.011479 -0.017093 0.016853
+0.011467 -0.018365 0.01708
+0.011466 -0.019627 0.016803
+0.011476 -0.020687 0.016064
+0.011475 -0.021385 0.014977
+0.011474 -0.021612 0.013705
+0.011464 -0.021335 0.012443
+0.011463 -0.020596 0.011384
+0.011471 -0.019508 0.010686
+0.011463 -0.018237 0.01046
+0.011464 -0.016975 0.010736
+0.011474 -0.015914 0.011473
+0.011475 -0.015218 0.012561
+0.011476 -0.01499 0.013833
+0.011466 -0.015266 0.015096
+0.018907 -0.015266 0.015095
+0.018897 -0.01499 0.013833
+0.018896 -0.015217 0.012562
+0.018896 -0.015914 0.011474
+0.018906 -0.016975 0.010736
+0.018905 -0.018237 0.010458
+0.018893 -0.019508 0.010686
+0.018905 -0.020596 0.011382
+0.018906 -0.021336 0.012443
+0.018896 -0.021611 0.013705
+0.018896 -0.021385 0.014978
+0.018897 -0.020688 0.016065
+0.018907 -0.019628 0.016803
+0.018908 -0.018366 0.017079
+0.0189 -0.017093 0.016853
+0.018908 -0.016006 0.016155
+0.018896 -0.018301 0.013769
+numsurf 32
+SURF 0x10
+mat 1
+refs 4
+14 0.0525224171579 0.855924844742
+15 0.0525224171579 0.803254663944
+16 0.105192601681 0.803254663944
+17 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+13 0.0525224171579 0.855924844742
+14 0.0525224171579 0.803254663944
+17 0.105192601681 0.803254663944
+18 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+12 0.0525224171579 0.855924844742
+13 0.0525224171579 0.803254663944
+18 0.105192601681 0.803254663944
+19 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+11 0.0525224171579 0.855924844742
+12 0.0525224171579 0.803254663944
+19 0.105192601681 0.803254663944
+20 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+10 0.0525224171579 0.855924844742
+11 0.0525224171579 0.803254663944
+20 0.105192601681 0.803254663944
+21 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+9 0.0525224171579 0.855924844742
+10 0.0525224171579 0.803254663944
+21 0.105192601681 0.803254663944
+22 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+8 0.0525224171579 0.855924844742
+9 0.0525224171579 0.803254663944
+22 0.105192601681 0.803254663944
+23 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+7 0.0525224171579 0.855924844742
+8 0.0525224171579 0.803254663944
+23 0.105192601681 0.803254663944
+24 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+6 0.0525224171579 0.855924844742
+7 0.0525224171579 0.803254663944
+24 0.105192601681 0.803254663944
+25 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+5 0.0525224171579 0.855924844742
+6 0.0525224171579 0.803254663944
+25 0.105192601681 0.803254663944
+26 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+4 0.0525224171579 0.855924844742
+5 0.0525224171579 0.803254663944
+26 0.105192601681 0.803254663944
+27 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+3 0.0525224171579 0.855924844742
+4 0.0525224171579 0.803254663944
+27 0.105192601681 0.803254663944
+28 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+2 0.0525224171579 0.855924844742
+3 0.0525224171579 0.803254663944
+28 0.105192601681 0.803254663944
+29 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+1 0.0525224171579 0.855924844742
+2 0.0525224171579 0.803254663944
+29 0.105192601681 0.803254663944
+30 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+0 0.0525224171579 0.855924844742
+1 0.0525224171579 0.803254663944
+30 0.105192601681 0.803254663944
+31 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+15 0.0525224171579 0.855924844742
+0 0.0525224171579 0.803254663944
+31 0.105192601681 0.803254663944
+16 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+17 0.253559589386 0.330276489258
+16 0.242618411779 0.342267304659
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+18 0.259069114923 0.314998298883
+17 0.253559589386 0.330276489258
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+19 0.258329153061 0.298784583807
+18 0.259069114923 0.314998298883
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+20 0.251420378685 0.28407022357
+19 0.258329153061 0.298784583807
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+21 0.239420965314 0.27312335372
+20 0.251420378685 0.28407022357
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+22 0.224143624306 0.267613887787
+21 0.239420965314 0.27312335372
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+23 0.207920014858 0.26835244894
+22 0.224143624306 0.267613887787
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+24 0.193217262626 0.275255173445
+23 0.207920014858 0.26835244894
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+25 0.182273030281 0.287265688181
+24 0.193217262626 0.275255173445
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+26 0.176751494408 0.302543014288
+25 0.182273030281 0.287265688181
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+27 0.177503541112 0.318757563829
+26 0.176751494408 0.302543014288
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+28 0.184403434396 0.333450436592
+27 0.177503541112 0.318757563829
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+29 0.196402996778 0.34439638257
+28 0.184403434396 0.333450436592
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+30 0.211677148938 0.349926501513
+29 0.196402996778 0.34439638257
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+31 0.227903932333 0.34916728735
+30 0.211677148938 0.349926501513
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+16 0.242618411779 0.342267304659
+31 0.227903932333 0.34916728735
+kids 0
+OBJECT poly
+name "CTL-62.xfr"
+data 8
+Mesh.005
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003175 0.012924 -0.017239
+0.003175 0.012924 -0.027258
+0.003175 0.023253 -0.017239
+0.003175 0.023253 -0.027258
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+2 0.638291537762 0.856310725212
+0 0.638291478157 0.725111961365
+1 0.765544474125 0.72511190176
+3 0.765544474125 0.856310606003
+kids 0
+OBJECT poly
+name "act.btn"
+data 8
+Mesh.006
+texture "ctl-62.png"
+texrep 1 1
+crease 40.000000
+numvert 24
+0.004243 -0.026244 -0.016292
+0.004243 -0.02737 -0.017417
+0.004243 -0.028962 -0.017417
+0.004243 -0.030088 -0.016292
+0.004243 -0.030088 -0.0147
+0.004243 -0.028962 -0.013574
+0.004243 -0.02737 -0.013574
+0.004243 -0.026244 -0.0147
+0.002926 -0.026244 -0.016292
+0.002926 -0.02737 -0.017417
+0.002926 -0.028962 -0.017417
+0.002926 -0.030088 -0.016292
+0.002926 -0.030088 -0.0147
+0.002926 -0.028962 -0.013574
+0.002926 -0.02737 -0.013574
+0.002926 -0.026244 -0.0147
+0.004485 -0.026466 -0.014792
+0.004485 -0.027462 -0.013796
+0.004485 -0.02887 -0.013796
+0.004485 -0.029866 -0.014792
+0.004485 -0.029866 -0.0162
+0.004485 -0.02887 -0.017195
+0.004485 -0.027462 -0.017195
+0.004485 -0.026466 -0.0162
+numsurf 19
+SURF 0x10
+mat 1
+refs 4
+0 0.426579475403 0.37008485198
+1 0.435408592224 0.36124792695
+9 0.435408592224 0.36124792695
+8 0.426579475403 0.37008485198
+SURF 0x10
+mat 1
+refs 4
+1 0.435408592224 0.36124792695
+2 0.435408592224 0.348753720522
+10 0.435408592224 0.348753720522
+9 0.435408592224 0.36124792695
+SURF 0x10
+mat 1
+refs 4
+2 0.435408592224 0.348753720522
+3 0.426579475403 0.339916795492
+11 0.426579475403 0.339916795492
+10 0.435408592224 0.348753720522
+SURF 0x10
+mat 1
+refs 4
+3 0.426579475403 0.339916795492
+4 0.414085328579 0.339916795492
+12 0.414085328579 0.339916795492
+11 0.426579475403 0.339916795492
+SURF 0x10
+mat 1
+refs 4
+4 0.414085328579 0.339916795492
+5 0.405248343945 0.348753720522
+13 0.405248343945 0.348753720522
+12 0.414085328579 0.339916795492
+SURF 0x10
+mat 1
+refs 4
+5 0.405248343945 0.348753720522
+6 0.405248343945 0.36124792695
+14 0.405248343945 0.36124792695
+13 0.405248343945 0.348753720522
+SURF 0x10
+mat 1
+refs 4
+6 0.405248343945 0.36124792695
+7 0.414085328579 0.37008485198
+15 0.414085328579 0.37008485198
+14 0.405248343945 0.36124792695
+SURF 0x10
+mat 1
+refs 4
+7 0.414085328579 0.37008485198
+0 0.426579475403 0.37008485198
+8 0.426579475403 0.37008485198
+15 0.414085328579 0.37008485198
+SURF 0x10
+mat 1
+refs 4
+0 0.426579475403 0.37008485198
+7 0.414085328579 0.37008485198
+16 0.414807319641 0.368342548609
+23 0.425857484341 0.368342548609
+SURF 0x10
+mat 1
+refs 4
+7 0.414085328579 0.37008485198
+6 0.405248343945 0.36124792695
+17 0.406990647316 0.360525846481
+16 0.414807319641 0.368342548609
+SURF 0x10
+mat 1
+refs 4
+6 0.405248343945 0.36124792695
+5 0.405248343945 0.348753720522
+18 0.406990647316 0.349475771189
+17 0.406990647316 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+5 0.405248343945 0.348753720522
+4 0.414085328579 0.339916795492
+19 0.414807319641 0.341659069061
+18 0.406990647316 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+4 0.414085328579 0.339916795492
+3 0.426579475403 0.339916795492
+20 0.425857484341 0.341659069061
+19 0.414807319641 0.341659069061
+SURF 0x10
+mat 1
+refs 4
+3 0.426579475403 0.339916795492
+2 0.435408592224 0.348753720522
+21 0.433666348457 0.349475771189
+20 0.425857484341 0.341659069061
+SURF 0x10
+mat 1
+refs 4
+2 0.435408592224 0.348753720522
+1 0.435408592224 0.36124792695
+22 0.433666348457 0.360525846481
+21 0.433666348457 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+1 0.435408592224 0.36124792695
+0 0.426579475403 0.37008485198
+23 0.425857484341 0.368342548609
+22 0.433666348457 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+23 0.425857484341 0.368342548609
+16 0.414807319641 0.368342548609
+17 0.406990647316 0.360525846481
+22 0.433666348457 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+22 0.433666348457 0.360525846481
+17 0.406990647316 0.360525846481
+18 0.406990647316 0.349475771189
+21 0.433666348457 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+21 0.433666348457 0.349475771189
+18 0.406990647316 0.349475771189
+19 0.414807319641 0.341659069061
+20 0.425857484341 0.341659069061
+kids 0
+OBJECT poly
+name "freq.001"
+data 8
+Mesh.007
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 0.014946
+0.003139 0.018003 0.016019
+0.003139 0.018003 0.020611
+0.003139 0.025297 0.019538
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.002"
+data 8
+Mesh.008
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 0.008783
+0.003139 0.018003 0.009856
+0.003139 0.018003 0.014449
+0.003139 0.025297 0.013376
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.003"
+data 8
+Mesh.009
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 0.001851
+0.003139 0.018003 0.002924
+0.003139 0.018003 0.007517
+0.003139 0.025297 0.006444
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.004"
+data 8
+Mesh.010
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 -0.005082
+0.003139 0.018003 -0.004009
+0.003139 0.018003 0.000584
+0.003139 0.025297 -0.000489
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.005"
+data 8
+Mesh.011
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 -0.012448
+0.003139 0.018003 -0.011375
+0.003139 0.018003 -0.006782
+0.003139 0.025297 -0.007855
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.dec"
+data 8
+Mesh.012
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003202 0.019053 -0.00615
+0.003202 0.01806 -0.005908
+0.003202 0.01806 -0.004872
+0.003202 0.019053 -0.005114
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.933840274811 0.0771778821945
+3 0.925696730614 0.0771778821945
+2 0.925696730614 0.0642324090004
+1 0.933840274811 0.0642324090004
+kids 0
+OBJECT poly
+name "freq.dwn"
+data 8
+Mesh.013
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003022 -0.006662 -0.017042
+0.003022 -0.02423 -0.017042
+0.003022 -0.006662 -0.008258
+0.003022 -0.02423 -0.008258
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+0 0.628464281559 0.464825630188
+2 0.508616089821 0.464825630188
+3 0.508616030216 0.2251290977
+1 0.628464281559 0.2251290977
+kids 0
+OBJECT poly
+name "freq.knob.large"
+data 8
+Mesh.014
+texture "ctl-62.png"
+texrep 1 1
+crease 40.000000
+numvert 48
+0.011502 -0.011309 -0.02118
+0.0115 -0.013207 -0.022448
+0.011494 -0.015446 -0.022894
+0.0115 -0.017686 -0.022448
+0.011497 -0.019584 -0.02118
+0.011502 -0.020853 -0.019281
+0.011504 -0.021299 -0.017042
+0.011502 -0.020853 -0.014802
+0.011497 -0.019584 -0.012904
+0.0115 -0.017686 -0.011635
+0.011494 -0.015446 -0.01119
+0.0115 -0.013207 -0.011635
+0.011502 -0.011309 -0.012904
+0.011497 -0.010039 -0.014802
+0.011495 -0.009593 -0.017042
+0.011497 -0.010039 -0.019281
+0.010891 -0.007442 -0.020357
+0.010893 -0.006782 -0.017042
+0.010891 -0.007442 -0.013726
+0.010893 -0.00932 -0.010916
+0.010889 -0.01213 -0.009038
+0.010889 -0.015446 -0.008378
+0.010888 -0.018762 -0.009038
+0.010896 -0.021574 -0.010916
+0.010886 -0.02345 -0.013726
+0.010895 -0.024111 -0.017041
+0.010886 -0.02345 -0.020357
+0.010896 -0.021574 -0.023168
+0.010888 -0.018762 -0.025047
+0.010889 -0.015446 -0.025706
+0.010889 -0.01213 -0.025047
+0.010893 -0.00932 -0.023168
+0.003025 -0.007441 -0.020357
+0.003027 -0.006783 -0.017042
+0.003025 -0.007441 -0.013726
+0.003026 -0.00932 -0.010916
+0.003023 -0.012131 -0.009038
+0.003022 -0.015446 -0.008378
+0.003022 -0.018762 -0.009038
+0.00303 -0.021574 -0.010916
+0.003031 -0.023452 -0.013726
+0.003029 -0.024112 -0.017042
+0.003031 -0.023452 -0.020357
+0.00303 -0.021574 -0.023168
+0.003022 -0.018762 -0.025047
+0.003022 -0.015446 -0.025706
+0.003023 -0.012131 -0.025047
+0.003026 -0.00932 -0.023168
+numsurf 32
+SURF 0x10
+mat 1
+refs 4
+0 0.681315302849 0.39272326231
+1 0.696943879128 0.369354456663
+30 0.72895103693 0.382609218359
+31 0.705807030201 0.417218744755
+SURF 0x10
+mat 1
+refs 4
+29 0.737064003944 0.341771930456
+30 0.72895103693 0.382609218359
+1 0.696943879128 0.369354456663
+2 0.702431261539 0.341774225235
+SURF 0x10
+mat 1
+refs 4
+28 0.72895103693 0.300935894251
+29 0.737064003944 0.341771930456
+2 0.702431261539 0.341774225235
+3 0.696943879128 0.314183682203
+SURF 0x10
+mat 1
+refs 4
+27 0.705806910992 0.266300916672
+28 0.72895103693 0.300935894251
+3 0.696943879128 0.314183682203
+4 0.681315302849 0.290801167488
+SURF 0x10
+mat 1
+refs 4
+26 0.671187996864 0.243188887835
+27 0.705806910992 0.266300916672
+4 0.681315302849 0.290801167488
+5 0.657934963703 0.275174319744
+SURF 0x10
+mat 1
+refs 4
+25 0.630345463753 0.235042914748
+26 0.671187996864 0.243188887835
+5 0.657934963703 0.275174319744
+6 0.63035929203 0.269683331251
+SURF 0x10
+mat 1
+refs 4
+24 0.589516758919 0.243188887835
+25 0.630345463753 0.235042914748
+6 0.63035929203 0.269683331251
+7 0.602769732475 0.275174379349
+SURF 0x10
+mat 1
+refs 4
+23 0.554897606373 0.266300976276
+24 0.589516758919 0.243188887835
+7 0.602769732475 0.275174379349
+8 0.579389333725 0.290801227093
+SURF 0x10
+mat 1
+refs 4
+22 0.531767487526 0.300935894251
+23 0.554897606373 0.266300976276
+8 0.579389333725 0.290801227093
+9 0.563760757446 0.314183682203
+SURF 0x10
+mat 1
+refs 4
+21 0.52364051342 0.341771930456
+22 0.531767487526 0.300935894251
+9 0.563760757446 0.314183682203
+10 0.558273494244 0.341774344444
+SURF 0x10
+mat 1
+refs 4
+20 0.531767487526 0.382609218359
+21 0.52364051342 0.341771930456
+10 0.558273494244 0.341774344444
+11 0.563760757446 0.369354456663
+SURF 0x10
+mat 1
+refs 4
+19 0.554897606373 0.417218744755
+20 0.531767487526 0.382609218359
+11 0.563760757446 0.369354456663
+12 0.579389333725 0.39272326231
+SURF 0x10
+mat 1
+refs 4
+18 0.589516758919 0.440356194973
+19 0.554897606373 0.417218744755
+12 0.579389333725 0.39272326231
+13 0.602769732475 0.408364892006
+SURF 0x10
+mat 1
+refs 4
+17 0.63035929203 0.448476850986
+18 0.589516758919 0.440356194973
+13 0.602769732475 0.408364892006
+14 0.63035929203 0.413855850697
+SURF 0x10
+mat 1
+refs 4
+16 0.671188056469 0.440356194973
+17 0.63035929203 0.448476850986
+14 0.63035929203 0.413855850697
+15 0.657934963703 0.408364892006
+SURF 0x10
+mat 1
+refs 4
+15 0.657934963703 0.408364892006
+0 0.681315302849 0.39272326231
+31 0.705807030201 0.417218744755
+16 0.671188056469 0.440356194973
+SURF 0x10
+mat 1
+refs 4
+31 0.0603405237198 0.71993303299
+47 0.0603405237198 0.621863663197
+32 0.158409923315 0.621863663197
+16 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+33 0.0603405237198 0.71993303299
+17 0.0603405237198 0.621863663197
+16 0.158409923315 0.621863663197
+32 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+34 0.0603405237198 0.71993303299
+18 0.0603405237198 0.621863663197
+17 0.158409923315 0.621863663197
+33 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+35 0.0603405237198 0.71993303299
+19 0.0603405237198 0.621863663197
+18 0.158409923315 0.621863663197
+34 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+36 0.0603405237198 0.71993303299
+20 0.0603405237198 0.621863663197
+19 0.158409923315 0.621863663197
+35 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+37 0.0603405237198 0.71993303299
+21 0.0603405237198 0.621863663197
+20 0.158409923315 0.621863663197
+36 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+38 0.0603405237198 0.71993303299
+22 0.0603405237198 0.621863663197
+21 0.158409923315 0.621863663197
+37 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+39 0.0603405237198 0.71993303299
+23 0.0603405237198 0.621863663197
+22 0.158409923315 0.621863663197
+38 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+40 0.0603405237198 0.71993303299
+24 0.0603405237198 0.621863663197
+23 0.158409923315 0.621863663197
+39 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+41 0.0603405237198 0.71993303299
+25 0.0603405237198 0.621863663197
+24 0.158409923315 0.621863663197
+40 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+42 0.0603405237198 0.71993303299
+26 0.0603405237198 0.621863663197
+25 0.158409923315 0.621863663197
+41 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+43 0.0603405237198 0.71993303299
+27 0.0603405237198 0.621863663197
+26 0.158409923315 0.621863663197
+42 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+44 0.0603405237198 0.71993303299
+28 0.0603405237198 0.621863663197
+27 0.158409923315 0.621863663197
+43 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+45 0.0603405237198 0.71993303299
+29 0.0603405237198 0.621863663197
+28 0.158409923315 0.621863663197
+44 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+46 0.0603405237198 0.71993303299
+30 0.0603405237198 0.621863663197
+29 0.158409923315 0.621863663197
+45 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+47 0.0603405237198 0.71993303299
+31 0.0603405237198 0.621863663197
+30 0.158409923315 0.621863663197
+46 0.158409923315 0.71993303299
+kids 0
+OBJECT poly
+name "freq.knob.small"
+data 8
+Mesh.028
+texture "ctl-62.png"
+texrep 1 1
+crease 40.000000
+numvert 33
+0.02046 -0.015446 -0.017042
+0.020463 -0.01004 -0.019281
+0.020461 -0.009594 -0.017042
+0.020463 -0.01004 -0.014802
+0.020468 -0.01131 -0.012904
+0.020465 -0.013207 -0.011635
+0.02046 -0.015446 -0.01119
+0.020466 -0.017686 -0.011635
+0.020463 -0.019585 -0.012904
+0.020468 -0.020854 -0.014802
+0.020459 -0.021298 -0.017042
+0.020468 -0.020854 -0.019281
+0.020463 -0.019585 -0.02118
+0.020466 -0.017686 -0.022448
+0.02046 -0.015446 -0.022894
+0.020465 -0.013207 -0.022448
+0.020468 -0.01131 -0.02118
+0.010502 -0.011309 -0.02118
+0.0105 -0.013207 -0.022448
+0.010494 -0.015446 -0.022894
+0.0105 -0.017686 -0.022448
+0.010497 -0.019584 -0.02118
+0.010502 -0.020853 -0.019281
+0.010504 -0.021299 -0.017042
+0.010502 -0.020853 -0.014802
+0.010497 -0.019584 -0.012904
+0.0105 -0.017686 -0.011635
+0.010494 -0.015446 -0.01119
+0.0105 -0.013207 -0.011635
+0.010502 -0.011309 -0.012904
+0.010497 -0.010039 -0.014802
+0.010495 -0.009593 -0.017042
+0.010497 -0.010039 -0.019281
+numsurf 32
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+16 0.681315302849 0.392718017101
+1 0.657934963703 0.408358514309
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+1 0.657934963703 0.408358514309
+2 0.63035929203 0.413849562407
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+2 0.63035929203 0.413849562407
+3 0.602769732475 0.408358514309
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+3 0.602769732475 0.408358514309
+4 0.579389333725 0.392718017101
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+4 0.579389333725 0.392718017101
+5 0.563760757446 0.369349330664
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+5 0.563760757446 0.369349330664
+6 0.558273494244 0.341769099236
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+6 0.558273494244 0.341769099236
+7 0.563760757446 0.314178436995
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+7 0.563760757446 0.314178436995
+8 0.579389333725 0.290795952082
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+8 0.579389333725 0.290795952082
+9 0.602769732475 0.275168001652
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+9 0.602769732475 0.275168001652
+10 0.63035929203 0.269701093435
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+10 0.63035929203 0.269701093435
+11 0.657934963703 0.275168001652
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+11 0.657934963703 0.275168001652
+12 0.681315302849 0.290795892477
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+12 0.681315302849 0.290795892477
+13 0.696943879128 0.314178436995
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+13 0.696943879128 0.314178436995
+14 0.702431261539 0.341769099236
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+14 0.702431261539 0.341769099236
+15 0.696943879128 0.369349330664
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+15 0.696943879128 0.369349330664
+16 0.681315302849 0.392718017101
+SURF 0x10
+mat 1
+refs 4
+17 0.0603405237198 0.71993303299
+32 0.0603405237198 0.621863663197
+1 0.158409923315 0.621863663197
+16 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+32 0.0603405237198 0.71993303299
+31 0.0603405237198 0.621863663197
+2 0.158409923315 0.621863663197
+1 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+31 0.0603405237198 0.71993303299
+30 0.0603405237198 0.621863663197
+3 0.158409923315 0.621863663197
+2 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+30 0.0603405237198 0.71993303299
+29 0.0603405237198 0.621863663197
+4 0.158409923315 0.621863663197
+3 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+29 0.0603405237198 0.71993303299
+28 0.0603405237198 0.621863663197
+5 0.158409923315 0.621863663197
+4 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+28 0.0603405237198 0.71993303299
+27 0.0603405237198 0.621863663197
+6 0.158409923315 0.621863663197
+5 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+27 0.0603405237198 0.71993303299
+26 0.0603405237198 0.621863663197
+7 0.158409923315 0.621863663197
+6 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+26 0.0603405237198 0.71993303299
+25 0.0603405237198 0.621863663197
+8 0.158409923315 0.621863663197
+7 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+25 0.0603405237198 0.71993303299
+24 0.0603405237198 0.621863663197
+9 0.158409923315 0.621863663197
+8 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+24 0.0603405237198 0.71993303299
+23 0.0603405237198 0.621863663197
+10 0.158409923315 0.621863663197
+9 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+23 0.0603405237198 0.71993303299
+22 0.0603405237198 0.621863663197
+11 0.158409923315 0.621863663197
+10 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+22 0.0603405237198 0.71993303299
+21 0.0603405237198 0.621863663197
+12 0.158409923315 0.621863663197
+11 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+21 0.0603405237198 0.71993303299
+20 0.0603405237198 0.621863663197
+13 0.158409923315 0.621863663197
+12 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+20 0.0603405237198 0.71993303299
+19 0.0603405237198 0.621863663197
+14 0.158409923315 0.621863663197
+13 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+19 0.0603405237198 0.71993303299
+18 0.0603405237198 0.621863663197
+15 0.158409923315 0.621863663197
+14 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+18 0.0603405237198 0.71993303299
+17 0.0603405237198 0.621863663197
+16 0.158409923315 0.621863663197
+15 0.158409923315 0.71993303299
+kids 0
+OBJECT poly
+name "freq.up"
+data 8
+Mesh.015
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003022 -0.006662 -0.017042
+0.003022 -0.02423 -0.017042
+0.003022 -0.02423 -0.025826
+0.003022 -0.006662 -0.025826
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+3 0.748312532902 0.464825630188
+0 0.628464281559 0.464825630188
+1 0.628464281559 0.2251290977
+2 0.748312532902 0.2251290977
+kids 0
+OBJECT poly
+name "mem.annun"
+data 8
+Mesh.016
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.006882 0.01649
+0.003139 0.003499 0.016498
+0.003139 0.003499 0.02398
+0.003139 0.006882 0.023971
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.135593175888 0.0792972072959
+3 0.0378846973181 0.0792972296476
+2 0.0377717465162 0.035107113421
+1 0.135480225086 0.035107113421
+kids 0
+OBJECT poly
+name "pwr.off"
+data 8
+Mesh.017
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.002944 -0.026036 0.021504
+0.002944 -0.010631 0.021504
+0.002944 -0.026036 0.013802
+0.002944 -0.010631 0.013802
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+0 0.114473424852 0.201592057943
+2 0.220019072294 0.201592057943
+3 0.220019072294 0.412683337927
+1 0.114473424852 0.412683337927
+kids 0
+OBJECT poly
+name "pwr.on"
+data 8
+Mesh.018
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.002944 -0.010631 0.013802
+0.002944 -0.026036 0.013802
+0.002944 -0.026036 0.0061
+0.002944 -0.010632 0.0061
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+3 0.325564712286 0.412683337927
+0 0.220019072294 0.412683337927
+1 0.220019072294 0.201592057943
+2 0.325564712286 0.201592057943
+kids 0
+OBJECT poly
+name "stby.001"
+data 8
+Mesh.019
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 0.015554
+0.003139 0.0093 0.016627
+0.003139 0.0093 0.02122
+0.003139 0.016594 0.020147
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.002"
+data 8
+Mesh.020
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 0.009392
+0.003139 0.0093 0.010465
+0.003139 0.0093 0.015057
+0.003139 0.016594 0.013984
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.003"
+data 8
+Mesh.021
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 0.002459
+0.003139 0.0093 0.003532
+0.003139 0.0093 0.008125
+0.003139 0.016594 0.007052
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.004"
+data 8
+Mesh.022
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 -0.004473
+0.003139 0.0093 -0.0034
+0.003139 0.0093 0.001192
+0.003139 0.016594 0.000119
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.005"
+data 8
+Mesh.023
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 -0.011839
+0.003139 0.0093 -0.010766
+0.003139 0.0093 -0.006174
+0.003139 0.016594 -0.007247
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.dec"
+data 8
+Mesh.024
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003202 0.01035 -0.005541
+0.003202 0.009357 -0.005299
+0.003202 0.009357 -0.004264
+0.003202 0.01035 -0.004506
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.933840274811 0.0771778821945
+3 0.925696730614 0.0771778821945
+2 0.925696730614 0.0642324090004
+1 0.933840274811 0.0642324090004
+kids 0
+OBJECT poly
+name "sto.btn"
+data 8
+Mesh.025
+texture "ctl-62.png"
+texrep 1 1
+crease 40.000000
+numvert 24
+0.004243 -0.01313 -0.001986
+0.004243 -0.014256 -0.003111
+0.004243 -0.015848 -0.003111
+0.004243 -0.016974 -0.001986
+0.004243 -0.016974 -0.000394
+0.004243 -0.015848 0.000732
+0.004243 -0.014256 0.000732
+0.004243 -0.01313 -0.000394
+0.002926 -0.01313 -0.001986
+0.002926 -0.014256 -0.003111
+0.002926 -0.015848 -0.003111
+0.002926 -0.016974 -0.001986
+0.002926 -0.016974 -0.000394
+0.002926 -0.015848 0.000732
+0.002926 -0.014256 0.000732
+0.002926 -0.01313 -0.000394
+0.004485 -0.013353 -0.000486
+0.004485 -0.014348 0.00051
+0.004485 -0.015756 0.00051
+0.004485 -0.016752 -0.000486
+0.004485 -0.016752 -0.001894
+0.004485 -0.015756 -0.002889
+0.004485 -0.014348 -0.002889
+0.004485 -0.013353 -0.001894
+numsurf 19
+SURF 0x10
+mat 1
+refs 4
+0 0.426304638386 0.369004756212
+1 0.435133755207 0.360167771578
+9 0.435133755207 0.360167771578
+8 0.426304638386 0.369004756212
+SURF 0x10
+mat 1
+refs 4
+1 0.435133755207 0.360167771578
+2 0.435133755207 0.347673624754
+10 0.435133755207 0.347673624754
+9 0.435133755207 0.360167771578
+SURF 0x10
+mat 1
+refs 4
+2 0.435133755207 0.347673624754
+3 0.426304638386 0.338836669922
+11 0.426304638386 0.338836669922
+10 0.435133755207 0.347673624754
+SURF 0x10
+mat 1
+refs 4
+3 0.426304638386 0.338836669922
+4 0.413810491562 0.338836669922
+12 0.413810491562 0.338836669922
+11 0.426304638386 0.338836669922
+SURF 0x10
+mat 1
+refs 4
+4 0.413810491562 0.338836669922
+5 0.404973506927 0.347673624754
+13 0.404973506927 0.347673624754
+12 0.413810491562 0.338836669922
+SURF 0x10
+mat 1
+refs 4
+5 0.404973506927 0.347673624754
+6 0.404973506927 0.360167771578
+14 0.404973506927 0.360167771578
+13 0.404973506927 0.347673624754
+SURF 0x10
+mat 1
+refs 4
+6 0.404973506927 0.360167771578
+7 0.413810491562 0.369004756212
+15 0.413810491562 0.369004756212
+14 0.404973506927 0.360167771578
+SURF 0x10
+mat 1
+refs 4
+7 0.413810491562 0.369004756212
+0 0.426304638386 0.369004756212
+8 0.426304638386 0.369004756212
+15 0.413810491562 0.369004756212
+SURF 0x10
+mat 1
+refs 4
+0 0.426304638386 0.369004756212
+7 0.413810491562 0.369004756212
+16 0.414532542229 0.367254585028
+23 0.425582587719 0.367254585028
+SURF 0x10
+mat 1
+refs 4
+7 0.413810491562 0.369004756212
+6 0.404973506927 0.360167771578
+17 0.406715869904 0.359445750713
+16 0.414532542229 0.367254585028
+SURF 0x10
+mat 1
+refs 4
+6 0.404973506927 0.360167771578
+5 0.404973506927 0.347673624754
+18 0.406715869904 0.348395645618
+17 0.406715869904 0.359445750713
+SURF 0x10
+mat 1
+refs 4
+5 0.404973506927 0.347673624754
+4 0.413810491562 0.338836669922
+19 0.414532542229 0.340578913689
+18 0.406715869904 0.348395645618
+SURF 0x10
+mat 1
+refs 4
+4 0.413810491562 0.338836669922
+3 0.426304638386 0.338836669922
+20 0.425582587719 0.340578913689
+19 0.414532542229 0.340578913689
+SURF 0x10
+mat 1
+refs 4
+3 0.426304638386 0.338836669922
+2 0.435133755207 0.347673624754
+21 0.433391451836 0.348395645618
+20 0.425582587719 0.340578913689
+SURF 0x10
+mat 1
+refs 4
+2 0.435133755207 0.347673624754
+1 0.435133755207 0.360167771578
+22 0.433391451836 0.359445750713
+21 0.433391451836 0.348395645618
+SURF 0x10
+mat 1
+refs 4
+1 0.435133755207 0.360167771578
+0 0.426304638386 0.369004756212
+23 0.425582587719 0.367254585028
+22 0.433391451836 0.359445750713
+SURF 0x10
+mat 1
+refs 4
+23 0.425582587719 0.367254585028
+16 0.414532542229 0.367254585028
+17 0.406715869904 0.359445750713
+22 0.433391451836 0.359445750713
+SURF 0x10
+mat 1
+refs 4
+22 0.433391451836 0.359445750713
+17 0.406715869904 0.359445750713
+18 0.406715869904 0.348395645618
+21 0.433391451836 0.348395645618
+SURF 0x10
+mat 1
+refs 4
+21 0.433391451836 0.348395645618
+18 0.406715869904 0.348395645618
+19 0.414532542229 0.340578913689
+20 0.425582587719 0.340578913689
+kids 0
+OBJECT poly
+name "test.btn"
+data 8
+Mesh.026
+texture "ctl-62.png"
+texrep 1 1
+crease 40.000000
+numvert 24
+0.004243 -0.026244 -0.001986
+0.004243 -0.02737 -0.003111
+0.004243 -0.028962 -0.003111
+0.004243 -0.030088 -0.001986
+0.004243 -0.030088 -0.000394
+0.004243 -0.028962 0.000732
+0.004243 -0.02737 0.000732
+0.004243 -0.026244 -0.000394
+0.002926 -0.026244 -0.001986
+0.002926 -0.02737 -0.003111
+0.002926 -0.028962 -0.003111
+0.002926 -0.030088 -0.001986
+0.002926 -0.030088 -0.000394
+0.002926 -0.028962 0.000732
+0.002926 -0.02737 0.000732
+0.002926 -0.026244 -0.000394
+0.004485 -0.026466 -0.000486
+0.004485 -0.027462 0.00051
+0.004485 -0.02887 0.00051
+0.004485 -0.029866 -0.000486
+0.004485 -0.029866 -0.001894
+0.004485 -0.02887 -0.002889
+0.004485 -0.027462 -0.002889
+0.004485 -0.026466 -0.001894
+numsurf 19
+SURF 0x10
+mat 1
+refs 4
+0 0.427904635668 0.37008485198
+1 0.436733752489 0.36124792695
+9 0.436733752489 0.36124792695
+8 0.427904635668 0.37008485198
+SURF 0x10
+mat 1
+refs 4
+1 0.436733752489 0.36124792695
+2 0.436733752489 0.348753720522
+10 0.436733752489 0.348753720522
+9 0.436733752489 0.36124792695
+SURF 0x10
+mat 1
+refs 4
+2 0.436733752489 0.348753720522
+3 0.427904635668 0.339916795492
+11 0.427904635668 0.339916795492
+10 0.436733752489 0.348753720522
+SURF 0x10
+mat 1
+refs 4
+3 0.427904635668 0.339916795492
+4 0.415410488844 0.339916795492
+12 0.415410488844 0.339916795492
+11 0.427904635668 0.339916795492
+SURF 0x10
+mat 1
+refs 4
+4 0.415410488844 0.339916795492
+5 0.406573563814 0.348753720522
+13 0.406573563814 0.348753720522
+12 0.415410488844 0.339916795492
+SURF 0x10
+mat 1
+refs 4
+5 0.406573563814 0.348753720522
+6 0.406573563814 0.36124792695
+14 0.406573563814 0.36124792695
+13 0.406573563814 0.348753720522
+SURF 0x10
+mat 1
+refs 4
+6 0.406573563814 0.36124792695
+7 0.415410488844 0.37008485198
+15 0.415410488844 0.37008485198
+14 0.406573563814 0.36124792695
+SURF 0x10
+mat 1
+refs 4
+7 0.415410488844 0.37008485198
+0 0.427904635668 0.37008485198
+8 0.427904635668 0.37008485198
+15 0.415410488844 0.37008485198
+SURF 0x10
+mat 1
+refs 4
+0 0.427904635668 0.37008485198
+7 0.415410488844 0.37008485198
+16 0.416132539511 0.368342548609
+23 0.427182585001 0.368342548609
+SURF 0x10
+mat 1
+refs 4
+7 0.415410488844 0.37008485198
+6 0.406573563814 0.36124792695
+17 0.408315867186 0.360525846481
+16 0.416132539511 0.368342548609
+SURF 0x10
+mat 1
+refs 4
+6 0.406573563814 0.36124792695
+5 0.406573563814 0.348753720522
+18 0.408315867186 0.349475771189
+17 0.408315867186 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+5 0.406573563814 0.348753720522
+4 0.415410488844 0.339916795492
+19 0.416132539511 0.341659069061
+18 0.408315867186 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+4 0.415410488844 0.339916795492
+3 0.427904635668 0.339916795492
+20 0.427182585001 0.341659069061
+19 0.416132539511 0.341659069061
+SURF 0x10
+mat 1
+refs 4
+3 0.427904635668 0.339916795492
+2 0.436733752489 0.348753720522
+21 0.434991449118 0.349475771189
+20 0.427182585001 0.341659069061
+SURF 0x10
+mat 1
+refs 4
+2 0.436733752489 0.348753720522
+1 0.436733752489 0.36124792695
+22 0.434991449118 0.360525846481
+21 0.434991449118 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+1 0.436733752489 0.36124792695
+0 0.427904635668 0.37008485198
+23 0.427182585001 0.368342548609
+22 0.434991449118 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+23 0.427182585001 0.368342548609
+16 0.416132539511 0.368342548609
+17 0.408315867186 0.360525846481
+22 0.434991449118 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+22 0.434991449118 0.360525846481
+17 0.408315867186 0.360525846481
+18 0.408315867186 0.349475771189
+21 0.434991449118 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+21 0.434991449118 0.349475771189
+18 0.408315867186 0.349475771189
+19 0.416132539511 0.341659069061
+20 0.427182585001 0.341659069061
+kids 0
+OBJECT poly
+name "xmt.annun"
+data 8
+Mesh.027
+texture "ctl-62.png"
+texrep 1 1
+crease 30.000000
+numvert 25
+0.003657 -0.026232 0.007594
+0.003657 -0.027365 0.006461
+0.003657 -0.028967 0.006461
+0.003657 -0.0301 0.007594
+0.003657 -0.0301 0.009197
+0.003657 -0.028967 0.01033
+0.003657 -0.027365 0.01033
+0.003657 -0.026232 0.009197
+0.002984 -0.025837 0.007431
+0.002984 -0.027201 0.006067
+0.002984 -0.029131 0.006067
+0.002984 -0.030495 0.007431
+0.002984 -0.030495 0.00936
+0.002984 -0.02913 0.010724
+0.002984 -0.027201 0.010724
+0.002984 -0.025837 0.00936
+0.00403 -0.027153 0.008815
+0.00403 -0.027746 0.009409
+0.00403 -0.028586 0.009409
+0.00403 -0.029179 0.008815
+0.00403 -0.029179 0.007976
+0.00403 -0.028586 0.007382
+0.00403 -0.027746 0.007382
+0.00403 -0.027153 0.007976
+0.004171 -0.028166 0.008395
+numsurf 24
+SURF 0x10
+mat 1
+refs 4
+0 0.306933730841 0.200225278735
+1 0.318501800299 0.188657224178
+9 0.322524517775 0.190331682563
+8 0.30859798193 0.204258263111
+SURF 0x10
+mat 1
+refs 4
+1 0.318501800299 0.188657224178
+2 0.318501800299 0.172300755978
+10 0.322524517775 0.170626237988
+9 0.322524517775 0.190331682563
+SURF 0x10
+mat 1
+refs 4
+2 0.318501800299 0.172300755978
+3 0.306933730841 0.160732701421
+11 0.30859798193 0.156699717045
+10 0.322524517775 0.170626237988
+SURF 0x10
+mat 1
+refs 4
+3 0.306933730841 0.160732701421
+4 0.290566951036 0.160732701421
+12 0.288902699947 0.156699717045
+11 0.30859798193 0.156699717045
+SURF 0x10
+mat 1
+refs 4
+4 0.290566951036 0.160732701421
+5 0.278998970985 0.172300755978
+13 0.274976164103 0.170636430383
+12 0.288902699947 0.156699717045
+SURF 0x10
+mat 1
+refs 4
+5 0.278998970985 0.172300755978
+6 0.278998970985 0.188657224178
+14 0.274976164103 0.190331682563
+13 0.274976164103 0.170636430383
+SURF 0x10
+mat 1
+refs 4
+6 0.278998970985 0.188657224178
+7 0.290566951036 0.200225278735
+15 0.288902699947 0.204258263111
+14 0.274976164103 0.190331682563
+SURF 0x10
+mat 1
+refs 4
+7 0.290566951036 0.200225278735
+0 0.306933730841 0.200225278735
+8 0.30859798193 0.204258263111
+15 0.288902699947 0.204258263111
+SURF 0x10
+mat 1
+refs 4
+0 0.306933730841 0.200225278735
+7 0.290566951036 0.200225278735
+16 0.294467270374 0.190821796656
+23 0.30303350091 0.190821796656
+SURF 0x10
+mat 1
+refs 4
+7 0.290566951036 0.200225278735
+6 0.278998970985 0.188657224178
+17 0.288402467966 0.184767216444
+16 0.294467270374 0.190821796656
+SURF 0x10
+mat 1
+refs 4
+6 0.278998970985 0.188657224178
+5 0.278998970985 0.172300755978
+18 0.288402467966 0.176190719008
+17 0.288402467966 0.184767216444
+SURF 0x10
+mat 1
+refs 4
+5 0.278998970985 0.172300755978
+4 0.290566951036 0.160732701421
+19 0.294467270374 0.1701361835
+18 0.288402467966 0.176190719008
+SURF 0x10
+mat 1
+refs 4
+4 0.290566951036 0.160732701421
+3 0.306933730841 0.160732701421
+20 0.30303350091 0.1701361835
+19 0.294467270374 0.1701361835
+SURF 0x10
+mat 1
+refs 4
+3 0.306933730841 0.160732701421
+2 0.318501800299 0.172300755978
+21 0.309098213911 0.176190719008
+20 0.30303350091 0.1701361835
+SURF 0x10
+mat 1
+refs 4
+2 0.318501800299 0.172300755978
+1 0.318501800299 0.188657224178
+22 0.309098213911 0.184767216444
+21 0.309098213911 0.176190719008
+SURF 0x10
+mat 1
+refs 4
+1 0.318501800299 0.188657224178
+0 0.306933730841 0.200225278735
+23 0.30303350091 0.190821796656
+22 0.309098213911 0.184767216444
+SURF 0x10
+mat 1
+refs 3
+23 0.30303350091 0.190821796656
+16 0.294467270374 0.190821796656
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+16 0.294467270374 0.190821796656
+17 0.288402467966 0.184767216444
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+17 0.288402467966 0.184767216444
+18 0.288402467966 0.176190719008
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+18 0.288402467966 0.176190719008
+19 0.294467270374 0.1701361835
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+19 0.294467270374 0.1701361835
+20 0.30303350091 0.1701361835
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+20 0.30303350091 0.1701361835
+21 0.309098213911 0.176190719008
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+21 0.309098213911 0.176190719008
+22 0.309098213911 0.184767216444
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+22 0.309098213911 0.184767216444
+23 0.30303350091 0.190821796656
+24 0.298755466938 0.180478990078
+kids 0
diff --git a/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62.nas b/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62.nas
new file mode 100644
index 000000000..897a802cf
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/ADF-462/ctl62.nas
@@ -0,0 +1,229 @@
+###############################################################################
+##
+## Nasal for dual control of a ADF 462 radio over the multiplayer
+## network.
+##
+## Copyright (C) 2008 - 2010 Anders Gidenstam (anders(at)gidenstam.org)
+## This file is licensed under the GPL license version 2 or later.
+##
+###############################################################################
+
+# Note:
+# This module MUST be loaded as ADF462.
+#
+
+# Slave button presses.
+var swap_btn = "frq-swap-btn";
+var freq_decS = "freq-decS-clicked";
+var freq_incS = "freq-incS-clicked";
+var freq_decL = "freq-decL-clicked";
+var freq_incL = "freq-incL-clicked";
+
+# Settings
+var freq_selected = "frequencies/selected-khz";
+var freq_standby = "frequencies/standby-khz";
+
+var adf_base = ["instrumentation/adf[0]",
+ "instrumentation/adf[1]"];
+
+###########################################################################
+var master_ctl62 = {
+ new : func(n) {
+ var obj = {};
+ obj.parents = [master_ctl62];
+ obj.adf_base = props.globals.getNode(adf_base[n]);
+ return obj;
+ },
+ swap : func() {
+ var tmp = me.adf_base.getNode(freq_selected).getValue();
+ me.adf_base.getNode(freq_selected).setValue
+ (me.adf_base.getNode(freq_standby).getValue());
+ me.adf_base.getNode(freq_standby).setValue(tmp);
+ },
+ adjust_frequency : func(d) {
+ adjust_radio_frequency(
+ me.adf_base.getNode(freq_standby),
+ d,
+ 190.0,
+ 1800.0);
+ }
+};
+
+###########################################################################
+var slave_ctl62 = {
+ new : func(n, airoot) {
+ var obj = {};
+ obj.parents = [slave_ctl62];
+ obj.root = airoot;
+ obj.adf_base = props.globals.getNode(adf_base[n]);
+ return obj;
+ },
+ swap : func() {
+ var p = me.adf_base.getNode(swap_btn);
+ print("ADF62[?].SWAP");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ adjust_frequency : func(d) {
+ var p = 0;
+ if (abs(d) < 5.0) {
+ p = (d < 0) ? me.adf_base.getNode(freq_decS)
+ : me.adf_base.getNode(freq_incS);
+ } else {
+ p = (d < 0) ? me.adf_base.getNode(freq_decL)
+ : me.adf_base.getNode(freq_incL);
+ }
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ }
+};
+
+###########################################################################
+# The ADF 462 pick animations default to master.
+# NOTE: Use make_master() and make_slave_to().
+# Do NOT change ctl62 directly.
+var ctl62 = [master_ctl62.new(0), master_ctl62.new(1)];
+
+
+###########################################################################
+# API for pick animations and dual control setup.
+###########################################################################
+
+###########################################################################
+# n - Adf#
+var make_master = func(n) {
+ ctl62[n] = master_ctl62.new(n);
+}
+
+###########################################################################
+# n - Adf#
+var make_slave_to = func(n, airoot) {
+ ctl62[n] = slave_ctl62.new(n, airoot);
+}
+
+###########################################################################
+# n - Adf#
+var swap = func(n) {
+ ctl62[n].swap();
+}
+
+###########################################################################
+# n - Adf#
+# d - adjustment
+var adjust_frequency = func(n, d) {
+ ctl62[n].adjust_frequency(d);
+}
+
+###########################################################################
+# Create aliases to drive a radio 3d model in an AI/MP model.
+# n - Adf#
+var animate_aimodel = func(n, airoot) {
+ var p = "systems/electrical/outputs/adf["~ n ~"]";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = "instrumentation/adf["~ n ~"]/serviceable";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = adf_base[n] ~ "/" ~ freq_selected;
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = adf_base[n] ~ "/" ~ freq_standby;
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+}
+
+###########################################################################
+# Create a TDMEncoder node array for sending the current radio state to
+# slaves.
+# n - Adf#
+var master_send_state = func(n) {
+ var b = props.globals.getNode(adf_base[n]);
+ return
+ [
+ b.getNode(freq_selected),
+ b.getNode(freq_standby)
+ ];
+}
+
+###########################################################################
+# Create a SwitchDecoder action array for processing button presses
+# from a slave.
+# n - Adf#
+var master_receive_slave_buttons = func(n) {
+ return
+ [
+ func (b) {
+ if (b) { swap(n); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, -1.0); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, 1.0); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, -10.0); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, 10.0); }
+ }
+ ];
+}
+
+###########################################################################
+# Create a TDMDecoder action array for processing the radio state
+# from the master.
+# n - Adf#
+var slave_receive_master_state = func(n) {
+ var b = props.globals.getNode(adf_base[n]);
+ return
+ [
+ func (v) {
+ b.getNode(freq_selected).setValue(v);
+ },
+ func (v) {
+ b.getNode(freq_standby).setValue(v);
+ }
+ ];
+}
+
+###########################################################################
+# Create a SwitchEncoder node array for sending button presses
+# to the master
+# n - Adf#
+var slave_send_buttons = func(n) {
+ var b = props.globals.getNode(adf_base[n]);
+ return
+ [
+ b.getNode(swap_btn, 1),
+ b.getNode(freq_decS, 1),
+ b.getNode(freq_incS, 1),
+ b.getNode(freq_decL, 1),
+ b.getNode(freq_incL, 1),
+ ];
+}
+
+
+
+###########################################################################
+# (Not so) Generic frequency stepper.
+# f - frequency property
+# d - change
+# min - min frequency
+# max - max frequency
+var adjust_radio_frequency = func(f, d, min, max) {
+ var old = f.getValue();
+ var new = old + d;
+ if (new < min - 0.05) {
+ new = max + (new - min);
+ if ((max - new) >= -d) new += -d;
+ }
+ if (new > max + 0.05) {
+ new = min + (new - max);
+ if ((new - min) >= d) new -= d;
+ }
+# print("Old: " ~ old ~ " Intermediate: " ~ (old + d) ~ " New: " ~ new);
+ f.setValue(new);
+}
diff --git a/Aircraft/Generic/DualControl/Instruments/KAP-140/KAP140TwoAxisAlt.xml b/Aircraft/Generic/DualControl/Instruments/KAP-140/KAP140TwoAxisAlt.xml
new file mode 100644
index 000000000..17bf86389
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KAP-140/KAP140TwoAxisAlt.xml
@@ -0,0 +1,13 @@
+
+
+
+
+ null.ac
+
+
+ Aircraft/Instruments-3d/kap140/KAP140TwoAxisAlt.xml
+
+
+
+
+
diff --git a/Aircraft/Generic/DualControl/Instruments/KAP-140/kap140.nas b/Aircraft/Generic/DualControl/Instruments/KAP-140/kap140.nas
new file mode 100644
index 000000000..447408842
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KAP-140/kap140.nas
@@ -0,0 +1,330 @@
+###############################################################################
+##
+## Nasal for dual control of a KAP 140 autopilot over the multiplayer
+## network.
+##
+## Copyright (C) 2008 - 2010 Anders Gidenstam (anders(at)gidenstam.org)
+## This file is licensed under the GPL license version 2 or later.
+##
+###############################################################################
+
+# Note:
+# This module MUST be loaded as kap140.
+#
+
+# Load the real KAP 140 module as kap140_implementation.
+if (!contains(globals, "kap140_implementation")) {
+ io.load_nasal(getprop("/sim/fg-root") ~
+ "/Aircraft/Generic/kap140.nas",
+ "kap140_implementation");
+}
+
+# Slave button presses.
+var ap_btn = "ap-btn";
+var hdg_btn = "hdg-btn";
+var nav_btn = "nav-btn";
+var apr_btn = "apr-btn";
+var alt_btn = "alt-btn";
+var rev_btn = "rev-btn";
+var down_btn = "down-btn";
+var up_btn = "up-btn";
+var arm_btn = "arm-btn";
+var baro_press_btn = "baro-press-btn";
+var baro_release_btn = "baro-release-btn";
+
+var base = "autopilot/kap140/";
+var buttons = base ~ "buttons/";
+
+###############################################################################
+# API function wrappers.
+
+var apButton = func {
+ kap140.apButton();
+}
+
+var hdgButton = func {
+ kap140.hdgButton();
+}
+
+var navButton = func {
+ kap140.navButton();
+}
+
+var aprButton = func {
+ kap140.aprButton();
+}
+
+var altButton = func {
+ kap140.altButton();
+}
+
+var revButton = func {
+ kap140.revButton();
+}
+
+var downButton = func {
+ kap140.downButton();
+}
+
+var upButton = func {
+ kap140.upButton();
+}
+
+var armButton = func {
+ kap140.armButton();
+}
+
+var baroButtonPress = func {
+ kap140.baroButtonPress();
+}
+
+var baroButtonRelease = func {
+ kap140.baroButtonRelease();
+}
+
+var knobSmallDown = func {
+ kap140.knobSmallDown();
+}
+
+var knobSmallUp = func {
+ kap140.knobSmallUp();
+}
+
+var knobLargeDown = func {
+ kap140.knobLargeDown();
+}
+
+var knobLargeUp = func {
+ kap140.knobLargeUp();
+}
+
+###############################################################################
+
+###########################################################################
+# The master is just the standard implementation.
+var master_kap140 =
+ contains(globals, "kap140_implementation") ? kap140_implementation : nil;
+
+###########################################################################
+var slave_kap140 = {
+ new : func(airoot) {
+ var obj = {};
+ obj.parents = [slave_kap140];
+ obj.root = airoot;
+ obj.base = props.globals.getNode("/autopilot/kap140/buttons", 1);
+ return obj;
+ },
+ apButton : func {
+ var p = me.base.getNode(ap_btn);
+ print("KAP140.AP");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ hdgButton : func {
+ var p = me.base.getNode(hdg_btn);
+ print("KAP140.HDG");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ navButton : func {
+ var p = me.base.getNode(nav_btn);
+ print("KAP140.NAV");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ aprButton : func {
+ var p = me.base.getNode(apr_btn);
+ print("KAP140.APR");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ altButton : func {
+ var p = me.base.getNode(alt_btn);
+ print("KAP140.ALT");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ revButton : func {
+ var p = me.base.getNode(rev_btn);
+ print("KAP140.REV");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ downButton : func {
+ var p = me.base.getNode(down_btn);
+ print("KAP140.DN");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ upButton : func {
+ var p = me.base.getNode(up_btn);
+ print("KAP140.UP");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ armButton : func {
+ var p = me.base.getNode(arm_btn);
+ print("KAP140.ARM");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ baroButtonPress : func {
+ var p = me.base.getNode(baro_press_btn);
+ print("KAP140.BARO_PRESS");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ baroButtonRelease : func {
+ var p = me.base.getNode(baro_release_btn);
+ print("KAP140.BARO_RELEASE");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ knobSmallDown : func {
+ },
+ knobSmallUp : func {
+ },
+ knobLargeDown : func {
+ },
+ knobLargeUp : func {
+ },
+};
+
+###########################################################################
+# The KAP140 pick animations default to master.
+var kap140 = master_kap140;
+
+###########################################################################
+# API for dual control setup.
+###########################################################################
+
+###########################################################################
+var make_master = func {
+ master_kap140 =
+ contains(globals, "kap140_implementation") ? kap140_implementation : nil;
+}
+
+###########################################################################
+var make_slave_to = func(airoot) {
+ kap140 = slave_kap140.new(airoot);
+}
+
+###########################################################################
+# Create aliases to drive the KAP 140 3d model in an AI/MP model.
+var animate_aimodel = func(airoot) {
+# var p = base ~ "/data-is-valid";
+# airoot.getNode(p, 1).alias(props.globals.getNode(p));
+}
+
+###########################################################################
+# Create a TDMEncoder node array for sending the current state to
+# slaves.
+var master_send_state = func {
+ return
+ [
+ ];
+}
+
+###########################################################################
+# Create a SwitchDecoder action array for processing button presses
+# from a slave.
+var master_receive_slave_buttons = func {
+ return
+ [
+ func (b) {
+ if (b) { kap140.apButton(); }
+ },
+ func (b) {
+ if (b) { kap140.hdgButton(); }
+ },
+ func (b) {
+ if (b) { kap140.navButton(); }
+ },
+ func (b) {
+ if (b) { kap140.aprButton(); }
+ },
+ func (b) {
+ if (b) { kap140.altButton(); }
+ },
+ func (b) {
+ if (b) { kap140.revButton(); }
+ },
+ func (b) {
+ if (b) { kap140.downButton(); }
+ },
+ func (b) {
+ if (b) { kap140.upButton(); }
+ },
+ func (b) {
+ if (b) { kap140.armButton(); }
+ },
+ func (b) {
+ if (b) { kap140.baroButtonPress(); }
+ },
+ func (b) {
+ if (b) { kap140.baroButtonRelease(); }
+ }
+ ];
+}
+
+###########################################################################
+# Create a TDMDecoder action array for processing the state
+# from the master.
+var slave_receive_master_state = func {
+ return
+ [
+ ];
+}
+
+###########################################################################
+# Create a SwitchEncoder node array for sending button presses
+# to the master
+var slave_send_buttons = func {
+ return
+ [
+ props.globals.getNode(buttons ~ ap_btn, 1),
+ props.globals.getNode(buttons ~ hdg_btn, 1),
+ props.globals.getNode(buttons ~ nav_btn, 1),
+ props.globals.getNode(buttons ~ apr_btn, 1),
+ props.globals.getNode(buttons ~ alt_btn, 1),
+ props.globals.getNode(buttons ~ rev_btn, 1),
+ props.globals.getNode(buttons ~ down_btn, 1),
+ props.globals.getNode(buttons ~ up_btn, 1),
+ props.globals.getNode(buttons ~ arm_btn, 1),
+ props.globals.getNode(buttons ~ baro_press_btn, 1),
+ props.globals.getNode(buttons ~ baro_release_btn, 1)
+ ];
+}
diff --git a/Aircraft/Generic/DualControl/Instruments/KAP-140/null.ac b/Aircraft/Generic/DualControl/Instruments/KAP-140/null.ac
new file mode 100644
index 000000000..e0952a6b7
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KAP-140/null.ac
@@ -0,0 +1,3 @@
+AC3Db
+OBJECT poly
+kids 0
diff --git a/Aircraft/Generic/DualControl/Instruments/KDI-572/dme.ac b/Aircraft/Generic/DualControl/Instruments/KDI-572/dme.ac
new file mode 100644
index 000000000..f2f22d279
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KDI-572/dme.ac
@@ -0,0 +1,823 @@
+AC3Db
+MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
+MATERIAL "illum" rgb 1 1 1 amb 1 1 1 emis 0.7 0.7 0.7 spec 0 0 0 shi 0 trans 0
+MATERIAL "glosswhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.255556 0.255556 0.255556 shi 32 trans 0
+MATERIAL "flatpaint" rgb 0.8 0.8 0.8 amb 0.8 0.8 0.8 emis 0.051361 0.051361 0.051361 spec 0 0 0 shi 32 trans 0
+OBJECT world
+kids 13
+OBJECT poly
+name "DME.kt1"
+data 9
+Plane.145
+texture "dme.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.001016 0.011226 0.002169
+0.001016 0.002312 0.002169
+0.001016 0.002312 0.007201
+0.001016 0.011226 0.007201
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+0 0.0838298201561 0.199461504817
+3 0.0236648730934 0.199461504817
+2 0.0236648730934 0.00404679775238
+1 0.0838298201561 0.00404679775238
+kids 0
+OBJECT poly
+name "DME.kt2"
+data 9
+Plane.146
+texture "dme.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.001016 0.011226 -0.003798
+0.001016 0.002312 -0.003798
+0.001016 0.002312 0.001234
+0.001016 0.011226 0.001234
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+0 0.0838298201561 0.199461504817
+3 0.0236648730934 0.199461504817
+2 0.0236648730934 0.00404679775238
+1 0.0838298201561 0.00404679775238
+kids 0
+OBJECT poly
+name "DME.kt3"
+data 9
+Plane.147
+texture "dme.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.001016 0.011226 -0.009766
+0.001016 0.002312 -0.009766
+0.001016 0.002312 -0.004733
+0.001016 0.011226 -0.004733
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+0 0.0838298201561 0.199461504817
+3 0.0236648730934 0.199461504817
+2 0.0236648730934 0.00404679775238
+1 0.0838298201561 0.00404679775238
+kids 0
+OBJECT poly
+name "DME.mn1"
+data 9
+Plane.149
+texture "dme.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.001016 0.011226 -0.024916
+0.001016 0.002312 -0.024916
+0.001016 0.002312 -0.019884
+0.001016 0.011226 -0.019884
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+0 0.0838298201561 0.199461504817
+3 0.0236648730934 0.199461504817
+2 0.0236648730934 0.00404679775238
+1 0.0838298201561 0.00404679775238
+kids 0
+OBJECT poly
+name "DME.mn2"
+data 9
+Plane.148
+texture "dme.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.001016 0.011226 -0.030883
+0.001016 0.002312 -0.030883
+0.001016 0.002312 -0.025851
+0.001016 0.011226 -0.025851
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+0 0.0838298201561 0.199461504817
+3 0.0236648730934 0.199461504817
+2 0.0236648730934 0.00404679775238
+1 0.0838298201561 0.00404679775238
+kids 0
+OBJECT poly
+name "DME.nm"
+data 9
+Plane.150
+texture "dme.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.000959 0.003707 0.022752
+0.000959 0.002877 0.022752
+0.000959 0.002877 0.023547
+0.000959 0.003707 0.023547
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+0 0.0709507837892 0.181225210428
+3 0.0457188934088 0.181225210428
+2 0.0457188934088 0.166461586952
+1 0.0709507837892 0.166461586952
+kids 0
+OBJECT poly
+name "DME.nm1"
+data 9
+Plane.131
+texture "dme.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.001016 0.011226 0.02914
+0.001016 0.002312 0.02914
+0.001016 0.002312 0.034172
+0.001016 0.011226 0.034172
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+0 0.0838298201561 0.199461504817
+3 0.0236648730934 0.199461504817
+2 0.0236648730934 0.00404679775238
+1 0.0838298201561 0.00404679775238
+kids 0
+OBJECT poly
+name "DME.nm2"
+data 9
+Plane.143
+texture "dme.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.001016 0.011226 0.023676
+0.001016 0.002312 0.023676
+0.001016 0.002312 0.028708
+0.001016 0.011226 0.028708
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+0 0.0838298201561 0.199461504817
+3 0.0236648730934 0.199461504817
+2 0.0236648730934 0.00404679775238
+1 0.0838298201561 0.00404679775238
+kids 0
+OBJECT poly
+name "DME.nm3"
+data 9
+Plane.151
+texture "dme.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.001016 0.011226 0.017181
+0.001016 0.002312 0.017181
+0.001016 0.002312 0.022214
+0.001016 0.011226 0.022214
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+0 0.0838298201561 0.199461504817
+3 0.0236648730934 0.199461504817
+2 0.0236648730934 0.00404679775238
+1 0.0838298201561 0.00404679775238
+kids 0
+OBJECT poly
+name "DMEswitch"
+data 8
+Cylinder
+texture "dme.png"
+texrep 1 1
+crease 40.000000
+numvert 28
+0.001039 -0.006427 0.003573
+0.001039 -0.005119 0.001308
+0.001039 -0.005119 -0.001308
+0.001039 -0.006427 -0.003573
+0.001039 -0.008692 -0.004881
+0.001039 -0.011308 -0.004881
+0.001039 -0.013573 -0.003573
+0.001039 -0.014881 -0.001308
+0.001039 -0.014881 0.001308
+0.001039 -0.013573 0.003573
+0.001039 -0.011308 0.004881
+0.001039 -0.008692 0.004881
+0.004499 -0.006686 0.003314
+0.004499 -0.005473 0.001213
+0.004499 -0.005473 -0.001213
+0.004499 -0.006686 -0.003314
+0.004499 -0.008787 -0.004527
+0.004499 -0.011213 -0.004527
+0.004499 -0.013314 -0.003314
+0.004499 -0.014527 -0.001213
+0.004499 -0.014527 0.001213
+0.004499 -0.013314 0.003314
+0.004499 -0.011213 0.004527
+0.004499 -0.008787 0.004527
+0.007779 -0.008787 -0.004193
+0.007779 -0.011213 -0.004193
+0.007779 -0.011213 0.004193
+0.007779 -0.008787 0.004193
+numsurf 21
+SURF 0x10
+mat 2
+refs 4
+0 0.535729765892 0.453892558813
+12 0.53325176239 0.448936551809
+13 0.544875144958 0.408671677113
+1 0.548260271549 0.410485655069
+SURF 0x10
+mat 2
+refs 4
+1 0.548260271549 0.410485655069
+13 0.544875144958 0.408671677113
+14 0.544875144958 0.362177878618
+2 0.548260271549 0.36036375165
+SURF 0x10
+mat 2
+refs 4
+2 0.548260271549 0.36036375165
+14 0.544875144958 0.362177878618
+15 0.533251881599 0.321913033724
+3 0.535729765892 0.316956788301
+SURF 0x10
+mat 2
+refs 4
+3 0.535729765892 0.316956788301
+15 0.533251881599 0.321913033724
+16 0.513119459152 0.298666030169
+4 0.514026403427 0.291895896196
+SURF 0x10
+mat 2
+refs 4
+4 0.514026403427 0.291895896196
+16 0.513119459152 0.298666030169
+17 0.489872395992 0.298665940762
+5 0.488965392113 0.291895896196
+SURF 0x10
+mat 2
+refs 4
+5 0.488965392113 0.291895896196
+17 0.489872395992 0.298665940762
+18 0.46974003315 0.321912825108
+6 0.467261910439 0.316956788301
+SURF 0x10
+mat 2
+refs 4
+6 0.467261910439 0.316956788301
+18 0.46974003315 0.321912825108
+19 0.458116590977 0.3621776402
+7 0.454731464386 0.360363692045
+SURF 0x10
+mat 2
+refs 4
+7 0.454731464386 0.360363692045
+19 0.458116590977 0.3621776402
+20 0.458116590977 0.408671438694
+8 0.454731464386 0.410485595465
+SURF 0x10
+mat 2
+refs 4
+8 0.454731464386 0.410485595465
+20 0.458116590977 0.408671438694
+21 0.46974003315 0.448936372995
+9 0.467261910439 0.453892499208
+SURF 0x10
+mat 2
+refs 4
+9 0.467261910439 0.453892499208
+21 0.46974003315 0.448936372995
+22 0.489872336388 0.472183257341
+10 0.488965272903 0.478953510523
+SURF 0x10
+mat 2
+refs 4
+10 0.488965272903 0.463854044676
+22 0.489872336388 0.457083791494
+23 0.513119280338 0.457083910704
+11 0.514026403427 0.463854044676
+SURF 0x10
+mat 2
+refs 4
+12 0.53325176239 0.448936551809
+0 0.535729765892 0.453892558813
+11 0.514026403427 0.478953510523
+23 0.513119280338 0.472183376551
+SURF 0x10
+mat 2
+refs 4
+18 0.46974003315 0.321912825108
+21 0.46974003315 0.448936372995
+20 0.458116590977 0.408671438694
+19 0.458116590977 0.3621776402
+SURF 0x10
+mat 2
+refs 4
+17 0.489872395992 0.298665940762
+22 0.489872336388 0.472183257341
+21 0.46974003315 0.448936372995
+18 0.46974003315 0.321912825108
+SURF 0x10
+mat 2
+refs 4
+12 0.53325176239 0.448936551809
+15 0.533251881599 0.321913033724
+14 0.544875144958 0.362177878618
+13 0.544875144958 0.408671677113
+SURF 0x10
+mat 2
+refs 4
+12 0.53325176239 0.448936551809
+23 0.513119280338 0.472183376551
+16 0.513119459152 0.298666030169
+15 0.533251881599 0.321913033724
+SURF 0x10
+mat 2
+refs 4
+17 0.489872395992 0.298665940762
+16 0.513119459152 0.298666030169
+24 0.513119459152 0.30507221818
+25 0.489872395992 0.305072128773
+SURF 0x10
+mat 2
+refs 4
+23 0.513119280338 0.457083910704
+22 0.489872336388 0.457083791494
+26 0.489872336388 0.450677603483
+27 0.513119280338 0.450677722692
+SURF 0x10
+mat 2
+refs 4
+22 0.489872336388 0.472183257341
+17 0.489872395992 0.298665940762
+25 0.489872395992 0.305072128773
+26 0.489872336388 0.46577706933
+SURF 0x10
+mat 2
+refs 4
+16 0.513119459152 0.298666030169
+23 0.513119280338 0.472183376551
+27 0.513119280338 0.46577718854
+24 0.513119459152 0.30507221818
+SURF 0x10
+mat 2
+refs 4
+25 0.489872395992 0.305072128773
+24 0.513119459152 0.30507221818
+27 0.513119280338 0.46577718854
+26 0.489872336388 0.46577706933
+kids 0
+OBJECT poly
+name "dmebezel"
+data 8
+Mesh.079
+texture "dme.png"
+texrep 1 1
+crease 30.000000
+numvert 56
+0.000842 0.007242 -0.039319
+0.000842 -0.007229 -0.039331
+0.000842 -0.014511 -0.032798
+0.000842 -0.014515 0.032738
+0.000842 -0.007242 0.039319
+0.000842 0.007229 0.039331
+0.000843 0.01451 0.032798
+0.000842 0.014515 -0.032738
+0.002247 0.007242 -0.039319
+0.002247 0.014515 -0.032738
+0.002247 0.01451 0.032798
+0.002246 0.007229 0.039331
+0.002246 -0.007242 0.039319
+0.002247 -0.007229 -0.039331
+0.002247 -0.014516 0.032738
+0.002247 -0.014511 -0.032798
+0.002246 0.01607 -0.033721
+0.002247 0.008025 -0.04088
+0.002246 0.016065 0.033782
+0.002247 0.00801 0.040893
+0.002247 -0.008025 0.04088
+0.002247 -0.00801 -0.040894
+0.002247 -0.01607 0.03372
+0.002247 -0.016065 -0.033782
+0.000843 -6e-06 0.039325
+0.000842 7e-06 -0.039325
+0.00165 0.01607 -0.033721
+0.00165 0.008025 -0.04088
+0.00165 0.016065 0.033782
+0.00165 0.00801 0.040893
+0.00165 -0.008025 0.04088
+0.00165 -0.00801 -0.040894
+0.00165 -0.01607 0.03372
+0.00165 -0.016065 -0.033782
+0.00165 0.017447 -0.043733
+0.00165 0.016138 -0.044932
+0.00165 0.017442 0.043812
+0.00165 0.016107 0.044946
+0.00165 -0.016138 0.044932
+0.00165 -0.016108 -0.044947
+0.00165 -0.017448 0.043732
+0.00165 -0.017442 -0.043812
+0.000147 0.017447 -0.043733
+0.000147 0.016138 -0.044932
+0.000147 0.017442 0.043812
+0.000147 0.016107 0.044946
+0.000147 -0.016138 0.044932
+0.000147 -0.016108 -0.044947
+0.000147 -0.017448 0.043732
+0.000147 -0.017442 -0.043812
+0.000842 -0.007229 -0.039331
+0.000842 -0.014511 -0.032798
+0.000842 -0.014515 0.032738
+0.000842 -0.007242 0.039319
+0.000843 -6e-06 0.039325
+0.000842 7e-06 -0.039325
+numsurf 46
+SURF 0x00
+mat 3
+refs 4
+7 0.752499580383 0.500000059605
+0 0.752499580383 0.400000065565
+8 0.852499604225 0.400000065565
+9 0.852499604225 0.500000059605
+SURF 0x00
+mat 3
+refs 4
+6 0.752499580383 0.500000059605
+7 0.752499580383 0.400000065565
+9 0.852499604225 0.400000065565
+10 0.852499604225 0.500000059605
+SURF 0x00
+mat 3
+refs 4
+5 0.752499580383 0.500000059605
+6 0.752499580383 0.400000065565
+10 0.852499604225 0.400000065565
+11 0.852499604225 0.500000059605
+SURF 0x00
+mat 3
+refs 3
+4 0.752499580383 0.500000059605
+24 0.752499580383 0.400000065565
+12 0.852499604225 0.400000065565
+SURF 0x00
+mat 3
+refs 4
+3 0.752499580383 0.500000059605
+4 0.752499580383 0.400000065565
+12 0.852499604225 0.400000065565
+14 0.852499604225 0.500000059605
+SURF 0x00
+mat 3
+refs 4
+2 0.752499580383 0.500000059605
+3 0.752499580383 0.400000065565
+14 0.852499604225 0.400000065565
+15 0.852499604225 0.500000059605
+SURF 0x00
+mat 3
+refs 4
+1 0.752499580383 0.500000059605
+2 0.752499580383 0.400000065565
+15 0.852499604225 0.400000065565
+13 0.852499604225 0.500000059605
+SURF 0x00
+mat 3
+refs 4
+9 0.516570031643 0.94054287672
+8 0.516570031643 0.927807867527
+17 0.529305040836 0.927807867527
+16 0.529305040836 0.94054287672
+SURF 0x00
+mat 3
+refs 4
+10 0.516570031643 0.94054287672
+9 0.516570031643 0.927807867527
+16 0.529305040836 0.927807867527
+18 0.529305040836 0.94054287672
+SURF 0x00
+mat 3
+refs 4
+11 0.516570031643 0.94054287672
+10 0.516570031643 0.927807867527
+18 0.529305040836 0.927807867527
+19 0.529305040836 0.94054287672
+SURF 0x00
+mat 3
+refs 4
+12 0.516570031643 0.94054287672
+11 0.516570031643 0.927807867527
+19 0.529305040836 0.927807867527
+20 0.529305040836 0.94054287672
+SURF 0x00
+mat 3
+refs 4
+8 0.516570031643 0.94054287672
+13 0.516570031643 0.927807867527
+21 0.529305040836 0.927807867527
+17 0.529305040836 0.94054287672
+SURF 0x00
+mat 3
+refs 4
+14 0.516570031643 0.94054287672
+12 0.516570031643 0.927807867527
+20 0.529305040836 0.927807867527
+22 0.529305040836 0.94054287672
+SURF 0x00
+mat 3
+refs 4
+15 0.516570031643 0.94054287672
+14 0.516570031643 0.927807867527
+22 0.529305040836 0.927807867527
+23 0.529305040836 0.94054287672
+SURF 0x00
+mat 3
+refs 4
+13 0.516570031643 0.94054287672
+15 0.516570031643 0.927807867527
+23 0.529305040836 0.927807867527
+21 0.529305040836 0.94054287672
+SURF 0x00
+mat 3
+refs 3
+0 0.752499580383 0.500000059605
+25 0.752499580383 0.400000065565
+13 0.852499604225 0.400000065565
+SURF 0x00
+mat 3
+refs 3
+0 0.752499580383 0.500000059605
+13 0.752499580383 0.400000065565
+8 0.852499604225 0.400000065565
+SURF 0x00
+mat 3
+refs 3
+5 0.752499580383 0.500000059605
+11 0.752499580383 0.400000065565
+12 0.852499604225 0.400000065565
+SURF 0x00
+mat 3
+refs 3
+25 0.752499580383 0.500000059605
+1 0.752499580383 0.400000065565
+13 0.852499604225 0.400000065565
+SURF 0x00
+mat 3
+refs 3
+24 0.752499580383 0.500000059605
+5 0.752499580383 0.400000065565
+12 0.852499604225 0.400000065565
+SURF 0x00
+mat 3
+refs 4
+16 0.928124308586 0.311250269413
+17 0.928124308586 0.27125030756
+27 0.968124330044 0.27125030756
+26 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+18 0.928124308586 0.311250269413
+16 0.928124308586 0.27125030756
+26 0.968124330044 0.27125030756
+28 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+19 0.928124308586 0.311250269413
+18 0.928124308586 0.27125030756
+28 0.968124330044 0.27125030756
+29 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+20 0.928124308586 0.311250269413
+19 0.928124308586 0.27125030756
+29 0.968124330044 0.27125030756
+30 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+17 0.928124308586 0.311250269413
+21 0.928124308586 0.27125030756
+31 0.968124330044 0.27125030756
+27 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+22 0.928124308586 0.311250269413
+20 0.928124308586 0.27125030756
+30 0.968124330044 0.27125030756
+32 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+23 0.928124308586 0.311250269413
+22 0.928124308586 0.27125030756
+32 0.968124330044 0.27125030756
+33 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+21 0.928124308586 0.311250269413
+23 0.928124308586 0.27125030756
+33 0.968124330044 0.27125030756
+31 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+26 0.928124308586 0.311250269413
+27 0.928124308586 0.27125030756
+35 0.968124330044 0.27125030756
+34 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+28 0.928124308586 0.311250269413
+26 0.928124308586 0.27125030756
+34 0.968124330044 0.27125030756
+36 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+29 0.928124308586 0.311250269413
+28 0.928124308586 0.27125030756
+36 0.968124330044 0.27125030756
+37 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+30 0.928124308586 0.311250269413
+29 0.928124308586 0.27125030756
+37 0.968124330044 0.27125030756
+38 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+27 0.928124308586 0.311250269413
+31 0.928124308586 0.27125030756
+39 0.968124330044 0.27125030756
+35 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+32 0.928124308586 0.311250269413
+30 0.928124308586 0.27125030756
+38 0.968124330044 0.27125030756
+40 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+33 0.928124308586 0.311250269413
+32 0.928124308586 0.27125030756
+40 0.968124330044 0.27125030756
+41 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+31 0.928124308586 0.311250269413
+33 0.928124308586 0.27125030756
+41 0.968124330044 0.27125030756
+39 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+34 0.928124308586 0.311250269413
+35 0.928124308586 0.27125030756
+43 0.968124330044 0.27125030756
+42 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+36 0.928124308586 0.311250269413
+34 0.928124308586 0.27125030756
+42 0.968124330044 0.27125030756
+44 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+37 0.928124308586 0.311250269413
+36 0.928124308586 0.27125030756
+44 0.968124330044 0.27125030756
+45 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+38 0.928124308586 0.311250269413
+37 0.928124308586 0.27125030756
+45 0.968124330044 0.27125030756
+46 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+35 0.928124308586 0.311250269413
+39 0.928124308586 0.27125030756
+47 0.968124330044 0.27125030756
+43 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+40 0.928124308586 0.311250269413
+38 0.928124308586 0.27125030756
+46 0.968124330044 0.27125030756
+48 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+41 0.928124308586 0.311250269413
+40 0.928124308586 0.27125030756
+48 0.968124330044 0.27125030756
+49 0.968124330044 0.311250269413
+SURF 0x00
+mat 3
+refs 4
+39 0.928124308586 0.311250269413
+41 0.928124308586 0.27125030756
+49 0.968124330044 0.27125030756
+47 0.968124330044 0.311250269413
+SURF 0x10
+mat 3
+refs 4
+50 0.920733690262 0.440070271492
+53 0.0834924578667 0.439790010452
+52 0.153548210859 0.284956693649
+51 0.851188838482 0.285044133663
+SURF 0x10
+mat 3
+refs 4
+50 0.920733690262 0.440070271492
+55 0.920669853687 0.594127893448
+54 0.0834285616875 0.593843877316
+53 0.0834924578667 0.439790010452
+kids 0
+OBJECT poly
+name "dmeface"
+data 8
+Mesh.094
+texture "dme.png"
+texrep 1 1
+crease 30.000000
+numvert 6
+0.000842 7e-06 -0.039325
+0.000843 -6e-06 0.039325
+0.000842 0.014515 -0.032738
+0.000843 0.01451 0.032798
+0.000842 0.007229 0.039331
+0.000842 0.007242 -0.039319
+numsurf 2
+SURF 0x10
+mat 1
+refs 4
+0 0.922852396965 0.604025781155
+5 0.922788202763 0.758947312832
+4 0.0807167291641 0.758664429188
+1 0.0807809233665 0.603740155697
+SURF 0x10
+mat 1
+refs 4
+5 0.922788202763 0.758947312832
+2 0.848569154739 0.914694130421
+3 0.154421895742 0.914586186409
+4 0.0807167291641 0.758664429188
+kids 0
+OBJECT poly
+name "dmeface.001"
+data 8
+Mesh.354
+texture "dme.png"
+texrep 1 1
+crease 30.000000
+numvert 6
+0.000706 1.1e-05 -0.039929
+0.000707 -3e-06 0.039929
+0.000768 0.015102 -0.03324
+0.000768 0.015097 0.033301
+0.000737 0.007523 0.039935
+0.000737 0.007536 -0.039922
+numsurf 2
+SURF 0x10
+mat 1
+refs 4
+0 0.610067427158 0.813914358616
+5 0.61005282402 0.849155306816
+4 0.41850155592 0.849090993404
+1 0.418516159058 0.813849389553
+SURF 0x10
+mat 1
+refs 4
+5 0.61005282402 0.849155306816
+2 0.593169748783 0.884584009647
+3 0.435267746449 0.884559452534
+4 0.41850155592 0.849090993404
+kids 0
diff --git a/Aircraft/Generic/DualControl/Instruments/KDI-572/dme.png b/Aircraft/Generic/DualControl/Instruments/KDI-572/dme.png
new file mode 100644
index 000000000..c4322a4ea
Binary files /dev/null and b/Aircraft/Generic/DualControl/Instruments/KDI-572/dme.png differ
diff --git a/Aircraft/Generic/DualControl/Instruments/KDI-572/kdi572.nas b/Aircraft/Generic/DualControl/Instruments/KDI-572/kdi572.nas
new file mode 100644
index 000000000..936c4e019
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KDI-572/kdi572.nas
@@ -0,0 +1,66 @@
+###############################################################################
+## $Id$
+##
+## Nasal for KDI 572 DME.
+##
+## Copyright (C) 2006 - 2008 Syd Adams
+## Adapted for dual control by Anders Gidenstam
+##
+## This file is licensed under the GPL license version 2 or later.
+##
+###############################################################################
+
+# Note:
+# This module MUST be loaded as KDI572.
+#
+
+var base = ["instrumentation/dme[0]",
+ "instrumentation/dme[1]"];
+
+###########################################################################
+# API for pick animations.
+###########################################################################
+
+var dme_step = func(stp) {
+ var switch= getprop("instrumentation/dme/switch-position");
+ switch += stp;
+ if (switch >3) switch=3;
+ if (switch <0) switch=0;
+ setprop("instrumentation/dme/switch-position", switch);
+
+ if (switch==0) {
+ setprop("instrumentation/dme/frequencies/source",
+ "instrumentation/dme/frequencies/selected-mhz");
+ } elsif (switch==1) {
+ setprop("instrumentation/dme/frequencies/source",
+ "instrumentation/nav[0]/frequencies/selected-mhz");
+ } elsif (switch==2) {
+ setprop("instrumentation/dme/frequencies/source",
+ "instrumentation/dme/frequencies/selected-mhz");
+ } elsif (switch==3) {
+ setprop("instrumentation/dme/frequencies/source",
+ "instrumentation/nav[1]/frequencies/selected-mhz");
+ }
+}
+
+###########################################################################
+# API for dual control setup.
+###########################################################################
+
+###########################################################################
+# Create aliases to drive a KDI-572 3d model in an AI/MP model.
+# n - unit#
+var animate_aimodel = func(n, airoot) {
+ var p = "systems/electrical/outputs/dme";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/switch-position";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/in-range";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/indicated-distance-nm";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/indicated-ground-speed-kt";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/indicated-time-min";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+}
diff --git a/Aircraft/Generic/DualControl/Instruments/KDI-572/kdi572.xml b/Aircraft/Generic/DualControl/Instruments/KDI-572/kdi572.xml
new file mode 100644
index 000000000..81bea819c
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KDI-572/kdi572.xml
@@ -0,0 +1,228 @@
+
+
+
+
+ dme.ac
+
+
+ select
+ dmeface
+
+
+
+ systems/electrical/outputs/dme
+ 8
+
+
+ instrumentation/dme/switch-position
+ 0
+
+
+
+
+
+
+ select
+ DME.nm
+ DME.nm1
+ DME.nm2
+ DME.nm3
+ DME.kt1
+ DME.kt2
+ DME.kt3
+ DME.mn1
+ DME.mn2
+
+
+
+ systems/electrical/outputs/dme
+ 8
+
+ instrumentation/dme/in-range
+
+
+
+
+
+ rotate
+ DMEswitch
+ instrumentation/dme/switch-position
+
+
+ 00.0
+
+
+ 135.0
+
+
+ 290.0
+
+
+ 3150.0
+
+
+
+ -1
+ 0
+ 0
+
+
+ 0
+ 0
+ -0.010
+
+
+
+
+
+
+ textranslate
+ DME.nm1
+ instrumentation/dme/indicated-distance-nm
+ 0.01
+ 10
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ DME.nm2
+ instrumentation/dme/indicated-distance-nm
+ 0.1
+ 1
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ DME.nm3
+ instrumentation/dme/indicated-distance-nm
+ 1.0
+ 0.1
+
+ 1
+ 0
+ 0
+
+
+
+
+
+
+ textranslate
+ DME.kt1
+ instrumentation/dme/indicated-ground-speed-kt
+ 0.001
+ 100
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ DME.kt2
+ instrumentation/dme/indicated-ground-speed-kt
+ 0.01
+ 10
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ DME.kt3
+ instrumentation/dme/indicated-ground-speed-kt
+ 0.1
+ 1
+
+ 1
+ 0
+ 0
+
+
+
+
+
+
+ textranslate
+ DME.mn1
+ instrumentation/dme/indicated-time-min
+ 0.01
+ 10
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ DME.mn2
+ instrumentation/dme/indicated-time-min
+ 0.1
+ 1
+
+ 1
+ 0
+ 0
+
+
+
+
+
+
+ pick
+ DMEswitch
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
diff --git a/Aircraft/Generic/DualControl/Instruments/KI-206/ki206-1.xml b/Aircraft/Generic/DualControl/Instruments/KI-206/ki206-1.xml
new file mode 100644
index 000000000..7536792ed
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KI-206/ki206-1.xml
@@ -0,0 +1,176 @@
+
+
+
+
+ Aircraft/Instruments-3d/ki206/ki206.ac
+ Aircraft/Instruments-3d/ki206/
+
+ material
+ KI206.gsflag
+ KI206.toflag
+ KI206.fromflag
+ KI206.navflag
+ KI206.face
+ KI206card
+ KI206.locneedle
+ KI206.gsneedle
+ KI206.knob
+
+ 0.8
+ 0.4
+ 0.2
+ /systems/electrical/outputs/instrument-lights
+
+
+
+
+ select
+ KI206.navflag
+
+
+
+ instrumentation/nav[0]/data-is-valid
+
+
+ systems/electrical/outputs/nav[0]
+ 0.1
+
+
+ instrumentation/nav[0]/in-range
+
+
+
+
+
+
+ select
+ KI206.gsflag
+
+
+
+ instrumentation/nav[0]/has-gs
+
+
+ systems/electrical/outputs/nav[0]
+ 0.1
+
+
+ instrumentation/nav[0]/in-range
+ 30000
+
+
+
+
+
+
+ select
+ KI206.toflag
+
+ instrumentation/nav[0]/to-flag
+
+
+
+
+ select
+ KI206.fromflag
+
+ instrumentation/nav[0]/from-flag
+
+
+
+
+ rotate
+ KI206card
+ instrumentation/nav[0]/radials/selected-deg
+
+ 1
+ 0
+ 0
+
+
+
+
+ translate
+ KI206.locneedle
+ instrumentation/nav[0]/heading-needle-deflection
+
+ -10.0-0.0113
+ 0.00.0
+ 10.00.0113
+
+
+ 0.0
+ 1.0
+ 0.0
+
+
+
+
+ translate
+ KI206.gsneedle
+ instrumentation/nav[0]/gs-needle-deflection
+
+ -9999.0-0.0113
+ -10.0-0.0113
+ 0.00.0
+ 10.00.0113
+ 9999.00.0113
+
+
+ 0.0
+ 0.0
+ 1.0
+
+
+
+
+ pick
+ KI206.knob
+ true
+
+ click
+
+ true
+ 0.1
+
+ nasal
+
+
+
+
+ click
+
+ true
+ 0.1
+
+ nasal
+
+
+
+
+ click
+
+ false
+ 0.1
+
+ nasal
+
+
+
+
+ click
+
+ false
+ 0.1
+
+ nasal
+
+
+
+
+
+
diff --git a/Aircraft/Generic/DualControl/Instruments/KI-206/ki206-2.xml b/Aircraft/Generic/DualControl/Instruments/KI-206/ki206-2.xml
new file mode 100644
index 000000000..3262cf49a
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KI-206/ki206-2.xml
@@ -0,0 +1,176 @@
+
+
+
+
+ Aircraft/Instruments-3d/ki206/ki206.ac
+ Aircraft/Instruments-3d/ki206/
+
+ material
+ KI206.gsflag
+ KI206.toflag
+ KI206.fromflag
+ KI206.navflag
+ KI206.face
+ KI206card
+ KI206.locneedle
+ KI206.gsneedle
+ KI206.knob
+
+ 0.8
+ 0.4
+ 0.2
+ /systems/electrical/outputs/instrument-lights
+
+
+
+
+ select
+ KI206.navflag
+
+
+
+ instrumentation/nav[1]/data-is-valid
+
+
+ systems/electrical/outputs/nav[1]
+ 0.1
+
+
+ instrumentation/nav[1]/in-range
+
+
+
+
+
+
+ select
+ KI206.gsflag
+
+
+
+ instrumentation/nav[1]/has-gs
+
+
+ systems/electrical/outputs/nav[1]
+ 0.1
+
+
+ instrumentation/nav[1]/in-range
+ 30000
+
+
+
+
+
+
+ select
+ KI206.toflag
+
+ instrumentation/nav[1]/to-flag
+
+
+
+
+ select
+ KI206.fromflag
+
+ instrumentation/nav[1]/from-flag
+
+
+
+
+ rotate
+ KI206card
+ instrumentation/nav[1]/radials/selected-deg
+
+ 1
+ 0
+ 0
+
+
+
+
+ translate
+ KI206.locneedle
+ instrumentation/nav[1]/heading-needle-deflection
+
+ -10.0-0.0113
+ 0.00.0
+ 10.00.0113
+
+
+ 0.0
+ 1.0
+ 0.0
+
+
+
+
+ translate
+ KI206.gsneedle
+ instrumentation/nav[1]/gs-needle-deflection
+
+ -9999.0-0.0113
+ -10.0-0.0113
+ 0.00.0
+ 10.00.0113
+ 9999.00.0113
+
+
+ 0.0
+ 0.0
+ 1.0
+
+
+
+
+ pick
+ KI206.knob
+ true
+
+ click
+
+ true
+ 0.1
+
+ nasal
+
+
+
+
+ click
+
+ true
+ 0.1
+
+ nasal
+
+
+
+
+ click
+
+ false
+ 0.1
+
+ nasal
+
+
+
+
+ click
+
+ false
+ 0.1
+
+ nasal
+
+
+
+
+
+
diff --git a/Aircraft/Generic/DualControl/Instruments/KI-206/ki206.nas b/Aircraft/Generic/DualControl/Instruments/KI-206/ki206.nas
new file mode 100644
index 000000000..5ab194397
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KI-206/ki206.nas
@@ -0,0 +1,166 @@
+###############################################################################
+##
+## Nasal for dual control of a KI-206 VOR indicator over the multiplayer
+## network.
+##
+## Copyright (C) 2007 - 2010 Anders Gidenstam (anders(at)gidenstam.org)
+## This file is licensed under the GPL license version 2 or later.
+##
+###############################################################################
+
+# Note:
+# This module MUST be loaded as KI206.
+
+# Slave button presses.
+var radial_decS = "radial-decS-clicked";
+var radial_incS = "radial-incS-clicked";
+# Only one step size implemented.
+
+var selected_radial = "radials/selected-deg";
+var base = ["instrumentation/nav[0]",
+ "instrumentation/nav[1]"];
+
+###########################################################################
+var master_ki206 = {
+ new : func(n) {
+ var obj = {};
+ obj.parents = [master_ki206];
+ obj.base = props.globals.getNode(base[n]);
+ return obj;
+ },
+ adjust_radial : func(d) {
+ p = me.base.getNode(selected_radial);
+ var v = p.getValue() + d;
+ if (v < 0) { v += 360; };
+ if (v > 360) { v -= 360; };
+ p.setValue(v);
+ }
+};
+
+###########################################################################
+var slave_ki206 = {
+ new : func(n, airoot) {
+ var obj = {};
+ obj.parents = [slave_ki206];
+ obj.root = airoot;
+ obj.base = props.globals.getNode(base[n]);
+ return obj;
+ },
+ adjust_radial : func(d) {
+ var p = 0;
+ if (abs(d) < 0.99) {
+ p = (d < 0) ? me.base.getNode(radial_decS)
+ : me.base.getNode(radial_incS);
+ } else {
+ p = (d < 0) ? me.base.getNode(radial_decS)
+ : me.base.getNode(radial_incS);
+ }
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ }
+};
+
+###########################################################################
+# The KI-206 pick animations default to master.
+# NOTE: Use make_master() and make_slave_to(). Do NOT change ki206 directly.
+var ki206 = [master_ki206.new(0), master_ki206.new(1)];
+
+###########################################################################
+# API for pick animations and dual control setup.
+###########################################################################
+
+###########################################################################
+# n - Nav#
+var make_master = func(n) {
+ ki206[n] = master_ki206.new(n);
+}
+
+###########################################################################
+# n - Nav#
+var make_slave_to = func(n, airoot) {
+ ki206[n] = KI206.slave_ki206.new(n, airoot);
+}
+
+###########################################################################
+# n - Nav#
+# d - adjustment delta
+var adjust_radial = func(n, d) {
+ ki206[n].adjust_radial(d);
+}
+
+###########################################################################
+# Create aliases to drive the KI 206 3d model in an AI/MP model.
+# n - Nav#
+var animate_aimodel = func(n, airoot) {
+ var p = base[n] ~ "/data-is-valid";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/in-range";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/has-gs";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/to-flag";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/from-flag";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/" ~ selected_radial;
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/heading-needle-deflection";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/gs-needle-deflection";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+}
+
+###########################################################################
+# Create a TDMEncoder node array for sending the current radio state to
+# slaves.
+# n - Nav#
+var master_send_state = func(n) {
+ return
+ [
+ props.globals.getNode(base[n] ~ "/" ~ selected_radial)
+ ];
+}
+
+###########################################################################
+# Create a SwitchDecoder action array for processing button presses
+# from a slave.
+# n - Nav#
+var master_receive_slave_buttons = func(n) {
+ return
+ [
+ func (b) {
+ if (b) { KI206.adjust_radial(n, -1.0); }
+ },
+ func (b) {
+ if (b) { KI206.adjust_radial(n, 1.0); }
+ }
+ ];
+}
+
+###########################################################################
+# Create a TDMDecoder action array for processing the radio state
+# from the master.
+# n - Nav#
+var slave_receive_master_state = func(n) {
+ return
+ [
+ func (v) {
+ props.globals.getNode(base[n] ~ "/" ~ selected_radial).setValue(v);
+ }
+ ];
+}
+
+###########################################################################
+# Create a SwitchEncoder node array for sending button presses
+# to the master
+# n - Nav#
+var slave_send_buttons = func(n) {
+ return
+ [
+ props.globals.getNode(base[n] ~ "/" ~ radial_decS, 1),
+ props.globals.getNode(base[n] ~ "/" ~ radial_incS, 1),
+ ];
+}
diff --git a/Aircraft/Generic/DualControl/Instruments/KR87/kr87-1.xml b/Aircraft/Generic/DualControl/Instruments/KR87/kr87-1.xml
new file mode 100644
index 000000000..6e6cfdbd9
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KR87/kr87-1.xml
@@ -0,0 +1,362 @@
+
+
+
+
+ kr87.ac
+ Aircraft/Generic/DualControl/Instruments/KX165/
+
+
+ select
+ kr87.indicators
+
+ instrumentation/adf[0]/serviceable
+ instrumentation/adf[0]/power-btn
+
+ systems/electrical/outputs/adf[0]
+ 1
+
+
+
+
+
+ material
+ kr87.knobs.ADF
+ kr87.knobs.BFO
+ kr87.knobs.FRQ
+ kr87.knobs.FLT
+ kr87.knobs.SET
+
+ sim/model/instrument-lighting/emission/red
+ sim/model/instrument-lighting/emission/green
+ sim/model/instrument-lighting/emission/blue
+ controls/lighting/instruments-norm
+
+
+
+
+ select
+ kr87.indicators.ANT
+
+
+ instrumentation/adf[0]/adf-btn
+
+
+
+
+
+ select
+ kr87.indicators.ADF
+
+ instrumentation/adf[0]/adf-btn
+
+
+
+
+ select
+ kr87.indicators.BFO
+
+ instrumentation/adf[0]/bfo-btn
+
+
+
+
+ select
+ kr87.indicators.FRQ
+
+
+ instrumentation/adf[0]/display-mode
+ 0
+
+
+
+
+
+ select
+ kr87.indicators.FLT
+
+
+ instrumentation/adf[0]/display-mode
+ 1
+
+
+
+
+
+ select
+ kr87.indicators.ET
+
+
+ instrumentation/adf[0]/display-mode
+ 2
+
+
+
+
+
+
+ select
+ kr87.indicators.Use.1000
+
+
+ instrumentation/adf[0]/frequencies/selected-khz
+ 1000
+
+
+
+
+
+ textranslate
+ kr87.indicators.Use.1000
+ instrumentation/adf[0]/frequencies/selected-khz
+ 1000
+ 0.0001
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ kr87.indicators.Use.100
+ instrumentation/adf[0]/frequencies/selected-khz
+ 100
+ 0.001
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ kr87.indicators.Use.10
+ instrumentation/adf[0]/frequencies/selected-khz
+ 10
+ 0.01
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ kr87.indicators.Use.1
+ instrumentation/adf[0]/frequencies/selected-khz
+ 1
+ 0.1
+
+ 1
+ 0
+ 0
+
+
+
+
+
+
+
+ instrumentation/adf[0]/display-mode
+ 0
+
+
+ select
+ kr87.indicators.dots
+
+
+
+ select
+ kr87.indicators.Stby.1000
+
+
+ instrumentation/adf[0]/right-display
+ 1000
+
+
+
+
+
+ select
+ kr87.indicators.Stby.100
+
+
+ instrumentation/adf[0]/right-display
+ 100
+
+
+
+
+
+ textranslate
+ kr87.indicators.Stby.1000
+ instrumentation/adf[0]/right-display
+ 1000
+ 0.0001
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ kr87.indicators.Stby.100
+ instrumentation/adf[0]/right-display
+ 100
+ 0.001
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ kr87.indicators.Stby.10
+ instrumentation/adf[0]/right-display
+ 10
+ 0.01
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ kr87.indicators.Stby.1
+ instrumentation/adf[0]/right-display
+ 1
+ 0.1
+
+ 1
+ 0
+ 0
+
+
+
+
+ noshadow
+
+
+
+
+
+ pick
+ kr87.knobs.FRQ
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ kr87.knobs.FRQOuter
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ kr87.knobs.FRQInner
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ kr87.knobs.BFO
+
+
+ false
+
+ nasal
+
+
+
+
+
+
diff --git a/Aircraft/Generic/DualControl/Instruments/KR87/kr87.ac b/Aircraft/Generic/DualControl/Instruments/KR87/kr87.ac
new file mode 100644
index 000000000..d2d0400e8
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KR87/kr87.ac
@@ -0,0 +1,1040 @@
+AC3Db
+MATERIAL "ac3dmat1" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0 0 0 shi 10 trans 0
+MATERIAL "ac3dmat1" rgb 1 1 1 amb 1 1 1 emis 1 1 1 spec 0 0 0 shi 10 trans 0
+OBJECT world
+kids 1
+OBJECT group
+name "kr87"
+loc -0.00753947 0.00469298 -0.00584703
+kids 3
+OBJECT group
+name "kr87.indicators"
+loc 0.0215961 0.00799046 0.0304622
+kids 9
+OBJECT group
+name "kr87.indicators.Use"
+loc -7.82311e-08 0.00610247 0.0236769
+kids 4
+OBJECT poly
+name "kr87.indicators.Use.1"
+loc 0 0 -0.0105809
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.00698765 -0.000379302
+0 -0.00698765 -0.00743322
+0 -0.0172322 -0.00743322
+0 -0.0172322 -0.000379302
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+3 0.00304302 0.417856
+2 0.0923989 0.417857
+1 0.0923615 0.527152
+0 0.00300572 0.527152
+kids 0
+OBJECT poly
+name "kr87.indicators.Use.10"
+loc 0 0 -0.00352695
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.0172322 -0.000379305
+0 -0.0172322 -0.00743322
+0 -0.00698765 -0.00743322
+0 -0.00698765 -0.000379305
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+0 0.00304302 0.417856
+1 0.0923989 0.417857
+2 0.0923615 0.527152
+3 0.00300572 0.527152
+kids 0
+OBJECT poly
+name "kr87.indicators.Use.100"
+loc 0 0 0.00352694
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.00698765 -0.000379309
+0 -0.00698765 -0.00743323
+0 -0.0172322 -0.00743323
+0 -0.0172322 -0.000379309
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+3 0.00304302 0.417856
+2 0.0923989 0.417857
+1 0.0923615 0.527152
+0 0.00300572 0.527152
+kids 0
+OBJECT poly
+name "kr87.indicators.Use.1000"
+loc 0 0 0.0105809
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.0172322 -0.000379309
+0 -0.0172322 -0.00743323
+0 -0.00698765 -0.00743323
+0 -0.00698765 -0.000379309
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+0 0.00304302 0.417856
+1 0.0923989 0.417857
+2 0.0923615 0.527152
+3 0.00300572 0.527152
+kids 0
+OBJECT poly
+name "kr87.indicators.ANT"
+loc 2.14204e-08 0.00134546 0.0475124
+texture "kx165tso.png"
+crease 45.000000
+numvert 4
+0 -0.00791238 -0.000420451
+0 -0.00791238 -0.00823952
+0 -0.00320847 -0.00823952
+0 -0.00320847 -0.000420451
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+0 0.0030285 0.942086
+1 0.0885825 0.942086
+2 0.0885466 0.991477
+3 0.00299279 0.991477
+kids 0
+OBJECT poly
+name "kr87.indicators.ADF"
+loc 2.14204e-08 -0.00383404 0.0475124
+texture "kx165tso.png"
+crease 45.000000
+numvert 4
+0 -0.00320847 -0.000420451
+0 -0.00320847 -0.00823952
+0 -0.00791238 -0.00823952
+0 -0.00791238 -0.000420451
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+3 0.102918 0.944029
+2 0.192274 0.94403
+1 0.192237 0.989141
+0 0.102881 0.989141
+kids 0
+OBJECT poly
+name "kr87.indicators.FRQ"
+loc 2.14204e-08 -0.00383404 0.0020287
+texture "kx165tso.png"
+crease 45.000000
+numvert 4
+0 -0.00791238 -0.000420451
+0 -0.00791238 -0.00823952
+0 -0.00320847 -0.00823952
+0 -0.00320847 -0.000420451
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+0 0.310562 0.940691
+1 0.399918 0.940692
+2 0.399881 0.990558
+3 0.310525 0.990558
+kids 0
+OBJECT poly
+name "kr87.indicators.BFO"
+loc 2.14204e-08 0.00134546 0.0058652
+texture "kx165tso.png"
+crease 45.000000
+numvert 4
+0 -0.00320847 -0.000420451
+0 -0.00320847 -0.00823952
+0 -0.00791238 -0.00823952
+0 -0.00791238 -0.000420451
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+3 0.206942 0.943559
+2 0.296297 0.943559
+1 0.29626 0.989146
+0 0.206904 0.989146
+kids 0
+OBJECT poly
+name "kr87.indicators.ET"
+loc 2.14204e-08 -0.00344675 -0.042369
+texture "kx165tso.png"
+crease 45.000000
+numvert 4
+0 -0.00732147 -0.000316557
+0 -0.00732147 -0.0062035
+0 -0.00296885 -0.0062035
+0 -0.00296885 -0.000316557
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+0 0.51624 0.942628
+1 0.57423 0.942629
+2 0.574206 0.991068
+3 0.516216 0.991068
+kids 0
+OBJECT poly
+name "kr87.indicators.FLT"
+loc 2.14204e-08 0.00134546 -0.040333
+texture "kx165tso.png"
+crease 45.000000
+numvert 4
+0 -0.00320847 -0.000420451
+0 -0.00320847 -0.00823952
+0 -0.00791238 -0.00823952
+0 -0.00791238 -0.000420451
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+3 0.417492 0.942615
+2 0.494492 0.942615
+1 0.494459 0.99153
+0 0.41746 0.99153
+kids 0
+OBJECT group
+name "kr87.indicators.dots"
+loc 2.14204e-08 -0.00512649 -0.0235679
+kids 2
+OBJECT poly
+name "kr87.indicators.dot1"
+loc 0 -0.00188601 0.000275044
+texture "kx165tso.png"
+crease 45.000000
+numvert 4
+0 -0.000682086 -5.37726e-05
+0 -0.000682086 -0.00105377
+0 -0.00168209 -0.00105377
+0 -0.00168209 -5.37726e-05
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+3 0.170907 0.532511
+2 0.18244 0.532511
+1 0.182435 0.543691
+0 0.170903 0.543691
+kids 0
+OBJECT poly
+name "kr87.indicators.dot0"
+loc 0 0.00188601 -0.000275044
+texture "kx165tso.png"
+crease 45.000000
+numvert 4
+0 -0.00168209 -5.37726e-05
+0 -0.00168209 -0.00105377
+0 -0.000682086 -0.00105377
+0 -0.000682086 -5.37726e-05
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+0 0.170907 0.532511
+1 0.18244 0.532511
+2 0.182435 0.543691
+3 0.170903 0.543691
+kids 0
+OBJECT group
+name "kr87.indicators.Stby"
+loc -7.82311e-08 0.00610246 -0.0203257
+kids 4
+OBJECT poly
+name "kr87.indicators.Stby.1"
+loc 0 5.58794e-09 -0.0117381
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.0172322 -0.000379302
+0 -0.0172322 -0.00743322
+0 -0.00698765 -0.00743322
+0 -0.00698765 -0.000379302
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+0 0.00304302 0.417856
+1 0.0923989 0.417857
+2 0.0923615 0.527152
+3 0.00300572 0.527152
+kids 0
+OBJECT poly
+name "kr87.indicators.Stby.10"
+loc 0 5.58794e-09 -0.0046842
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.00698765 -0.000379302
+0 -0.00698765 -0.00743323
+0 -0.0172322 -0.00743323
+0 -0.0172322 -0.000379302
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+3 0.00304302 0.417856
+2 0.0923989 0.417857
+1 0.0923615 0.527152
+0 0.00300572 0.527152
+kids 0
+OBJECT poly
+name "kr87.indicators.Stby.100"
+loc 0 -5.58794e-09 0.00468419
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.00698765 -0.000379302
+0 -0.00698765 -0.00743322
+0 -0.0172322 -0.00743322
+0 -0.0172322 -0.000379302
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+3 0.00304302 0.417856
+2 0.0923989 0.417857
+1 0.0923615 0.527152
+0 0.00300572 0.527152
+kids 0
+OBJECT poly
+name "kr87.indicators.Stby.1000"
+loc 0 -5.58794e-09 0.0117381
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.0172322 -0.000379302
+0 -0.0172322 -0.00743323
+0 -0.00698765 -0.00743323
+0 -0.00698765 -0.000379302
+numsurf 1
+SURF 0x0
+mat 1
+refs 4
+0 0.00304302 0.417856
+1 0.0923989 0.417857
+2 0.0923615 0.527152
+3 0.00300572 0.527152
+kids 0
+OBJECT poly
+name "kr87.Chassis"
+loc -0.0110046 -0.00469298 0.00584703
+texture "kx165tso.png"
+crease 45.000000
+numvert 8
+0.0325441 -0.015 0.079
+0.0325441 -0.015 -0.079
+0.0325441 0.015 -0.079
+0.0325441 0.015 0.079
+0.0185441 -0.015 0.079
+0.0185441 -0.015 -0.079
+0.0185441 0.015 -0.079
+0.0185441 0.015 0.079
+numsurf 5
+SURF 0x10
+mat 0
+refs 4
+0 0.00030909 0.666277
+1 0.890554 0.666277
+2 0.890554 0.862647
+3 0.00030909 0.862647
+SURF 0x10
+mat 0
+refs 4
+0 0.335097 0.0290299
+3 0.335097 0.0757159
+7 0.335097 0.0757159
+4 0.335097 0.0290299
+SURF 0x10
+mat 0
+refs 4
+1 0.444789 0.0290299
+0 0.335097 0.0290299
+4 0.335097 0.0290299
+5 0.444789 0.0290299
+SURF 0x10
+mat 0
+refs 4
+2 0.444789 0.0757159
+1 0.444789 0.0290299
+5 0.444789 0.0290299
+6 0.444789 0.0757159
+SURF 0x10
+mat 0
+refs 4
+3 0.463307 0.0484428
+2 0.463307 0.0740378
+6 0.283371 0.0740378
+7 0.283371 0.0484428
+kids 0
+OBJECT group
+name "kr87.Knobs"
+loc -0.0105914 -0.00329748 -0.0363093
+kids 8
+OBJECT poly
+name "kr87.knobs.SET"
+loc -0.000413191 -0.0094949 -0.0212616
+texture "kx165tso.png"
+crease 45.000000
+numvert 8
+0.0321433 1.21146e-05 0.0557888
+0.0321433 1.21146e-05 0.0467888
+0.0371433 1.21146e-05 0.0467888
+0.0371433 1.21146e-05 0.0557888
+0.0371433 -0.00498789 0.0557888
+0.0371433 -0.00498789 0.0467888
+0.0321433 -0.00498789 0.0467888
+0.0321433 -0.00498789 0.0557888
+numsurf 5
+SURF 0x10
+mat 0
+refs 4
+7 0.582319 0.323544
+6 0.595037 0.323544
+5 0.595037 0.338763
+4 0.582319 0.338763
+SURF 0x10
+mat 0
+refs 4
+0 0.582319 0.323544
+3 0.595037 0.323544
+2 0.595037 0.338763
+1 0.582319 0.338763
+SURF 0x10
+mat 0
+refs 4
+3 0.402077 0.933765
+4 0.402077 0.877259
+5 0.513648 0.877259
+2 0.513648 0.933765
+SURF 0x10
+mat 0
+refs 4
+0 0.582319 0.323544
+7 0.595037 0.323544
+4 0.595037 0.338763
+3 0.582319 0.338763
+SURF 0x10
+mat 0
+refs 4
+2 0.582319 0.323544
+5 0.595037 0.323544
+6 0.595037 0.338763
+1 0.582319 0.338763
+kids 0
+OBJECT poly
+name "kr87.knobs.FLT"
+loc -0.000413191 -0.0094949 -0.00605227
+texture "kx165tso.png"
+crease 45.000000
+numvert 8
+0.0321433 -0.00498789 0.0557888
+0.0321433 -0.00498789 0.0467888
+0.0371433 -0.00498789 0.0467888
+0.0371433 -0.00498789 0.0557888
+0.0371433 1.21146e-05 0.0557888
+0.0371433 1.21146e-05 0.0467888
+0.0321433 1.21146e-05 0.0467888
+0.0321433 1.21146e-05 0.0557888
+numsurf 5
+SURF 0x10
+mat 0
+refs 4
+5 0.582319 0.323544
+2 0.595037 0.323544
+1 0.595037 0.338763
+6 0.582319 0.338763
+SURF 0x10
+mat 0
+refs 4
+7 0.582319 0.323544
+0 0.595037 0.323544
+3 0.595037 0.338763
+4 0.582319 0.338763
+SURF 0x10
+mat 0
+refs 4
+4 0.294354 0.93467
+3 0.294354 0.875186
+2 0.405925 0.875186
+5 0.405925 0.93467
+SURF 0x10
+mat 0
+refs 4
+7 0.582319 0.323544
+4 0.595037 0.323544
+5 0.595037 0.338763
+6 0.582319 0.338763
+SURF 0x10
+mat 0
+refs 4
+0 0.582319 0.323544
+1 0.595037 0.323544
+2 0.595037 0.338763
+3 0.582319 0.338763
+kids 0
+OBJECT poly
+name "kr87.knobs.FRQ"
+loc -0.000413191 -0.0094949 0.00865008
+texture "kx165tso.png"
+crease 45.000000
+numvert 8
+0.0321433 1.21146e-05 0.0557888
+0.0321433 1.21146e-05 0.0467888
+0.0371433 1.21146e-05 0.0467888
+0.0371433 1.21146e-05 0.0557888
+0.0371433 -0.00498789 0.0557888
+0.0371433 -0.00498789 0.0467888
+0.0321433 -0.00498789 0.0467888
+0.0321433 -0.00498789 0.0557888
+numsurf 5
+SURF 0x10
+mat 0
+refs 4
+7 0.582319 0.323544
+6 0.595037 0.323544
+5 0.595037 0.338763
+4 0.582319 0.338763
+SURF 0x10
+mat 0
+refs 4
+0 0.582319 0.323544
+3 0.595037 0.323544
+2 0.595037 0.338763
+1 0.582319 0.338763
+SURF 0x10
+mat 0
+refs 4
+3 0.195742 0.93467
+4 0.195742 0.878164
+5 0.307313 0.878164
+2 0.307313 0.93467
+SURF 0x10
+mat 0
+refs 4
+0 0.582319 0.323544
+7 0.595037 0.323544
+4 0.595037 0.338763
+3 0.582319 0.338763
+SURF 0x10
+mat 0
+refs 4
+2 0.582319 0.323544
+5 0.595037 0.323544
+6 0.595037 0.338763
+1 0.582319 0.338763
+kids 0
+OBJECT poly
+name "kr87.knobs.BFO"
+loc -0.000413191 -0.0094949 0.0236904
+texture "kx165tso.png"
+crease 45.000000
+numvert 8
+0.0321433 -0.00498789 0.0557888
+0.0321433 -0.00498789 0.0467888
+0.0371433 -0.00498789 0.0467888
+0.0371433 -0.00498789 0.0557888
+0.0371433 1.21146e-05 0.0557888
+0.0371433 1.21146e-05 0.0467888
+0.0321433 1.21146e-05 0.0467888
+0.0321433 1.21146e-05 0.0557888
+numsurf 5
+SURF 0x10
+mat 0
+refs 4
+5 0.582319 0.323544
+2 0.595037 0.323544
+1 0.595037 0.338763
+6 0.582319 0.338763
+SURF 0x10
+mat 0
+refs 4
+7 0.582319 0.323544
+0 0.595037 0.323544
+3 0.595037 0.338763
+4 0.582319 0.338763
+SURF 0x10
+mat 0
+refs 4
+4 0.0906125 0.937302
+3 0.0906125 0.874222
+2 0.190678 0.874222
+5 0.190678 0.937302
+SURF 0x10
+mat 0
+refs 4
+7 0.582319 0.323544
+4 0.595037 0.323544
+5 0.595037 0.338763
+6 0.582319 0.338763
+SURF 0x10
+mat 0
+refs 4
+0 0.582319 0.323544
+1 0.595037 0.323544
+2 0.595037 0.338763
+3 0.582319 0.338763
+kids 0
+OBJECT poly
+name "kr87.knobs.ADF"
+loc -0.000413191 -0.0094949 0.0394067
+texture "kx165tso.png"
+crease 45.000000
+numvert 8
+0.0321433 1.21146e-05 0.0557888
+0.0321433 1.21146e-05 0.0467888
+0.0371433 1.21146e-05 0.0467888
+0.0371433 1.21146e-05 0.0557888
+0.0371433 -0.00498789 0.0557888
+0.0371433 -0.00498789 0.0467888
+0.0321433 -0.00498789 0.0467888
+0.0321433 -0.00498789 0.0557888
+numsurf 5
+SURF 0x10
+mat 0
+refs 4
+7 0.582319 0.323544
+6 0.595037 0.323544
+5 0.595037 0.338763
+4 0.582319 0.338763
+SURF 0x10
+mat 0
+refs 4
+0 0.582319 0.323544
+3 0.595037 0.323544
+2 0.595037 0.338763
+1 0.582319 0.338763
+SURF 0x10
+mat 0
+refs 4
+3 1.99996e-05 0.936424
+4 1.99996e-05 0.876486
+5 0.0927135 0.876486
+2 0.0927135 0.936424
+SURF 0x10
+mat 0
+refs 4
+0 0.582319 0.323544
+7 0.595037 0.323544
+4 0.595037 0.338763
+3 0.582319 0.338763
+SURF 0x10
+mat 0
+refs 4
+2 0.582319 0.323544
+5 0.595037 0.323544
+6 0.595037 0.338763
+1 0.582319 0.338763
+kids 0
+OBJECT poly
+name "kr87.knobs.Volume"
+loc -0.000332693 0.0310954 0.0645507
+texture "kx165tso.png"
+crease 45.000000
+numvert 24
+0.0323582 -0.036308 -0.0526431
+0.0323582 -0.0381198 -0.0526431
+0.0323582 -0.0396888 -0.0535489
+0.0323582 -0.0405946 -0.0551179
+0.0323582 -0.0405946 -0.0569297
+0.0323582 -0.0396888 -0.0584987
+0.0323582 -0.0381198 -0.0594046
+0.0323582 -0.036308 -0.0594045
+0.0323582 -0.034739 -0.0584987
+0.0323582 -0.0338331 -0.0569297
+0.0323582 -0.0338331 -0.0551179
+0.0323582 -0.034739 -0.0535489
+0.0423582 -0.036308 -0.0526431
+0.0423582 -0.0381198 -0.0526431
+0.0423582 -0.0396888 -0.0535489
+0.0423582 -0.0405946 -0.0551179
+0.0423582 -0.0405946 -0.0569297
+0.0423582 -0.0396888 -0.0584987
+0.0423582 -0.0381198 -0.0594046
+0.0423582 -0.036308 -0.0594045
+0.0423582 -0.034739 -0.0584987
+0.0423582 -0.0338331 -0.0569297
+0.0423582 -0.0338331 -0.0551179
+0.0423582 -0.034739 -0.0535489
+numsurf 13
+SURF 0x10
+mat 0
+refs 12
+12 0.516431 0.379081
+13 0.493081 0.401879
+14 0.461184 0.410224
+15 0.429286 0.401879
+16 0.405936 0.379081
+17 0.397389 0.347938
+18 0.405936 0.316796
+19 0.429286 0.293998
+20 0.461184 0.285653
+21 0.493081 0.293998
+22 0.516431 0.316796
+23 0.524978 0.347938
+SURF 0x10
+mat 0
+refs 4
+1 0.0850871 0.380065
+13 0.0850871 0.316931
+12 0.0903819 0.316931
+0 0.0903819 0.380065
+SURF 0x10
+mat 0
+refs 4
+2 0.0797923 0.380065
+14 0.0797923 0.316931
+13 0.0850871 0.316931
+1 0.0850871 0.380065
+SURF 0x10
+mat 0
+refs 4
+3 0.0744975 0.380065
+15 0.0744975 0.316931
+14 0.0797923 0.316931
+2 0.0797923 0.380065
+SURF 0x10
+mat 0
+refs 4
+4 0.0692027 0.380065
+16 0.0692027 0.316931
+15 0.0744975 0.316931
+3 0.0744975 0.380065
+SURF 0x10
+mat 0
+refs 4
+5 0.0639079 0.380065
+17 0.0639079 0.316931
+16 0.0692027 0.316931
+4 0.0692027 0.380065
+SURF 0x10
+mat 0
+refs 4
+6 0.0586131 0.380065
+18 0.0586131 0.316931
+17 0.0639079 0.316931
+5 0.0639079 0.380065
+SURF 0x10
+mat 0
+refs 4
+7 0.0533183 0.380065
+19 0.0533183 0.316931
+18 0.0586131 0.316931
+6 0.0586131 0.380065
+SURF 0x10
+mat 0
+refs 4
+8 0.0480235 0.380065
+20 0.0480235 0.316931
+19 0.0533183 0.316931
+7 0.0533183 0.380065
+SURF 0x10
+mat 0
+refs 4
+9 0.0427287 0.380065
+21 0.0427287 0.316931
+20 0.0480235 0.316931
+8 0.0480235 0.380065
+SURF 0x10
+mat 0
+refs 4
+10 0.0374339 0.380065
+22 0.0374339 0.316931
+21 0.0427287 0.316931
+9 0.0427287 0.380065
+SURF 0x10
+mat 0
+refs 4
+11 0.0321392 0.380065
+23 0.0321392 0.316931
+22 0.0374339 0.316931
+10 0.0374339 0.380065
+SURF 0x10
+mat 0
+refs 4
+0 0.0268444 0.380065
+12 0.0268444 0.316931
+23 0.0321392 0.316931
+11 0.0321392 0.380065
+kids 0
+OBJECT poly
+name "kr87.knobs.FRQInner"
+loc 0.00119933 0.00927919 -0.0499293
+texture "kx165tso.png"
+crease 45.000000
+numvert 24
+0.0440198 -0.0100351 0.0248547
+0.0440198 -0.008205 0.0266848
+0.0440198 -0.00753513 0.0291848
+0.0440198 -0.008205 0.0316848
+0.0440198 -0.0100351 0.033515
+0.0440198 -0.0125351 0.0341848
+0.0440198 -0.0150351 0.033515
+0.0440198 -0.0168653 0.0316848
+0.0440198 -0.0175351 0.0291848
+0.0440198 -0.0168653 0.0266848
+0.0440198 -0.0150351 0.0248547
+0.0440198 -0.0125351 0.0241848
+0.0540198 -0.0100351 0.0248547
+0.0540198 -0.008205 0.0266848
+0.0540198 -0.00753513 0.0291848
+0.0540198 -0.008205 0.0316848
+0.0540198 -0.0100351 0.033515
+0.0540198 -0.0125351 0.0341848
+0.0540198 -0.0150351 0.033515
+0.0540198 -0.0168653 0.0316848
+0.0540198 -0.0175351 0.0291848
+0.0540198 -0.0168653 0.0266848
+0.0540198 -0.0150351 0.0248547
+0.0540198 -0.0125351 0.0241848
+numsurf 13
+SURF 0x10
+mat 0
+refs 12
+12 0.115082 0.380737
+13 0.0923042 0.403588
+14 0.0611892 0.411951
+15 0.0300742 0.403588
+16 0.0072962 0.380737
+17 -0.00104079 0.349522
+18 0.0072962 0.318307
+19 0.0300742 0.295456
+20 0.0611892 0.287093
+21 0.0923042 0.295456
+22 0.115082 0.318307
+23 0.12342 0.349522
+SURF 0x10
+mat 0
+refs 4
+1 0.0886471 0.378893
+13 0.0886471 0.320799
+12 0.0941827 0.320799
+0 0.0941827 0.378893
+SURF 0x10
+mat 0
+refs 4
+2 0.0831115 0.378893
+14 0.0831115 0.320799
+13 0.0886471 0.320799
+1 0.0886471 0.378893
+SURF 0x10
+mat 0
+refs 4
+3 0.077576 0.378893
+15 0.077576 0.320799
+14 0.0831115 0.320799
+2 0.0831115 0.378893
+SURF 0x10
+mat 0
+refs 4
+4 0.0720404 0.378893
+16 0.0720404 0.320799
+15 0.077576 0.320799
+3 0.077576 0.378893
+SURF 0x10
+mat 0
+refs 4
+5 0.0665049 0.378893
+17 0.0665049 0.320799
+16 0.0720404 0.320799
+4 0.0720404 0.378893
+SURF 0x10
+mat 0
+refs 4
+6 0.0609693 0.378893
+18 0.0609693 0.320799
+17 0.0665049 0.320799
+5 0.0665049 0.378893
+SURF 0x10
+mat 0
+refs 4
+7 0.0554338 0.378893
+19 0.0554338 0.320799
+18 0.0609693 0.320799
+6 0.0609693 0.378893
+SURF 0x10
+mat 0
+refs 4
+8 0.0498982 0.378893
+20 0.0498982 0.320799
+19 0.0554338 0.320799
+7 0.0554338 0.378893
+SURF 0x10
+mat 0
+refs 4
+9 0.0443626 0.378893
+21 0.0443626 0.320799
+20 0.0498982 0.320799
+8 0.0498982 0.378893
+SURF 0x10
+mat 0
+refs 4
+10 0.0388271 0.378893
+22 0.0388271 0.320799
+21 0.0443626 0.320799
+9 0.0443626 0.378893
+SURF 0x10
+mat 0
+refs 4
+11 0.0332915 0.378893
+23 0.0332915 0.320799
+22 0.0388271 0.320799
+10 0.0388271 0.378893
+SURF 0x10
+mat 0
+refs 4
+0 0.027756 0.378893
+12 0.027756 0.320799
+23 0.0332915 0.320799
+11 0.0332915 0.378893
+kids 0
+OBJECT poly
+name "kr87.knobs.FRQOuter"
+loc 0.00119932 0.00927919 -0.0499293
+texture "kx165tso.png"
+crease 45.000000
+numvert 24
+0.0438582 -0.0125351 0.0216848
+0.0438582 -0.0162851 0.0226896
+0.0438582 -0.0190303 0.0254348
+0.0438582 -0.0200351 0.0291848
+0.0438582 -0.0190303 0.0329348
+0.0438582 -0.0162851 0.03568
+0.0438582 -0.0125351 0.0366848
+0.0438582 -0.00878513 0.03568
+0.0438582 -0.00603994 0.0329348
+0.0438582 -0.00503513 0.0291848
+0.0438582 -0.00603994 0.0254348
+0.0438582 -0.00878513 0.0226896
+0.0308582 -0.0125351 0.0216848
+0.0308582 -0.0162851 0.0226896
+0.0308582 -0.0190303 0.0254348
+0.0308582 -0.0200351 0.0291848
+0.0308582 -0.0190303 0.0329348
+0.0308582 -0.0162851 0.03568
+0.0308582 -0.0125351 0.0366848
+0.0308582 -0.00878513 0.03568
+0.0308582 -0.00603994 0.0329348
+0.0308582 -0.00503513 0.0291848
+0.0308582 -0.00603994 0.0254348
+0.0308582 -0.00878513 0.0226896
+numsurf 13
+SURF 0x10
+mat 0
+refs 12
+10 0.0924867 0.40276
+9 0.0613282 0.411146
+8 0.0301697 0.40276
+7 0.00736005 0.379848
+6 -0.000988867 0.34855
+5 0.00736005 0.317252
+4 0.0301697 0.29434
+3 0.0613282 0.285954
+2 0.0924867 0.29434
+1 0.115296 0.317252
+0 0.123645 0.34855
+11 0.115296 0.379848
+SURF 0x10
+mat 0
+refs 4
+23 0.0294325 0.37989
+11 0.0294325 0.317513
+0 0.0345921 0.317513
+12 0.0345921 0.37989
+SURF 0x10
+mat 0
+refs 4
+12 0.0345921 0.37989
+0 0.0345921 0.317513
+1 0.0397517 0.317513
+13 0.0397517 0.37989
+SURF 0x10
+mat 0
+refs 4
+13 0.0397517 0.37989
+1 0.0397517 0.317513
+2 0.0449114 0.317513
+14 0.0449114 0.37989
+SURF 0x10
+mat 0
+refs 4
+14 0.0449114 0.37989
+2 0.0449114 0.317513
+3 0.050071 0.317513
+15 0.050071 0.37989
+SURF 0x10
+mat 0
+refs 4
+15 0.050071 0.37989
+3 0.050071 0.317513
+4 0.0552306 0.317513
+16 0.0552306 0.37989
+SURF 0x10
+mat 0
+refs 4
+16 0.0552306 0.37989
+4 0.0552306 0.317513
+5 0.0603903 0.317513
+17 0.0603903 0.37989
+SURF 0x10
+mat 0
+refs 4
+17 0.0603903 0.37989
+5 0.0603903 0.317513
+6 0.0655499 0.317513
+18 0.0655499 0.37989
+SURF 0x10
+mat 0
+refs 4
+18 0.0655499 0.37989
+6 0.0655499 0.317513
+7 0.0707095 0.317513
+19 0.0707095 0.37989
+SURF 0x10
+mat 0
+refs 4
+19 0.0707095 0.37989
+7 0.0707095 0.317513
+8 0.0758692 0.317513
+20 0.0758692 0.37989
+SURF 0x10
+mat 0
+refs 4
+20 0.0758692 0.37989
+8 0.0758692 0.317513
+9 0.0810288 0.317513
+21 0.0810288 0.37989
+SURF 0x10
+mat 0
+refs 4
+21 0.0810288 0.37989
+9 0.0810288 0.317513
+10 0.0861884 0.317513
+22 0.0861884 0.37989
+SURF 0x10
+mat 0
+refs 4
+22 0.0861884 0.37989
+10 0.0861884 0.317513
+11 0.0913481 0.317513
+23 0.0913481 0.37989
+kids 0
diff --git a/Aircraft/Generic/DualControl/Instruments/KR87/kr87.nas b/Aircraft/Generic/DualControl/Instruments/KR87/kr87.nas
new file mode 100644
index 000000000..5ff2f485b
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KR87/kr87.nas
@@ -0,0 +1,266 @@
+###############################################################################
+##
+## Nasal for dual control of a KR-87 ADF radio over the multiplayer
+## network.
+##
+## Copyright (C) 2007 - 2010 Anders Gidenstam (anders(at)gidenstam.org)
+## This file is licensed under the GPL license version 2 or later.
+##
+###############################################################################
+
+# Note:
+# This module MUST be loaded as KR87.
+#
+
+# Slave button presses.
+var swap_btn = "frq-btn";
+var freq_decS = "freq-decS-clicked";
+var freq_incS = "freq-incS-clicked";
+var freq_decL = "freq-decL-clicked";
+var freq_incL = "freq-incL-clicked";
+
+var bfo_btn = "bfo-btn";
+
+# Settings
+var freq_selected = "frequencies/selected-khz";
+var freq_standby = "frequencies/standby-khz";
+
+var base = ["instrumentation/adf[0]",
+ "instrumentation/adf[1]"];
+
+###########################################################################
+var master_kr87 = {
+ new : func(n) {
+ var obj = {};
+ obj.parents = [master_kr87];
+ obj.base = props.globals.getNode(base[n]);
+ if (obj.base == nil) return;
+ obj.base.getNode("right-display", 1).
+ setValue(obj.base.getNode(freq_standby).getValue());
+ # Always show the standby frequency.
+ obj.base.getNode("display-mode", 1).setValue(0);
+ return obj;
+ },
+ swap : func() {
+ var tmp = me.base.getNode(freq_selected).getValue();
+ me.base.getNode(freq_selected).setValue
+ (me.base.getNode(freq_standby).getValue());
+ me.base.getNode(freq_standby).setValue(tmp);
+ me.base.getNode("right-display").setValue(tmp);
+ },
+ adjust_frequency : func(d) {
+ adjust_radio_frequency(
+ me.base.getNode(freq_standby),
+ d,
+ 200,
+ 1800);
+ me.base.getNode("right-display").
+ setValue(me.base.getNode(freq_standby).getValue());
+ },
+ toggle_BFO : func {
+ var p = me.base.getNode(bfo_btn).getValue() ? 0 : 1;
+ me.base.getNode(bfo_btn).setValue(p);
+ me.base.getNode("ident-audible").setValue(p);
+ }
+};
+
+###########################################################################
+var slave_kr87 = {
+ new : func(n, airoot) {
+ var obj = {};
+ obj.parents = [slave_kr87];
+ obj.airoot = airoot;
+ obj.base = props.globals.getNode(base[n]);
+ if (obj.base == nil) return;
+ obj.base.getNode("right-display", 1).
+ setValue(obj.base.getNode(freq_standby).getValue());
+ # Always show the standby frequency.
+ obj.base.getNode(base[n] ~ "/display-mode", 1).setValue(0);
+ return obj;
+ },
+ swap : func() {
+ var p = me.base.getNode(swap_btn);
+# print("KR87[?].SWAP");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ adjust_frequency : func(d) {
+ var p = 0;
+ if (abs(d) < 50) {
+ p = (d < 0) ? me.base.getNode(freq_decS)
+ : me.base.getNode(freq_incS);
+ } else {
+ p = (d < 0) ? me.base.getNode(freq_decL)
+ : me.base.getNode(freq_incL);
+ }
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+};
+
+###########################################################################
+# The KR-87 pick animations default to master.
+# NOTE: Use make_master() and make_slave_to().
+# Do NOT change kr87 directly.
+var kr87 = [master_kr87.new(0), master_kr87.new(1)];
+
+###########################################################################
+# API for pick animations.
+###########################################################################
+
+###########################################################################
+# n - ADF#
+swap = func(n) {
+ kr87[n].swap();
+}
+
+###########################################################################
+# n - ADF#
+# d - adjustment
+adjust_frequency = func(n, d) {
+ kr87[n].adjust_frequency(d);
+}
+
+###########################################################################
+# n - ADF#
+# p - pressed
+toggle_BFO = func(n) {
+ kr87[n].toggle_BFO();
+}
+
+###########################################################################
+# API for dual control setup.
+###########################################################################
+
+###########################################################################
+# n - ADF#
+var make_master = func(n) {
+ kr87[n] = master_kr87.new(n);
+}
+
+###########################################################################
+# n - ADF#
+var make_slave_to = func(n, airoot) {
+ kr87[n] = slave_kr87.new(n, airoot);
+}
+
+###########################################################################
+# Create aliases to drive a KR-87 3d model in an AI/MP model.
+# n - ADF#
+var animate_aimodel = func(n, airoot) {
+ var p = "systems/electrical/outputs/adf["~ n ~"]";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = "instrumentation/adf["~ n ~"]/serviceable";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/" ~ freq_selected;
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/" ~ freq_standby;
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/display-mode";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/right-display";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base[n] ~ "/power-btn";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+}
+
+###########################################################################
+# Create a TDMEncoder node array for sending the current radio state to
+# slaves.
+# n - Adf#
+var master_send_state = func(n) {
+ var b = props.globals.getNode(base[n]);
+ return
+ [
+ b.getNode(freq_selected),
+ b.getNode(freq_standby)
+ ];
+}
+
+###########################################################################
+# Create a SwitchDecoder action array for processing button presses
+# from a slave.
+# n - Adf#
+var master_receive_slave_buttons = func(n) {
+ return
+ [
+ func (b) {
+ if (b) { swap(n); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, -1.0); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, 1.0); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, -100.0); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, 100.0); }
+ }
+ ];
+}
+
+###########################################################################
+# Create a TDMDecoder action array for processing the radio state
+# from the master.
+# n - Adf#
+var slave_receive_master_state = func(n) {
+ var b = props.globals.getNode(base[n]);
+ return
+ [
+ func (v) {
+ b.getNode(freq_selected).setValue(v);
+ },
+ func (v) {
+ b.getNode(freq_standby).setValue(v);
+ b.getNode("right-display").setValue(v);
+ }
+ ];
+}
+
+###########################################################################
+# Create a SwitchEncoder node array for sending button presses
+# to the master
+# n - Adf#
+var slave_send_buttons = func(n) {
+ var b = props.globals.getNode(base[n]);
+ return
+ [
+ b.getNode(swap_btn, 1),
+ b.getNode(freq_decS, 1),
+ b.getNode(freq_incS, 1),
+ b.getNode(freq_decL, 1),
+ b.getNode(freq_incL, 1),
+# b.getNode(bfo_btn, 1)
+ ];
+}
+
+###########################################################################
+# (Not so) Generic frequency stepper.
+# f - frequency property
+# d - change
+# min - min frequency
+# max - max frequency
+var adjust_radio_frequency = func(f, d, min, max) {
+ var old = f.getValue();
+ var new = old + d;
+ if (new < min - 0.05) {
+ new = max + (new - min);
+ if ((max - new) >= -d) new += -d;
+ }
+ if (new > max + 0.05) {
+ new = min + (new - max);
+ if ((new - min) >= d) new -= d;
+ }
+# print("Old: " ~ old ~ " Intermediate: " ~ (old + d) ~ " New: " ~ new);
+ f.setValue(new);
+}
+
diff --git a/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.ac b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.ac
new file mode 100644
index 000000000..3f0e68659
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.ac
@@ -0,0 +1,1961 @@
+AC3Db
+MATERIAL "ac3dmat11" rgb 0.933333 0.501961 0.933333 amb 0.933333 0.501961 0.933333 emis 0 0 0 spec 0.2 0.2 0.2 shi 128 trans 1
+MATERIAL "ac3dmat1" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0 0 0 shi 10 trans 0
+MATERIAL "ac3dmat1" rgb 1 1 1 amb 1 1 1 emis 1 1 1 spec 0 0 0 shi 10 trans 0
+OBJECT world
+kids 15
+OBJECT poly
+name "Chassis"
+loc -0.0185441 0 0
+texture "kx165tso.png"
+crease 45.000000
+numvert 8
+0.0325441 -0.0255 0.079
+0.0325441 -0.0255 -0.079
+0.0325441 0.0255 -0.079
+0.0325441 0.0255 0.079
+0.0185441 -0.0255 0.079
+0.0185441 -0.0255 -0.079
+0.0185441 0.0255 -0.079
+0.0185441 0.0255 0.079
+numsurf 5
+SURF 0x10
+mat 1
+refs 4
+0 0.00195482 0.00231326
+1 0.877724 0.00231326
+2 0.877724 0.280521
+3 0.00195482 0.280521
+SURF 0x10
+mat 1
+refs 4
+0 0.918047 0.1704
+3 0.912783 0.1704
+7 0.912783 0.0114898
+4 0.918047 0.0114898
+SURF 0x10
+mat 1
+refs 4
+1 0.912783 0.1704
+0 0.918047 0.1704
+4 0.918047 0.0114898
+5 0.912783 0.0114898
+SURF 0x10
+mat 1
+refs 4
+2 0.912783 0.1704
+1 0.918047 0.1704
+5 0.918047 0.0114898
+6 0.912783 0.0114898
+SURF 0x10
+mat 1
+refs 4
+3 0.918047 0.1704
+2 0.912783 0.1704
+6 0.912783 0.0114898
+7 0.918047 0.0114898
+kids 0
+OBJECT group
+name "CommUse"
+loc 0.0117138 0.0026539 0.0457795
+kids 6
+OBJECT poly
+name "CommUse100M"
+loc 0.00234275 0.00053078 0.0232637
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 0.0172322 0.000379309
+0 0.0172322 0.00743323
+0 0.00698765 0.00743323
+0 0.00698765 0.000379309
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+0 0.0923401 0.527157
+1 0.00296877 0.527144
+2 0.00300568 0.419133
+3 0.0923396 0.419138
+kids 0
+OBJECT poly
+name "CommUse10M"
+loc 0.00234275 0.00053078 0.0162098
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 0.00698765 0.000379302
+0 0.00698765 0.00743322
+0 0.0172322 0.00743322
+0 0.0172322 0.000379302
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+3 0.0923401 0.527157
+2 0.00304349 0.527158
+1 0.0030804 0.419133
+0 0.0923396 0.419138
+kids 0
+OBJECT poly
+name "CommUse1M"
+loc 0.00234275 0.00053078 0.0091559
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 0.0172322 0.000379302
+0 0.0172322 0.00743322
+0 0.00698765 0.00743322
+0 0.00698765 0.000379302
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+0 0.0923401 0.527157
+1 0.00304349 0.527158
+2 0.0030804 0.419133
+3 0.0923396 0.419138
+kids 0
+OBJECT poly
+name "CommUse100K"
+loc 0.00234275 0.00053078 0.00210197
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 0.00698765 0.000379302
+0 0.00698765 0.00743323
+0 0.0172322 0.00743323
+0 0.0172322 0.000379302
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+3 0.0923401 0.527157
+2 0.00304349 0.527158
+1 0.0030804 0.419133
+0 0.0923396 0.419138
+kids 0
+OBJECT poly
+name "CommUse10K"
+loc 0.00234275 0.00053078 -0.00495195
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 0.0172322 0.000379302
+0 0.0172322 0.00743322
+0 0.00698765 0.00743322
+0 0.00698765 0.000379302
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+0 0.0923401 0.527157
+1 0.00304349 0.527158
+2 0.0030804 0.419133
+3 0.0923396 0.419138
+kids 0
+OBJECT poly
+name "CommUseDot"
+loc -0.0117138 -0.0026539 -0.0451466
+texture "kx165tso.png"
+crease 45.000000
+numvert 4
+0.0141379 0.0113861 0.0553319
+0.0141379 0.0113861 0.0564392
+0.0141379 0.0102382 0.0564392
+0.0141379 0.0102382 0.0553319
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+0 0.18258 0.543597
+1 0.170966 0.543597
+2 0.170966 0.532376
+3 0.18258 0.532376
+kids 0
+OBJECT group
+name "CommStby"
+loc 0.0119151 0.0026539 0.00880883
+kids 6
+OBJECT poly
+name "CommStby100M"
+loc 0.00214136 0.00053078 0.0232527
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 0.00698765 0.000379309
+0 0.00698765 0.00743323
+0 0.0172322 0.00743323
+0 0.0172322 0.000379309
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+3 0.0923023 0.527151
+2 0.00300565 0.527151
+1 0.00304288 0.419142
+0 0.0923396 0.419138
+kids 0
+OBJECT poly
+name "CommStby10M"
+loc 0.00214136 0.00053078 0.0161988
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 0.0172322 0.000379302
+0 0.0172322 0.00743323
+0 0.00698765 0.00743323
+0 0.00698765 0.000379302
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+0 0.0923023 0.527151
+1 0.00300565 0.527151
+2 0.00304288 0.419142
+3 0.0923396 0.419138
+kids 0
+OBJECT poly
+name "CommStby1M"
+loc 0.00214136 0.00053078 0.00914484
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 0.00698765 0.000379302
+0 0.00698765 0.00743322
+0 0.0172322 0.00743322
+0 0.0172322 0.000379302
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+3 0.0923023 0.527151
+2 0.00300565 0.527151
+1 0.00304288 0.419142
+0 0.0923396 0.419138
+kids 0
+OBJECT poly
+name "CommStby100K"
+loc 0.00214136 0.00053078 0.00209092
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 0.0172322 0.000379302
+0 0.0172322 0.00743323
+0 0.00698765 0.00743323
+0 0.00698765 0.000379302
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+0 0.0923023 0.527151
+1 0.00300565 0.527151
+2 0.00304288 0.419142
+3 0.0923396 0.419138
+kids 0
+OBJECT poly
+name "CommStby10K"
+loc 0.00214136 0.00053078 -0.004963
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 0.00698765 0.000379302
+0 0.00698765 0.00743322
+0 0.0172322 0.00743322
+0 0.0172322 0.000379302
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+3 0.0923023 0.527151
+2 0.00300565 0.527151
+1 0.00304288 0.419142
+0 0.0923396 0.419138
+kids 0
+OBJECT poly
+name "CommStbyDot"
+loc -0.0119151 -0.00265385 -0.0450913
+texture "kx165tso.png"
+crease 45.000000
+numvert 4
+0.0141379 0.0102382 0.0553319
+0.0141379 0.0102382 0.0564392
+0.0141379 0.0113861 0.0564392
+0.0141379 0.0113861 0.0553319
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+3 0.18258 0.543597
+2 0.170966 0.543597
+1 0.170966 0.532376
+0 0.18258 0.532376
+kids 0
+OBJECT group
+name "NavUse"
+loc 0.0121165 0.00265391 -0.0349148
+kids 6
+OBJECT poly
+name "NavUse100M"
+loc 0.00193996 0.0247506 0.031069
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.00698765 -0.00037931
+0 -0.00698765 -0.00743323
+0 -0.0172322 -0.00743323
+0 -0.0172322 -0.00037931
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+3 0.00304292 0.419137
+2 0.0923396 0.419138
+1 0.0923023 0.527151
+0 0.00300564 0.527151
+kids 0
+OBJECT poly
+name "NavUse10M"
+loc 0.00193996 0.0247506 0.0240151
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.0172322 -0.000379303
+0 -0.0172322 -0.00743322
+0 -0.00698765 -0.00743322
+0 -0.00698765 -0.000379303
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+0 0.00304292 0.419137
+1 0.0923396 0.419138
+2 0.0923023 0.527151
+3 0.00300564 0.527151
+kids 0
+OBJECT poly
+name "NavUse1M"
+loc 0.00193996 0.0247506 0.0169612
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.00698765 -0.000379302
+0 -0.00698765 -0.00743322
+0 -0.0172322 -0.00743322
+0 -0.0172322 -0.000379302
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+3 0.00304292 0.419137
+2 0.0923396 0.419138
+1 0.0923023 0.527151
+0 0.00300564 0.527151
+kids 0
+OBJECT poly
+name "NavUse100K"
+loc 0.00193996 0.0247506 0.00990724
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.0172322 -0.000379302
+0 -0.0172322 -0.00743323
+0 -0.00698765 -0.00743323
+0 -0.00698765 -0.000379302
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+0 0.00304292 0.419137
+1 0.0923396 0.419138
+2 0.0923023 0.527151
+3 0.00300564 0.527151
+kids 0
+OBJECT poly
+name "NavUse10K"
+loc 0.00193996 0.0247506 0.00285331
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.00698765 -0.000379302
+0 -0.00698765 -0.00743322
+0 -0.0172322 -0.00743322
+0 -0.0172322 -0.000379302
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+3 0.00304292 0.419137
+2 0.0923396 0.419138
+1 0.0923023 0.527151
+0 0.00300564 0.527151
+kids 0
+OBJECT poly
+name "NavUseDot"
+loc -0.0121165 -0.00265386 -0.0451102
+texture "kx165tso.png"
+crease 45.000000
+numvert 4
+0.0141379 0.0113861 0.0553319
+0.0141379 0.0113861 0.0564392
+0.0141379 0.0102382 0.0564392
+0.0141379 0.0102382 0.0553319
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+0 0.18258 0.543597
+1 0.170966 0.543597
+2 0.170966 0.532376
+3 0.18258 0.532376
+kids 0
+OBJECT group
+name "NavStby"
+loc 0.0123179 0.00265391 -0.0718956
+kids 6
+OBJECT poly
+name "NavStby100M"
+loc 0.00173857 0.0247506 0.031068
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.0172322 -0.000379309
+0 -0.0172322 -0.00743323
+0 -0.00698765 -0.00743323
+0 -0.00698765 -0.000379309
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+0 0.00304292 0.419137
+1 0.0923396 0.419138
+2 0.0923023 0.527151
+3 0.00300564 0.527151
+kids 0
+OBJECT poly
+name "NavStby10M"
+loc 0.00173857 0.0247506 0.0240141
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.00698765 -0.000379302
+0 -0.00698765 -0.00743323
+0 -0.0172322 -0.00743323
+0 -0.0172322 -0.000379302
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+3 0.00304292 0.419137
+2 0.0923396 0.419138
+1 0.0923023 0.527151
+0 0.00300564 0.527151
+kids 0
+OBJECT poly
+name "NavStby1M"
+loc 0.00173857 0.0247506 0.0169602
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.0172322 -0.000379302
+0 -0.0172322 -0.00743322
+0 -0.00698765 -0.00743322
+0 -0.00698765 -0.000379302
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+0 0.00304292 0.419137
+1 0.0923396 0.419138
+2 0.0923023 0.527151
+3 0.00300564 0.527151
+kids 0
+OBJECT poly
+name "NavStby100K"
+loc 0.00173857 0.0247506 0.00990625
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.00698765 -0.000379302
+0 -0.00698765 -0.00743323
+0 -0.0172322 -0.00743323
+0 -0.0172322 -0.000379302
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+3 0.00304292 0.419137
+2 0.0923396 0.419138
+1 0.0923023 0.527151
+0 0.00300564 0.527151
+kids 0
+OBJECT poly
+name "NavStby10K"
+loc 0.00173857 0.0247506 0.00285233
+texture "kx165tso.png"
+texrep 1 1
+crease 45.000000
+numvert 4
+0 -0.0172322 -0.000379302
+0 -0.0172322 -0.00743322
+0 -0.00698765 -0.00743322
+0 -0.00698765 -0.000379302
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+0 0.00304292 0.419137
+1 0.0923396 0.419138
+2 0.0923023 0.527151
+3 0.00300564 0.527151
+kids 0
+OBJECT poly
+name "NavStbyDot"
+loc -0.0123179 -0.00265386 -0.0451054
+texture "kx165tso.png"
+crease 45.000000
+numvert 4
+0.0141379 0.0102382 0.0553319
+0.0141379 0.0102382 0.0564392
+0.0141379 0.0113861 0.0564392
+0.0141379 0.0113861 0.0553319
+numsurf 1
+SURF 0x0
+mat 2
+refs 4
+3 0.18258 0.543597
+2 0.170966 0.543597
+1 0.170966 0.532376
+0 0.18258 0.532376
+kids 0
+OBJECT group
+name "CommKnobs"
+loc -0.0176169 0.00594301 0.0243414
+kids 4
+OBJECT poly
+name "CommToggle"
+loc -0.00052402 -0.00645512 -0.0306302
+texture "kx165tso.png"
+crease 45.000000
+numvert 8
+0.0321433 -0.00498789 0.0557888
+0.0321433 -0.00498789 0.0467888
+0.0371433 -0.00498789 0.0467888
+0.0371433 -0.00498789 0.0557888
+0.0371433 1.21146e-05 0.0557888
+0.0371433 1.21146e-05 0.0467888
+0.0321433 1.21146e-05 0.0467888
+0.0321433 1.21146e-05 0.0557888
+numsurf 5
+SURF 0x10
+mat 1
+refs 4
+5 0.582319 0.323544
+2 0.595037 0.323544
+1 0.595037 0.338763
+6 0.582319 0.338763
+SURF 0x10
+mat 1
+refs 4
+7 0.582319 0.323544
+0 0.595037 0.323544
+3 0.595037 0.338763
+4 0.582319 0.338763
+SURF 0x10
+mat 1
+refs 4
+4 0.533687 0.343785
+3 0.533687 0.287279
+2 0.645258 0.287279
+5 0.645258 0.343785
+SURF 0x10
+mat 1
+refs 4
+7 0.582319 0.323544
+4 0.595037 0.323544
+5 0.595037 0.338763
+6 0.582319 0.338763
+SURF 0x10
+mat 1
+refs 4
+0 0.582319 0.323544
+1 0.595037 0.323544
+2 0.595037 0.338763
+3 0.582319 0.338763
+kids 0
+OBJECT poly
+name "CommMHz"
+loc 0.000685325 -0.00540788 -0.0315262
+texture "kx165tso.png"
+crease 45.000000
+numvert 24
+0.0308582 -0.00878513 0.0226896
+0.0308582 -0.00603994 0.0254348
+0.0308582 -0.00503513 0.0291848
+0.0308582 -0.00603994 0.0329348
+0.0308582 -0.00878513 0.03568
+0.0308582 -0.0125351 0.0366848
+0.0308582 -0.0162851 0.03568
+0.0308582 -0.0190303 0.0329348
+0.0308582 -0.0200351 0.0291848
+0.0308582 -0.0190303 0.0254348
+0.0308582 -0.0162851 0.0226896
+0.0308582 -0.0125351 0.0216848
+0.0438582 -0.00878513 0.0226896
+0.0438582 -0.00603994 0.0254348
+0.0438582 -0.00503513 0.0291848
+0.0438582 -0.00603994 0.0329348
+0.0438582 -0.00878513 0.03568
+0.0438582 -0.0125351 0.0366848
+0.0438582 -0.0162851 0.03568
+0.0438582 -0.0190303 0.0329348
+0.0438582 -0.0200351 0.0291848
+0.0438582 -0.0190303 0.0254348
+0.0438582 -0.0162851 0.0226896
+0.0438582 -0.0125351 0.0216848
+numsurf 13
+SURF 0x10
+mat 1
+refs 4
+1 0.954002 0.128238
+13 0.954002 0.0156906
+12 0.989995 0.0156906
+0 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+2 0.954002 0.128238
+14 0.954002 0.0156906
+13 0.989995 0.0156906
+1 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+3 0.954002 0.128238
+15 0.954002 0.0156906
+14 0.989995 0.0156906
+2 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+4 0.954002 0.128238
+16 0.954002 0.0156906
+15 0.989995 0.0156906
+3 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+5 0.954002 0.128238
+17 0.954002 0.0156906
+16 0.989995 0.0156906
+4 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+6 0.954002 0.128238
+18 0.954002 0.0156906
+17 0.989995 0.0156906
+5 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+7 0.954002 0.128238
+19 0.954002 0.0156906
+18 0.989995 0.0156906
+6 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+8 0.954002 0.128238
+20 0.954002 0.0156906
+19 0.989995 0.0156906
+7 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+9 0.954002 0.128238
+21 0.954002 0.0156906
+20 0.989995 0.0156906
+8 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+10 0.954002 0.128238
+22 0.954002 0.0156906
+21 0.989995 0.0156906
+9 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+11 0.954002 0.128238
+23 0.954002 0.0156906
+22 0.989995 0.0156906
+10 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+0 0.954002 0.128238
+12 0.954002 0.0156906
+23 0.989995 0.0156906
+11 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 12
+13 0.077879 0.409873
+14 0.0454072 0.409909
+15 0.0173038 0.393864
+16 0.00109929 0.366036
+17 0.00113561 0.333883
+18 0.017403 0.30602
+19 0.0455428 0.289913
+20 0.0780147 0.289877
+21 0.106118 0.305922
+22 0.122322 0.33375
+23 0.122286 0.365902
+12 0.106018 0.393765
+kids 0
+OBJECT poly
+name "CommKHz"
+loc 0.000685325 -0.00540788 -0.0315262
+texture "kx165tso.png"
+crease 45.000000
+numvert 24
+0.0540198 -0.0125351 0.0241848
+0.0540198 -0.0150351 0.0248547
+0.0540198 -0.0168653 0.0266848
+0.0540198 -0.0175351 0.0291848
+0.0540198 -0.0168653 0.0316848
+0.0540198 -0.0150351 0.033515
+0.0540198 -0.0125351 0.0341848
+0.0540198 -0.0100351 0.033515
+0.0540198 -0.008205 0.0316848
+0.0540198 -0.00753513 0.0291848
+0.0540198 -0.008205 0.0266848
+0.0540198 -0.0100351 0.0248547
+0.0440198 -0.0125351 0.0241848
+0.0440198 -0.0150351 0.0248547
+0.0440198 -0.0168653 0.0266848
+0.0440198 -0.0175351 0.0291848
+0.0440198 -0.0168653 0.0316848
+0.0440198 -0.0150351 0.033515
+0.0440198 -0.0125351 0.0341848
+0.0440198 -0.0100351 0.033515
+0.0440198 -0.008205 0.0316848
+0.0440198 -0.00753513 0.0291848
+0.0440198 -0.008205 0.0266848
+0.0440198 -0.0100351 0.0248547
+numsurf 13
+SURF 0x0
+mat 1
+refs 4
+23 0.954002 0.128238
+11 0.954002 0.0156906
+0 0.989995 0.0156906
+12 0.989995 0.128238
+SURF 0x0
+mat 1
+refs 4
+12 0.954002 0.128238
+0 0.954002 0.0156906
+1 0.989995 0.0156906
+13 0.989995 0.128238
+SURF 0x0
+mat 1
+refs 4
+13 0.954002 0.128238
+1 0.954002 0.0156906
+2 0.989995 0.0156906
+14 0.989995 0.128238
+SURF 0x0
+mat 1
+refs 4
+14 0.954002 0.128238
+2 0.954002 0.0156906
+3 0.989995 0.0156906
+15 0.989995 0.128238
+SURF 0x0
+mat 1
+refs 4
+15 0.954002 0.128238
+3 0.954002 0.0156906
+4 0.989995 0.0156906
+16 0.989995 0.128238
+SURF 0x0
+mat 1
+refs 4
+16 0.954002 0.128238
+4 0.954002 0.0156906
+5 0.989995 0.0156906
+17 0.989995 0.128238
+SURF 0x0
+mat 1
+refs 4
+17 0.954002 0.128238
+5 0.954002 0.0156906
+6 0.989995 0.0156906
+18 0.989995 0.128238
+SURF 0x0
+mat 1
+refs 4
+18 0.954002 0.128238
+6 0.954002 0.0156906
+7 0.989995 0.0156906
+19 0.989995 0.128238
+SURF 0x0
+mat 1
+refs 4
+19 0.954002 0.128238
+7 0.954002 0.0156906
+8 0.989995 0.0156906
+20 0.989995 0.128238
+SURF 0x0
+mat 1
+refs 4
+20 0.954002 0.128238
+8 0.954002 0.0156906
+9 0.989995 0.0156906
+21 0.989995 0.128238
+SURF 0x0
+mat 1
+refs 4
+21 0.954002 0.128238
+9 0.954002 0.0156906
+10 0.989995 0.0156906
+22 0.989995 0.128238
+SURF 0x0
+mat 1
+refs 4
+22 0.954002 0.128238
+10 0.954002 0.0156906
+11 0.989995 0.0156906
+23 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 12
+11 0.238004 0.393253
+10 0.210088 0.40943
+9 0.177868 0.409456
+8 0.149977 0.393323
+7 0.133889 0.365356
+6 0.133916 0.333047
+5 0.150047 0.305054
+4 0.177963 0.288877
+3 0.210184 0.288851
+2 0.238074 0.304983
+1 0.254162 0.332951
+0 0.254136 0.365259
+kids 0
+OBJECT poly
+name "CommVolume"
+loc -0.000846632 0.0172709 0.0936826
+texture "kx165tso.png"
+crease 45.000000
+numvert 24
+0.0423582 -0.034739 -0.053549
+0.0423582 -0.0338331 -0.055118
+0.0423582 -0.0338331 -0.0569297
+0.0423582 -0.034739 -0.0584987
+0.0423582 -0.036308 -0.0594046
+0.0423582 -0.0381198 -0.0594046
+0.0423582 -0.0396888 -0.0584987
+0.0423582 -0.0405946 -0.0569297
+0.0423582 -0.0405946 -0.055118
+0.0423582 -0.0396888 -0.053549
+0.0423582 -0.0381198 -0.0526431
+0.0423582 -0.036308 -0.0526431
+0.0323582 -0.034739 -0.053549
+0.0323582 -0.0338331 -0.055118
+0.0323582 -0.0338331 -0.0569297
+0.0323582 -0.034739 -0.0584987
+0.0323582 -0.036308 -0.0594046
+0.0323582 -0.0381198 -0.0594046
+0.0323582 -0.0396888 -0.0584987
+0.0323582 -0.0405946 -0.0569297
+0.0323582 -0.0405946 -0.055118
+0.0323582 -0.0396888 -0.053549
+0.0323582 -0.0381198 -0.0526431
+0.0323582 -0.036308 -0.0526431
+numsurf 13
+SURF 0x10
+mat 1
+refs 4
+23 0.954002 0.128238
+11 0.954002 0.0156906
+0 0.989995 0.0156906
+12 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+12 0.954002 0.128238
+0 0.954002 0.0156906
+1 0.989995 0.0156906
+13 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+13 0.954002 0.128238
+1 0.954002 0.0156906
+2 0.989995 0.0156906
+14 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+14 0.954002 0.128238
+2 0.954002 0.0156906
+3 0.989995 0.0156906
+15 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+15 0.954002 0.128238
+3 0.954002 0.0156906
+4 0.989995 0.0156906
+16 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+16 0.954002 0.128238
+4 0.954002 0.0156906
+5 0.989995 0.0156906
+17 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+17 0.954002 0.128238
+5 0.954002 0.0156906
+6 0.989995 0.0156906
+18 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+18 0.954002 0.128238
+6 0.954002 0.0156906
+7 0.989995 0.0156906
+19 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+19 0.954002 0.128238
+7 0.954002 0.0156906
+8 0.989995 0.0156906
+20 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+20 0.954002 0.128238
+8 0.954002 0.0156906
+9 0.989995 0.0156906
+21 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+21 0.954002 0.128238
+9 0.954002 0.0156906
+10 0.989995 0.0156906
+22 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+22 0.954002 0.128238
+10 0.954002 0.0156906
+11 0.989995 0.0156906
+23 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 12
+11 0.505318 0.394852
+10 0.477464 0.410748
+9 0.445189 0.410554
+8 0.417142 0.394321
+7 0.400839 0.3664
+6 0.400648 0.334272
+5 0.41662 0.306546
+4 0.444475 0.29065
+3 0.47675 0.290844
+2 0.504796 0.307077
+1 0.521099 0.334997
+0 0.521291 0.367125
+kids 0
+OBJECT group
+name "NavKnobs"
+loc -0.0177177 0.00594301 -0.0556586
+kids 4
+OBJECT poly
+name "NavToggle"
+loc -0.000826385 -0.00645512 -0.0306302
+texture "kx165tso.png"
+crease 45.000000
+numvert 8
+0.0321433 1.21146e-05 0.0557888
+0.0321433 1.21146e-05 0.0467888
+0.0371433 1.21146e-05 0.0467888
+0.0371433 1.21146e-05 0.0557888
+0.0371433 -0.00498789 0.0557888
+0.0371433 -0.00498789 0.0467888
+0.0321433 -0.00498789 0.0467888
+0.0321433 -0.00498789 0.0557888
+numsurf 5
+SURF 0x10
+mat 1
+refs 4
+7 0.582319 0.323544
+6 0.595037 0.323544
+5 0.595037 0.338763
+4 0.582319 0.338763
+SURF 0x10
+mat 1
+refs 4
+0 0.582319 0.323544
+3 0.595037 0.323544
+2 0.595037 0.338763
+1 0.582319 0.338763
+SURF 0x10
+mat 1
+refs 4
+3 0.533687 0.343785
+4 0.533687 0.287279
+5 0.645258 0.287279
+2 0.645258 0.343785
+SURF 0x10
+mat 1
+refs 4
+0 0.582319 0.323544
+7 0.595037 0.323544
+4 0.595037 0.338763
+3 0.582319 0.338763
+SURF 0x10
+mat 1
+refs 4
+2 0.582319 0.323544
+5 0.595037 0.323544
+6 0.595037 0.338763
+1 0.582319 0.338763
+kids 0
+OBJECT poly
+name "NavMHz"
+loc 0.000786129 -0.00540788 -0.0315262
+texture "kx165tso.png"
+crease 45.000000
+numvert 24
+0.0438582 -0.0125351 0.0216848
+0.0438582 -0.0162851 0.0226896
+0.0438582 -0.0190303 0.0254348
+0.0438582 -0.0200351 0.0291848
+0.0438582 -0.0190303 0.0329348
+0.0438582 -0.0162851 0.03568
+0.0438582 -0.0125351 0.0366848
+0.0438582 -0.00878513 0.03568
+0.0438582 -0.00603994 0.0329348
+0.0438582 -0.00503513 0.0291848
+0.0438582 -0.00603994 0.0254348
+0.0438582 -0.00878513 0.0226896
+0.0308582 -0.0125351 0.0216848
+0.0308582 -0.0162851 0.0226896
+0.0308582 -0.0190303 0.0254348
+0.0308582 -0.0200351 0.0291848
+0.0308582 -0.0190303 0.0329348
+0.0308582 -0.0162851 0.03568
+0.0308582 -0.0125351 0.0366848
+0.0308582 -0.00878513 0.03568
+0.0308582 -0.00603994 0.0329348
+0.0308582 -0.00503513 0.0291848
+0.0308582 -0.00603994 0.0254348
+0.0308582 -0.00878513 0.0226896
+numsurf 13
+SURF 0x10
+mat 1
+refs 12
+10 0.0780978 0.409973
+9 0.0457745 0.409929
+8 0.0177597 0.393805
+7 0.00156012 0.365922
+6 0.00151628 0.33375
+5 0.01764 0.305911
+4 0.045611 0.289863
+3 0.0779343 0.289907
+2 0.105949 0.30603
+1 0.122148 0.333914
+0 0.122192 0.366085
+11 0.106068 0.393925
+SURF 0x10
+mat 1
+refs 4
+23 0.954002 0.128238
+11 0.954002 0.0156906
+0 0.989995 0.0156906
+12 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+12 0.954002 0.128238
+0 0.954002 0.0156906
+1 0.989995 0.0156906
+13 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+13 0.954002 0.128238
+1 0.954002 0.0156906
+2 0.989995 0.0156906
+14 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+14 0.954002 0.128238
+2 0.954002 0.0156906
+3 0.989995 0.0156906
+15 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+15 0.954002 0.128238
+3 0.954002 0.0156906
+4 0.989995 0.0156906
+16 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+16 0.954002 0.128238
+4 0.954002 0.0156906
+5 0.989995 0.0156906
+17 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+17 0.954002 0.128238
+5 0.954002 0.0156906
+6 0.989995 0.0156906
+18 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+18 0.954002 0.128238
+6 0.954002 0.0156906
+7 0.989995 0.0156906
+19 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+19 0.954002 0.128238
+7 0.954002 0.0156906
+8 0.989995 0.0156906
+20 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+20 0.954002 0.128238
+8 0.954002 0.0156906
+9 0.989995 0.0156906
+21 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+21 0.954002 0.128238
+9 0.954002 0.0156906
+10 0.989995 0.0156906
+22 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+22 0.954002 0.128238
+10 0.954002 0.0156906
+11 0.989995 0.0156906
+23 0.989995 0.128238
+kids 0
+OBJECT poly
+name "NavKHz"
+loc 0.0007861 -0.0054079 -0.0315262
+texture "kx165tso.png"
+crease 45.000000
+numvert 24
+0.0440198 -0.0100351 0.0248547
+0.0440198 -0.008205 0.0266848
+0.0440198 -0.00753513 0.0291848
+0.0440198 -0.008205 0.0316848
+0.0440198 -0.0100351 0.033515
+0.0440198 -0.0125351 0.0341848
+0.0440198 -0.0150351 0.033515
+0.0440198 -0.0168653 0.0316848
+0.0440198 -0.0175351 0.0291848
+0.0440198 -0.0168653 0.0266848
+0.0440198 -0.0150351 0.0248547
+0.0440198 -0.0125351 0.0241848
+0.0540198 -0.0100351 0.0248547
+0.0540198 -0.008205 0.0266848
+0.0540198 -0.00753513 0.0291848
+0.0540198 -0.008205 0.0316848
+0.0540198 -0.0100351 0.033515
+0.0540198 -0.0125351 0.0341848
+0.0540198 -0.0150351 0.033515
+0.0540198 -0.0168653 0.0316848
+0.0540198 -0.0175351 0.0291848
+0.0540198 -0.0168653 0.0266848
+0.0540198 -0.0150351 0.0248547
+0.0540198 -0.0125351 0.0241848
+numsurf 13
+SURF 0x10
+mat 1
+refs 12
+12 0.371826 0.392792
+13 0.34391 0.408969
+14 0.31169 0.408994
+15 0.2838 0.392862
+16 0.267712 0.364895
+17 0.267738 0.332586
+18 0.28387 0.304592
+19 0.311787 0.288415
+20 0.344006 0.28839
+21 0.371896 0.304521
+22 0.387984 0.332489
+23 0.387959 0.364798
+SURF 0x10
+mat 1
+refs 4
+1 0.954002 0.128238
+13 0.954002 0.0156906
+12 0.989995 0.0156906
+0 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+2 0.954002 0.128238
+14 0.954002 0.0156906
+13 0.989995 0.0156906
+1 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+3 0.954002 0.128238
+15 0.954002 0.0156906
+14 0.989995 0.0156906
+2 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+4 0.954002 0.128238
+16 0.954002 0.0156906
+15 0.989995 0.0156906
+3 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+5 0.954002 0.128238
+17 0.954002 0.0156906
+16 0.989995 0.0156906
+4 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+6 0.954002 0.128238
+18 0.954002 0.0156906
+17 0.989995 0.0156906
+5 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+7 0.954002 0.128238
+19 0.954002 0.0156906
+18 0.989995 0.0156906
+6 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+8 0.954002 0.128238
+20 0.954002 0.0156906
+19 0.989995 0.0156906
+7 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+9 0.954002 0.128238
+21 0.954002 0.0156906
+20 0.989995 0.0156906
+8 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+10 0.954002 0.128238
+22 0.954002 0.0156906
+21 0.989995 0.0156906
+9 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+11 0.954002 0.128238
+23 0.954002 0.0156906
+22 0.989995 0.0156906
+10 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+0 0.954002 0.128238
+12 0.954002 0.0156906
+23 0.989995 0.0156906
+11 0.989995 0.128238
+kids 0
+OBJECT poly
+name "NavVolume"
+loc -0.000745887 0.0172709 0.0936824
+texture "kx165tso.png"
+crease 45.000000
+numvert 24
+0.0323582 -0.036308 -0.0526431
+0.0323582 -0.0381198 -0.0526431
+0.0323582 -0.0396888 -0.0535489
+0.0323582 -0.0405946 -0.0551179
+0.0323582 -0.0405946 -0.0569297
+0.0323582 -0.0396888 -0.0584987
+0.0323582 -0.0381198 -0.0594046
+0.0323582 -0.036308 -0.0594045
+0.0323582 -0.034739 -0.0584987
+0.0323582 -0.0338331 -0.0569297
+0.0323582 -0.0338331 -0.0551179
+0.0323582 -0.034739 -0.0535489
+0.0423582 -0.036308 -0.0526431
+0.0423582 -0.0381198 -0.0526431
+0.0423582 -0.0396888 -0.0535489
+0.0423582 -0.0405946 -0.0551179
+0.0423582 -0.0405946 -0.0569297
+0.0423582 -0.0396888 -0.0584987
+0.0423582 -0.0381198 -0.0594046
+0.0423582 -0.036308 -0.0594045
+0.0423582 -0.034739 -0.0584987
+0.0423582 -0.0338331 -0.0569297
+0.0423582 -0.0338331 -0.0551179
+0.0423582 -0.034739 -0.0535489
+numsurf 13
+SURF 0x10
+mat 1
+refs 12
+12 0.505318 0.394852
+13 0.477464 0.410748
+14 0.445189 0.410554
+15 0.417142 0.394321
+16 0.400839 0.3664
+17 0.400648 0.334272
+18 0.41662 0.306546
+19 0.444475 0.29065
+20 0.47675 0.290844
+21 0.504796 0.307077
+22 0.521099 0.334997
+23 0.521291 0.367125
+SURF 0x10
+mat 1
+refs 4
+1 0.954002 0.128238
+13 0.954002 0.0156906
+12 0.989995 0.0156906
+0 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+2 0.954002 0.128238
+14 0.954002 0.0156906
+13 0.989995 0.0156906
+1 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+3 0.954002 0.128238
+15 0.954002 0.0156906
+14 0.989995 0.0156906
+2 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+4 0.954002 0.128238
+16 0.954002 0.0156906
+15 0.989995 0.0156906
+3 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+5 0.954002 0.128238
+17 0.954002 0.0156906
+16 0.989995 0.0156906
+4 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+6 0.954002 0.128238
+18 0.954002 0.0156906
+17 0.989995 0.0156906
+5 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+7 0.954002 0.128238
+19 0.954002 0.0156906
+18 0.989995 0.0156906
+6 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+8 0.954002 0.128238
+20 0.954002 0.0156906
+19 0.989995 0.0156906
+7 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+9 0.954002 0.128238
+21 0.954002 0.0156906
+20 0.989995 0.0156906
+8 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+10 0.954002 0.128238
+22 0.954002 0.0156906
+21 0.989995 0.0156906
+9 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+11 0.954002 0.128238
+23 0.954002 0.0156906
+22 0.989995 0.0156906
+10 0.989995 0.128238
+SURF 0x10
+mat 1
+refs 4
+0 0.954002 0.128238
+12 0.954002 0.0156906
+23 0.989995 0.0156906
+11 0.989995 0.128238
+kids 0
+OBJECT poly
+name "NavVolumePickRight"
+loc 0.0047947 0.0138945 -0.0325927
+crease 45.000000
+numvert 4
+0.0093053 -0.0188944 0.00559257
+0.0093053 -0.0188944 0.0145926
+0.0093053 -0.0368944 0.0145926
+0.0093053 -0.0368944 0.00559257
+numsurf 1
+SURF 0x10
+mat 0
+refs 4
+0 1 1
+1 0 1
+2 0 0
+3 1 0
+kids 0
+OBJECT poly
+name "NavVolumePickLeft"
+loc 0.0047947 0.0138945 -0.0325927
+crease 45.000000
+numvert 4
+0.0093053 -0.0368944 0.0145926
+0.0093053 -0.0368944 0.0235926
+0.0093053 -0.0188944 0.0235926
+0.0093053 -0.0188944 0.0145926
+numsurf 1
+SURF 0x10
+mat 0
+refs 4
+3 1 1
+2 0 1
+1 0 0
+0 1 0
+kids 0
+OBJECT poly
+name "CommVolumePickLeft"
+loc 0.0047947 0.0138945 0.0474076
+crease 45.000000
+numvert 4
+0.0093053 -0.0188944 0.0145926
+0.0093053 -0.0188944 0.0235926
+0.0093053 -0.0368944 0.0235926
+0.0093053 -0.0368944 0.0145926
+numsurf 1
+SURF 0x10
+mat 0
+refs 4
+0 1 1
+1 0 1
+2 0 0
+3 1 0
+kids 0
+OBJECT poly
+name "CommVolumePickRight"
+loc 0.0047947 0.0138945 0.0474076
+crease 45.000000
+numvert 4
+0.0093053 -0.0368944 0.00559257
+0.0093053 -0.0368944 0.0145926
+0.0093053 -0.0188944 0.0145926
+0.0093053 -0.0188944 0.00559257
+numsurf 1
+SURF 0x10
+mat 0
+refs 4
+3 1 1
+2 0 1
+1 0 0
+0 1 0
+kids 0
+OBJECT poly
+name "CommFreqPickLeft"
+loc 0.0254203 -0.012 0.0265
+crease 45.000000
+numvert 19
+0.0114937 0 -0.0045
+-0.0114937 -3.72529e-09 0.003
+-0.0114937 -0.00375 0.00199519
+-0.0114937 -0.00649519 -0.00075
+-0.0114937 -0.0075 -0.0045
+-0.0114937 0.0075 -0.0045
+-0.0114937 0.00649519 -0.00075
+-0.0114937 0.00375 0.00199519
+0.0114937 -3.72529e-09 0.003
+0.0114937 -0.00375 0.00199519
+0.0114937 -0.00649519 -0.00075
+0.0114937 -0.0075 -0.0045
+0.0114937 0.0075 -0.0045
+0.0114937 0.00649519 -0.00075
+0.0114937 0.00375 0.00199519
+-0.0113203 0.009 -0.0045
+-0.0113203 0.009 0.0045
+-0.0113203 -0.009 0.0045
+-0.0113203 -0.009 -0.0045
+numsurf 13
+SURF 0x10
+mat 0
+refs 3
+0 0 0
+14 0 0
+8 0 0
+SURF 0x10
+mat 0
+refs 3
+0 0 0
+8 0 0
+9 0 0
+SURF 0x10
+mat 0
+refs 3
+0 0 0
+9 0 0
+10 0 0
+SURF 0x10
+mat 0
+refs 3
+0 0 0
+10 0 0
+11 0 0
+SURF 0x10
+mat 0
+refs 3
+0 0 0
+12 0 0
+13 0 0
+SURF 0x10
+mat 0
+refs 3
+0 0 0
+13 0 0
+14 0 0
+SURF 0x10
+mat 0
+refs 4
+14 -2.98023e-08 1
+7 -2.98023e-08 0
+1 0.0833333 0
+8 0.0833333 1
+SURF 0x10
+mat 0
+refs 4
+8 0.0833333 1
+1 0.0833333 0
+2 0.166667 0
+9 0.166667 1
+SURF 0x10
+mat 0
+refs 4
+9 0.166667 1
+2 0.166667 0
+3 0.25 0
+10 0.25 1
+SURF 0x10
+mat 0
+refs 4
+10 0.25 1
+3 0.25 0
+4 0.333333 0
+11 0.333333 1
+SURF 0x10
+mat 0
+refs 4
+12 0.833333 1
+5 0.833333 0
+6 0.916667 0
+13 0.916667 1
+SURF 0x10
+mat 0
+refs 4
+13 0.916667 1
+6 0.916667 0
+7 1 0
+14 1 1
+SURF 0x10
+mat 0
+refs 4
+15 1 1
+16 0 1
+17 0 0
+18 1 0
+kids 0
+OBJECT poly
+name "CommFreqPickRight"
+loc 0.0254203 -0.012 0.0175
+crease 45.000000
+numvert 19
+0.0114937 0.0075 0.0045
+0.0114937 0.00649519 0.000750002
+0.0114937 0.00375 -0.00199519
+0.0114937 9.31323e-10 -0.003
+0.0114937 -0.00375 -0.00199519
+0.0114937 -0.00649519 0.000750002
+0.0114937 -0.0075 0.0045
+-0.0114937 0.0075 0.0045
+-0.0114937 0.00649519 0.000750002
+-0.0114937 0.00375 -0.00199519
+-0.0114937 9.31323e-10 -0.003
+-0.0114937 -0.00375 -0.00199519
+-0.0114937 -0.00649519 0.000750002
+-0.0114937 -0.0075 0.0045
+0.0114937 0 0.0045
+-0.0113203 -0.009 -0.0045
+-0.0113203 -0.009 0.0045
+-0.0113203 0.009 0.0045
+-0.0113203 0.009 -0.0045
+numsurf 13
+SURF 0x10
+mat 0
+refs 4
+1 0.75 1
+8 0.75 0
+7 0.833333 0
+0 0.833333 1
+SURF 0x10
+mat 0
+refs 4
+2 0.666667 1
+9 0.666667 0
+8 0.75 0
+1 0.75 1
+SURF 0x10
+mat 0
+refs 4
+3 0.583333 1
+10 0.583333 0
+9 0.666667 0
+2 0.666667 1
+SURF 0x10
+mat 0
+refs 4
+4 0.5 1
+11 0.5 0
+10 0.583333 0
+3 0.583333 1
+SURF 0x10
+mat 0
+refs 4
+5 0.416667 1
+12 0.416667 0
+11 0.5 0
+4 0.5 1
+SURF 0x10
+mat 0
+refs 4
+6 0.333333 1
+13 0.333333 0
+12 0.416667 0
+5 0.416667 1
+SURF 0x10
+mat 0
+refs 3
+14 0 0
+1 0 0
+0 0 0
+SURF 0x10
+mat 0
+refs 3
+14 0 0
+2 0 0
+1 0 0
+SURF 0x10
+mat 0
+refs 3
+14 0 0
+3 0 0
+2 0 0
+SURF 0x10
+mat 0
+refs 3
+14 0 0
+4 0 0
+3 0 0
+SURF 0x10
+mat 0
+refs 3
+14 0 0
+5 0 0
+4 0 0
+SURF 0x10
+mat 0
+refs 3
+14 0 0
+6 0 0
+5 0 0
+SURF 0x10
+mat 0
+refs 4
+18 1 1
+17 0 1
+16 0 0
+15 1 0
+kids 0
+OBJECT poly
+name "NavFreqPickLeft"
+loc 0.0254203 -0.012 -0.0535
+crease 45.000000
+numvert 19
+0.0114937 0.00375 0.00199519
+0.0114937 0.00649519 -0.000750002
+0.0114937 0.0075 -0.0045
+0.0114937 -0.0075 -0.0045
+0.0114937 -0.00649519 -0.000750002
+0.0114937 -0.00375 0.00199519
+0.0114937 -4.65661e-09 0.003
+-0.0114937 0.00375 0.00199519
+-0.0114937 0.00649519 -0.000750002
+-0.0114937 0.0075 -0.0045
+-0.0114937 -0.0075 -0.0045
+-0.0114937 -0.00649519 -0.000750002
+-0.0114937 -0.00375 0.00199519
+-0.0114937 -4.65661e-09 0.003
+0.0114937 -9.31323e-10 -0.0045
+-0.0113203 0.009 -0.00450001
+-0.0113203 0.009 0.0045
+-0.0113203 -0.009 0.0045
+-0.0113203 -0.009 -0.00450001
+numsurf 13
+SURF 0x10
+mat 0
+refs 4
+1 0.916667 1
+8 0.916667 0
+7 1 0
+0 1 1
+SURF 0x10
+mat 0
+refs 4
+2 0.833333 1
+9 0.833333 0
+8 0.916667 0
+1 0.916667 1
+SURF 0x10
+mat 0
+refs 4
+4 0.25 1
+11 0.25 0
+10 0.333333 0
+3 0.333333 1
+SURF 0x10
+mat 0
+refs 4
+5 0.166667 1
+12 0.166667 0
+11 0.25 0
+4 0.25 1
+SURF 0x10
+mat 0
+refs 4
+6 0.0833333 1
+13 0.0833333 0
+12 0.166667 0
+5 0.166667 1
+SURF 0x10
+mat 0
+refs 4
+0 -2.98023e-08 1
+7 -2.98023e-08 0
+13 0.0833333 0
+6 0.0833333 1
+SURF 0x10
+mat 0
+refs 3
+14 0 0
+1 0 0
+0 0 0
+SURF 0x10
+mat 0
+refs 3
+14 0 0
+2 0 0
+1 0 0
+SURF 0x10
+mat 0
+refs 3
+14 0 0
+4 0 0
+3 0 0
+SURF 0x10
+mat 0
+refs 3
+14 0 0
+5 0 0
+4 0 0
+SURF 0x10
+mat 0
+refs 3
+14 0 0
+6 0 0
+5 0 0
+SURF 0x10
+mat 0
+refs 3
+14 0 0
+0 0 0
+6 0 0
+SURF 0x10
+mat 0
+refs 4
+15 1 1
+16 0 1
+17 0 0
+18 1 0
+kids 0
+OBJECT poly
+name "NavFreqPickRight"
+loc 0.0254203 -0.012 -0.0625
+crease 45.000000
+numvert 19
+0.0114937 -9.31323e-10 0.0045
+-0.0114937 -0.0075 0.0045
+-0.0114937 -0.00649519 0.000750002
+-0.0114937 -0.00375 -0.00199519
+-0.0114937 0 -0.003
+-0.0114937 0.00375 -0.00199519
+-0.0114937 0.00649519 0.000750002
+-0.0114937 0.0075 0.0045
+0.0114937 -0.0075 0.0045
+0.0114937 -0.00649519 0.000750002
+0.0114937 -0.00375 -0.00199519
+0.0114937 0 -0.003
+0.0114937 0.00375 -0.00199519
+0.0114937 0.00649519 0.000750002
+0.0114937 0.0075 0.0045
+-0.0113203 -0.009 -0.0045
+-0.0113203 -0.009 0.0045
+-0.0113203 0.009 0.0045
+-0.0113203 0.009 -0.0045
+numsurf 13
+SURF 0x10
+mat 0
+refs 3
+0 0 0
+8 0 0
+9 0 0
+SURF 0x10
+mat 0
+refs 3
+0 0 0
+9 0 0
+10 0 0
+SURF 0x10
+mat 0
+refs 3
+0 0 0
+10 0 0
+11 0 0
+SURF 0x10
+mat 0
+refs 3
+0 0 0
+11 0 0
+12 0 0
+SURF 0x10
+mat 0
+refs 3
+0 0 0
+12 0 0
+13 0 0
+SURF 0x10
+mat 0
+refs 3
+0 0 0
+13 0 0
+14 0 0
+SURF 0x10
+mat 0
+refs 4
+8 0.333333 1
+1 0.333333 0
+2 0.416667 0
+9 0.416667 1
+SURF 0x10
+mat 0
+refs 4
+9 0.416667 1
+2 0.416667 0
+3 0.5 0
+10 0.5 1
+SURF 0x10
+mat 0
+refs 4
+10 0.5 1
+3 0.5 0
+4 0.583333 0
+11 0.583333 1
+SURF 0x10
+mat 0
+refs 4
+11 0.583333 1
+4 0.583333 0
+5 0.666667 0
+12 0.666667 1
+SURF 0x10
+mat 0
+refs 4
+12 0.666667 1
+5 0.666667 0
+6 0.75 0
+13 0.75 1
+SURF 0x10
+mat 0
+refs 4
+13 0.75 1
+6 0.75 0
+7 0.833333 0
+14 0.833333 1
+SURF 0x10
+mat 0
+refs 4
+18 1 1
+17 0 1
+16 0 0
+15 1 0
+kids 0
diff --git a/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.nas b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.nas
new file mode 100644
index 000000000..82fa04478
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.nas
@@ -0,0 +1,335 @@
+###############################################################################
+##
+## Nasal for dual control of a KX165 NavComm radio over the multiplayer
+## network.
+##
+## Copyright (C) 2007 - 2010 Anders Gidenstam (anders(at)gidenstam.org)
+## This file is licensed under the GPL license version 2 or later.
+##
+###############################################################################
+
+# Note:
+# This module MUST be loaded as KX165.
+#
+
+# Slave button presses.
+var swap_btn = "frq-swap-btn";
+var freq_decS = "freq-decS-clicked";
+var freq_incS = "freq-incS-clicked";
+var freq_decL = "freq-decL-clicked";
+var freq_incL = "freq-incL-clicked";
+
+# Settings
+var freq_selected = "frequencies/selected-mhz";
+var freq_standby = "frequencies/standby-mhz";
+
+var comm_base = ["instrumentation/comm[0]",
+ "instrumentation/comm[1]"];
+var nav_base = ["instrumentation/nav[0]",
+ "instrumentation/nav[1]"];
+
+###########################################################################
+var master_kx165tso = {
+ new : func(n) {
+ var obj = {};
+ obj.parents = [master_kx165tso];
+ obj.nav_base = props.globals.getNode("instrumentation/nav[" ~ n ~ "]");
+ obj.comm_base = props.globals.getNode("instrumentation/comm[" ~ n ~ "]");
+ return obj;
+ },
+ swap_nav : func() {
+ var tmp = me.nav_base.getNode(freq_selected).getValue();
+ me.nav_base.getNode(freq_selected).setValue
+ (me.nav_base.getNode(freq_standby).getValue());
+ me.nav_base.getNode(freq_standby).setValue(tmp);
+ },
+ swap_comm : func() {
+ var tmp = me.comm_base.getNode(freq_selected).getValue();
+ me.comm_base.getNode(freq_selected).setValue
+ (me.comm_base.getNode(freq_standby).getValue());
+ me.comm_base.getNode(freq_standby).setValue(tmp);
+ },
+ adjust_nav_frequency : func(d) {
+ adjust_radio_frequency(
+ me.nav_base.getNode(freq_standby),
+ d,
+ 108,
+ 117.95);
+ },
+ adjust_comm_frequency : func(d) {
+ adjust_radio_frequency(
+ me.comm_base.getNode(freq_standby),
+ d,
+ 118,
+ 135.975);
+ }
+};
+
+###########################################################################
+var slave_kx165tso = {
+ new : func(n, airoot) {
+ var obj = {};
+ obj.parents = [slave_kx165tso];
+ obj.root = airoot;
+ obj.nav_base = props.globals.getNode("instrumentation/nav[" ~ n ~ "]");
+ obj.comm_base = props.globals.getNode("instrumentation/comm[" ~ n ~ "]");
+ return obj;
+ },
+ swap_nav : func() {
+ var p = me.nav_base.getNode(swap_btn);
+# print("KX165tso[?].NAVSWAP");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ swap_comm : func() {
+ var p = me.comm_base.getNode(swap_btn);
+# print("KX165tso[?].COMMSWAP");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ adjust_nav_frequency : func(d) {
+ var p = 0;
+ if (abs(d) < 0.99) {
+ p = (d < 0) ? me.nav_base.getNode(freq_decS)
+ : me.nav_base.getNode(freq_incS);
+ } else {
+ p = (d < 0) ? me.nav_base.getNode(freq_decL)
+ : me.nav_base.getNode(freq_incL);
+ }
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ adjust_comm_frequency : func(d) {
+ var p = 0;
+ if (abs(d) < 0.99) {
+ p = (d < 0) ? me.comm_base.getNode(freq_decS)
+ : me.comm_base.getNode(freq_incS);
+ } else {
+ p = (d < 0) ? me.comm_base.getNode(freq_decL)
+ : me.comm_base.getNode(freq_incL);
+ }
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ }
+};
+
+###########################################################################
+# The KX-165 pick animations default to master.
+# NOTE: Use make_master() and make_slave_to().
+# Do NOT change kx165tso directly.
+var kx165tso = [master_kx165tso.new(0), master_kx165tso.new(1)];
+
+
+###########################################################################
+# API for pick animations and dual control setup.
+###########################################################################
+
+###########################################################################
+# n - NavComm#
+var make_master = func(n) {
+ kx165tso[n] = master_kx165tso.new(n);
+}
+
+###########################################################################
+# n - NavComm#
+var make_slave_to = func(n, airoot) {
+ kx165tso[n] = slave_kx165tso.new(n, airoot);
+}
+
+###########################################################################
+# n - NavComm#
+swap_nav = func(n) {
+ kx165tso[n].swap_nav();
+}
+
+###########################################################################
+# n - NavComm#
+swap_comm = func(n, b) {
+ kx165tso[n].comm_base.getNode(swap_btn, 1).setValue(b);
+ if (b) kx165tso[n].swap_comm();
+}
+
+###########################################################################
+# n - NavComm#
+# d - adjustment
+adjust_nav_frequency = func(n, d) {
+ kx165tso[n].adjust_nav_frequency(d);
+}
+
+###########################################################################
+# n - NavComm#
+# d - adjustment
+adjust_comm_frequency = func(n, d) {
+ kx165tso[n].adjust_comm_frequency(d);
+}
+
+###########################################################################
+# Create aliases to drive a radio 3d model in an AI/MP model.
+# n - NavComm#
+var animate_aimodel = func(n, airoot) {
+ # Comm
+ var base = comm_base[n];
+ var p = "systems/electrical/outputs/comm["~ n ~"]";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = "instrumentation/comm["~ n ~"]/serviceable";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base ~ "/" ~ freq_selected;
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base ~ "/" ~ freq_standby;
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base ~ "/" ~ swap_btn;
+ props.globals.getNode(p, 1).alias(airoot.getNode(p));
+ # Nav
+ base = nav_base[n];
+ p = "systems/electrical/outputs/nav["~ n ~"]";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = "instrumentation/nav["~ n ~"]/serviceable";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base ~ "/" ~ freq_selected;
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base ~ "/" ~ freq_standby;
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = base ~ "/" ~ swap_btn;
+ props.globals.getNode(p, 1).alias(airoot.getNode(p));
+}
+
+###########################################################################
+# Create a TDMEncoder node array for sending the current radio state to
+# slaves.
+# n - NavComm#
+var master_send_state = func(n) {
+ var cb = props.globals.getNode(comm_base[n]);
+ var nb = props.globals.getNode(nav_base[n]);
+ return
+ [
+ cb.getNode(freq_selected),
+ cb.getNode(freq_standby),
+ nb.getNode(freq_selected),
+ nb.getNode(freq_standby)
+ ];
+}
+
+###########################################################################
+# Create a SwitchDecoder action array for processing button presses
+# from a slave.
+# n - Comm#
+var master_receive_slave_buttons = func(n) {
+ return
+ [
+ # Comm
+ func (b) {
+ if (b) {
+ swap_comm(n, 1);
+ settimer(func { swap_comm(n, 0); }, 1.0)
+ }
+ },
+ func (b) {
+ if (b) { adjust_comm_frequency(n, -0.025); }
+ },
+ func (b) {
+ if (b) { adjust_comm_frequency(n, 0.025); }
+ },
+ func (b) {
+ if (b) { adjust_comm_frequency(n, -1.0); }
+ },
+ func (b) {
+ if (b) { adjust_comm_frequency(n, 1.0); }
+ },
+ # Nav
+ func (b) {
+ if (b) { swap_nav(n); }
+ },
+ func (b) {
+ if (b) { adjust_nav_frequency(n, -0.05); }
+ },
+ func (b) {
+ if (b) { adjust_nav_frequency(n, 0.05); }
+ },
+ func (b) {
+ if (b) { adjust_nav_frequency(n, -1.0); }
+ },
+ func (b) {
+ if (b) { adjust_nav_frequency(n, 1.0); }
+ }
+ ];
+}
+
+###########################################################################
+# Create a TDMDecoder action array for processing the radio state
+# from the master.
+# n - NavComm#
+var slave_receive_master_state = func(n) {
+ var cb = props.globals.getNode(comm_base[n]);
+ var nb = props.globals.getNode(nav_base[n]);
+ return
+ [
+ func (v) {
+ cb.getNode(freq_selected).setValue(v);
+ },
+ func (v) {
+ cb.getNode(freq_standby).setValue(v);
+ },
+ func (v) {
+ nb.getNode(freq_selected).setValue(v);
+ },
+ func (v) {
+ nb.getNode(freq_standby).setValue(v);
+ }
+ ];
+}
+
+###########################################################################
+# Create a SwitchEncoder node array for sending button presses
+# to the master
+# n - NavComm#
+var slave_send_buttons = func(n) {
+ var cb = props.globals.getNode(comm_base[n]);
+ var nb = props.globals.getNode(nav_base[n]);
+ return
+ [
+ # Comm
+ cb.getNode(swap_btn, 1),
+ cb.getNode(freq_decS, 1),
+ cb.getNode(freq_incS, 1),
+ cb.getNode(freq_decL, 1),
+ cb.getNode(freq_incL, 1),
+ # Nav
+ nb.getNode(swap_btn, 1),
+ nb.getNode(freq_decS, 1),
+ nb.getNode(freq_incS, 1),
+ nb.getNode(freq_decL, 1),
+ nb.getNode(freq_incL, 1)
+ ];
+}
+
+
+
+###########################################################################
+# Generic frequency stepper.
+# f - frequency property
+# d - change
+# min - min frequency
+# max - max frequency
+var adjust_radio_frequency = func(f, d, min, max) {
+ var old = f.getValue();
+ var new = old + d;
+ if (new < min - 0.005) { new = int(max) + (new - int(new)); }
+ if (new > max + 0.005) {
+ new = int(min) + (new - int(new));
+ if (int(new + 0.005) > min) new -= 1;
+ }
+# print("Old: " ~ old ~ " Intermediate: " ~ (old + d) ~ " New: " ~ new);
+ f.setValue(new);
+}
diff --git a/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.png b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.png
new file mode 100644
index 000000000..9fe67f49b
Binary files /dev/null and b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso.png differ
diff --git a/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso1.xml b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso1.xml
new file mode 100644
index 000000000..724df7a99
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso1.xml
@@ -0,0 +1,599 @@
+
+
+
+
+ kx165tso.ac
+
+
+ select
+ CommUse
+ CommStby
+ NavUse
+ NavStby
+
+ instrumentation/comm[0]/serviceable
+ instrumentation/nav[0]/serviceable
+
+
+
+
+
+
+
+ material
+ CommToggle
+ NavToggle
+
+ sim/model/instrument-lighting/emission/red
+ sim/model/instrument-lighting/emission/green
+ sim/model/instrument-lighting/emission/blue
+ controls/lighting/instruments-norm
+
+
+
+
+ translate
+ CommToggle
+ instrumentation/comm[0]/frq-swap-btn
+ -0.004
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ CommUse100M
+ instrumentation/comm[0]/frequencies/selected-mhz
+ 100
+ 0.001
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommUse10M
+ instrumentation/comm[0]/frequencies/selected-mhz
+ 10
+ 0.01
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommUse1M
+ instrumentation/comm[0]/frequencies/selected-mhz
+ 1
+ 0.1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommUse100K
+ instrumentation/comm[0]/frequencies/selected-mhz
+ 0.1
+ 1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommUse10K
+ instrumentation/comm[0]/frequencies/selected-mhz
+ 0.01
+ 10
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ CommStby100M
+ instrumentation/comm[0]/frequencies/standby-mhz
+ 100
+ 0.001
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommStby10M
+ instrumentation/comm[0]/frequencies/standby-mhz
+ 10
+ 0.01
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommStby1M
+ instrumentation/comm[0]/frequencies/standby-mhz
+ 1
+ 0.1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommStby100K
+ instrumentation/comm[0]/frequencies/standby-mhz
+ 0.1
+ 1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommStby10K
+ instrumentation/comm[0]/frequencies/standby-mhz
+ 0.01
+ 10
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+
+
+
+ translate
+ NavToggle
+ instrumentation/nav[0]/frq-swap-btn
+ -0.004
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ NavUse100M
+ instrumentation/nav[0]/frequencies/selected-mhz
+ 100
+ 0.001
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavUse10M
+ instrumentation/nav[0]/frequencies/selected-mhz
+ 10
+ 0.01
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavUse1M
+ instrumentation/nav[0]/frequencies/selected-mhz
+ 1
+ 0.1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavUse100K
+ instrumentation/nav[0]/frequencies/selected-mhz
+ 0.1
+ 1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavUse10K
+ instrumentation/nav[0]/frequencies/selected-mhz
+ 0.01
+ 10
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ NavStby100M
+ instrumentation/nav[0]/frequencies/standby-mhz
+ 100
+ 0.001
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavStby10M
+ instrumentation/nav[0]/frequencies/standby-mhz
+ 10
+ 0.01
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavStby1M
+ instrumentation/nav[0]/frequencies/standby-mhz
+ 1
+ 0.1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavStby100K
+ instrumentation/nav[0]/frequencies/standby-mhz
+ 0.1
+ 1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavStby10K
+ instrumentation/nav[0]/frequencies/standby-mhz
+ 0.01
+ 10
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+
+
+
+ rotate
+ CommVolume
+ instrumentation/comm[0]/volume
+ -270
+
+ 1
+ 0
+ 0
+
+
+ 0.0188947
+ -0.0620002
+ -0.0139999
+
+
+
+
+ translate
+ CommVolume
+ instrumentation/comm[0]/volume
+ 0.002
+
+ 1
+ 0
+ 0
+
+
+
+
+ rotate
+ CommKHz
+ instrumentation/comm[0]/frequencies/standby-mhz
+ -1200
+
+ 1
+ 0
+ 0
+
+
+ 0.0320882
+ -0.022
+ -0.012
+
+
+
+ rotate
+ NavVolume
+ instrumentation/nav[0]/volume
+ -270
+
+ 1
+ 0
+ 0
+
+
+ 0.0188946
+ 0.0180001
+ -0.0139999
+
+
+
+
+ translate
+ NavVolume
+ instrumentation/nav[0]/volume
+ 0.002
+
+ 1
+ 0
+ 0
+
+
+
+
+
+
+ pick
+ CommToggle
+
+
+ false
+
+ nasal
+
+
+
+
+ nasal
+
+
+
+
+
+
+
+ pick
+ CommKHz
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ CommMHz
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ NavToggle
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ NavKHz
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ NavMHz
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ noshadow
+
+
+ range
+ 0
+ 10
+
+
+
diff --git a/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso2.xml b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso2.xml
new file mode 100644
index 000000000..6bf3ae07d
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/KX165/kx165tso2.xml
@@ -0,0 +1,599 @@
+
+
+
+
+ kx165tso.ac
+
+
+ select
+ CommUse
+ CommStby
+ NavUse
+ NavStby
+
+ instrumentation/comm[1]/serviceable
+ instrumentation/nav[1]/serviceable
+
+
+
+
+
+
+
+ material
+ CommToggle
+ NavToggle
+
+ sim/model/instrument-lighting/emission/red
+ sim/model/instrument-lighting/emission/green
+ sim/model/instrument-lighting/emission/blue
+ controls/lighting/instruments-norm
+
+
+
+
+ translate
+ CommToggle
+ instrumentation/comm[1]/frq-swap-btn
+ -0.004
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ CommUse100M
+ instrumentation/comm[1]/frequencies/selected-mhz
+ 100
+ 0.001
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommUse10M
+ instrumentation/comm[1]/frequencies/selected-mhz
+ 10
+ 0.01
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommUse1M
+ instrumentation/comm[1]/frequencies/selected-mhz
+ 1
+ 0.1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommUse100K
+ instrumentation/comm[1]/frequencies/selected-mhz
+ 0.1
+ 1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommUse10K
+ instrumentation/comm[1]/frequencies/selected-mhz
+ 0.01
+ 10
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ CommStby100M
+ instrumentation/comm[1]/frequencies/standby-mhz
+ 100
+ 0.001
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommStby10M
+ instrumentation/comm[1]/frequencies/standby-mhz
+ 10
+ 0.01
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommStby1M
+ instrumentation/comm[1]/frequencies/standby-mhz
+ 1
+ 0.1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommStby100K
+ instrumentation/comm[1]/frequencies/standby-mhz
+ 0.1
+ 1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ CommStby10K
+ instrumentation/comm[1]/frequencies/standby-mhz
+ 0.01
+ 10
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+
+
+
+ translate
+ NavToggle
+ instrumentation/nav[1]/frq-swap-btn
+ -0.004
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ NavUse100M
+ instrumentation/nav[1]/frequencies/selected-mhz
+ 100
+ 0.001
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavUse10M
+ instrumentation/nav[1]/frequencies/selected-mhz
+ 10
+ 0.01
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavUse1M
+ instrumentation/nav[1]/frequencies/selected-mhz
+ 1
+ 0.1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavUse100K
+ instrumentation/nav[1]/frequencies/selected-mhz
+ 0.1
+ 1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavUse10K
+ instrumentation/nav[1]/frequencies/selected-mhz
+ 0.01
+ 10
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+
+ textranslate
+ NavStby100M
+ instrumentation/nav[1]/frequencies/standby-mhz
+ 100
+ 0.001
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavStby10M
+ instrumentation/nav[1]/frequencies/standby-mhz
+ 10
+ 0.01
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavStby1M
+ instrumentation/nav[1]/frequencies/standby-mhz
+ 1
+ 0.1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavStby100K
+ instrumentation/nav[1]/frequencies/standby-mhz
+ 0.1
+ 1
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+ textranslate
+ NavStby10K
+ instrumentation/nav[1]/frequencies/standby-mhz
+ 0.01
+ 10
+ 0.0005
+
+ 1
+ 0
+ 0
+
+
+
+
+
+
+ rotate
+ CommVolume
+ instrumentation/comm[1]/volume
+ -270
+
+ 1
+ 0
+ 0
+
+
+ 0.0188947
+ -0.0620002
+ -0.0139999
+
+
+
+
+ translate
+ CommVolume
+ instrumentation/comm[1]/volume
+ 0.002
+
+ 1
+ 0
+ 0
+
+
+
+
+ rotate
+ CommKHz
+ instrumentation/comm[1]/frequencies/standby-mhz
+ -1200
+
+ 1
+ 0
+ 0
+
+
+ 0.0320882
+ -0.022
+ -0.012
+
+
+
+ rotate
+ NavVolume
+ instrumentation/nav[1]/volume
+ -270
+
+ 1
+ 0
+ 0
+
+
+ 0.0188946
+ 0.0180001
+ -0.0139999
+
+
+
+
+ translate
+ NavVolume
+ instrumentation/nav[1]/volume
+ 0.002
+
+ 1
+ 0
+ 0
+
+
+
+
+
+
+ pick
+ CommToggle
+
+
+ false
+
+ nasal
+
+
+
+
+ nasal
+
+
+
+
+
+
+
+ pick
+ CommKHz
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ CommMHz
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ NavToggle
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ NavKHz
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ NavMHz
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ noshadow
+
+
+ range
+ 0
+ 10
+
+
+
diff --git a/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl-22.png b/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl-22.png
new file mode 100644
index 000000000..45ec78084
Binary files /dev/null and b/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl-22.png differ
diff --git a/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22-com.xml b/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22-com.xml
new file mode 100644
index 000000000..56824b1df
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22-com.xml
@@ -0,0 +1,387 @@
+
+
+
+
+
+
+
+ instrumentation/comm[0]/serviceable
+ systems/electrical/outputs/comm[0]
+ instrumentation/comm[0]/frequencies/selected-mhz
+ instrumentation/comm[0]/frequencies/standby-mhz
+ VHF22.swap(0);
+ VHF22.adjust_frequency(0, 0.025);
+ VHF22.adjust_frequency(0, -0.025);
+ VHF22.adjust_frequency(0, 1.0);
+ VHF22.adjust_frequency(0, -1.0);
+
+
+ ctl22.ac
+
+
+ select
+ freq.001
+ freq.002
+ freq.003
+ freq.dec
+ freq.004
+ freq.005
+ freq.006
+
+
+
+ 1
+
+
+
+
+
+ select
+ stby.001
+ stby.002
+ stby.003
+ stby.dec
+ stby.004
+ stby.005
+ stby.006
+
+
+
+ 1
+
+
+
+
+
+ select
+ mem.annun
+
+
+
+ 1
+
+
+
+
+
+ rotate
+ CTL-22.pwr
+
+
+ 00
+ 1.030
+
+
+ 0.0
+ -0.014
+ -0.018
+
+
+ -1
+ 0
+ 0
+
+
+
+
+
+
+ textranslate
+ freq.001
+
+ 0.001
+ 100
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ freq.002
+
+ 0.01
+ 10
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ freq.003
+
+ 0.1
+ 1
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ freq.004
+
+ 1.0
+ 0.1
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ freq.005
+
+ 10.0
+ 0.01
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ freq.006
+
+ 100.0
+ 0.001
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+
+
+ textranslate
+ stby.001
+
+ 0.001
+ 100
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ stby.002
+
+ 0.01
+ 10
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ stby.003
+
+ 0.1
+ 1
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ stby.004
+
+ 1.0
+ 0.1
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ stby.005
+
+ 10.0
+ 0.01
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ stby.006
+
+ 100
+ 0.001
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ pick
+ CTL-22.xfr
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ pwr.off
+
+
+ false
+
+ property-assign
+
+ false
+
+
+
+
+
+ pick
+ pwr.on
+
+
+ false
+
+ property-assign
+
+ true
+
+
+
+
+
+ pick
+ freq.knob.kHz
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ freq.knob.MHz
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
diff --git a/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22-com1.xml b/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22-com1.xml
new file mode 100644
index 000000000..3003cbf15
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22-com1.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ instrumentation/comm[0]/serviceable
+ systems/electrical/outputs/comm[0]
+ instrumentation/comm[0]/frequencies/selected-mhz
+ instrumentation/comm[0]/frequencies/standby-mhz
+ VHF22.swap(0);
+ VHF22.adjust_frequency(0, 0.025);
+ VHF22.adjust_frequency(0, -0.025);
+ VHF22.adjust_frequency(0, 1.0);
+ VHF22.adjust_frequency(0, -1.0);
+
+
+
diff --git a/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22-com2.xml b/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22-com2.xml
new file mode 100644
index 000000000..37664e9aa
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22-com2.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+ instrumentation/comm[1]/serviceable
+ systems/electrical/outputs/comm[1]
+ instrumentation/comm[1]/frequencies/selected-mhz
+ instrumentation/comm[1]/frequencies/standby-mhz
+ VHF22.swap(1);
+ VHF22.adjust_frequency(1, 0.025);
+ VHF22.adjust_frequency(1, -0.025);
+ VHF22.adjust_frequency(1, 1.0);
+ VHF22.adjust_frequency(1, -1.0);
+
+
+
diff --git a/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22.ac b/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22.ac
new file mode 100644
index 000000000..43f84269e
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22.ac
@@ -0,0 +1,2491 @@
+AC3Db
+MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
+MATERIAL "DefaultWhite.001" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
+MATERIAL "dimlit" rgb 1 1 1 amb 1 1 1 emis 0.5 0.5 0.5 spec 0.5 0.5 0.5 shi 64 trans 0
+MATERIAL "lit" rgb 1 1 1 amb 1 1 1 emis 1 1 1 spec 0.5 0.5 0.5 shi 64 trans 0
+OBJECT world
+kids 31
+OBJECT poly
+name "CTL-22"
+data 4
+Mesh
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 8
+0.00288 0.033556 0.030053
+0.002878 -0.033556 0.030053
+0.002878 -0.033556 -0.030053
+0.00288 0.033556 -0.030053
+1e-06 0.033557 0.030053
+-1e-06 -0.033557 0.030053
+-1e-06 -0.033557 -0.030053
+1e-06 0.033557 -0.030054
+numsurf 7
+SURF 0x00
+mat 1
+refs 3
+2 0.0318928062916 0.52865421772
+6 0.0318928062916 0.471345812082
+7 0.0892012119293 0.471345812082
+SURF 0x00
+mat 1
+refs 3
+1 0.0318928062916 0.52865421772
+4 0.0318928062916 0.471345812082
+5 0.0892012119293 0.471345812082
+SURF 0x00
+mat 1
+refs 4
+4 0.0318928062916 0.52865421772
+0 0.0318928062916 0.471345812082
+3 0.0892012119293 0.471345812082
+7 0.0892012119293 0.52865421772
+SURF 0x00
+mat 1
+refs 4
+6 0.0318928062916 0.52865421772
+2 0.0318928062916 0.471345812082
+1 0.0892012119293 0.471345812082
+5 0.0892012119293 0.52865421772
+SURF 0x00
+mat 1
+refs 3
+1 0.0318928062916 0.52865421772
+0 0.0318928062916 0.471345812082
+4 0.0892012119293 0.471345812082
+SURF 0x00
+mat 1
+refs 3
+3 0.0318928062916 0.52865421772
+2 0.0318928062916 0.471345812082
+7 0.0892012119293 0.471345812082
+SURF 0x00
+mat 1
+refs 4
+0 0.00467306375504 0.99786221981
+1 0.00467306375504 0.10612988472
+2 0.803326964378 0.106129825115
+3 0.803327083588 0.99786221981
+kids 0
+OBJECT poly
+name "CTL-22.mem"
+data 8
+Mesh.001
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003175 0.002595 -0.027258
+0.003175 0.002595 -0.017239
+0.003175 0.012924 -0.027258
+0.003175 0.012924 -0.017239
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.765544474125 0.593913197517
+2 0.765544474125 0.72511190176
+3 0.638291478157 0.725111961365
+1 0.638291418552 0.593913197517
+kids 0
+OBJECT poly
+name "CTL-22.pwr"
+data 8
+Mesh.002
+texture "ctl-22.png"
+texrep 1 1
+crease 40.000000
+numvert 61
+0.011466 -0.015168 0.013404
+0.011476 -0.015544 0.012224
+0.011475 -0.016342 0.011278
+0.011464 -0.018675 0.010605
+0.011471 -0.020801 0.011778
+0.011463 -0.021369 0.012878
+0.011464 -0.021474 0.014111
+0.011474 -0.0211 0.01529
+0.011475 -0.020302 0.016236
+0.011476 -0.019202 0.016805
+0.011467 -0.016789 0.016536
+0.011479 -0.015843 0.015737
+0.011467 -0.015273 0.014638
+0.010939 -0.013021 0.015336
+0.010936 -0.014013 0.017254
+0.010939 -0.015663 0.018644
+0.010934 -0.017718 0.019298
+0.010936 -0.019868 0.019115
+0.010934 -0.021784 0.018124
+0.010932 -0.023174 0.016474
+0.010934 -0.023829 0.014417
+0.010928 -0.023646 0.012268
+0.010933 -0.022654 0.010352
+0.010928 -0.021004 0.008961
+0.010934 -0.018949 0.008307
+0.010932 -0.016798 0.00849
+0.010934 -0.014883 0.009482
+0.010936 -0.013492 0.011131
+0.010934 -0.012838 0.013187
+0.003255 -0.013021 0.015336
+0.003253 -0.014013 0.017253
+0.003255 -0.015662 0.018644
+0.003252 -0.017719 0.019297
+0.003253 -0.019869 0.019114
+0.003252 -0.021785 0.018123
+0.003251 -0.023175 0.016474
+0.003252 -0.023829 0.014418
+0.003249 -0.023646 0.012268
+0.003251 -0.022655 0.010352
+0.003249 -0.021005 0.00896
+0.003252 -0.018949 0.008307
+0.003251 -0.016799 0.00849
+0.003252 -0.014883 0.009482
+0.003253 -0.013492 0.01113
+0.003252 -0.012838 0.013187
+0.002948 -0.011107 0.015889
+0.002944 -0.010859 0.012965
+0.002944 -0.011858 0.017991
+0.002949 -0.015299 0.020894
+0.002944 -0.017497 0.021277
+0.002945 -0.020422 0.021028
+0.002944 -0.023028 0.01968
+0.002942 -0.024919 0.017436
+0.002944 -0.025808 0.014639
+0.002939 -0.02556 0.011715
+0.002943 -0.024211 0.009109
+0.002939 -0.021967 0.007216
+0.002944 -0.01917 0.006327
+0.002942 -0.016246 0.006576
+0.002944 -0.01364 0.007925
+0.002945 -0.011748 0.010168
+numsurf 47
+SURF 0x10
+mat 1
+refs 4
+0 0.242616027594 0.34228309989
+1 0.253560334444 0.330271661282
+27 0.27686715126 0.344839572906
+28 0.258591175079 0.36488327384
+SURF 0x10
+mat 1
+refs 4
+26 0.286074966192 0.31933516264
+27 0.27686715126 0.344839572906
+1 0.253560334444 0.330271661282
+2 0.259069859982 0.314993470907
+SURF 0x10
+mat 1
+refs 4
+25 0.284832298756 0.292247921228
+26 0.286074966192 0.31933516264
+2 0.259069859982 0.314993470907
+3 0.258331537247 0.298769056797
+SURF 0x10
+mat 1
+refs 3
+24 0.273313134909 0.267678141594
+25 0.284832298756 0.292247921228
+3 0.258331537247 0.298769056797
+SURF 0x10
+mat 1
+refs 3
+23 0.253274142742 0.249411016703
+24 0.273313134909 0.267678141594
+3 0.251419782639 0.284074395895
+SURF 0x10
+mat 1
+refs 4
+22 0.227752551436 0.240196049213
+23 0.253274142742 0.249411016703
+3 0.239418447018 0.27314016223
+4 0.224144220352 0.267609983683
+SURF 0x10
+mat 1
+refs 4
+21 0.200660303235 0.241442531347
+22 0.227752551436 0.240196049213
+4 0.224144220352 0.267609983683
+5 0.207917496562 0.26836925745
+SURF 0x10
+mat 1
+refs 4
+20 0.176110818982 0.252956539392
+21 0.200660303235 0.241442531347
+5 0.207917496562 0.26836925745
+6 0.193216666579 0.275259315968
+SURF 0x10
+mat 1
+refs 4
+19 0.157832920551 0.273013472557
+20 0.176110818982 0.252956539392
+6 0.193216666579 0.275259315968
+7 0.182275414467 0.287250161171
+SURF 0x10
+mat 1
+refs 4
+18 0.148611694574 0.298515945673
+19 0.157832920551 0.273013472557
+7 0.182275414467 0.287250161171
+8 0.17675408721 0.302526503801
+SURF 0x10
+mat 1
+refs 4
+17 0.149867773056 0.325605154037
+18 0.148611694574 0.298515945673
+8 0.17675408721 0.302526503801
+9 0.17750428617 0.318752765656
+SURF 0x10
+mat 1
+refs 4
+16 0.161388874054 0.350161790848
+17 0.149867773056 0.325605154037
+9 0.17750428617 0.318752765656
+10 0.184401065111 0.333466231823
+SURF 0x10
+mat 1
+refs 3
+15 0.181427836418 0.368428856134
+16 0.161388874054 0.350161790848
+10 0.184401065111 0.333466231823
+SURF 0x10
+mat 1
+refs 4
+14 0.206934183836 0.377653956413
+15 0.181427836418 0.368428856134
+10 0.196400627494 0.344412237406
+11 0.211677893996 0.349921613932
+SURF 0x10
+mat 1
+refs 4
+13 0.234041765332 0.37639734149
+14 0.206934183836 0.377653956413
+11 0.211677893996 0.349921613932
+12 0.227901563048 0.349183142185
+SURF 0x10
+mat 1
+refs 4
+12 0.227901563048 0.349183142185
+0 0.242616027594 0.34228309989
+28 0.258591175079 0.36488327384
+13 0.234041765332 0.37639734149
+SURF 0x10
+mat 1
+refs 4
+28 0.313261419535 0.912568569183
+44 0.313261419535 0.819853067398
+29 0.40597692132 0.819853067398
+13 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+30 0.313261419535 0.912568569183
+14 0.313261419535 0.819853067398
+13 0.40597692132 0.819853067398
+29 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+31 0.313261419535 0.912568569183
+15 0.313261419535 0.819853067398
+14 0.40597692132 0.819853067398
+30 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+32 0.313261419535 0.912568569183
+16 0.313261419535 0.819853067398
+15 0.40597692132 0.819853067398
+31 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+33 0.313261419535 0.912568569183
+17 0.313261419535 0.819853067398
+16 0.40597692132 0.819853067398
+32 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+34 0.313261419535 0.912568569183
+18 0.313261419535 0.819853067398
+17 0.40597692132 0.819853067398
+33 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+35 0.313261419535 0.912568569183
+19 0.313261419535 0.819853067398
+18 0.40597692132 0.819853067398
+34 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+36 0.313261419535 0.912568569183
+20 0.313261419535 0.819853067398
+19 0.40597692132 0.819853067398
+35 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+37 0.313261419535 0.912568569183
+21 0.313261419535 0.819853067398
+20 0.40597692132 0.819853067398
+36 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+38 0.313261419535 0.912568569183
+22 0.313261419535 0.819853067398
+21 0.40597692132 0.819853067398
+37 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+39 0.313261419535 0.912568569183
+23 0.313261419535 0.819853067398
+22 0.40597692132 0.819853067398
+38 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+40 0.313261419535 0.912568569183
+24 0.313261419535 0.819853067398
+23 0.40597692132 0.819853067398
+39 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+41 0.313261419535 0.912568569183
+25 0.313261419535 0.819853067398
+24 0.40597692132 0.819853067398
+40 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+42 0.313261419535 0.912568569183
+26 0.313261419535 0.819853067398
+25 0.40597692132 0.819853067398
+41 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+43 0.313261419535 0.912568569183
+27 0.313261419535 0.819853067398
+26 0.40597692132 0.819853067398
+42 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+44 0.313261419535 0.912568569183
+28 0.313261419535 0.819853067398
+27 0.40597692132 0.819853067398
+43 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+29 0.82833224535 0.541667699814
+44 0.82833224535 0.498332291842
+46 0.871667683125 0.498332291842
+45 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+30 0.82833224535 0.541667699814
+29 0.82833224535 0.498332291842
+45 0.871667683125 0.498332291842
+47 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+32 0.82833224535 0.541667699814
+31 0.82833224535 0.498332291842
+48 0.871667683125 0.498332291842
+49 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+33 0.82833224535 0.541667699814
+32 0.82833224535 0.498332291842
+49 0.871667683125 0.498332291842
+50 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+34 0.82833224535 0.541667699814
+33 0.82833224535 0.498332291842
+50 0.871667683125 0.498332291842
+51 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+35 0.82833224535 0.541667699814
+34 0.82833224535 0.498332291842
+51 0.871667683125 0.498332291842
+52 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+36 0.82833224535 0.541667699814
+35 0.82833224535 0.498332291842
+52 0.871667683125 0.498332291842
+53 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+37 0.82833224535 0.541667699814
+36 0.82833224535 0.498332291842
+53 0.871667683125 0.498332291842
+54 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+38 0.82833224535 0.541667699814
+37 0.82833224535 0.498332291842
+54 0.871667683125 0.498332291842
+55 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+39 0.82833224535 0.541667699814
+38 0.82833224535 0.498332291842
+55 0.871667683125 0.498332291842
+56 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+40 0.82833224535 0.541667699814
+39 0.82833224535 0.498332291842
+56 0.871667683125 0.498332291842
+57 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+41 0.82833224535 0.541667699814
+40 0.82833224535 0.498332291842
+57 0.871667683125 0.498332291842
+58 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+42 0.82833224535 0.541667699814
+41 0.82833224535 0.498332291842
+58 0.871667683125 0.498332291842
+59 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+43 0.82833224535 0.541667699814
+42 0.82833224535 0.498332291842
+59 0.871667683125 0.498332291842
+60 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+44 0.82833224535 0.541667699814
+43 0.82833224535 0.498332291842
+60 0.871667683125 0.498332291842
+46 0.871667683125 0.541667699814
+kids 0
+OBJECT poly
+name "CTL-22.toggle"
+data 8
+Mesh.003
+texture "ctl-22.png"
+texrep 1 1
+crease 50.000000
+numvert 16
+0.00288 0.013648 -0.023997
+0.00288 0.0122 -0.023997
+0.00288 0.011176 -0.022972
+0.00288 0.011176 -0.021524
+0.00288 0.0122 -0.0205
+0.00288 0.013648 -0.0205
+0.00288 0.014672 -0.021524
+0.00288 0.014672 -0.022973
+0.009506 0.014166 -0.025409
+0.009506 0.011682 -0.025409
+0.009506 0.011463 -0.025282
+0.009506 0.011464 -0.019214
+0.009506 0.011682 -0.019088
+0.009506 0.014166 -0.019088
+0.009506 0.014385 -0.019215
+0.009506 0.014384 -0.025283
+numsurf 11
+SURF 0x10
+mat 1
+refs 4
+1 0.403194278479 0.371655732393
+0 0.403194278479 0.337494283915
+8 0.437355726957 0.337494283915
+9 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+2 0.403194278479 0.371655732393
+1 0.403194278479 0.337494283915
+9 0.437355726957 0.337494283915
+10 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+3 0.403194278479 0.371655732393
+2 0.403194278479 0.337494283915
+10 0.437355726957 0.337494283915
+11 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+4 0.403194278479 0.371655732393
+3 0.403194278479 0.337494283915
+11 0.437355726957 0.337494283915
+12 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+5 0.403194278479 0.371655732393
+4 0.403194278479 0.337494283915
+12 0.437355726957 0.337494283915
+13 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+6 0.403194278479 0.371655732393
+5 0.403194278479 0.337494283915
+13 0.437355726957 0.337494283915
+14 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+7 0.403194278479 0.371655732393
+6 0.403194278479 0.337494283915
+14 0.437355726957 0.337494283915
+15 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+8 0.403194278479 0.371655732393
+0 0.403194278479 0.337494283915
+7 0.437355726957 0.337494283915
+15 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+11 0.403194278479 0.371655732393
+14 0.403194278479 0.337494283915
+13 0.437355726957 0.337494283915
+12 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+8 0.403194278479 0.371655732393
+15 0.403194278479 0.337494283915
+10 0.437355726957 0.337494283915
+9 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+10 0.403194278479 0.371655732393
+15 0.403194278479 0.337494283915
+14 0.437355726957 0.337494283915
+11 0.437355726957 0.371655732393
+kids 0
+OBJECT poly
+name "CTL-22.vol"
+data 8
+Mesh.004
+texture "ctl-22.png"
+texrep 1 1
+crease 40.000000
+numvert 33
+0.011467 -0.01514 0.014677
+0.011479 -0.015734 0.015824
+0.011467 -0.016722 0.016657
+0.011466 -0.017953 0.017048
+0.011476 -0.019241 0.016938
+0.011475 -0.020389 0.016345
+0.011474 -0.021221 0.015357
+0.011464 -0.021612 0.014126
+0.011463 -0.021502 0.012839
+0.011471 -0.020909 0.011691
+0.011463 -0.019921 0.010859
+0.011464 -0.01869 0.010467
+0.011474 -0.017403 0.010575
+0.011475 -0.016256 0.01117
+0.011476 -0.015422 0.012157
+0.011466 -0.01503 0.013389
+0.018907 -0.015031 0.013388
+0.018897 -0.015422 0.012157
+0.018896 -0.016255 0.01117
+0.018896 -0.017402 0.010576
+0.018906 -0.01869 0.010467
+0.018905 -0.019922 0.010858
+0.018893 -0.020909 0.011691
+0.018905 -0.021503 0.012838
+0.018906 -0.021613 0.014126
+0.018896 -0.02122 0.015357
+0.018896 -0.020388 0.016346
+0.018897 -0.019241 0.016939
+0.018907 -0.017954 0.017048
+0.018908 -0.016723 0.016656
+0.0189 -0.015734 0.015824
+0.018908 -0.015141 0.014676
+0.018896 -0.018322 0.013757
+numsurf 32
+SURF 0x10
+mat 1
+refs 4
+14 0.0525224171579 0.855924844742
+15 0.0525224171579 0.803254663944
+16 0.105192601681 0.803254663944
+17 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+13 0.0525224171579 0.855924844742
+14 0.0525224171579 0.803254663944
+17 0.105192601681 0.803254663944
+18 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+12 0.0525224171579 0.855924844742
+13 0.0525224171579 0.803254663944
+18 0.105192601681 0.803254663944
+19 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+11 0.0525224171579 0.855924844742
+12 0.0525224171579 0.803254663944
+19 0.105192601681 0.803254663944
+20 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+10 0.0525224171579 0.855924844742
+11 0.0525224171579 0.803254663944
+20 0.105192601681 0.803254663944
+21 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+9 0.0525224171579 0.855924844742
+10 0.0525224171579 0.803254663944
+21 0.105192601681 0.803254663944
+22 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+8 0.0525224171579 0.855924844742
+9 0.0525224171579 0.803254663944
+22 0.105192601681 0.803254663944
+23 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+7 0.0525224171579 0.855924844742
+8 0.0525224171579 0.803254663944
+23 0.105192601681 0.803254663944
+24 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+6 0.0525224171579 0.855924844742
+7 0.0525224171579 0.803254663944
+24 0.105192601681 0.803254663944
+25 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+5 0.0525224171579 0.855924844742
+6 0.0525224171579 0.803254663944
+25 0.105192601681 0.803254663944
+26 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+4 0.0525224171579 0.855924844742
+5 0.0525224171579 0.803254663944
+26 0.105192601681 0.803254663944
+27 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+3 0.0525224171579 0.855924844742
+4 0.0525224171579 0.803254663944
+27 0.105192601681 0.803254663944
+28 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+2 0.0525224171579 0.855924844742
+3 0.0525224171579 0.803254663944
+28 0.105192601681 0.803254663944
+29 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+1 0.0525224171579 0.855924844742
+2 0.0525224171579 0.803254663944
+29 0.105192601681 0.803254663944
+30 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+0 0.0525224171579 0.855924844742
+1 0.0525224171579 0.803254663944
+30 0.105192601681 0.803254663944
+31 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+15 0.0525224171579 0.855924844742
+0 0.0525224171579 0.803254663944
+31 0.105192601681 0.803254663944
+16 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+17 0.253559589386 0.330276489258
+16 0.242618411779 0.342267304659
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+18 0.259069114923 0.314998298883
+17 0.253559589386 0.330276489258
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+19 0.258329153061 0.298784583807
+18 0.259069114923 0.314998298883
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+20 0.251420378685 0.28407022357
+19 0.258329153061 0.298784583807
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+21 0.239420965314 0.27312335372
+20 0.251420378685 0.28407022357
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+22 0.224143624306 0.267613887787
+21 0.239420965314 0.27312335372
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+23 0.207920014858 0.26835244894
+22 0.224143624306 0.267613887787
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+24 0.193217262626 0.275255173445
+23 0.207920014858 0.26835244894
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+25 0.182273030281 0.287265688181
+24 0.193217262626 0.275255173445
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+26 0.176751494408 0.302543014288
+25 0.182273030281 0.287265688181
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+27 0.177503541112 0.318757563829
+26 0.176751494408 0.302543014288
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+28 0.184403434396 0.333450436592
+27 0.177503541112 0.318757563829
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+29 0.196402996778 0.34439638257
+28 0.184403434396 0.333450436592
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+30 0.211677148938 0.349926501513
+29 0.196402996778 0.34439638257
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+31 0.227903932333 0.34916728735
+30 0.211677148938 0.349926501513
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+16 0.242618411779 0.342267304659
+31 0.227903932333 0.34916728735
+kids 0
+OBJECT poly
+name "CTL-22.xfr"
+data 8
+Mesh.005
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003175 0.012924 -0.017239
+0.003175 0.012924 -0.027258
+0.003175 0.023253 -0.017239
+0.003175 0.023253 -0.027258
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+2 0.638291537762 0.856310725212
+0 0.638291478157 0.725111961365
+1 0.765544474125 0.72511190176
+3 0.765544474125 0.856310606003
+kids 0
+OBJECT poly
+name "act.btn"
+data 8
+Mesh.006
+texture "ctl-22.png"
+texrep 1 1
+crease 40.000000
+numvert 24
+0.004243 -0.026244 -0.016292
+0.004243 -0.02737 -0.017417
+0.004243 -0.028962 -0.017417
+0.004243 -0.030088 -0.016292
+0.004243 -0.030088 -0.0147
+0.004243 -0.028962 -0.013574
+0.004243 -0.02737 -0.013574
+0.004243 -0.026244 -0.0147
+0.002926 -0.026244 -0.016292
+0.002926 -0.02737 -0.017417
+0.002926 -0.028962 -0.017417
+0.002926 -0.030088 -0.016292
+0.002926 -0.030088 -0.0147
+0.002926 -0.028962 -0.013574
+0.002926 -0.02737 -0.013574
+0.002926 -0.026244 -0.0147
+0.004485 -0.026466 -0.014792
+0.004485 -0.027462 -0.013796
+0.004485 -0.02887 -0.013796
+0.004485 -0.029866 -0.014792
+0.004485 -0.029866 -0.0162
+0.004485 -0.02887 -0.017195
+0.004485 -0.027462 -0.017195
+0.004485 -0.026466 -0.0162
+numsurf 19
+SURF 0x10
+mat 1
+refs 4
+0 0.426579475403 0.37008485198
+1 0.435408592224 0.36124792695
+9 0.435408592224 0.36124792695
+8 0.426579475403 0.37008485198
+SURF 0x10
+mat 1
+refs 4
+1 0.435408592224 0.36124792695
+2 0.435408592224 0.348753720522
+10 0.435408592224 0.348753720522
+9 0.435408592224 0.36124792695
+SURF 0x10
+mat 1
+refs 4
+2 0.435408592224 0.348753720522
+3 0.426579475403 0.339916795492
+11 0.426579475403 0.339916795492
+10 0.435408592224 0.348753720522
+SURF 0x10
+mat 1
+refs 4
+3 0.426579475403 0.339916795492
+4 0.414085328579 0.339916795492
+12 0.414085328579 0.339916795492
+11 0.426579475403 0.339916795492
+SURF 0x10
+mat 1
+refs 4
+4 0.414085328579 0.339916795492
+5 0.405248343945 0.348753720522
+13 0.405248343945 0.348753720522
+12 0.414085328579 0.339916795492
+SURF 0x10
+mat 1
+refs 4
+5 0.405248343945 0.348753720522
+6 0.405248343945 0.36124792695
+14 0.405248343945 0.36124792695
+13 0.405248343945 0.348753720522
+SURF 0x10
+mat 1
+refs 4
+6 0.405248343945 0.36124792695
+7 0.414085328579 0.37008485198
+15 0.414085328579 0.37008485198
+14 0.405248343945 0.36124792695
+SURF 0x10
+mat 1
+refs 4
+7 0.414085328579 0.37008485198
+0 0.426579475403 0.37008485198
+8 0.426579475403 0.37008485198
+15 0.414085328579 0.37008485198
+SURF 0x10
+mat 1
+refs 4
+0 0.426579475403 0.37008485198
+7 0.414085328579 0.37008485198
+16 0.414807319641 0.368342548609
+23 0.425857484341 0.368342548609
+SURF 0x10
+mat 1
+refs 4
+7 0.414085328579 0.37008485198
+6 0.405248343945 0.36124792695
+17 0.406990647316 0.360525846481
+16 0.414807319641 0.368342548609
+SURF 0x10
+mat 1
+refs 4
+6 0.405248343945 0.36124792695
+5 0.405248343945 0.348753720522
+18 0.406990647316 0.349475771189
+17 0.406990647316 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+5 0.405248343945 0.348753720522
+4 0.414085328579 0.339916795492
+19 0.414807319641 0.341659069061
+18 0.406990647316 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+4 0.414085328579 0.339916795492
+3 0.426579475403 0.339916795492
+20 0.425857484341 0.341659069061
+19 0.414807319641 0.341659069061
+SURF 0x10
+mat 1
+refs 4
+3 0.426579475403 0.339916795492
+2 0.435408592224 0.348753720522
+21 0.433666348457 0.349475771189
+20 0.425857484341 0.341659069061
+SURF 0x10
+mat 1
+refs 4
+2 0.435408592224 0.348753720522
+1 0.435408592224 0.36124792695
+22 0.433666348457 0.360525846481
+21 0.433666348457 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+1 0.435408592224 0.36124792695
+0 0.426579475403 0.37008485198
+23 0.425857484341 0.368342548609
+22 0.433666348457 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+23 0.425857484341 0.368342548609
+16 0.414807319641 0.368342548609
+17 0.406990647316 0.360525846481
+22 0.433666348457 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+22 0.433666348457 0.360525846481
+17 0.406990647316 0.360525846481
+18 0.406990647316 0.349475771189
+21 0.433666348457 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+21 0.433666348457 0.349475771189
+18 0.406990647316 0.349475771189
+19 0.414807319641 0.341659069061
+20 0.425857484341 0.341659069061
+kids 0
+OBJECT poly
+name "freq.001"
+data 8
+Mesh.007
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 0.018211
+0.003139 0.018003 0.019284
+0.003139 0.018003 0.023876
+0.003139 0.025297 0.022803
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.002"
+data 8
+Mesh.008
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 0.012048
+0.003139 0.018003 0.013121
+0.003139 0.018003 0.017714
+0.003139 0.025297 0.016641
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.003"
+data 8
+Mesh.009
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 0.005116
+0.003139 0.018003 0.006189
+0.003139 0.018003 0.010782
+0.003139 0.025297 0.009709
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.004"
+data 8
+Mesh.010
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 -0.001817
+0.003139 0.018003 -0.000744
+0.003139 0.018003 0.003849
+0.003139 0.025297 0.002776
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.005"
+data 8
+Mesh.011
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 -0.008749
+0.003139 0.018003 -0.007676
+0.003139 0.018003 -0.003083
+0.003139 0.025297 -0.004157
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.006"
+data 8
+Mesh.012
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 -0.015682
+0.003139 0.018003 -0.014609
+0.003139 0.018003 -0.010016
+0.003139 0.025297 -0.011089
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.dec"
+data 8
+Mesh.013
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003202 0.019053 0.004481
+0.003202 0.01806 0.004723
+0.003202 0.01806 0.005759
+0.003202 0.019053 0.005517
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.933840274811 0.0771778821945
+3 0.925696730614 0.0771778821945
+2 0.925696730614 0.0642324090004
+1 0.933840274811 0.0642324090004
+kids 0
+OBJECT poly
+name "freq.dwn"
+data 8
+Mesh.014
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003022 -0.006662 -0.017042
+0.003022 -0.02423 -0.017042
+0.003022 -0.006662 -0.008258
+0.003022 -0.02423 -0.008258
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+0 0.628464281559 0.464825630188
+2 0.508616089821 0.464825630188
+3 0.508616030216 0.2251290977
+1 0.628464281559 0.2251290977
+kids 0
+OBJECT poly
+name "freq.knob.MHz"
+data 8
+Mesh.015
+texture "ctl-22.png"
+texrep 1 1
+crease 40.000000
+numvert 48
+0.011502 -0.011309 -0.02118
+0.0115 -0.013207 -0.022448
+0.011494 -0.015446 -0.022894
+0.0115 -0.017686 -0.022448
+0.011497 -0.019584 -0.02118
+0.011502 -0.020853 -0.019281
+0.011504 -0.021299 -0.017042
+0.011502 -0.020853 -0.014802
+0.011497 -0.019584 -0.012904
+0.0115 -0.017686 -0.011635
+0.011494 -0.015446 -0.01119
+0.0115 -0.013207 -0.011635
+0.011502 -0.011309 -0.012904
+0.011497 -0.010039 -0.014802
+0.011495 -0.009593 -0.017042
+0.011497 -0.010039 -0.019281
+0.010891 -0.007442 -0.020357
+0.010893 -0.006782 -0.017042
+0.010891 -0.007442 -0.013726
+0.010893 -0.00932 -0.010916
+0.010889 -0.01213 -0.009038
+0.010889 -0.015446 -0.008378
+0.010888 -0.018762 -0.009038
+0.010896 -0.021574 -0.010916
+0.010886 -0.02345 -0.013726
+0.010895 -0.024111 -0.017041
+0.010886 -0.02345 -0.020357
+0.010896 -0.021574 -0.023168
+0.010888 -0.018762 -0.025047
+0.010889 -0.015446 -0.025706
+0.010889 -0.01213 -0.025047
+0.010893 -0.00932 -0.023168
+0.003025 -0.007441 -0.020357
+0.003027 -0.006783 -0.017042
+0.003025 -0.007441 -0.013726
+0.003026 -0.00932 -0.010916
+0.003023 -0.012131 -0.009038
+0.003022 -0.015446 -0.008378
+0.003022 -0.018762 -0.009038
+0.00303 -0.021574 -0.010916
+0.003031 -0.023452 -0.013726
+0.003029 -0.024112 -0.017042
+0.003031 -0.023452 -0.020357
+0.00303 -0.021574 -0.023168
+0.003022 -0.018762 -0.025047
+0.003022 -0.015446 -0.025706
+0.003023 -0.012131 -0.025047
+0.003026 -0.00932 -0.023168
+numsurf 32
+SURF 0x10
+mat 1
+refs 4
+0 0.681315302849 0.39272326231
+1 0.696943879128 0.369354456663
+30 0.72895103693 0.382609218359
+31 0.705807030201 0.417218744755
+SURF 0x10
+mat 1
+refs 4
+29 0.737064003944 0.341771930456
+30 0.72895103693 0.382609218359
+1 0.696943879128 0.369354456663
+2 0.702431261539 0.341774225235
+SURF 0x10
+mat 1
+refs 4
+28 0.72895103693 0.300935894251
+29 0.737064003944 0.341771930456
+2 0.702431261539 0.341774225235
+3 0.696943879128 0.314183682203
+SURF 0x10
+mat 1
+refs 4
+27 0.705806910992 0.266300916672
+28 0.72895103693 0.300935894251
+3 0.696943879128 0.314183682203
+4 0.681315302849 0.290801167488
+SURF 0x10
+mat 1
+refs 4
+26 0.671187996864 0.243188887835
+27 0.705806910992 0.266300916672
+4 0.681315302849 0.290801167488
+5 0.657934963703 0.275174319744
+SURF 0x10
+mat 1
+refs 4
+25 0.630345463753 0.235042914748
+26 0.671187996864 0.243188887835
+5 0.657934963703 0.275174319744
+6 0.63035929203 0.269683331251
+SURF 0x10
+mat 1
+refs 4
+24 0.589516758919 0.243188887835
+25 0.630345463753 0.235042914748
+6 0.63035929203 0.269683331251
+7 0.602769732475 0.275174379349
+SURF 0x10
+mat 1
+refs 4
+23 0.554897606373 0.266300976276
+24 0.589516758919 0.243188887835
+7 0.602769732475 0.275174379349
+8 0.579389333725 0.290801227093
+SURF 0x10
+mat 1
+refs 4
+22 0.531767487526 0.300935894251
+23 0.554897606373 0.266300976276
+8 0.579389333725 0.290801227093
+9 0.563760757446 0.314183682203
+SURF 0x10
+mat 1
+refs 4
+21 0.52364051342 0.341771930456
+22 0.531767487526 0.300935894251
+9 0.563760757446 0.314183682203
+10 0.558273494244 0.341774344444
+SURF 0x10
+mat 1
+refs 4
+20 0.531767487526 0.382609218359
+21 0.52364051342 0.341771930456
+10 0.558273494244 0.341774344444
+11 0.563760757446 0.369354456663
+SURF 0x10
+mat 1
+refs 4
+19 0.554897606373 0.417218744755
+20 0.531767487526 0.382609218359
+11 0.563760757446 0.369354456663
+12 0.579389333725 0.39272326231
+SURF 0x10
+mat 1
+refs 4
+18 0.589516758919 0.440356194973
+19 0.554897606373 0.417218744755
+12 0.579389333725 0.39272326231
+13 0.602769732475 0.408364892006
+SURF 0x10
+mat 1
+refs 4
+17 0.63035929203 0.448476850986
+18 0.589516758919 0.440356194973
+13 0.602769732475 0.408364892006
+14 0.63035929203 0.413855850697
+SURF 0x10
+mat 1
+refs 4
+16 0.671188056469 0.440356194973
+17 0.63035929203 0.448476850986
+14 0.63035929203 0.413855850697
+15 0.657934963703 0.408364892006
+SURF 0x10
+mat 1
+refs 4
+15 0.657934963703 0.408364892006
+0 0.681315302849 0.39272326231
+31 0.705807030201 0.417218744755
+16 0.671188056469 0.440356194973
+SURF 0x10
+mat 1
+refs 4
+31 0.0603405237198 0.71993303299
+47 0.0603405237198 0.621863663197
+32 0.158409923315 0.621863663197
+16 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+33 0.0603405237198 0.71993303299
+17 0.0603405237198 0.621863663197
+16 0.158409923315 0.621863663197
+32 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+34 0.0603405237198 0.71993303299
+18 0.0603405237198 0.621863663197
+17 0.158409923315 0.621863663197
+33 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+35 0.0603405237198 0.71993303299
+19 0.0603405237198 0.621863663197
+18 0.158409923315 0.621863663197
+34 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+36 0.0603405237198 0.71993303299
+20 0.0603405237198 0.621863663197
+19 0.158409923315 0.621863663197
+35 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+37 0.0603405237198 0.71993303299
+21 0.0603405237198 0.621863663197
+20 0.158409923315 0.621863663197
+36 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+38 0.0603405237198 0.71993303299
+22 0.0603405237198 0.621863663197
+21 0.158409923315 0.621863663197
+37 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+39 0.0603405237198 0.71993303299
+23 0.0603405237198 0.621863663197
+22 0.158409923315 0.621863663197
+38 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+40 0.0603405237198 0.71993303299
+24 0.0603405237198 0.621863663197
+23 0.158409923315 0.621863663197
+39 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+41 0.0603405237198 0.71993303299
+25 0.0603405237198 0.621863663197
+24 0.158409923315 0.621863663197
+40 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+42 0.0603405237198 0.71993303299
+26 0.0603405237198 0.621863663197
+25 0.158409923315 0.621863663197
+41 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+43 0.0603405237198 0.71993303299
+27 0.0603405237198 0.621863663197
+26 0.158409923315 0.621863663197
+42 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+44 0.0603405237198 0.71993303299
+28 0.0603405237198 0.621863663197
+27 0.158409923315 0.621863663197
+43 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+45 0.0603405237198 0.71993303299
+29 0.0603405237198 0.621863663197
+28 0.158409923315 0.621863663197
+44 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+46 0.0603405237198 0.71993303299
+30 0.0603405237198 0.621863663197
+29 0.158409923315 0.621863663197
+45 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+47 0.0603405237198 0.71993303299
+31 0.0603405237198 0.621863663197
+30 0.158409923315 0.621863663197
+46 0.158409923315 0.71993303299
+kids 0
+OBJECT poly
+name "freq.knob.kHz"
+data 8
+Mesh.030
+texture "ctl-22.png"
+texrep 1 1
+crease 40.000000
+numvert 33
+0.02046 -0.015446 -0.017042
+0.020463 -0.01004 -0.019281
+0.020461 -0.009594 -0.017042
+0.020463 -0.01004 -0.014802
+0.020468 -0.01131 -0.012904
+0.020465 -0.013207 -0.011635
+0.02046 -0.015446 -0.01119
+0.020466 -0.017686 -0.011635
+0.020463 -0.019585 -0.012904
+0.020468 -0.020854 -0.014802
+0.020459 -0.021298 -0.017042
+0.020468 -0.020854 -0.019281
+0.020463 -0.019585 -0.02118
+0.020466 -0.017686 -0.022448
+0.02046 -0.015446 -0.022894
+0.020465 -0.013207 -0.022448
+0.020468 -0.01131 -0.02118
+0.010502 -0.011309 -0.02118
+0.0105 -0.013207 -0.022448
+0.010494 -0.015446 -0.022894
+0.0105 -0.017686 -0.022448
+0.010497 -0.019584 -0.02118
+0.010502 -0.020853 -0.019281
+0.010504 -0.021299 -0.017042
+0.010502 -0.020853 -0.014802
+0.010497 -0.019584 -0.012904
+0.0105 -0.017686 -0.011635
+0.010494 -0.015446 -0.01119
+0.0105 -0.013207 -0.011635
+0.010502 -0.011309 -0.012904
+0.010497 -0.010039 -0.014802
+0.010495 -0.009593 -0.017042
+0.010497 -0.010039 -0.019281
+numsurf 32
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+16 0.681315302849 0.392718017101
+1 0.657934963703 0.408358514309
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+1 0.657934963703 0.408358514309
+2 0.63035929203 0.413849562407
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+2 0.63035929203 0.413849562407
+3 0.602769732475 0.408358514309
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+3 0.602769732475 0.408358514309
+4 0.579389333725 0.392718017101
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+4 0.579389333725 0.392718017101
+5 0.563760757446 0.369349330664
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+5 0.563760757446 0.369349330664
+6 0.558273494244 0.341769099236
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+6 0.558273494244 0.341769099236
+7 0.563760757446 0.314178436995
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+7 0.563760757446 0.314178436995
+8 0.579389333725 0.290795952082
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+8 0.579389333725 0.290795952082
+9 0.602769732475 0.275168001652
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+9 0.602769732475 0.275168001652
+10 0.63035929203 0.269701093435
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+10 0.63035929203 0.269701093435
+11 0.657934963703 0.275168001652
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+11 0.657934963703 0.275168001652
+12 0.681315302849 0.290795892477
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+12 0.681315302849 0.290795892477
+13 0.696943879128 0.314178436995
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+13 0.696943879128 0.314178436995
+14 0.702431261539 0.341769099236
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+14 0.702431261539 0.341769099236
+15 0.696943879128 0.369349330664
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+15 0.696943879128 0.369349330664
+16 0.681315302849 0.392718017101
+SURF 0x10
+mat 1
+refs 4
+17 0.0603405237198 0.71993303299
+32 0.0603405237198 0.621863663197
+1 0.158409923315 0.621863663197
+16 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+32 0.0603405237198 0.71993303299
+31 0.0603405237198 0.621863663197
+2 0.158409923315 0.621863663197
+1 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+31 0.0603405237198 0.71993303299
+30 0.0603405237198 0.621863663197
+3 0.158409923315 0.621863663197
+2 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+30 0.0603405237198 0.71993303299
+29 0.0603405237198 0.621863663197
+4 0.158409923315 0.621863663197
+3 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+29 0.0603405237198 0.71993303299
+28 0.0603405237198 0.621863663197
+5 0.158409923315 0.621863663197
+4 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+28 0.0603405237198 0.71993303299
+27 0.0603405237198 0.621863663197
+6 0.158409923315 0.621863663197
+5 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+27 0.0603405237198 0.71993303299
+26 0.0603405237198 0.621863663197
+7 0.158409923315 0.621863663197
+6 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+26 0.0603405237198 0.71993303299
+25 0.0603405237198 0.621863663197
+8 0.158409923315 0.621863663197
+7 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+25 0.0603405237198 0.71993303299
+24 0.0603405237198 0.621863663197
+9 0.158409923315 0.621863663197
+8 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+24 0.0603405237198 0.71993303299
+23 0.0603405237198 0.621863663197
+10 0.158409923315 0.621863663197
+9 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+23 0.0603405237198 0.71993303299
+22 0.0603405237198 0.621863663197
+11 0.158409923315 0.621863663197
+10 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+22 0.0603405237198 0.71993303299
+21 0.0603405237198 0.621863663197
+12 0.158409923315 0.621863663197
+11 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+21 0.0603405237198 0.71993303299
+20 0.0603405237198 0.621863663197
+13 0.158409923315 0.621863663197
+12 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+20 0.0603405237198 0.71993303299
+19 0.0603405237198 0.621863663197
+14 0.158409923315 0.621863663197
+13 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+19 0.0603405237198 0.71993303299
+18 0.0603405237198 0.621863663197
+15 0.158409923315 0.621863663197
+14 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+18 0.0603405237198 0.71993303299
+17 0.0603405237198 0.621863663197
+16 0.158409923315 0.621863663197
+15 0.158409923315 0.71993303299
+kids 0
+OBJECT poly
+name "freq.up"
+data 8
+Mesh.016
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003022 -0.006662 -0.017042
+0.003022 -0.02423 -0.017042
+0.003022 -0.02423 -0.025826
+0.003022 -0.006662 -0.025826
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+3 0.748312532902 0.464825630188
+0 0.628464281559 0.464825630188
+1 0.628464281559 0.2251290977
+2 0.748312532902 0.2251290977
+kids 0
+OBJECT poly
+name "mem.annun"
+data 8
+Mesh.017
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.006882 0.01649
+0.003139 0.003499 0.016498
+0.003139 0.003499 0.02398
+0.003139 0.006882 0.023971
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.135593175888 0.0792972072959
+3 0.0378846973181 0.0792972296476
+2 0.0377717465162 0.035107113421
+1 0.135480225086 0.035107113421
+kids 0
+OBJECT poly
+name "pwr.off"
+data 8
+Mesh.018
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.002944 -0.026036 0.021504
+0.002944 -0.010631 0.021504
+0.002944 -0.026036 0.013802
+0.002944 -0.010631 0.013802
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+0 0.114473424852 0.201592057943
+2 0.220019072294 0.201592057943
+3 0.220019072294 0.412683337927
+1 0.114473424852 0.412683337927
+kids 0
+OBJECT poly
+name "pwr.on"
+data 8
+Mesh.019
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.002944 -0.010631 0.013802
+0.002944 -0.026036 0.013802
+0.002944 -0.026036 0.0061
+0.002944 -0.010632 0.0061
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+3 0.325564712286 0.412683337927
+0 0.220019072294 0.412683337927
+1 0.220019072294 0.201592057943
+2 0.325564712286 0.201592057943
+kids 0
+OBJECT poly
+name "stby.001"
+data 8
+Mesh.020
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 0.018819
+0.003139 0.0093 0.019892
+0.003139 0.0093 0.024485
+0.003139 0.016594 0.023412
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.002"
+data 8
+Mesh.021
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 0.012657
+0.003139 0.0093 0.01373
+0.003139 0.0093 0.018322
+0.003139 0.016594 0.017249
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.003"
+data 8
+Mesh.022
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 0.005724
+0.003139 0.0093 0.006797
+0.003139 0.0093 0.01139
+0.003139 0.016594 0.010317
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.004"
+data 8
+Mesh.023
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 -0.001208
+0.003139 0.0093 -0.000135
+0.003139 0.0093 0.004457
+0.003139 0.016594 0.003384
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.005"
+data 8
+Mesh.024
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 -0.008141
+0.003139 0.0093 -0.007068
+0.003139 0.0093 -0.002475
+0.003139 0.016594 -0.003548
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.006"
+data 8
+Mesh.025
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 -0.015074
+0.003139 0.0093 -0.014001
+0.003139 0.0093 -0.009408
+0.003139 0.016594 -0.010481
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.dec"
+data 8
+Mesh.026
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003202 0.01035 0.00509
+0.003202 0.009357 0.005332
+0.003202 0.009357 0.006367
+0.003202 0.01035 0.006125
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.933840274811 0.0771778821945
+3 0.925696730614 0.0771778821945
+2 0.925696730614 0.0642324090004
+1 0.933840274811 0.0642324090004
+kids 0
+OBJECT poly
+name "sto.btn"
+data 8
+Mesh.027
+texture "ctl-22.png"
+texrep 1 1
+crease 40.000000
+numvert 24
+0.004243 -0.01313 -0.001986
+0.004243 -0.014256 -0.003111
+0.004243 -0.015848 -0.003111
+0.004243 -0.016974 -0.001986
+0.004243 -0.016974 -0.000394
+0.004243 -0.015848 0.000732
+0.004243 -0.014256 0.000732
+0.004243 -0.01313 -0.000394
+0.002926 -0.01313 -0.001986
+0.002926 -0.014256 -0.003111
+0.002926 -0.015848 -0.003111
+0.002926 -0.016974 -0.001986
+0.002926 -0.016974 -0.000394
+0.002926 -0.015848 0.000732
+0.002926 -0.014256 0.000732
+0.002926 -0.01313 -0.000394
+0.004485 -0.013353 -0.000486
+0.004485 -0.014348 0.00051
+0.004485 -0.015756 0.00051
+0.004485 -0.016752 -0.000486
+0.004485 -0.016752 -0.001894
+0.004485 -0.015756 -0.002889
+0.004485 -0.014348 -0.002889
+0.004485 -0.013353 -0.001894
+numsurf 19
+SURF 0x10
+mat 1
+refs 4
+0 0.426304638386 0.369004756212
+1 0.435133755207 0.360167771578
+9 0.435133755207 0.360167771578
+8 0.426304638386 0.369004756212
+SURF 0x10
+mat 1
+refs 4
+1 0.435133755207 0.360167771578
+2 0.435133755207 0.347673624754
+10 0.435133755207 0.347673624754
+9 0.435133755207 0.360167771578
+SURF 0x10
+mat 1
+refs 4
+2 0.435133755207 0.347673624754
+3 0.426304638386 0.338836669922
+11 0.426304638386 0.338836669922
+10 0.435133755207 0.347673624754
+SURF 0x10
+mat 1
+refs 4
+3 0.426304638386 0.338836669922
+4 0.413810491562 0.338836669922
+12 0.413810491562 0.338836669922
+11 0.426304638386 0.338836669922
+SURF 0x10
+mat 1
+refs 4
+4 0.413810491562 0.338836669922
+5 0.404973506927 0.347673624754
+13 0.404973506927 0.347673624754
+12 0.413810491562 0.338836669922
+SURF 0x10
+mat 1
+refs 4
+5 0.404973506927 0.347673624754
+6 0.404973506927 0.360167771578
+14 0.404973506927 0.360167771578
+13 0.404973506927 0.347673624754
+SURF 0x10
+mat 1
+refs 4
+6 0.404973506927 0.360167771578
+7 0.413810491562 0.369004756212
+15 0.413810491562 0.369004756212
+14 0.404973506927 0.360167771578
+SURF 0x10
+mat 1
+refs 4
+7 0.413810491562 0.369004756212
+0 0.426304638386 0.369004756212
+8 0.426304638386 0.369004756212
+15 0.413810491562 0.369004756212
+SURF 0x10
+mat 1
+refs 4
+0 0.426304638386 0.369004756212
+7 0.413810491562 0.369004756212
+16 0.414532542229 0.367254585028
+23 0.425582587719 0.367254585028
+SURF 0x10
+mat 1
+refs 4
+7 0.413810491562 0.369004756212
+6 0.404973506927 0.360167771578
+17 0.406715869904 0.359445750713
+16 0.414532542229 0.367254585028
+SURF 0x10
+mat 1
+refs 4
+6 0.404973506927 0.360167771578
+5 0.404973506927 0.347673624754
+18 0.406715869904 0.348395645618
+17 0.406715869904 0.359445750713
+SURF 0x10
+mat 1
+refs 4
+5 0.404973506927 0.347673624754
+4 0.413810491562 0.338836669922
+19 0.414532542229 0.340578913689
+18 0.406715869904 0.348395645618
+SURF 0x10
+mat 1
+refs 4
+4 0.413810491562 0.338836669922
+3 0.426304638386 0.338836669922
+20 0.425582587719 0.340578913689
+19 0.414532542229 0.340578913689
+SURF 0x10
+mat 1
+refs 4
+3 0.426304638386 0.338836669922
+2 0.435133755207 0.347673624754
+21 0.433391451836 0.348395645618
+20 0.425582587719 0.340578913689
+SURF 0x10
+mat 1
+refs 4
+2 0.435133755207 0.347673624754
+1 0.435133755207 0.360167771578
+22 0.433391451836 0.359445750713
+21 0.433391451836 0.348395645618
+SURF 0x10
+mat 1
+refs 4
+1 0.435133755207 0.360167771578
+0 0.426304638386 0.369004756212
+23 0.425582587719 0.367254585028
+22 0.433391451836 0.359445750713
+SURF 0x10
+mat 1
+refs 4
+23 0.425582587719 0.367254585028
+16 0.414532542229 0.367254585028
+17 0.406715869904 0.359445750713
+22 0.433391451836 0.359445750713
+SURF 0x10
+mat 1
+refs 4
+22 0.433391451836 0.359445750713
+17 0.406715869904 0.359445750713
+18 0.406715869904 0.348395645618
+21 0.433391451836 0.348395645618
+SURF 0x10
+mat 1
+refs 4
+21 0.433391451836 0.348395645618
+18 0.406715869904 0.348395645618
+19 0.414532542229 0.340578913689
+20 0.425582587719 0.340578913689
+kids 0
+OBJECT poly
+name "test.btn"
+data 8
+Mesh.028
+texture "ctl-22.png"
+texrep 1 1
+crease 40.000000
+numvert 24
+0.004243 -0.026244 -0.001986
+0.004243 -0.02737 -0.003111
+0.004243 -0.028962 -0.003111
+0.004243 -0.030088 -0.001986
+0.004243 -0.030088 -0.000394
+0.004243 -0.028962 0.000732
+0.004243 -0.02737 0.000732
+0.004243 -0.026244 -0.000394
+0.002926 -0.026244 -0.001986
+0.002926 -0.02737 -0.003111
+0.002926 -0.028962 -0.003111
+0.002926 -0.030088 -0.001986
+0.002926 -0.030088 -0.000394
+0.002926 -0.028962 0.000732
+0.002926 -0.02737 0.000732
+0.002926 -0.026244 -0.000394
+0.004485 -0.026466 -0.000486
+0.004485 -0.027462 0.00051
+0.004485 -0.02887 0.00051
+0.004485 -0.029866 -0.000486
+0.004485 -0.029866 -0.001894
+0.004485 -0.02887 -0.002889
+0.004485 -0.027462 -0.002889
+0.004485 -0.026466 -0.001894
+numsurf 19
+SURF 0x10
+mat 1
+refs 4
+0 0.427904635668 0.37008485198
+1 0.436733752489 0.36124792695
+9 0.436733752489 0.36124792695
+8 0.427904635668 0.37008485198
+SURF 0x10
+mat 1
+refs 4
+1 0.436733752489 0.36124792695
+2 0.436733752489 0.348753720522
+10 0.436733752489 0.348753720522
+9 0.436733752489 0.36124792695
+SURF 0x10
+mat 1
+refs 4
+2 0.436733752489 0.348753720522
+3 0.427904635668 0.339916795492
+11 0.427904635668 0.339916795492
+10 0.436733752489 0.348753720522
+SURF 0x10
+mat 1
+refs 4
+3 0.427904635668 0.339916795492
+4 0.415410488844 0.339916795492
+12 0.415410488844 0.339916795492
+11 0.427904635668 0.339916795492
+SURF 0x10
+mat 1
+refs 4
+4 0.415410488844 0.339916795492
+5 0.406573563814 0.348753720522
+13 0.406573563814 0.348753720522
+12 0.415410488844 0.339916795492
+SURF 0x10
+mat 1
+refs 4
+5 0.406573563814 0.348753720522
+6 0.406573563814 0.36124792695
+14 0.406573563814 0.36124792695
+13 0.406573563814 0.348753720522
+SURF 0x10
+mat 1
+refs 4
+6 0.406573563814 0.36124792695
+7 0.415410488844 0.37008485198
+15 0.415410488844 0.37008485198
+14 0.406573563814 0.36124792695
+SURF 0x10
+mat 1
+refs 4
+7 0.415410488844 0.37008485198
+0 0.427904635668 0.37008485198
+8 0.427904635668 0.37008485198
+15 0.415410488844 0.37008485198
+SURF 0x10
+mat 1
+refs 4
+0 0.427904635668 0.37008485198
+7 0.415410488844 0.37008485198
+16 0.416132539511 0.368342548609
+23 0.427182585001 0.368342548609
+SURF 0x10
+mat 1
+refs 4
+7 0.415410488844 0.37008485198
+6 0.406573563814 0.36124792695
+17 0.408315867186 0.360525846481
+16 0.416132539511 0.368342548609
+SURF 0x10
+mat 1
+refs 4
+6 0.406573563814 0.36124792695
+5 0.406573563814 0.348753720522
+18 0.408315867186 0.349475771189
+17 0.408315867186 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+5 0.406573563814 0.348753720522
+4 0.415410488844 0.339916795492
+19 0.416132539511 0.341659069061
+18 0.408315867186 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+4 0.415410488844 0.339916795492
+3 0.427904635668 0.339916795492
+20 0.427182585001 0.341659069061
+19 0.416132539511 0.341659069061
+SURF 0x10
+mat 1
+refs 4
+3 0.427904635668 0.339916795492
+2 0.436733752489 0.348753720522
+21 0.434991449118 0.349475771189
+20 0.427182585001 0.341659069061
+SURF 0x10
+mat 1
+refs 4
+2 0.436733752489 0.348753720522
+1 0.436733752489 0.36124792695
+22 0.434991449118 0.360525846481
+21 0.434991449118 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+1 0.436733752489 0.36124792695
+0 0.427904635668 0.37008485198
+23 0.427182585001 0.368342548609
+22 0.434991449118 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+23 0.427182585001 0.368342548609
+16 0.416132539511 0.368342548609
+17 0.408315867186 0.360525846481
+22 0.434991449118 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+22 0.434991449118 0.360525846481
+17 0.408315867186 0.360525846481
+18 0.408315867186 0.349475771189
+21 0.434991449118 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+21 0.434991449118 0.349475771189
+18 0.408315867186 0.349475771189
+19 0.416132539511 0.341659069061
+20 0.427182585001 0.341659069061
+kids 0
+OBJECT poly
+name "xmt.annun"
+data 8
+Mesh.029
+texture "ctl-22.png"
+texrep 1 1
+crease 30.000000
+numvert 25
+0.003657 -0.026232 0.007594
+0.003657 -0.027365 0.006461
+0.003657 -0.028967 0.006461
+0.003657 -0.0301 0.007594
+0.003657 -0.0301 0.009197
+0.003657 -0.028967 0.01033
+0.003657 -0.027365 0.01033
+0.003657 -0.026232 0.009197
+0.002984 -0.025837 0.007431
+0.002984 -0.027201 0.006067
+0.002984 -0.029131 0.006067
+0.002984 -0.030495 0.007431
+0.002984 -0.030495 0.00936
+0.002984 -0.02913 0.010724
+0.002984 -0.027201 0.010724
+0.002984 -0.025837 0.00936
+0.00403 -0.027153 0.008815
+0.00403 -0.027746 0.009409
+0.00403 -0.028586 0.009409
+0.00403 -0.029179 0.008815
+0.00403 -0.029179 0.007976
+0.00403 -0.028586 0.007382
+0.00403 -0.027746 0.007382
+0.00403 -0.027153 0.007976
+0.004171 -0.028166 0.008395
+numsurf 24
+SURF 0x10
+mat 1
+refs 4
+0 0.306933730841 0.200225278735
+1 0.318501800299 0.188657224178
+9 0.322524517775 0.190331682563
+8 0.30859798193 0.204258263111
+SURF 0x10
+mat 1
+refs 4
+1 0.318501800299 0.188657224178
+2 0.318501800299 0.172300755978
+10 0.322524517775 0.170626237988
+9 0.322524517775 0.190331682563
+SURF 0x10
+mat 1
+refs 4
+2 0.318501800299 0.172300755978
+3 0.306933730841 0.160732701421
+11 0.30859798193 0.156699717045
+10 0.322524517775 0.170626237988
+SURF 0x10
+mat 1
+refs 4
+3 0.306933730841 0.160732701421
+4 0.290566951036 0.160732701421
+12 0.288902699947 0.156699717045
+11 0.30859798193 0.156699717045
+SURF 0x10
+mat 1
+refs 4
+4 0.290566951036 0.160732701421
+5 0.278998970985 0.172300755978
+13 0.274976164103 0.170636430383
+12 0.288902699947 0.156699717045
+SURF 0x10
+mat 1
+refs 4
+5 0.278998970985 0.172300755978
+6 0.278998970985 0.188657224178
+14 0.274976164103 0.190331682563
+13 0.274976164103 0.170636430383
+SURF 0x10
+mat 1
+refs 4
+6 0.278998970985 0.188657224178
+7 0.290566951036 0.200225278735
+15 0.288902699947 0.204258263111
+14 0.274976164103 0.190331682563
+SURF 0x10
+mat 1
+refs 4
+7 0.290566951036 0.200225278735
+0 0.306933730841 0.200225278735
+8 0.30859798193 0.204258263111
+15 0.288902699947 0.204258263111
+SURF 0x10
+mat 1
+refs 4
+0 0.306933730841 0.200225278735
+7 0.290566951036 0.200225278735
+16 0.294467270374 0.190821796656
+23 0.30303350091 0.190821796656
+SURF 0x10
+mat 1
+refs 4
+7 0.290566951036 0.200225278735
+6 0.278998970985 0.188657224178
+17 0.288402467966 0.184767216444
+16 0.294467270374 0.190821796656
+SURF 0x10
+mat 1
+refs 4
+6 0.278998970985 0.188657224178
+5 0.278998970985 0.172300755978
+18 0.288402467966 0.176190719008
+17 0.288402467966 0.184767216444
+SURF 0x10
+mat 1
+refs 4
+5 0.278998970985 0.172300755978
+4 0.290566951036 0.160732701421
+19 0.294467270374 0.1701361835
+18 0.288402467966 0.176190719008
+SURF 0x10
+mat 1
+refs 4
+4 0.290566951036 0.160732701421
+3 0.306933730841 0.160732701421
+20 0.30303350091 0.1701361835
+19 0.294467270374 0.1701361835
+SURF 0x10
+mat 1
+refs 4
+3 0.306933730841 0.160732701421
+2 0.318501800299 0.172300755978
+21 0.309098213911 0.176190719008
+20 0.30303350091 0.1701361835
+SURF 0x10
+mat 1
+refs 4
+2 0.318501800299 0.172300755978
+1 0.318501800299 0.188657224178
+22 0.309098213911 0.184767216444
+21 0.309098213911 0.176190719008
+SURF 0x10
+mat 1
+refs 4
+1 0.318501800299 0.188657224178
+0 0.306933730841 0.200225278735
+23 0.30303350091 0.190821796656
+22 0.309098213911 0.184767216444
+SURF 0x10
+mat 1
+refs 3
+23 0.30303350091 0.190821796656
+16 0.294467270374 0.190821796656
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+16 0.294467270374 0.190821796656
+17 0.288402467966 0.184767216444
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+17 0.288402467966 0.184767216444
+18 0.288402467966 0.176190719008
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+18 0.288402467966 0.176190719008
+19 0.294467270374 0.1701361835
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+19 0.294467270374 0.1701361835
+20 0.30303350091 0.1701361835
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+20 0.30303350091 0.1701361835
+21 0.309098213911 0.176190719008
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+21 0.309098213911 0.176190719008
+22 0.309098213911 0.184767216444
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+22 0.309098213911 0.184767216444
+23 0.30303350091 0.190821796656
+24 0.298755466938 0.180478990078
+kids 0
diff --git a/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22.nas b/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22.nas
new file mode 100644
index 000000000..146ef0d74
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/VHF-22/ctl22.nas
@@ -0,0 +1,226 @@
+###############################################################################
+##
+## Nasal for dual control of a VHF 22 Comm radio over the multiplayer
+## network.
+##
+## Copyright (C) 2008 - 2010 Anders Gidenstam (anders(at)gidenstam.org)
+## This file is licensed under the GPL license.
+##
+###############################################################################
+
+# Note:
+# This module MUST be loaded as VHF22.
+#
+
+# Slave button presses.
+var swap_btn = "frq-swap-btn";
+var freq_decS = "freq-decS-clicked";
+var freq_incS = "freq-incS-clicked";
+var freq_decL = "freq-decL-clicked";
+var freq_incL = "freq-incL-clicked";
+
+# Settings
+var freq_selected = "frequencies/selected-mhz";
+var freq_standby = "frequencies/standby-mhz";
+
+var comm_base = ["instrumentation/comm[0]",
+ "instrumentation/comm[1]"];
+
+###########################################################################
+var master_ctl22 = {
+ new : func(n) {
+ var obj = {};
+ obj.parents = [master_ctl22];
+ obj.comm_base = props.globals.getNode(comm_base[n]);
+ return obj;
+ },
+ swap : func() {
+ var tmp = me.comm_base.getNode(freq_selected).getValue();
+ me.comm_base.getNode(freq_selected).setValue
+ (me.comm_base.getNode(freq_standby).getValue());
+ me.comm_base.getNode(freq_standby).setValue(tmp);
+ },
+ adjust_frequency : func(d) {
+ adjust_radio_frequency(
+ me.comm_base.getNode(freq_standby),
+ d,
+ 118,
+ 135.975);
+ }
+};
+
+###########################################################################
+var slave_ctl22 = {
+ new : func(n, airoot) {
+ var obj = {};
+ obj.parents = [slave_ctl22];
+ obj.root = airoot;
+ obj.comm_base = props.globals.getNode(comm_base[n]);
+ return obj;
+ },
+ swap : func() {
+ var p = me.comm_base.getNode(swap_btn);
+ print("VHF22[?].SWAP");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ adjust_frequency : func(d) {
+ var p = 0;
+ if (abs(d) < 0.99) {
+ p = (d < 0) ? me.comm_base.getNode(freq_decS)
+ : me.comm_base.getNode(freq_incS);
+ } else {
+ p = (d < 0) ? me.comm_base.getNode(freq_decL)
+ : me.comm_base.getNode(freq_incL);
+ }
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ }
+};
+
+###########################################################################
+# The VHF-22 pick animations default to master.
+# NOTE: Use make_master() and make_slave_to().
+# Do NOT change ctl22 directly.
+var ctl22 = [master_ctl22.new(0), master_ctl22.new(1)];
+
+
+###########################################################################
+# API for pick animations and dual control setup.
+###########################################################################
+
+###########################################################################
+# n - Comm#
+var make_master = func(n) {
+ ctl22[n] = master_ctl22.new(n);
+}
+
+###########################################################################
+# n - Comm#
+var make_slave_to = func(n, airoot) {
+ ctl22[n] = slave_ctl22.new(n, airoot);
+}
+
+###########################################################################
+# n - Comm#
+var swap = func(n) {
+ ctl22[n].swap();
+}
+
+###########################################################################
+# n - Comm#
+# d - adjustment
+var adjust_frequency = func(n, d) {
+ ctl22[n].adjust_frequency(d);
+}
+
+###########################################################################
+# Create aliases to drive a radio 3d model in an AI/MP model.
+# n - Comm#
+var animate_aimodel = func(n, airoot) {
+ var p = "systems/electrical/outputs/comm["~ n ~"]";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = comm_base[n] ~ "/serviceable";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = comm_base[n] ~ "/" ~ freq_selected;
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = comm_base[n] ~ "/" ~ freq_standby;
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+}
+
+###########################################################################
+# Create a TDMEncoder node array for sending the current radio state to
+# slaves.
+# n - Comm#
+var master_send_state = func(n) {
+ var b = props.globals.getNode(comm_base[n]);
+ return
+ [
+ b.getNode(freq_selected),
+ b.getNode(freq_standby)
+ ];
+}
+
+###########################################################################
+# Create a SwitchDecoder action array for processing button presses
+# from a slave.
+# n - Comm#
+var master_receive_slave_buttons = func(n) {
+ return
+ [
+ func (b) {
+ if (b) { swap(n); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, -0.025); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, 0.025); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, -1.0); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, 1.0); }
+ }
+ ];
+}
+
+###########################################################################
+# Create a TDMDecoder action array for processing the radio state
+# from the master.
+# n - Comm#
+var slave_receive_master_state = func(n) {
+ var b = props.globals.getNode(comm_base[n]);
+ return
+ [
+ func (v) {
+ b.getNode(freq_selected).setValue(v);
+ },
+ func (v) {
+ b.getNode(freq_standby).setValue(v);
+ }
+ ];
+}
+
+###########################################################################
+# Create a SwitchEncoder node array for sending button presses
+# to the master
+# n - Comm#
+var slave_send_buttons = func(n) {
+ var b = props.globals.getNode(comm_base[n]);
+ return
+ [
+ b.getNode(swap_btn, 1),
+ b.getNode(freq_decS, 1),
+ b.getNode(freq_incS, 1),
+ b.getNode(freq_decL, 1),
+ b.getNode(freq_incL, 1),
+ ];
+}
+
+
+
+###########################################################################
+# Generic frequency stepper.
+# f - frequency property
+# d - change
+# min - min frequency
+# max - max frequency
+var adjust_radio_frequency = func(f, d, min, max) {
+ var old = f.getValue();
+ var new = old + d;
+ if (new < min - 0.005) { new = int(max) + (new - int(new)); }
+ if (new > max + 0.005) {
+ new = int(min) + (new - int(new));
+ if (int(new + 0.005) > min) new -= 1;
+ }
+# print("Old: " ~ old ~ " Intermediate: " ~ (old + d) ~ " New: " ~ new);
+ f.setValue(new);
+}
diff --git a/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl-32.png b/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl-32.png
new file mode 100644
index 000000000..f9914ff53
Binary files /dev/null and b/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl-32.png differ
diff --git a/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32-nav.xml b/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32-nav.xml
new file mode 100644
index 000000000..f1ccf3548
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32-nav.xml
@@ -0,0 +1,358 @@
+
+
+
+
+
+
+ instrumentation/nav[0]/serviceable
+ systems/electrical/outputs/nav[0]
+ instrumentation/nav[0]/frequencies/selected-mhz
+ instrumentation/nav[0]/frequencies/standby-mhz
+ VIR32.swap(0);
+ VIR32.adjust_frequency(0, 0.05);
+ VIR32.adjust_frequency(0, -0.05);
+ VIR32.adjust_frequency(0, 1.0);
+ VIR32.adjust_frequency(0, -1.0);
+
+
+ ctl32.ac
+
+
+ select
+ freq.001
+ freq.002
+ freq.003
+ freq.dec
+ freq.004
+ freq.005
+
+
+
+ 1
+
+
+
+
+
+ select
+ stby.001
+ stby.002
+ stby.003
+ stby.dec
+ stby.004
+ stby.005
+
+
+
+ 1
+
+
+
+
+
+ select
+ mem.annun
+
+
+
+ 1
+
+
+
+
+
+ rotate
+ CTL-32.pwr
+
+
+ 00
+ 1.030
+
+
+ 0.0
+ -0.014
+ -0.018
+
+
+ -1
+ 0
+ 0
+
+
+
+
+
+
+ textranslate
+ freq.001
+
+ 0.001
+ 100
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ freq.002
+
+ 0.01
+ 10
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ freq.003
+
+ 0.1
+ 1
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ freq.004
+
+ 1
+ 0.1
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ freq.005
+
+ 10
+ 0.01
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+
+
+ textranslate
+ stby.001
+
+ 0.001
+ 100
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ stby.002
+
+ 0.01
+ 10
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ stby.003
+
+ 0.1
+ 1
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ stby.004
+
+ 1
+ 0.1
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ textranslate
+ stby.005
+
+ 10
+ 0.01
+ 0.0005
+
+ 0
+ 1
+ 0
+
+
+
+
+ pick
+ CTL-32.xfr
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ pwr.off
+
+
+ false
+
+ property-assign
+
+ false
+
+
+
+
+
+ pick
+ pwr.on
+
+
+ false
+
+ property-assign
+
+ true
+
+
+
+
+
+ pick
+ freq.knob.kHz
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
+ pick
+ freq.knob.MHz
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ true
+ 0.2
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+ false
+
+ nasal
+
+
+
+
+
+
diff --git a/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32-nav1.xml b/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32-nav1.xml
new file mode 100644
index 000000000..b1b405a76
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32-nav1.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ instrumentation/nav[0]/serviceable
+ systems/electrical/outputs/nav[0]
+ instrumentation/nav[0]/frequencies/selected-mhz
+ instrumentation/nav[0]/frequencies/standby-mhz
+ VIR32.swap(0);
+ VIR32.adjust_frequency(0, 0.05);
+ VIR32.adjust_frequency(0, -0.05);
+ VIR32.adjust_frequency(0, 1.0);
+ VIR32.adjust_frequency(0, -1.0);
+
+
+
diff --git a/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32-nav2.xml b/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32-nav2.xml
new file mode 100644
index 000000000..0c58b771b
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32-nav2.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+ instrumentation/nav[1]/serviceable
+ systems/electrical/outputs/nav[1]
+ instrumentation/nav[1]/frequencies/selected-mhz
+ instrumentation/nav[1]/frequencies/standby-mhz
+ VIR32.swap(1);
+ VIR32.adjust_frequency(1, 0.05);
+ VIR32.adjust_frequency(1, -0.05);
+ VIR32.adjust_frequency(1, 1.0);
+ VIR32.adjust_frequency(1, -1.0);
+
+
+
diff --git a/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32.ac b/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32.ac
new file mode 100644
index 000000000..642f054c6
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32.ac
@@ -0,0 +1,2407 @@
+AC3Db
+MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
+MATERIAL "DefaultWhite.001" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
+MATERIAL "dimlit" rgb 1 1 1 amb 1 1 1 emis 0.5 0.5 0.5 spec 0.5 0.5 0.5 shi 64 trans 0
+MATERIAL "lit" rgb 1 1 1 amb 1 1 1 emis 1 1 1 spec 0.5 0.5 0.5 shi 64 trans 0
+OBJECT world
+kids 27
+OBJECT poly
+name "CTL-32"
+data 8
+Mesh.211
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 8
+0.00288 0.033556 0.030053
+0.002878 -0.033556 0.030053
+0.002878 -0.033556 -0.030053
+0.00288 0.033556 -0.030053
+1e-06 0.033557 0.030053
+-1e-06 -0.033557 0.030053
+-1e-06 -0.033557 -0.030053
+1e-06 0.033557 -0.030054
+numsurf 7
+SURF 0x00
+mat 1
+refs 3
+2 0.0318928062916 0.52865421772
+6 0.0318928062916 0.471345812082
+7 0.0892012119293 0.471345812082
+SURF 0x00
+mat 1
+refs 3
+1 0.0318928062916 0.52865421772
+4 0.0318928062916 0.471345812082
+5 0.0892012119293 0.471345812082
+SURF 0x00
+mat 1
+refs 4
+4 0.0318928062916 0.52865421772
+0 0.0318928062916 0.471345812082
+3 0.0892012119293 0.471345812082
+7 0.0892012119293 0.52865421772
+SURF 0x00
+mat 1
+refs 4
+6 0.0318928062916 0.52865421772
+2 0.0318928062916 0.471345812082
+1 0.0892012119293 0.471345812082
+5 0.0892012119293 0.52865421772
+SURF 0x00
+mat 1
+refs 3
+1 0.0318928062916 0.52865421772
+0 0.0318928062916 0.471345812082
+4 0.0892012119293 0.471345812082
+SURF 0x00
+mat 1
+refs 3
+3 0.0318928062916 0.52865421772
+2 0.0318928062916 0.471345812082
+7 0.0892012119293 0.471345812082
+SURF 0x00
+mat 1
+refs 4
+0 0.00467306375504 0.99786221981
+1 0.00467306375504 0.10612988472
+2 0.803326964378 0.106129825115
+3 0.803327083588 0.99786221981
+kids 0
+OBJECT poly
+name "CTL-32.mem"
+data 9
+Plane.002
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003175 0.002595 -0.027258
+0.003175 0.002595 -0.017239
+0.003175 0.012924 -0.027258
+0.003175 0.012924 -0.017239
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.765544474125 0.593913197517
+2 0.765544474125 0.72511190176
+3 0.638291478157 0.725111961365
+1 0.638291418552 0.593913197517
+kids 0
+OBJECT poly
+name "CTL-32.pwr"
+data 8
+Mesh.214
+texture "ctl-32.png"
+texrep 1 1
+crease 40.000000
+numvert 61
+0.011466 -0.015168 0.013404
+0.011476 -0.015544 0.012224
+0.011475 -0.016342 0.011278
+0.011464 -0.018675 0.010605
+0.011471 -0.020801 0.011778
+0.011463 -0.021369 0.012878
+0.011464 -0.021474 0.014111
+0.011474 -0.0211 0.01529
+0.011475 -0.020302 0.016236
+0.011476 -0.019202 0.016805
+0.011467 -0.016789 0.016536
+0.011479 -0.015843 0.015737
+0.011467 -0.015273 0.014638
+0.010939 -0.013021 0.015336
+0.010936 -0.014013 0.017254
+0.010939 -0.015663 0.018644
+0.010934 -0.017718 0.019298
+0.010936 -0.019868 0.019115
+0.010934 -0.021784 0.018124
+0.010932 -0.023174 0.016474
+0.010934 -0.023829 0.014417
+0.010928 -0.023646 0.012268
+0.010933 -0.022654 0.010352
+0.010928 -0.021004 0.008961
+0.010934 -0.018949 0.008307
+0.010932 -0.016798 0.00849
+0.010934 -0.014883 0.009482
+0.010936 -0.013492 0.011131
+0.010934 -0.012838 0.013187
+0.003255 -0.013021 0.015336
+0.003253 -0.014013 0.017253
+0.003255 -0.015662 0.018644
+0.003252 -0.017719 0.019297
+0.003253 -0.019869 0.019114
+0.003252 -0.021785 0.018123
+0.003251 -0.023175 0.016474
+0.003252 -0.023829 0.014418
+0.003249 -0.023646 0.012268
+0.003251 -0.022655 0.010352
+0.003249 -0.021005 0.00896
+0.003252 -0.018949 0.008307
+0.003251 -0.016799 0.00849
+0.003252 -0.014883 0.009482
+0.003253 -0.013492 0.01113
+0.003252 -0.012838 0.013187
+0.002948 -0.011107 0.015889
+0.002944 -0.010859 0.012965
+0.002944 -0.011858 0.017991
+0.002949 -0.015299 0.020894
+0.002944 -0.017497 0.021277
+0.002945 -0.020422 0.021028
+0.002944 -0.023028 0.01968
+0.002942 -0.024919 0.017436
+0.002944 -0.025808 0.014639
+0.002939 -0.02556 0.011715
+0.002943 -0.024211 0.009109
+0.002939 -0.021967 0.007216
+0.002944 -0.01917 0.006327
+0.002942 -0.016246 0.006576
+0.002944 -0.01364 0.007925
+0.002945 -0.011748 0.010168
+numsurf 47
+SURF 0x10
+mat 1
+refs 4
+0 0.242616027594 0.34228309989
+1 0.253560334444 0.330271661282
+27 0.27686715126 0.344839572906
+28 0.258591175079 0.36488327384
+SURF 0x10
+mat 1
+refs 4
+26 0.286074966192 0.31933516264
+27 0.27686715126 0.344839572906
+1 0.253560334444 0.330271661282
+2 0.259069859982 0.314993470907
+SURF 0x10
+mat 1
+refs 4
+25 0.284832298756 0.292247921228
+26 0.286074966192 0.31933516264
+2 0.259069859982 0.314993470907
+3 0.258331537247 0.298769056797
+SURF 0x10
+mat 1
+refs 3
+24 0.273313134909 0.267678141594
+25 0.284832298756 0.292247921228
+3 0.258331537247 0.298769056797
+SURF 0x10
+mat 1
+refs 3
+23 0.253274142742 0.249411016703
+24 0.273313134909 0.267678141594
+3 0.251419782639 0.284074395895
+SURF 0x10
+mat 1
+refs 4
+22 0.227752551436 0.240196049213
+23 0.253274142742 0.249411016703
+3 0.239418447018 0.27314016223
+4 0.224144220352 0.267609983683
+SURF 0x10
+mat 1
+refs 4
+21 0.200660303235 0.241442531347
+22 0.227752551436 0.240196049213
+4 0.224144220352 0.267609983683
+5 0.207917496562 0.26836925745
+SURF 0x10
+mat 1
+refs 4
+20 0.176110818982 0.252956539392
+21 0.200660303235 0.241442531347
+5 0.207917496562 0.26836925745
+6 0.193216666579 0.275259315968
+SURF 0x10
+mat 1
+refs 4
+19 0.157832920551 0.273013472557
+20 0.176110818982 0.252956539392
+6 0.193216666579 0.275259315968
+7 0.182275414467 0.287250161171
+SURF 0x10
+mat 1
+refs 4
+18 0.148611694574 0.298515945673
+19 0.157832920551 0.273013472557
+7 0.182275414467 0.287250161171
+8 0.17675408721 0.302526503801
+SURF 0x10
+mat 1
+refs 4
+17 0.149867773056 0.325605154037
+18 0.148611694574 0.298515945673
+8 0.17675408721 0.302526503801
+9 0.17750428617 0.318752765656
+SURF 0x10
+mat 1
+refs 4
+16 0.161388874054 0.350161790848
+17 0.149867773056 0.325605154037
+9 0.17750428617 0.318752765656
+10 0.184401065111 0.333466231823
+SURF 0x10
+mat 1
+refs 3
+15 0.181427836418 0.368428856134
+16 0.161388874054 0.350161790848
+10 0.184401065111 0.333466231823
+SURF 0x10
+mat 1
+refs 4
+14 0.206934183836 0.377653956413
+15 0.181427836418 0.368428856134
+10 0.196400627494 0.344412237406
+11 0.211677893996 0.349921613932
+SURF 0x10
+mat 1
+refs 4
+13 0.234041765332 0.37639734149
+14 0.206934183836 0.377653956413
+11 0.211677893996 0.349921613932
+12 0.227901563048 0.349183142185
+SURF 0x10
+mat 1
+refs 4
+12 0.227901563048 0.349183142185
+0 0.242616027594 0.34228309989
+28 0.258591175079 0.36488327384
+13 0.234041765332 0.37639734149
+SURF 0x10
+mat 1
+refs 4
+28 0.313261419535 0.912568569183
+44 0.313261419535 0.819853067398
+29 0.40597692132 0.819853067398
+13 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+30 0.313261419535 0.912568569183
+14 0.313261419535 0.819853067398
+13 0.40597692132 0.819853067398
+29 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+31 0.313261419535 0.912568569183
+15 0.313261419535 0.819853067398
+14 0.40597692132 0.819853067398
+30 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+32 0.313261419535 0.912568569183
+16 0.313261419535 0.819853067398
+15 0.40597692132 0.819853067398
+31 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+33 0.313261419535 0.912568569183
+17 0.313261419535 0.819853067398
+16 0.40597692132 0.819853067398
+32 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+34 0.313261419535 0.912568569183
+18 0.313261419535 0.819853067398
+17 0.40597692132 0.819853067398
+33 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+35 0.313261419535 0.912568569183
+19 0.313261419535 0.819853067398
+18 0.40597692132 0.819853067398
+34 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+36 0.313261419535 0.912568569183
+20 0.313261419535 0.819853067398
+19 0.40597692132 0.819853067398
+35 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+37 0.313261419535 0.912568569183
+21 0.313261419535 0.819853067398
+20 0.40597692132 0.819853067398
+36 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+38 0.313261419535 0.912568569183
+22 0.313261419535 0.819853067398
+21 0.40597692132 0.819853067398
+37 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+39 0.313261419535 0.912568569183
+23 0.313261419535 0.819853067398
+22 0.40597692132 0.819853067398
+38 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+40 0.313261419535 0.912568569183
+24 0.313261419535 0.819853067398
+23 0.40597692132 0.819853067398
+39 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+41 0.313261419535 0.912568569183
+25 0.313261419535 0.819853067398
+24 0.40597692132 0.819853067398
+40 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+42 0.313261419535 0.912568569183
+26 0.313261419535 0.819853067398
+25 0.40597692132 0.819853067398
+41 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+43 0.313261419535 0.912568569183
+27 0.313261419535 0.819853067398
+26 0.40597692132 0.819853067398
+42 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+44 0.313261419535 0.912568569183
+28 0.313261419535 0.819853067398
+27 0.40597692132 0.819853067398
+43 0.40597692132 0.912568569183
+SURF 0x10
+mat 1
+refs 4
+29 0.82833224535 0.541667699814
+44 0.82833224535 0.498332291842
+46 0.871667683125 0.498332291842
+45 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+30 0.82833224535 0.541667699814
+29 0.82833224535 0.498332291842
+45 0.871667683125 0.498332291842
+47 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+32 0.82833224535 0.541667699814
+31 0.82833224535 0.498332291842
+48 0.871667683125 0.498332291842
+49 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+33 0.82833224535 0.541667699814
+32 0.82833224535 0.498332291842
+49 0.871667683125 0.498332291842
+50 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+34 0.82833224535 0.541667699814
+33 0.82833224535 0.498332291842
+50 0.871667683125 0.498332291842
+51 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+35 0.82833224535 0.541667699814
+34 0.82833224535 0.498332291842
+51 0.871667683125 0.498332291842
+52 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+36 0.82833224535 0.541667699814
+35 0.82833224535 0.498332291842
+52 0.871667683125 0.498332291842
+53 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+37 0.82833224535 0.541667699814
+36 0.82833224535 0.498332291842
+53 0.871667683125 0.498332291842
+54 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+38 0.82833224535 0.541667699814
+37 0.82833224535 0.498332291842
+54 0.871667683125 0.498332291842
+55 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+39 0.82833224535 0.541667699814
+38 0.82833224535 0.498332291842
+55 0.871667683125 0.498332291842
+56 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+40 0.82833224535 0.541667699814
+39 0.82833224535 0.498332291842
+56 0.871667683125 0.498332291842
+57 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+41 0.82833224535 0.541667699814
+40 0.82833224535 0.498332291842
+57 0.871667683125 0.498332291842
+58 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+42 0.82833224535 0.541667699814
+41 0.82833224535 0.498332291842
+58 0.871667683125 0.498332291842
+59 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+43 0.82833224535 0.541667699814
+42 0.82833224535 0.498332291842
+59 0.871667683125 0.498332291842
+60 0.871667683125 0.541667699814
+SURF 0x10
+mat 1
+refs 4
+44 0.82833224535 0.541667699814
+43 0.82833224535 0.498332291842
+60 0.871667683125 0.498332291842
+46 0.871667683125 0.541667699814
+kids 0
+OBJECT poly
+name "CTL-32.toggle"
+data 10
+Circle.001
+texture "ctl-32.png"
+texrep 1 1
+crease 50.000000
+numvert 16
+0.00288 0.013648 -0.023997
+0.00288 0.0122 -0.023997
+0.00288 0.011176 -0.022972
+0.00288 0.011176 -0.021524
+0.00288 0.0122 -0.0205
+0.00288 0.013648 -0.0205
+0.00288 0.014672 -0.021524
+0.00288 0.014672 -0.022973
+0.009506 0.014166 -0.025409
+0.009506 0.011682 -0.025409
+0.009506 0.011463 -0.025282
+0.009506 0.011464 -0.019214
+0.009506 0.011682 -0.019088
+0.009506 0.014166 -0.019088
+0.009506 0.014385 -0.019215
+0.009506 0.014384 -0.025283
+numsurf 11
+SURF 0x10
+mat 1
+refs 4
+1 0.403194278479 0.371655732393
+0 0.403194278479 0.337494283915
+8 0.437355726957 0.337494283915
+9 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+2 0.403194278479 0.371655732393
+1 0.403194278479 0.337494283915
+9 0.437355726957 0.337494283915
+10 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+3 0.403194278479 0.371655732393
+2 0.403194278479 0.337494283915
+10 0.437355726957 0.337494283915
+11 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+4 0.403194278479 0.371655732393
+3 0.403194278479 0.337494283915
+11 0.437355726957 0.337494283915
+12 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+5 0.403194278479 0.371655732393
+4 0.403194278479 0.337494283915
+12 0.437355726957 0.337494283915
+13 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+6 0.403194278479 0.371655732393
+5 0.403194278479 0.337494283915
+13 0.437355726957 0.337494283915
+14 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+7 0.403194278479 0.371655732393
+6 0.403194278479 0.337494283915
+14 0.437355726957 0.337494283915
+15 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+8 0.403194278479 0.371655732393
+0 0.403194278479 0.337494283915
+7 0.437355726957 0.337494283915
+15 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+11 0.403194278479 0.371655732393
+14 0.403194278479 0.337494283915
+13 0.437355726957 0.337494283915
+12 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+8 0.403194278479 0.371655732393
+15 0.403194278479 0.337494283915
+10 0.437355726957 0.337494283915
+9 0.437355726957 0.371655732393
+SURF 0x10
+mat 1
+refs 4
+10 0.403194278479 0.371655732393
+15 0.403194278479 0.337494283915
+14 0.437355726957 0.337494283915
+11 0.437355726957 0.371655732393
+kids 0
+OBJECT poly
+name "CTL-32.vol"
+data 8
+Mesh.216
+texture "ctl-32.png"
+texrep 1 1
+crease 40.000000
+numvert 33
+0.011467 -0.01514 0.014677
+0.011479 -0.015734 0.015824
+0.011467 -0.016722 0.016657
+0.011466 -0.017953 0.017048
+0.011476 -0.019241 0.016938
+0.011475 -0.020389 0.016345
+0.011474 -0.021221 0.015357
+0.011464 -0.021612 0.014126
+0.011463 -0.021502 0.012839
+0.011471 -0.020909 0.011691
+0.011463 -0.019921 0.010859
+0.011464 -0.01869 0.010467
+0.011474 -0.017403 0.010575
+0.011475 -0.016256 0.01117
+0.011476 -0.015422 0.012157
+0.011466 -0.01503 0.013389
+0.018907 -0.015031 0.013388
+0.018897 -0.015422 0.012157
+0.018896 -0.016255 0.01117
+0.018896 -0.017402 0.010576
+0.018906 -0.01869 0.010467
+0.018905 -0.019922 0.010858
+0.018893 -0.020909 0.011691
+0.018905 -0.021503 0.012838
+0.018906 -0.021613 0.014126
+0.018896 -0.02122 0.015357
+0.018896 -0.020388 0.016346
+0.018897 -0.019241 0.016939
+0.018907 -0.017954 0.017048
+0.018908 -0.016723 0.016656
+0.0189 -0.015734 0.015824
+0.018908 -0.015141 0.014676
+0.018896 -0.018322 0.013757
+numsurf 32
+SURF 0x10
+mat 1
+refs 4
+14 0.0525224171579 0.855924844742
+15 0.0525224171579 0.803254663944
+16 0.105192601681 0.803254663944
+17 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+13 0.0525224171579 0.855924844742
+14 0.0525224171579 0.803254663944
+17 0.105192601681 0.803254663944
+18 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+12 0.0525224171579 0.855924844742
+13 0.0525224171579 0.803254663944
+18 0.105192601681 0.803254663944
+19 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+11 0.0525224171579 0.855924844742
+12 0.0525224171579 0.803254663944
+19 0.105192601681 0.803254663944
+20 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+10 0.0525224171579 0.855924844742
+11 0.0525224171579 0.803254663944
+20 0.105192601681 0.803254663944
+21 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+9 0.0525224171579 0.855924844742
+10 0.0525224171579 0.803254663944
+21 0.105192601681 0.803254663944
+22 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+8 0.0525224171579 0.855924844742
+9 0.0525224171579 0.803254663944
+22 0.105192601681 0.803254663944
+23 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+7 0.0525224171579 0.855924844742
+8 0.0525224171579 0.803254663944
+23 0.105192601681 0.803254663944
+24 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+6 0.0525224171579 0.855924844742
+7 0.0525224171579 0.803254663944
+24 0.105192601681 0.803254663944
+25 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+5 0.0525224171579 0.855924844742
+6 0.0525224171579 0.803254663944
+25 0.105192601681 0.803254663944
+26 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+4 0.0525224171579 0.855924844742
+5 0.0525224171579 0.803254663944
+26 0.105192601681 0.803254663944
+27 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+3 0.0525224171579 0.855924844742
+4 0.0525224171579 0.803254663944
+27 0.105192601681 0.803254663944
+28 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+2 0.0525224171579 0.855924844742
+3 0.0525224171579 0.803254663944
+28 0.105192601681 0.803254663944
+29 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+1 0.0525224171579 0.855924844742
+2 0.0525224171579 0.803254663944
+29 0.105192601681 0.803254663944
+30 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+0 0.0525224171579 0.855924844742
+1 0.0525224171579 0.803254663944
+30 0.105192601681 0.803254663944
+31 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 4
+15 0.0525224171579 0.855924844742
+0 0.0525224171579 0.803254663944
+31 0.105192601681 0.803254663944
+16 0.105192601681 0.855924844742
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+17 0.253559589386 0.330276489258
+16 0.242618411779 0.342267304659
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+18 0.259069114923 0.314998298883
+17 0.253559589386 0.330276489258
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+19 0.258329153061 0.298784583807
+18 0.259069114923 0.314998298883
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+20 0.251420378685 0.28407022357
+19 0.258329153061 0.298784583807
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+21 0.239420965314 0.27312335372
+20 0.251420378685 0.28407022357
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+22 0.224143624306 0.267613887787
+21 0.239420965314 0.27312335372
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+23 0.207920014858 0.26835244894
+22 0.224143624306 0.267613887787
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+24 0.193217262626 0.275255173445
+23 0.207920014858 0.26835244894
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+25 0.182273030281 0.287265688181
+24 0.193217262626 0.275255173445
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+26 0.176751494408 0.302543014288
+25 0.182273030281 0.287265688181
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+27 0.177503541112 0.318757563829
+26 0.176751494408 0.302543014288
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+28 0.184403434396 0.333450436592
+27 0.177503541112 0.318757563829
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+29 0.196402996778 0.34439638257
+28 0.184403434396 0.333450436592
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+30 0.211677148938 0.349926501513
+29 0.196402996778 0.34439638257
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+31 0.227903932333 0.34916728735
+30 0.211677148938 0.349926501513
+SURF 0x10
+mat 1
+refs 3
+32 0.217911168933 0.308764845133
+16 0.242618411779 0.342267304659
+31 0.227903932333 0.34916728735
+kids 0
+OBJECT poly
+name "CTL-32.xfr"
+data 9
+Plane.019
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003175 0.012924 -0.017239
+0.003175 0.012924 -0.027258
+0.003175 0.023253 -0.017239
+0.003175 0.023253 -0.027258
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+2 0.638291537762 0.856310725212
+0 0.638291478157 0.725111961365
+1 0.765544474125 0.72511190176
+3 0.765544474125 0.856310606003
+kids 0
+OBJECT poly
+name "act.btn"
+data 10
+Circle.004
+texture "ctl-32.png"
+texrep 1 1
+crease 40.000000
+numvert 24
+0.004243 -0.026244 -0.016292
+0.004243 -0.02737 -0.017417
+0.004243 -0.028962 -0.017417
+0.004243 -0.030088 -0.016292
+0.004243 -0.030088 -0.0147
+0.004243 -0.028962 -0.013574
+0.004243 -0.02737 -0.013574
+0.004243 -0.026244 -0.0147
+0.002926 -0.026244 -0.016292
+0.002926 -0.02737 -0.017417
+0.002926 -0.028962 -0.017417
+0.002926 -0.030088 -0.016292
+0.002926 -0.030088 -0.0147
+0.002926 -0.028962 -0.013574
+0.002926 -0.02737 -0.013574
+0.002926 -0.026244 -0.0147
+0.004485 -0.026466 -0.014792
+0.004485 -0.027462 -0.013796
+0.004485 -0.02887 -0.013796
+0.004485 -0.029866 -0.014792
+0.004485 -0.029866 -0.0162
+0.004485 -0.02887 -0.017195
+0.004485 -0.027462 -0.017195
+0.004485 -0.026466 -0.0162
+numsurf 19
+SURF 0x10
+mat 1
+refs 4
+0 0.426579475403 0.37008485198
+1 0.435408592224 0.36124792695
+9 0.435408592224 0.36124792695
+8 0.426579475403 0.37008485198
+SURF 0x10
+mat 1
+refs 4
+1 0.435408592224 0.36124792695
+2 0.435408592224 0.348753720522
+10 0.435408592224 0.348753720522
+9 0.435408592224 0.36124792695
+SURF 0x10
+mat 1
+refs 4
+2 0.435408592224 0.348753720522
+3 0.426579475403 0.339916795492
+11 0.426579475403 0.339916795492
+10 0.435408592224 0.348753720522
+SURF 0x10
+mat 1
+refs 4
+3 0.426579475403 0.339916795492
+4 0.414085328579 0.339916795492
+12 0.414085328579 0.339916795492
+11 0.426579475403 0.339916795492
+SURF 0x10
+mat 1
+refs 4
+4 0.414085328579 0.339916795492
+5 0.405248343945 0.348753720522
+13 0.405248343945 0.348753720522
+12 0.414085328579 0.339916795492
+SURF 0x10
+mat 1
+refs 4
+5 0.405248343945 0.348753720522
+6 0.405248343945 0.36124792695
+14 0.405248343945 0.36124792695
+13 0.405248343945 0.348753720522
+SURF 0x10
+mat 1
+refs 4
+6 0.405248343945 0.36124792695
+7 0.414085328579 0.37008485198
+15 0.414085328579 0.37008485198
+14 0.405248343945 0.36124792695
+SURF 0x10
+mat 1
+refs 4
+7 0.414085328579 0.37008485198
+0 0.426579475403 0.37008485198
+8 0.426579475403 0.37008485198
+15 0.414085328579 0.37008485198
+SURF 0x10
+mat 1
+refs 4
+0 0.426579475403 0.37008485198
+7 0.414085328579 0.37008485198
+16 0.414807319641 0.368342548609
+23 0.425857484341 0.368342548609
+SURF 0x10
+mat 1
+refs 4
+7 0.414085328579 0.37008485198
+6 0.405248343945 0.36124792695
+17 0.406990647316 0.360525846481
+16 0.414807319641 0.368342548609
+SURF 0x10
+mat 1
+refs 4
+6 0.405248343945 0.36124792695
+5 0.405248343945 0.348753720522
+18 0.406990647316 0.349475771189
+17 0.406990647316 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+5 0.405248343945 0.348753720522
+4 0.414085328579 0.339916795492
+19 0.414807319641 0.341659069061
+18 0.406990647316 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+4 0.414085328579 0.339916795492
+3 0.426579475403 0.339916795492
+20 0.425857484341 0.341659069061
+19 0.414807319641 0.341659069061
+SURF 0x10
+mat 1
+refs 4
+3 0.426579475403 0.339916795492
+2 0.435408592224 0.348753720522
+21 0.433666348457 0.349475771189
+20 0.425857484341 0.341659069061
+SURF 0x10
+mat 1
+refs 4
+2 0.435408592224 0.348753720522
+1 0.435408592224 0.36124792695
+22 0.433666348457 0.360525846481
+21 0.433666348457 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+1 0.435408592224 0.36124792695
+0 0.426579475403 0.37008485198
+23 0.425857484341 0.368342548609
+22 0.433666348457 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+23 0.425857484341 0.368342548609
+16 0.414807319641 0.368342548609
+17 0.406990647316 0.360525846481
+22 0.433666348457 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+22 0.433666348457 0.360525846481
+17 0.406990647316 0.360525846481
+18 0.406990647316 0.349475771189
+21 0.433666348457 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+21 0.433666348457 0.349475771189
+18 0.406990647316 0.349475771189
+19 0.414807319641 0.341659069061
+20 0.425857484341 0.341659069061
+kids 0
+OBJECT poly
+name "freq.001"
+data 9
+Plane.031
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 0.011229
+0.003139 0.018003 0.012302
+0.003139 0.018003 0.016894
+0.003139 0.025297 0.015821
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.002"
+data 9
+Plane.030
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 0.005066
+0.003139 0.018003 0.006139
+0.003139 0.018003 0.010732
+0.003139 0.025297 0.009659
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.003"
+data 9
+Plane.027
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 -0.001866
+0.003139 0.018003 -0.000793
+0.003139 0.018003 0.0038
+0.003139 0.025297 0.002727
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.004"
+data 9
+Plane.026
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 -0.008799
+0.003139 0.018003 -0.007726
+0.003139 0.018003 -0.003133
+0.003139 0.025297 -0.004206
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.005"
+data 9
+Plane.022
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.025297 -0.015682
+0.003139 0.018003 -0.014609
+0.003139 0.018003 -0.010016
+0.003139 0.025297 -0.011089
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "freq.dec"
+data 9
+Plane.039
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003202 0.019053 -0.002501
+0.003202 0.01806 -0.002259
+0.003202 0.01806 -0.001223
+0.003202 0.019053 -0.001465
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.933840274811 0.0771778821945
+3 0.925696730614 0.0771778821945
+2 0.925696730614 0.0642324090004
+1 0.933840274811 0.0642324090004
+kids 0
+OBJECT poly
+name "freq.knob.MHz"
+data 8
+Mesh.213
+texture "ctl-32.png"
+texrep 1 1
+crease 40.000000
+numvert 48
+0.011502 -0.011309 -0.02118
+0.0115 -0.013207 -0.022448
+0.011494 -0.015446 -0.022894
+0.0115 -0.017686 -0.022448
+0.011497 -0.019584 -0.02118
+0.011502 -0.020853 -0.019281
+0.011504 -0.021299 -0.017042
+0.011502 -0.020853 -0.014802
+0.011497 -0.019584 -0.012904
+0.0115 -0.017686 -0.011635
+0.011494 -0.015446 -0.01119
+0.0115 -0.013207 -0.011635
+0.011502 -0.011309 -0.012904
+0.011497 -0.010039 -0.014802
+0.011495 -0.009593 -0.017042
+0.011497 -0.010039 -0.019281
+0.010891 -0.007442 -0.020357
+0.010893 -0.006782 -0.017042
+0.010891 -0.007442 -0.013726
+0.010893 -0.00932 -0.010916
+0.010889 -0.01213 -0.009038
+0.010889 -0.015446 -0.008378
+0.010888 -0.018762 -0.009038
+0.010896 -0.021574 -0.010916
+0.010886 -0.02345 -0.013726
+0.010895 -0.024111 -0.017041
+0.010886 -0.02345 -0.020357
+0.010896 -0.021574 -0.023168
+0.010888 -0.018762 -0.025047
+0.010889 -0.015446 -0.025706
+0.010889 -0.01213 -0.025047
+0.010893 -0.00932 -0.023168
+0.003025 -0.007441 -0.020357
+0.003027 -0.006783 -0.017042
+0.003025 -0.007441 -0.013726
+0.003026 -0.00932 -0.010916
+0.003023 -0.012131 -0.009038
+0.003022 -0.015446 -0.008378
+0.003022 -0.018762 -0.009038
+0.00303 -0.021574 -0.010916
+0.003031 -0.023452 -0.013726
+0.003029 -0.024112 -0.017042
+0.003031 -0.023452 -0.020357
+0.00303 -0.021574 -0.023168
+0.003022 -0.018762 -0.025047
+0.003022 -0.015446 -0.025706
+0.003023 -0.012131 -0.025047
+0.003026 -0.00932 -0.023168
+numsurf 32
+SURF 0x10
+mat 1
+refs 4
+0 0.681315302849 0.39272326231
+1 0.696943879128 0.369354456663
+30 0.72895103693 0.382609218359
+31 0.705807030201 0.417218744755
+SURF 0x10
+mat 1
+refs 4
+29 0.737064003944 0.341771930456
+30 0.72895103693 0.382609218359
+1 0.696943879128 0.369354456663
+2 0.702431261539 0.341774225235
+SURF 0x10
+mat 1
+refs 4
+28 0.72895103693 0.300935894251
+29 0.737064003944 0.341771930456
+2 0.702431261539 0.341774225235
+3 0.696943879128 0.314183682203
+SURF 0x10
+mat 1
+refs 4
+27 0.705806910992 0.266300916672
+28 0.72895103693 0.300935894251
+3 0.696943879128 0.314183682203
+4 0.681315302849 0.290801167488
+SURF 0x10
+mat 1
+refs 4
+26 0.671187996864 0.243188887835
+27 0.705806910992 0.266300916672
+4 0.681315302849 0.290801167488
+5 0.657934963703 0.275174319744
+SURF 0x10
+mat 1
+refs 4
+25 0.630345463753 0.235042914748
+26 0.671187996864 0.243188887835
+5 0.657934963703 0.275174319744
+6 0.63035929203 0.269683331251
+SURF 0x10
+mat 1
+refs 4
+24 0.589516758919 0.243188887835
+25 0.630345463753 0.235042914748
+6 0.63035929203 0.269683331251
+7 0.602769732475 0.275174379349
+SURF 0x10
+mat 1
+refs 4
+23 0.554897606373 0.266300976276
+24 0.589516758919 0.243188887835
+7 0.602769732475 0.275174379349
+8 0.579389333725 0.290801227093
+SURF 0x10
+mat 1
+refs 4
+22 0.531767487526 0.300935894251
+23 0.554897606373 0.266300976276
+8 0.579389333725 0.290801227093
+9 0.563760757446 0.314183682203
+SURF 0x10
+mat 1
+refs 4
+21 0.52364051342 0.341771930456
+22 0.531767487526 0.300935894251
+9 0.563760757446 0.314183682203
+10 0.558273494244 0.341774344444
+SURF 0x10
+mat 1
+refs 4
+20 0.531767487526 0.382609218359
+21 0.52364051342 0.341771930456
+10 0.558273494244 0.341774344444
+11 0.563760757446 0.369354456663
+SURF 0x10
+mat 1
+refs 4
+19 0.554897606373 0.417218744755
+20 0.531767487526 0.382609218359
+11 0.563760757446 0.369354456663
+12 0.579389333725 0.39272326231
+SURF 0x10
+mat 1
+refs 4
+18 0.589516758919 0.440356194973
+19 0.554897606373 0.417218744755
+12 0.579389333725 0.39272326231
+13 0.602769732475 0.408364892006
+SURF 0x10
+mat 1
+refs 4
+17 0.63035929203 0.448476850986
+18 0.589516758919 0.440356194973
+13 0.602769732475 0.408364892006
+14 0.63035929203 0.413855850697
+SURF 0x10
+mat 1
+refs 4
+16 0.671188056469 0.440356194973
+17 0.63035929203 0.448476850986
+14 0.63035929203 0.413855850697
+15 0.657934963703 0.408364892006
+SURF 0x10
+mat 1
+refs 4
+15 0.657934963703 0.408364892006
+0 0.681315302849 0.39272326231
+31 0.705807030201 0.417218744755
+16 0.671188056469 0.440356194973
+SURF 0x10
+mat 1
+refs 4
+31 0.0603405237198 0.71993303299
+47 0.0603405237198 0.621863663197
+32 0.158409923315 0.621863663197
+16 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+33 0.0603405237198 0.71993303299
+17 0.0603405237198 0.621863663197
+16 0.158409923315 0.621863663197
+32 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+34 0.0603405237198 0.71993303299
+18 0.0603405237198 0.621863663197
+17 0.158409923315 0.621863663197
+33 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+35 0.0603405237198 0.71993303299
+19 0.0603405237198 0.621863663197
+18 0.158409923315 0.621863663197
+34 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+36 0.0603405237198 0.71993303299
+20 0.0603405237198 0.621863663197
+19 0.158409923315 0.621863663197
+35 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+37 0.0603405237198 0.71993303299
+21 0.0603405237198 0.621863663197
+20 0.158409923315 0.621863663197
+36 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+38 0.0603405237198 0.71993303299
+22 0.0603405237198 0.621863663197
+21 0.158409923315 0.621863663197
+37 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+39 0.0603405237198 0.71993303299
+23 0.0603405237198 0.621863663197
+22 0.158409923315 0.621863663197
+38 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+40 0.0603405237198 0.71993303299
+24 0.0603405237198 0.621863663197
+23 0.158409923315 0.621863663197
+39 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+41 0.0603405237198 0.71993303299
+25 0.0603405237198 0.621863663197
+24 0.158409923315 0.621863663197
+40 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+42 0.0603405237198 0.71993303299
+26 0.0603405237198 0.621863663197
+25 0.158409923315 0.621863663197
+41 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+43 0.0603405237198 0.71993303299
+27 0.0603405237198 0.621863663197
+26 0.158409923315 0.621863663197
+42 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+44 0.0603405237198 0.71993303299
+28 0.0603405237198 0.621863663197
+27 0.158409923315 0.621863663197
+43 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+45 0.0603405237198 0.71993303299
+29 0.0603405237198 0.621863663197
+28 0.158409923315 0.621863663197
+44 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+46 0.0603405237198 0.71993303299
+30 0.0603405237198 0.621863663197
+29 0.158409923315 0.621863663197
+45 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+47 0.0603405237198 0.71993303299
+31 0.0603405237198 0.621863663197
+30 0.158409923315 0.621863663197
+46 0.158409923315 0.71993303299
+kids 0
+OBJECT poly
+name "freq.knob.kHz"
+data 4
+Mesh
+texture "ctl-32.png"
+texrep 1 1
+crease 40.000000
+numvert 33
+0.02046 -0.015446 -0.017042
+0.020463 -0.01004 -0.019281
+0.020461 -0.009594 -0.017042
+0.020463 -0.01004 -0.014802
+0.020468 -0.01131 -0.012904
+0.020465 -0.013207 -0.011635
+0.02046 -0.015446 -0.01119
+0.020466 -0.017686 -0.011635
+0.020463 -0.019585 -0.012904
+0.020468 -0.020854 -0.014802
+0.020459 -0.021298 -0.017042
+0.020468 -0.020854 -0.019281
+0.020463 -0.019585 -0.02118
+0.020466 -0.017686 -0.022448
+0.02046 -0.015446 -0.022894
+0.020465 -0.013207 -0.022448
+0.020468 -0.01131 -0.02118
+0.010502 -0.011309 -0.02118
+0.0105 -0.013207 -0.022448
+0.010494 -0.015446 -0.022894
+0.0105 -0.017686 -0.022448
+0.010497 -0.019584 -0.02118
+0.010502 -0.020853 -0.019281
+0.010504 -0.021299 -0.017042
+0.010502 -0.020853 -0.014802
+0.010497 -0.019584 -0.012904
+0.0105 -0.017686 -0.011635
+0.010494 -0.015446 -0.01119
+0.0105 -0.013207 -0.011635
+0.010502 -0.011309 -0.012904
+0.010497 -0.010039 -0.014802
+0.010495 -0.009593 -0.017042
+0.010497 -0.010039 -0.019281
+numsurf 32
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+16 0.681315302849 0.392718017101
+1 0.657934963703 0.408358514309
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+1 0.657934963703 0.408358514309
+2 0.63035929203 0.413849562407
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+2 0.63035929203 0.413849562407
+3 0.602769732475 0.408358514309
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+3 0.602769732475 0.408358514309
+4 0.579389333725 0.392718017101
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+4 0.579389333725 0.392718017101
+5 0.563760757446 0.369349330664
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+5 0.563760757446 0.369349330664
+6 0.558273494244 0.341769099236
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+6 0.558273494244 0.341769099236
+7 0.563760757446 0.314178436995
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+7 0.563760757446 0.314178436995
+8 0.579389333725 0.290795952082
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+8 0.579389333725 0.290795952082
+9 0.602769732475 0.275168001652
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+9 0.602769732475 0.275168001652
+10 0.63035929203 0.269701093435
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+10 0.63035929203 0.269701093435
+11 0.657934963703 0.275168001652
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+11 0.657934963703 0.275168001652
+12 0.681315302849 0.290795892477
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+12 0.681315302849 0.290795892477
+13 0.696943879128 0.314178436995
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+13 0.696943879128 0.314178436995
+14 0.702431261539 0.341769099236
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+14 0.702431261539 0.341769099236
+15 0.696943879128 0.369349330664
+SURF 0x10
+mat 1
+refs 3
+0 0.63035929203 0.341769099236
+15 0.696943879128 0.369349330664
+16 0.681315302849 0.392718017101
+SURF 0x10
+mat 1
+refs 4
+17 0.0603405237198 0.71993303299
+32 0.0603405237198 0.621863663197
+1 0.158409923315 0.621863663197
+16 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+32 0.0603405237198 0.71993303299
+31 0.0603405237198 0.621863663197
+2 0.158409923315 0.621863663197
+1 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+31 0.0603405237198 0.71993303299
+30 0.0603405237198 0.621863663197
+3 0.158409923315 0.621863663197
+2 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+30 0.0603405237198 0.71993303299
+29 0.0603405237198 0.621863663197
+4 0.158409923315 0.621863663197
+3 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+29 0.0603405237198 0.71993303299
+28 0.0603405237198 0.621863663197
+5 0.158409923315 0.621863663197
+4 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+28 0.0603405237198 0.71993303299
+27 0.0603405237198 0.621863663197
+6 0.158409923315 0.621863663197
+5 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+27 0.0603405237198 0.71993303299
+26 0.0603405237198 0.621863663197
+7 0.158409923315 0.621863663197
+6 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+26 0.0603405237198 0.71993303299
+25 0.0603405237198 0.621863663197
+8 0.158409923315 0.621863663197
+7 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+25 0.0603405237198 0.71993303299
+24 0.0603405237198 0.621863663197
+9 0.158409923315 0.621863663197
+8 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+24 0.0603405237198 0.71993303299
+23 0.0603405237198 0.621863663197
+10 0.158409923315 0.621863663197
+9 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+23 0.0603405237198 0.71993303299
+22 0.0603405237198 0.621863663197
+11 0.158409923315 0.621863663197
+10 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+22 0.0603405237198 0.71993303299
+21 0.0603405237198 0.621863663197
+12 0.158409923315 0.621863663197
+11 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+21 0.0603405237198 0.71993303299
+20 0.0603405237198 0.621863663197
+13 0.158409923315 0.621863663197
+12 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+20 0.0603405237198 0.71993303299
+19 0.0603405237198 0.621863663197
+14 0.158409923315 0.621863663197
+13 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+19 0.0603405237198 0.71993303299
+18 0.0603405237198 0.621863663197
+15 0.158409923315 0.621863663197
+14 0.158409923315 0.71993303299
+SURF 0x10
+mat 1
+refs 4
+18 0.0603405237198 0.71993303299
+17 0.0603405237198 0.621863663197
+16 0.158409923315 0.621863663197
+15 0.158409923315 0.71993303299
+kids 0
+OBJECT poly
+name "mem.annun"
+data 9
+Plane.047
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.006882 0.01649
+0.003139 0.003499 0.016498
+0.003139 0.003499 0.02398
+0.003139 0.006882 0.023971
+numsurf 1
+SURF 0x00
+mat 3
+refs 4
+0 0.135593175888 0.0792972072959
+3 0.0378846973181 0.0792972296476
+2 0.0377717465162 0.035107113421
+1 0.135480225086 0.035107113421
+kids 0
+OBJECT poly
+name "pwr.off"
+data 9
+Plane.048
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.002944 -0.026036 0.021504
+0.002944 -0.010631 0.021504
+0.002944 -0.026036 0.013802
+0.002944 -0.010631 0.013802
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+0 0.114473424852 0.201592057943
+2 0.220019072294 0.201592057943
+3 0.220019072294 0.412683337927
+1 0.114473424852 0.412683337927
+kids 0
+OBJECT poly
+name "pwr.on"
+data 9
+Plane.052
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.002944 -0.010631 0.013802
+0.002944 -0.026036 0.013802
+0.002944 -0.026036 0.0061
+0.002944 -0.010632 0.0061
+numsurf 1
+SURF 0x00
+mat 1
+refs 4
+3 0.325564712286 0.412683337927
+0 0.220019072294 0.412683337927
+1 0.220019072294 0.201592057943
+2 0.325564712286 0.201592057943
+kids 0
+OBJECT poly
+name "stby.001"
+data 9
+Plane.041
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 0.011837
+0.003139 0.0093 0.01291
+0.003139 0.0093 0.017503
+0.003139 0.016594 0.01643
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.002"
+data 9
+Plane.042
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 0.005675
+0.003139 0.0093 0.006748
+0.003139 0.0093 0.01134
+0.003139 0.016594 0.010267
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.003"
+data 9
+Plane.043
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 -0.001258
+0.003139 0.0093 -0.000185
+0.003139 0.0093 0.004408
+0.003139 0.016594 0.003335
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.004"
+data 9
+Plane.044
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 -0.00819
+0.003139 0.0093 -0.007117
+0.003139 0.0093 -0.002525
+0.003139 0.016594 -0.003598
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.005"
+data 9
+Plane.045
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003139 0.016594 -0.015123
+0.003139 0.0093 -0.01405
+0.003139 0.0093 -0.009457
+0.003139 0.016594 -0.01053
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.979923069477 0.0980069637299
+3 0.920508384705 0.0980069637299
+2 0.920508384705 0.0035574734211
+1 0.979923069477 0.0035574734211
+kids 0
+OBJECT poly
+name "stby.dec"
+data 9
+Plane.040
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 4
+0.003202 0.01035 -0.001892
+0.003202 0.009357 -0.00165
+0.003202 0.009357 -0.000615
+0.003202 0.01035 -0.000857
+numsurf 1
+SURF 0x00
+mat 2
+refs 4
+0 0.933840274811 0.0771778821945
+3 0.925696730614 0.0771778821945
+2 0.925696730614 0.0642324090004
+1 0.933840274811 0.0642324090004
+kids 0
+OBJECT poly
+name "sto.btn"
+data 10
+Circle.007
+texture "ctl-32.png"
+texrep 1 1
+crease 40.000000
+numvert 24
+0.004243 -0.01313 -0.001986
+0.004243 -0.014256 -0.003111
+0.004243 -0.015848 -0.003111
+0.004243 -0.016974 -0.001986
+0.004243 -0.016974 -0.000394
+0.004243 -0.015848 0.000732
+0.004243 -0.014256 0.000732
+0.004243 -0.01313 -0.000394
+0.002926 -0.01313 -0.001986
+0.002926 -0.014256 -0.003111
+0.002926 -0.015848 -0.003111
+0.002926 -0.016974 -0.001986
+0.002926 -0.016974 -0.000394
+0.002926 -0.015848 0.000732
+0.002926 -0.014256 0.000732
+0.002926 -0.01313 -0.000394
+0.004485 -0.013353 -0.000486
+0.004485 -0.014348 0.00051
+0.004485 -0.015756 0.00051
+0.004485 -0.016752 -0.000486
+0.004485 -0.016752 -0.001894
+0.004485 -0.015756 -0.002889
+0.004485 -0.014348 -0.002889
+0.004485 -0.013353 -0.001894
+numsurf 19
+SURF 0x10
+mat 1
+refs 4
+0 0.426304638386 0.369004756212
+1 0.435133755207 0.360167771578
+9 0.435133755207 0.360167771578
+8 0.426304638386 0.369004756212
+SURF 0x10
+mat 1
+refs 4
+1 0.435133755207 0.360167771578
+2 0.435133755207 0.347673624754
+10 0.435133755207 0.347673624754
+9 0.435133755207 0.360167771578
+SURF 0x10
+mat 1
+refs 4
+2 0.435133755207 0.347673624754
+3 0.426304638386 0.338836669922
+11 0.426304638386 0.338836669922
+10 0.435133755207 0.347673624754
+SURF 0x10
+mat 1
+refs 4
+3 0.426304638386 0.338836669922
+4 0.413810491562 0.338836669922
+12 0.413810491562 0.338836669922
+11 0.426304638386 0.338836669922
+SURF 0x10
+mat 1
+refs 4
+4 0.413810491562 0.338836669922
+5 0.404973506927 0.347673624754
+13 0.404973506927 0.347673624754
+12 0.413810491562 0.338836669922
+SURF 0x10
+mat 1
+refs 4
+5 0.404973506927 0.347673624754
+6 0.404973506927 0.360167771578
+14 0.404973506927 0.360167771578
+13 0.404973506927 0.347673624754
+SURF 0x10
+mat 1
+refs 4
+6 0.404973506927 0.360167771578
+7 0.413810491562 0.369004756212
+15 0.413810491562 0.369004756212
+14 0.404973506927 0.360167771578
+SURF 0x10
+mat 1
+refs 4
+7 0.413810491562 0.369004756212
+0 0.426304638386 0.369004756212
+8 0.426304638386 0.369004756212
+15 0.413810491562 0.369004756212
+SURF 0x10
+mat 1
+refs 4
+0 0.426304638386 0.369004756212
+7 0.413810491562 0.369004756212
+16 0.414532542229 0.367254585028
+23 0.425582587719 0.367254585028
+SURF 0x10
+mat 1
+refs 4
+7 0.413810491562 0.369004756212
+6 0.404973506927 0.360167771578
+17 0.406715869904 0.359445750713
+16 0.414532542229 0.367254585028
+SURF 0x10
+mat 1
+refs 4
+6 0.404973506927 0.360167771578
+5 0.404973506927 0.347673624754
+18 0.406715869904 0.348395645618
+17 0.406715869904 0.359445750713
+SURF 0x10
+mat 1
+refs 4
+5 0.404973506927 0.347673624754
+4 0.413810491562 0.338836669922
+19 0.414532542229 0.340578913689
+18 0.406715869904 0.348395645618
+SURF 0x10
+mat 1
+refs 4
+4 0.413810491562 0.338836669922
+3 0.426304638386 0.338836669922
+20 0.425582587719 0.340578913689
+19 0.414532542229 0.340578913689
+SURF 0x10
+mat 1
+refs 4
+3 0.426304638386 0.338836669922
+2 0.435133755207 0.347673624754
+21 0.433391451836 0.348395645618
+20 0.425582587719 0.340578913689
+SURF 0x10
+mat 1
+refs 4
+2 0.435133755207 0.347673624754
+1 0.435133755207 0.360167771578
+22 0.433391451836 0.359445750713
+21 0.433391451836 0.348395645618
+SURF 0x10
+mat 1
+refs 4
+1 0.435133755207 0.360167771578
+0 0.426304638386 0.369004756212
+23 0.425582587719 0.367254585028
+22 0.433391451836 0.359445750713
+SURF 0x10
+mat 1
+refs 4
+23 0.425582587719 0.367254585028
+16 0.414532542229 0.367254585028
+17 0.406715869904 0.359445750713
+22 0.433391451836 0.359445750713
+SURF 0x10
+mat 1
+refs 4
+22 0.433391451836 0.359445750713
+17 0.406715869904 0.359445750713
+18 0.406715869904 0.348395645618
+21 0.433391451836 0.348395645618
+SURF 0x10
+mat 1
+refs 4
+21 0.433391451836 0.348395645618
+18 0.406715869904 0.348395645618
+19 0.414532542229 0.340578913689
+20 0.425582587719 0.340578913689
+kids 0
+OBJECT poly
+name "test.btn"
+data 10
+Circle.003
+texture "ctl-32.png"
+texrep 1 1
+crease 40.000000
+numvert 24
+0.004243 -0.026244 -0.001986
+0.004243 -0.02737 -0.003111
+0.004243 -0.028962 -0.003111
+0.004243 -0.030088 -0.001986
+0.004243 -0.030088 -0.000394
+0.004243 -0.028962 0.000732
+0.004243 -0.02737 0.000732
+0.004243 -0.026244 -0.000394
+0.002926 -0.026244 -0.001986
+0.002926 -0.02737 -0.003111
+0.002926 -0.028962 -0.003111
+0.002926 -0.030088 -0.001986
+0.002926 -0.030088 -0.000394
+0.002926 -0.028962 0.000732
+0.002926 -0.02737 0.000732
+0.002926 -0.026244 -0.000394
+0.004485 -0.026466 -0.000486
+0.004485 -0.027462 0.00051
+0.004485 -0.02887 0.00051
+0.004485 -0.029866 -0.000486
+0.004485 -0.029866 -0.001894
+0.004485 -0.02887 -0.002889
+0.004485 -0.027462 -0.002889
+0.004485 -0.026466 -0.001894
+numsurf 19
+SURF 0x10
+mat 1
+refs 4
+0 0.427904635668 0.37008485198
+1 0.436733752489 0.36124792695
+9 0.436733752489 0.36124792695
+8 0.427904635668 0.37008485198
+SURF 0x10
+mat 1
+refs 4
+1 0.436733752489 0.36124792695
+2 0.436733752489 0.348753720522
+10 0.436733752489 0.348753720522
+9 0.436733752489 0.36124792695
+SURF 0x10
+mat 1
+refs 4
+2 0.436733752489 0.348753720522
+3 0.427904635668 0.339916795492
+11 0.427904635668 0.339916795492
+10 0.436733752489 0.348753720522
+SURF 0x10
+mat 1
+refs 4
+3 0.427904635668 0.339916795492
+4 0.415410488844 0.339916795492
+12 0.415410488844 0.339916795492
+11 0.427904635668 0.339916795492
+SURF 0x10
+mat 1
+refs 4
+4 0.415410488844 0.339916795492
+5 0.406573563814 0.348753720522
+13 0.406573563814 0.348753720522
+12 0.415410488844 0.339916795492
+SURF 0x10
+mat 1
+refs 4
+5 0.406573563814 0.348753720522
+6 0.406573563814 0.36124792695
+14 0.406573563814 0.36124792695
+13 0.406573563814 0.348753720522
+SURF 0x10
+mat 1
+refs 4
+6 0.406573563814 0.36124792695
+7 0.415410488844 0.37008485198
+15 0.415410488844 0.37008485198
+14 0.406573563814 0.36124792695
+SURF 0x10
+mat 1
+refs 4
+7 0.415410488844 0.37008485198
+0 0.427904635668 0.37008485198
+8 0.427904635668 0.37008485198
+15 0.415410488844 0.37008485198
+SURF 0x10
+mat 1
+refs 4
+0 0.427904635668 0.37008485198
+7 0.415410488844 0.37008485198
+16 0.416132539511 0.368342548609
+23 0.427182585001 0.368342548609
+SURF 0x10
+mat 1
+refs 4
+7 0.415410488844 0.37008485198
+6 0.406573563814 0.36124792695
+17 0.408315867186 0.360525846481
+16 0.416132539511 0.368342548609
+SURF 0x10
+mat 1
+refs 4
+6 0.406573563814 0.36124792695
+5 0.406573563814 0.348753720522
+18 0.408315867186 0.349475771189
+17 0.408315867186 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+5 0.406573563814 0.348753720522
+4 0.415410488844 0.339916795492
+19 0.416132539511 0.341659069061
+18 0.408315867186 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+4 0.415410488844 0.339916795492
+3 0.427904635668 0.339916795492
+20 0.427182585001 0.341659069061
+19 0.416132539511 0.341659069061
+SURF 0x10
+mat 1
+refs 4
+3 0.427904635668 0.339916795492
+2 0.436733752489 0.348753720522
+21 0.434991449118 0.349475771189
+20 0.427182585001 0.341659069061
+SURF 0x10
+mat 1
+refs 4
+2 0.436733752489 0.348753720522
+1 0.436733752489 0.36124792695
+22 0.434991449118 0.360525846481
+21 0.434991449118 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+1 0.436733752489 0.36124792695
+0 0.427904635668 0.37008485198
+23 0.427182585001 0.368342548609
+22 0.434991449118 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+23 0.427182585001 0.368342548609
+16 0.416132539511 0.368342548609
+17 0.408315867186 0.360525846481
+22 0.434991449118 0.360525846481
+SURF 0x10
+mat 1
+refs 4
+22 0.434991449118 0.360525846481
+17 0.408315867186 0.360525846481
+18 0.408315867186 0.349475771189
+21 0.434991449118 0.349475771189
+SURF 0x10
+mat 1
+refs 4
+21 0.434991449118 0.349475771189
+18 0.408315867186 0.349475771189
+19 0.416132539511 0.341659069061
+20 0.427182585001 0.341659069061
+kids 0
+OBJECT poly
+name "xmt.annun"
+data 10
+Circle.005
+texture "ctl-32.png"
+texrep 1 1
+crease 30.000000
+numvert 25
+0.003657 -0.026232 0.007594
+0.003657 -0.027365 0.006461
+0.003657 -0.028967 0.006461
+0.003657 -0.0301 0.007594
+0.003657 -0.0301 0.009197
+0.003657 -0.028967 0.01033
+0.003657 -0.027365 0.01033
+0.003657 -0.026232 0.009197
+0.002984 -0.025837 0.007431
+0.002984 -0.027201 0.006067
+0.002984 -0.029131 0.006067
+0.002984 -0.030495 0.007431
+0.002984 -0.030495 0.00936
+0.002984 -0.02913 0.010724
+0.002984 -0.027201 0.010724
+0.002984 -0.025837 0.00936
+0.00403 -0.027153 0.008815
+0.00403 -0.027746 0.009409
+0.00403 -0.028586 0.009409
+0.00403 -0.029179 0.008815
+0.00403 -0.029179 0.007976
+0.00403 -0.028586 0.007382
+0.00403 -0.027746 0.007382
+0.00403 -0.027153 0.007976
+0.004171 -0.028166 0.008395
+numsurf 24
+SURF 0x10
+mat 1
+refs 4
+0 0.306933730841 0.200225278735
+1 0.318501800299 0.188657224178
+9 0.322524517775 0.190331682563
+8 0.30859798193 0.204258263111
+SURF 0x10
+mat 1
+refs 4
+1 0.318501800299 0.188657224178
+2 0.318501800299 0.172300755978
+10 0.322524517775 0.170626237988
+9 0.322524517775 0.190331682563
+SURF 0x10
+mat 1
+refs 4
+2 0.318501800299 0.172300755978
+3 0.306933730841 0.160732701421
+11 0.30859798193 0.156699717045
+10 0.322524517775 0.170626237988
+SURF 0x10
+mat 1
+refs 4
+3 0.306933730841 0.160732701421
+4 0.290566951036 0.160732701421
+12 0.288902699947 0.156699717045
+11 0.30859798193 0.156699717045
+SURF 0x10
+mat 1
+refs 4
+4 0.290566951036 0.160732701421
+5 0.278998970985 0.172300755978
+13 0.274976164103 0.170636430383
+12 0.288902699947 0.156699717045
+SURF 0x10
+mat 1
+refs 4
+5 0.278998970985 0.172300755978
+6 0.278998970985 0.188657224178
+14 0.274976164103 0.190331682563
+13 0.274976164103 0.170636430383
+SURF 0x10
+mat 1
+refs 4
+6 0.278998970985 0.188657224178
+7 0.290566951036 0.200225278735
+15 0.288902699947 0.204258263111
+14 0.274976164103 0.190331682563
+SURF 0x10
+mat 1
+refs 4
+7 0.290566951036 0.200225278735
+0 0.306933730841 0.200225278735
+8 0.30859798193 0.204258263111
+15 0.288902699947 0.204258263111
+SURF 0x10
+mat 1
+refs 4
+0 0.306933730841 0.200225278735
+7 0.290566951036 0.200225278735
+16 0.294467270374 0.190821796656
+23 0.30303350091 0.190821796656
+SURF 0x10
+mat 1
+refs 4
+7 0.290566951036 0.200225278735
+6 0.278998970985 0.188657224178
+17 0.288402467966 0.184767216444
+16 0.294467270374 0.190821796656
+SURF 0x10
+mat 1
+refs 4
+6 0.278998970985 0.188657224178
+5 0.278998970985 0.172300755978
+18 0.288402467966 0.176190719008
+17 0.288402467966 0.184767216444
+SURF 0x10
+mat 1
+refs 4
+5 0.278998970985 0.172300755978
+4 0.290566951036 0.160732701421
+19 0.294467270374 0.1701361835
+18 0.288402467966 0.176190719008
+SURF 0x10
+mat 1
+refs 4
+4 0.290566951036 0.160732701421
+3 0.306933730841 0.160732701421
+20 0.30303350091 0.1701361835
+19 0.294467270374 0.1701361835
+SURF 0x10
+mat 1
+refs 4
+3 0.306933730841 0.160732701421
+2 0.318501800299 0.172300755978
+21 0.309098213911 0.176190719008
+20 0.30303350091 0.1701361835
+SURF 0x10
+mat 1
+refs 4
+2 0.318501800299 0.172300755978
+1 0.318501800299 0.188657224178
+22 0.309098213911 0.184767216444
+21 0.309098213911 0.176190719008
+SURF 0x10
+mat 1
+refs 4
+1 0.318501800299 0.188657224178
+0 0.306933730841 0.200225278735
+23 0.30303350091 0.190821796656
+22 0.309098213911 0.184767216444
+SURF 0x10
+mat 1
+refs 3
+23 0.30303350091 0.190821796656
+16 0.294467270374 0.190821796656
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+16 0.294467270374 0.190821796656
+17 0.288402467966 0.184767216444
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+17 0.288402467966 0.184767216444
+18 0.288402467966 0.176190719008
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+18 0.288402467966 0.176190719008
+19 0.294467270374 0.1701361835
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+19 0.294467270374 0.1701361835
+20 0.30303350091 0.1701361835
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+20 0.30303350091 0.1701361835
+21 0.309098213911 0.176190719008
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+21 0.309098213911 0.176190719008
+22 0.309098213911 0.184767216444
+24 0.298755466938 0.180478990078
+SURF 0x10
+mat 1
+refs 3
+22 0.309098213911 0.184767216444
+23 0.30303350091 0.190821796656
+24 0.298755466938 0.180478990078
+kids 0
diff --git a/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32.nas b/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32.nas
new file mode 100644
index 000000000..2bb543ca0
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/VIR-32/ctl32.nas
@@ -0,0 +1,226 @@
+###############################################################################
+##
+## Nasal for dual control of a VIR 32 Nav radio over the multiplayer
+## network.
+##
+## Copyright (C) 2008 - 2010 Anders Gidenstam (anders(at)gidenstam.org)
+## This file is licensed under the GPL license version 2 or later.
+##
+###############################################################################
+
+# Note:
+# This module MUST be loaded as VIR32.
+#
+
+# Slave button presses.
+var swap_btn = "frq-swap-btn";
+var freq_decS = "freq-decS-clicked";
+var freq_incS = "freq-incS-clicked";
+var freq_decL = "freq-decL-clicked";
+var freq_incL = "freq-incL-clicked";
+
+# Settings
+var freq_selected = "frequencies/selected-mhz";
+var freq_standby = "frequencies/standby-mhz";
+
+var nav_base = ["instrumentation/nav[0]",
+ "instrumentation/nav[1]"];
+
+###########################################################################
+var master_ctl32 = {
+ new : func(n) {
+ var obj = {};
+ obj.parents = [master_ctl32];
+ obj.nav_base = props.globals.getNode(nav_base[n]);
+ return obj;
+ },
+ swap : func() {
+ var tmp = me.nav_base.getNode(freq_selected).getValue();
+ me.nav_base.getNode(freq_selected).setValue
+ (me.nav_base.getNode(freq_standby).getValue());
+ me.nav_base.getNode(freq_standby).setValue(tmp);
+ },
+ adjust_frequency : func(d) {
+ adjust_radio_frequency(
+ me.nav_base.getNode(freq_standby),
+ d,
+ 108,
+ 117.975);
+ }
+};
+
+###########################################################################
+var slave_ctl32 = {
+ new : func(n, airoot) {
+ var obj = {};
+ obj.parents = [slave_ctl32];
+ obj.root = airoot;
+ obj.nav_base = props.globals.getNode(nav_base[n]);
+ return obj;
+ },
+ swap : func() {
+ var p = me.nav_base.getNode(swap_btn);
+ print("VIR32[?].SWAP");
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ },
+ adjust_frequency : func(d) {
+ var p = 0;
+ if (abs(d) < 0.99) {
+ p = (d < 0) ? me.nav_base.getNode(freq_decS)
+ : me.nav_base.getNode(freq_incS);
+ } else {
+ p = (d < 0) ? me.nav_base.getNode(freq_decL)
+ : me.nav_base.getNode(freq_incL);
+ }
+ if (!p.getValue()) {
+ p.setValue(1);
+ settimer(func { p.setValue(0); },
+ 1.0);
+ }
+ }
+};
+
+###########################################################################
+# The VIR-32 pick animations default to master.
+# NOTE: Use make_master() and make_slave_to().
+# Do NOT change ctl32 directly.
+var ctl32 = [master_ctl32.new(0), master_ctl32.new(1)];
+
+
+###########################################################################
+# API for pick animations and dual control setup.
+###########################################################################
+
+###########################################################################
+# n - Nav#
+var make_master = func(n) {
+ ctl32[n] = master_ctl32.new(n);
+}
+
+###########################################################################
+# n - Nav#
+var make_slave_to = func(n, airoot) {
+ ctl32[n] = slave_ctl32.new(n, airoot);
+}
+
+###########################################################################
+# n - Nav#
+var swap = func(n) {
+ ctl32[n].swap();
+}
+
+###########################################################################
+# n - Nav#
+# d - adjustment
+var adjust_frequency = func(n, d) {
+ ctl32[n].adjust_frequency(d);
+}
+
+###########################################################################
+# Create aliases to drive a radio 3d model in an AI/MP model.
+# n - Nav#
+var animate_aimodel = func(n, airoot) {
+ var p = "systems/electrical/outputs/nav["~ n ~"]";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = "instrumentation/nav["~ n ~"]/serviceable";
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = nav_base[n] ~ "/" ~ freq_selected;
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+ p = nav_base[n] ~ "/" ~ freq_standby;
+ airoot.getNode(p, 1).alias(props.globals.getNode(p));
+}
+
+###########################################################################
+# Create a TDMEncoder node array for sending the current radio state to
+# slaves.
+# n - Nav#
+var master_send_state = func(n) {
+ var b = props.globals.getNode(nav_base[n]);
+ return
+ [
+ b.getNode(freq_selected),
+ b.getNode(freq_standby)
+ ];
+}
+
+###########################################################################
+# Create a SwitchDecoder action array for processing button presses
+# from a slave.
+# n - Nav#
+var master_receive_slave_buttons = func(n) {
+ return
+ [
+ func (b) {
+ if (b) { swap(n); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, -0.05); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, 0.05); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, -1.0); }
+ },
+ func (b) {
+ if (b) { adjust_frequency(n, 1.0); }
+ }
+ ];
+}
+
+###########################################################################
+# Create a TDMDecoder action array for processing the radio state
+# from the master.
+# n - Nav#
+var slave_receive_master_state = func(n) {
+ var b = props.globals.getNode(nav_base[n]);
+ return
+ [
+ func (v) {
+ b.getNode(freq_selected).setValue(v);
+ },
+ func (v) {
+ b.getNode(freq_standby).setValue(v);
+ }
+ ];
+}
+
+###########################################################################
+# Create a SwitchEncoder node array for sending button presses
+# to the master
+# n - Nav#
+var slave_send_buttons = func(n) {
+ var b = props.globals.getNode(nav_base[n]);
+ return
+ [
+ b.getNode(swap_btn, 1),
+ b.getNode(freq_decS, 1),
+ b.getNode(freq_incS, 1),
+ b.getNode(freq_decL, 1),
+ b.getNode(freq_incL, 1),
+ ];
+}
+
+
+
+###########################################################################
+# Generic frequency stepper.
+# f - frequency property
+# d - change
+# min - min frequency
+# max - max frequency
+var adjust_radio_frequency = func(f, d, min, max) {
+ var old = f.getValue();
+ var new = old + d;
+ if (new < min - 0.005) { new = int(max) + (new - int(new)); }
+ if (new > max + 0.005) {
+ new = int(min) + (new - int(new));
+ if (int(new + 0.005) > min) new -= 1;
+ }
+# print("Old: " ~ old ~ " Intermediate: " ~ (old + d) ~ " New: " ~ new);
+ f.setValue(new);
+}
diff --git a/Aircraft/Generic/DualControl/Instruments/ki227-1.xml b/Aircraft/Generic/DualControl/Instruments/ki227-1.xml
new file mode 100644
index 000000000..d1a13b338
--- /dev/null
+++ b/Aircraft/Generic/DualControl/Instruments/ki227-1.xml
@@ -0,0 +1,51 @@
+
+
+
+
+ Aircraft/Instruments-3d/kr87-adf/ki227.ac
+ Aircraft/Instruments-3d/kr87-adf/
+
+
+ material
+ KI227card
+ KI227.needle
+ KI227.knob
+ KI227.face
+
+ 0.8
+ 0.4
+ 0.2
+ /systems/electrical/outputs/instrument-lights
+
+
+
+
+ rotate
+ KI227card
+
+ /instrumentation/heading-indicator/indicated-heading-deg
+ -1
+
+ -1
+ 0
+ 0
+
+
+
+
+ rotate
+ KI227.needle
+ /instrumentation/adf/indicated-bearing-deg
+
+ -1
+ 0
+ 0
+
+
+
+
+
diff --git a/Aircraft/Generic/DualControl/README.dual-control b/Aircraft/Generic/DualControl/README.dual-control
new file mode 100644
index 000000000..9228baec4
--- /dev/null
+++ b/Aircraft/Generic/DualControl/README.dual-control
@@ -0,0 +1,90 @@
+Dual control for FlightGear/CVS (copilot OSG only)
+--------------------------------------------------
+
+ Anders Gidenstam (anders at gidenstam dot org)
+
+This collection of Nasal code and instruments enables a pilot and
+copilot to jointly fly an aircraft over the FlightGear multiplayer
+network. Pilot and copilot can have shared control over primary
+flight controls, throttle, mixture, elevator trim, flaps, brakes,
+cockpit switches, part of the radio stack and instrument settings
+and so on.
+
+To use the system two "aircraft" needs to be created:
+- The pilot uses the original aircraft (or a variant thereof).
+ The pilot need to specify the callsign of the copilot (other copilots
+ will be ignored).
+
+ Usage example:
+ fgfs --aircraft=ZLT-NT --prop:/sim/remote/pilot-callsign="copilot"
+
+- The copilot uses a special "aircraft", -copilot, which
+ piggybacks on the designated pilot and captures the local control
+ inputs. A current limitation is that only the cockpit view
+ is jitter free. There is also a noticeable delay between control inputs
+ and effect, since they are passed via the the multiplayer protocol.
+ The severity of this delay depend on round trip time and some other
+ factors - the delay seems significantly longer than the round trip time
+ itself which is due to buffering in the MP protocol receiver.
+ That said, I have flown successfully as copilot in a setup with
+ 100-120ms round trip time between both pilot and server and copilot and
+ server (total delay >500ms). Landing is a bit exciting in that
+ case, however.
+
+ Usage example:
+ fgfs --aircraft=ZLT-NT-copilot --prop:/sim/remote/pilot-callsign="pilot"
+
+Visit http://www.gidenstam.org/FlightGear/DualControl/ for the latest
+information.
+
+
+Developer notes
+---------------
+
+The dual control mechanism is divided into to several parts:
+- the generic core modules in DualControl/ ;
+- the 3d instrument sharing wrappers in DualControl/instruments/ ; and
+- the aircraft specific configuration in Systems/ZLT-NT-dual-control.nas
+ and the ZLT-NT/-set/-copilot-set files.
+
+See the ZLT-NT aircraft for an example how everything come together.
+
+aircraft_dual_control
+---------------------
+
+The aircraft specific dual control Nasal module MUST be loaded as
+aircraft_dual_control and MUST define the following variables and
+functions:
+
+ pilot_connect_copilot(copilot) : returns a list of DCT components
+ Does whatever initialization needed to connect the copilot and
+ returns a list of dual-control-tools components whose update() method will
+ be called (in list order) once per frame.
+ copilot is the node hash for the base of the multiplayer tree for the
+ copilot user.
+
+ pilot_disconnect_copilot() : void
+ Does whatever cleanup needed when the copilot disconnects.
+
+ copilot_connect_pilot(pilot) : returns a list of DCT components
+ Does whatever initialization needed to connect to the pilot and
+ returns a list of dual-control-tools components whose update() method will
+ be called (in list order) once per frame.
+ pilot is the node hash for the base of the multiplayer tree for the
+ pilot user.
+
+ copilot_disconnect_pilot() :
+ Does whatever cleanup needed when the pilot disconnects.
+
+
+ pilot_type : string
+ The identifying string of the pilot aircraft is the path of the
+ 3d model XML file of the pilot aircraft (as found in sim/model/path
+ under the multiplayer entry).
+
+ copilot_type : string
+ The identifying string of the copilot aircraft is the path of the
+ 3d model XML file of the copilot aircraft (as found in sim/model/path
+ under the multiplayer entry).
+
+
diff --git a/Aircraft/Generic/DualControl/copilot-dual-control.nas b/Aircraft/Generic/DualControl/copilot-dual-control.nas
new file mode 100644
index 000000000..379c869cc
--- /dev/null
+++ b/Aircraft/Generic/DualControl/copilot-dual-control.nas
@@ -0,0 +1,255 @@
+###############################################################################
+## $Id$
+##
+## Nasal for copilot for dual control over the multiplayer network.
+##
+## Copyright (C) 2007 - 2010 Anders Gidenstam (anders(at)gidenstam.org)
+## This file is licensed under the GPL license version 2 or later.
+##
+###############################################################################
+
+# Renaming (almost :)
+var DCT = dual_control_tools;
+var ADC = aircraft_dual_control;
+# NOTE: By loading the aircraft specific dual control module
+# as this file is generic.
+# The aircraft specific modul must set the variables
+# pilot_type and copilot_type to the name (with full path) of
+# main 3d model XML for the pilot and copilot aircraft.
+# This module should be loades under the name dual_control.
+
+# Allow aircraft to override the copilot view name. Deprecated.
+if (!contains(ADC, "copilot_view")) {
+ ADC.copilot_view = "Copilot View";
+}
+
+# Properties for position and orientation of local aircraft.
+var l_lat = "/position/latitude-deg";
+var l_lon = "/position/longitude-deg";
+var l_alt = "/position/altitude-ft";
+var l_heading = "/orientation/heading-deg";
+var l_pitch = "/orientation/pitch-deg";
+var l_roll = "/orientation/roll-deg";
+
+# Replicate remote state.
+var r_airspeed = "velocities/true-airspeed-kt";
+var l_airspeed = "/velocities/airspeed-kt";
+var vertspeed = "velocities/vertical-speed-fps";
+
+# Default external views to slave to the MP pilot.
+var views = {};
+views["Helicopter View"] = 2;
+views["Chase View"] = 3;
+views["Tower View"] = 0;
+views["Fly-By View"] = 1;
+views["Chase View Without Yaw"] = 1;
+
+######################################################################
+# Connect to new pilot
+var process_data = 0;
+
+var connect = func (pilot) {
+ # Set external view eye and target paths.
+ foreach (var vn; keys(views)) {
+ var view_cfg = "/sim/view[" ~ view.indexof(vn) ~ "]/config";
+ setprop(view_cfg ~ "/at-model", 0);
+
+ if (views[vn] > 0) {
+ setprop(view_cfg ~ "/eye-lat-deg-path",
+ pilot.getNode(DCT.lat_mpp).getPath());
+ setprop(view_cfg ~ "/eye-lon-deg-path",
+ pilot.getNode(DCT.lon_mpp).getPath());
+ setprop(view_cfg ~ "/eye-alt-ft-path",
+ pilot.getNode(DCT.alt_mpp).getPath());
+ }
+ if (views[vn] > 1) {
+ setprop(view_cfg ~ "/eye-heading-deg-path",
+ pilot.getNode(DCT.heading_mpp).getPath());
+ }
+ if (views[vn] > 2) {
+ setprop(view_cfg ~ "/eye-pitch-deg-path",
+ pilot.getNode(DCT.pitch_mpp).getPath());
+ setprop(view_cfg ~ "/eye-roll-deg-path",
+ pilot.getNode(DCT.roll_mpp).getPath());
+ }
+
+ setprop(view_cfg ~ "/target-lat-deg-path",
+ pilot.getNode(DCT.lat_mpp).getPath());
+ setprop(view_cfg ~ "/target-lon-deg-path",
+ pilot.getNode(DCT.lon_mpp).getPath());
+ setprop(view_cfg ~ "/target-alt-ft-path",
+ pilot.getNode(DCT.alt_mpp).getPath());
+ setprop(view_cfg ~ "/target-heading-deg-path",
+ pilot.getNode(DCT.heading_mpp).getPath());
+ setprop(view_cfg ~ "/target-pitch-deg-path",
+ pilot.getNode(DCT.pitch_mpp).getPath());
+ setprop(view_cfg ~ "/target-roll-deg-path",
+ pilot.getNode(DCT.roll_mpp).getPath());
+ }
+
+ # Tweak MP/AI filters
+ pilot.getNode("controls/allow-extrapolation").setBoolValue(1);
+ pilot.getNode("controls/lag-adjust-system-speed").setValue(5.0);
+
+ # Set up property aliases
+
+ # Set up property mappings.
+ process_data =
+ [
+ # Map /postition/*
+ DCT.Translator.new
+ (pilot.getNode(DCT.lat_mpp), props.globals.getNode(l_lat)),
+ DCT.Translator.new
+ (pilot.getNode(DCT.lon_mpp), props.globals.getNode(l_lon)),
+ DCT.Translator.new
+ (pilot.getNode(DCT.alt_mpp), props.globals.getNode(l_alt)),
+ # Map /orientation/*
+ DCT.Translator.new
+ (pilot.getNode(DCT.heading_mpp),
+ props.globals.getNode(l_heading)),
+ DCT.Translator.new
+ (pilot.getNode(DCT.pitch_mpp),
+ props.globals.getNode(l_pitch)),
+ DCT.Translator.new
+ (pilot.getNode(DCT.roll_mpp),
+ props.globals.getNode(l_roll)),
+ # Map /velocities/*
+ DCT.Translator.new
+ (pilot.getNode(r_airspeed),
+ props.globals.getNode(l_airspeed)),
+ DCT.Translator.new
+ (pilot.getNode(vertspeed),
+ props.globals.getNode(vertspeed)),
+ ] ~ ADC.copilot_connect_pilot(pilot);
+
+ print("Dual control ... connected to pilot.");
+ setprop("/sim/messages/copilot", "Welcome aboard.");
+}
+
+var disconnect = func {
+ # Reset external view eye and target paths.
+ foreach (var vn; keys(views)) {
+ var view_cfg = "/sim/view[" ~ view.indexof(vn) ~ "]/config";
+
+ if (views[vn] > 0) {
+ setprop(view_cfg ~ "/eye-lat-deg-path",
+ "/position/latitude-deg");
+ setprop(view_cfg ~ "/eye-lon-deg-path",
+ "/position/longitude-deg");
+ setprop(view_cfg ~ "/eye-alt-ft-path",
+ "/position/altitude-ft");
+ }
+ if (views[vn] > 1) {
+ setprop(view_cfg ~ "/eye-heading-deg-path",
+ "/orientation/heading-deg");
+ }
+ if (views[vn] > 2) {
+ setprop(view_cfg ~ "/eye-pitch-deg-path",
+ "/orientation/pitch-deg");
+ setprop(view_cfg ~ "/eye-roll-deg-path",
+ "/orientation/roll-deg");
+ }
+ setprop(view_cfg ~ "/target-lat-deg-path",
+ "/sim/viewer/target/latitude-deg");
+ setprop(view_cfg ~ "/target-lon-deg-path",
+ "/sim/viewer/target/longitude-deg");
+ setprop(view_cfg ~ "/target-alt-ft-path",
+ "/sim/viewer/target/altitude-ft");
+ setprop(view_cfg ~ "/target-heading-deg-path",
+ "/sim/viewer/target/heading-deg");
+ setprop(view_cfg ~ "/target-pitch-deg-path",
+ "/sim/viewer/target/pitch-deg");
+ setprop(view_cfg ~ "/target-roll-deg-path",
+ "/sim/viewer/target/roll-deg");
+ }
+}
+
+
+######################################################################
+# Main loop singleton class.
+var main = {
+ init : func {
+ me.loopid = 0;
+ me.active = 0;
+ setlistener("/ai/models/model-added", func {
+ settimer(func { me.activate(); }, 2);
+ });
+ print("Copilot dual control ... initialized");
+ settimer(func { me.activate(); }, 5);
+ },
+ reset : func {
+ if (me.active) {
+ print("Dual control ... disconnected from pilot.");
+ disconnect();
+ ADC.copilot_disconnect_pilot();
+ }
+ me.active = 0;
+ me.loopid += 1;
+ me._loop_(me.loopid);
+ },
+ activate : func {
+ if (!me.active) {
+ me.reset();
+ }
+ },
+ update : func {
+ var mpplayers =
+ props.globals.getNode("/ai/models").getChildren("multiplayer");
+ var r_callsign = getprop("/sim/remote/pilot-callsign");
+
+ foreach (var pilot; mpplayers) {
+ if ((pilot.getChild("valid").getValue()) and
+ (pilot.getChild("callsign") != nil) and
+ (pilot.getChild("callsign").getValue() == r_callsign)) {
+
+ if (me.active == 0) {
+ # Note: sim/model/path contains the model XML file.
+ if ((pilot.getNode("sim/model/path") != nil) and
+ (pilot.getNode("sim/model/path").getValue() ==
+ ADC.pilot_type)) {
+ me.active = 1;
+ connect(pilot);
+ } else {
+ print("Dual control ... pilot rejected - wrong aircraft type.");
+ me.loopid += 1;
+ return;
+ }
+ }
+
+ # Mess with the MP filters. Highly experimental.
+ if (pilot.getNode("controls/lag-time-offset") != nil) {
+ var v = pilot.getNode("controls/lag-time-offset").getValue();
+ #pilot.getNode("controls/lag-time-offset").setValue(0.99 * v);
+ }
+
+ foreach (var w; process_data) {
+ w.update();
+ }
+ return;
+ }
+ }
+ # The pilot player is not around. Idle loop.
+ if (me.active) {
+ print("Dual control ... disconnected from pilot.");
+ disconnect();
+ ADC.copilot_disconnect_pilot();
+ }
+ me.active = 0;
+ me.loopid += 1;
+ },
+ _loop_ : func(id) {
+ id == me.loopid or return;
+ me.update();
+ settimer(func { me._loop_(id); }, 0);
+ }
+};
+
+###############################################################################
+# Initialization.
+
+var last_view = 0;
+
+setlistener("/sim/signals/fdm-initialized", func {
+ main.init();
+});
+
diff --git a/Aircraft/Generic/DualControl/dual-control-tools.nas b/Aircraft/Generic/DualControl/dual-control-tools.nas
new file mode 100644
index 000000000..40d25dc97
--- /dev/null
+++ b/Aircraft/Generic/DualControl/dual-control-tools.nas
@@ -0,0 +1,644 @@
+###############################################################################
+##
+## Nasal module for dual control over the multiplayer network.
+##
+## Copyright (C) 2007 - 2010 Anders Gidenstam (anders(at)gidenstam.org)
+## This file is licensed under the GPL license version 2 or later.
+##
+###############################################################################
+
+## MP properties
+var lat_mpp = "position/latitude-deg";
+var lon_mpp = "position/longitude-deg";
+var alt_mpp = "position/altitude-ft";
+var heading_mpp = "orientation/true-heading-deg";
+var pitch_mpp = "orientation/pitch-deg";
+var roll_mpp = "orientation/roll-deg";
+
+# Import components from the mp_broadcast module.
+var Binary = mp_broadcast.Binary;
+var MessageChannel = mp_broadcast.MessageChannel;
+
+###############################################################################
+# Utility classes
+
+############################################################
+# Translate a property into another.
+# Factor and offsets are only used for numeric values.
+# src - source : property node
+# dest - destination : property node
+# factor - : double
+# offset - : double
+var Translator = {};
+Translator.new = func (src = nil, dest = nil, factor = 1, offset = 0) {
+ var obj = { parents : [Translator],
+ src : src,
+ dest : dest,
+ factor : factor,
+ offset : offset };
+ if (obj.src == nil or obj.dest == nil) {
+ print("Translator[");
+ print(" ", debug.string(obj.src));
+ print(" ", debug.string(obj.dest));
+ print("]");
+ fail();
+ }
+
+ return obj;
+}
+Translator.update = func () {
+ var v = me.src.getValue();
+ if (is_num(v)) {
+ me.dest.setValue(me.factor * v + me.offset);
+ } else {
+ if (typeof(v) == "scalar")
+ me.dest.setValue(v);
+ }
+}
+
+############################################################
+# Detects flanks on two insignals encoded in a property.
+# - positive signal up/down flank
+# - negative signal up/down flank
+# n - source : property node
+# on_positive_flank - action : func (v)
+# on_negative_flank - action : func (v)
+var EdgeTrigger = {};
+EdgeTrigger.new = func (n, on_positive_flank, on_negative_flank) {
+ var obj = { parents : [EdgeTrigger],
+ old : 0,
+ node : n,
+ pos_flank : on_positive_flank,
+ neg_flank : on_negative_flank };
+ if (obj.node == nil) {
+ print("EdgeTrigger[");
+ print(" ", debug.string(obj.node));
+ print("]");
+ fail();
+ }
+ return obj;
+}
+EdgeTrigger.update = func {
+ # NOTE: float MP properties get interpolated.
+ # This detector relies on that steady state is reached between
+ # flanks.
+ var val = me.node.getValue();
+ if (!is_num(val)) return;
+ if (me.old == 1) {
+ if (val < me.old) {
+ me.pos_flank(0);
+ }
+ } elsif (me.old == 0) {
+ if (val > me.old) {
+ me.pos_flank(1);
+ } elsif (val < me.old) {
+ me.neg_flank(1);
+ }
+ } elsif (me.old == -1) {
+ if (val > me.old) {
+ me.neg_flank(0);
+ }
+ }
+ me.old = val;
+}
+
+############################################################
+# StableTrigger: Triggers an action when a MPP property
+# becomes stable (i.e. doesn't change for
+# MIN_STABLE seconds).
+# src - MP prop : property node
+# action - action to take when the value becomes stable : [func(v)]
+# An action is triggered when value has stabilized.
+var StableTrigger = {};
+StableTrigger.new = func (src, action) {
+ var obj = { parents : [StableTrigger],
+ src : src,
+ action : action,
+ old : 0,
+ stable_since : 0,
+ wait : 0,
+ MIN_STABLE : 0.01 };
+ # Error checking.
+ var bad = (obj.src == nil) or (action = nil);
+
+ if (bad) {
+ print("StableTrigger[");
+ print(" ", debug.string(obj.src));
+ print(" ", debug.string(obj.action));
+ print("]");
+ fail();
+ }
+
+ return obj;
+}
+StableTrigger.update = func () {
+ var v = me.src.getValue();
+ if (!is_num(v)) return;
+ var t = getprop("/sim/time/elapsed-sec"); # NOTE: simulated time.
+
+ if ((me.old == v) and
+ ((t - me.stable_since) > me.MIN_STABLE) and (me.wait == 1)) {
+ # Trigger action.
+ me.action(v);
+
+ me.wait = 0;
+ } elsif (me.old == v) {
+ # Wait. This is either before the signal is stable or after the action.
+ } else {
+ me.stable_since = t;
+ me.wait = 1;
+ me.old = me.src.getValue();
+ }
+}
+
+############################################################
+# Selects the most recent value of two properties.
+# src1 - : property node
+# src2 - : property node
+# dest - : property node
+# threshold - : double
+var MostRecentSelector = {};
+MostRecentSelector.new = func (src1, src2, dest, threshold) {
+ var obj = { parents : [MostRecentSelector],
+ old1 : 0,
+ old2 : 0,
+ src1 : src1,
+ src2 : src2,
+ dest : dest,
+ thres : threshold };
+ if (obj.src1 == nil or obj.src2 == nil or obj.dest == nil) {
+ print("MostRecentSelector[");
+ print(" ", debug.string(obj.src1));
+ print(" ", debug.string(obj.src2));
+ print(" ", debug.string(obj.dest));
+ print("]");
+ }
+
+ return obj;
+}
+MostRecentSelector.update = func {
+ var v1 = me.src1.getValue();
+ var v2 = me.src2.getValue();
+ if (!is_num(v1) and !is_num(v2)) return;
+ elsif (!is_num(v1)) me.dest.setValue(v2);
+ elsif (!is_num(v2)) me.dest.setValue(v1);
+ else {
+ if (abs (v2 - me.old2) > me.thres) {
+ me.old2 = v2;
+ me.dest.setValue(me.old2);
+ }
+ if (abs (v1 - me.old1) > me.thres) {
+ me.old1 = v1;
+ me.dest.setValue(me.old1);
+ }
+ }
+}
+
+############################################################
+# Adds two input properties.
+# src1 - : property node
+# src2 - : property node
+# dest - : property node
+var Adder = {};
+Adder.new = func (src1, src2, dest) {
+ var obj = { parents : [DeltaAccumulator],
+ src1 : src1,
+ src2 : src2,
+ dest : dest };
+ if (obj.src1 == nil or obj.src2 == nil or obj.dest == nil) {
+ print("Adder[");
+ print(" ", debug.string(obj.src1));
+ print(" ", debug.string(obj.src2));
+ print(" ", debug.string(obj.dest));
+ print("]");
+ fail();
+ }
+
+ return obj;
+}
+Adder.update = func () {
+ var v1 = me.src1.getValue();
+ var v2 = me.src2.getValue();
+ if (!is_num(v1) or !is_num(v2)) return;
+ me.dest.setValue(v1 + v2);
+}
+
+############################################################
+# Adds the delta of src to dest.
+# src - : property node
+# dest - : property node
+var DeltaAdder = {};
+DeltaAdder.new = func (src, dest) {
+ var obj = { parents : [DeltaAdder],
+ old : 0,
+ src : src,
+ dest : dest };
+ if (obj.src == nil or obj.dest == nil) {
+ print("DeltaAdder[", debug.string(obj.src), ", ",
+ debug.string(obj.dest), "]");
+ fail();
+ }
+
+ return obj;
+}
+DeltaAdder.update = func () {
+ var v = me.src.getValue();
+ if (!is_num(v)) return;
+ me.dest.setValue((v - me.old) + me.dest.getValue());
+ me.old = v;
+}
+
+############################################################
+# Switch encoder: Encodes upto 32 boolean properties in one
+# int property.
+# inputs - list of property nodes
+# dest - where the bitmask is stored : property node
+var SwitchEncoder = {};
+SwitchEncoder.new = func (inputs, dest) {
+ var obj = { parents : [SwitchEncoder],
+ inputs : inputs,
+ dest : dest };
+ # Error checking.
+ var bad = (obj.dest == nil);
+ foreach (var i; inputs) {
+ if (i == nil) { bad = 1; }
+ }
+
+ if (bad) {
+ print("SwitchEncoder[");
+ foreach (var i; inputs) {
+ print(" ", debug.string(i));
+ }
+ print(" ", debug.string(obj.dest));
+ print("]");
+ fail();
+ }
+
+ return obj;
+}
+SwitchEncoder.update = func () {
+ var v = 0;
+ var b = 1;
+ forindex (var i; me.inputs) {
+ if (me.inputs[i].getBoolValue()) {
+ v = v + b;
+ }
+ b *= 2;
+ }
+ me.dest.setIntValue(v);
+}
+
+############################################################
+# Switch decoder: Decodes a bitmask in an int property.
+# src - : property node
+# actions - list of actions : [func(b)]
+# Actions are triggered when their input bit change.
+# Due to interpolation the decoder needs to wait for a
+# stable input value.
+var SwitchDecoder = {};
+SwitchDecoder.new = func (src, actions) {
+ var obj = { parents : [SwitchDecoder],
+ wait : 0,
+ old : 0,
+ old_stable : 0,
+ stable_since : 0,
+ reset : 1,
+ src : src,
+ actions : actions,
+ MIN_STABLE : 0.1 };
+ # Error checking.
+ var bad = (obj.src == nil);
+ foreach (var a; obj.actions) {
+ if (a == nil) { bad = 1; }
+ }
+
+ if (bad) {
+ print("SwitchDecoder[");
+ print(" ", debug.string(obj.src));
+ foreach (var a; obj.actions) {
+ print(" ", debug.string(a));
+ }
+ print("]");
+ fail();
+ }
+
+ return obj;
+}
+SwitchDecoder.update = func () {
+ var t = getprop("/sim/time/elapsed-sec"); # NOTE: simulated time.
+ var v = me.src.getValue();
+ if (!is_num(v)) return;
+
+ if ((me.old == v) and ((t - me.stable_since) > me.MIN_STABLE) and
+ (me.wait == 1)) {
+ var ov = me.old_stable;
+# Use this to improve.
+# here's the boring version: var bittest = func(u, b) { while (b) { u = int(u / 2); b -= 1; } u != int(u / 2) * 2; }
+ forindex (var i; me.actions) {
+ var m = math.mod(v, 2);
+ var om = math.mod(ov, 2);
+ if ((m != om or me.reset)) { me.actions[i](m?1:0); }
+ v = (v - m)/2;
+ ov = (ov - om)/2;
+ }
+ me.old_stable = me.src.getValue();
+ me.wait = 0;
+ me.reset = 0;
+ } elsif (me.old == v) {
+ # Wait. This is either before the bitmask is stable or after
+ # it has been processed.
+ } else {
+ me.stable_since = t;
+ me.wait = 1;
+ me.old = me.src.getValue();
+ }
+}
+
+############################################################
+# Time division multiplexing encoder: Transmits a list of
+# properties over a MP enabled string property.
+# inputs - input properties : [property node]
+# dest - MP string prop : property node
+# Note: TDM can have high latency so it is best used for
+# non-time critical properties.
+var TDMEncoder = {};
+TDMEncoder.new = func (inputs, dest) {
+ var obj = { parents : [TDMEncoder],
+ inputs : inputs,
+ channel : MessageChannel.new(dest,
+ func (msg) {
+ print("This should not happen!");
+ }),
+ MIN_INT : 0.25,
+ last_time : 0,
+ next_item : 0,
+ old : [] };
+ # Error checking.
+ var bad = (dest == nil) or (obj.channel == nil);
+ foreach (var i; inputs) {
+ if (i == nil) { bad = 1; }
+ }
+
+ if (bad) {
+ print("TDMEncoder[");
+ foreach (var i; inputs) {
+ print(" ", debug.string(i));
+ }
+ print(" ", debug.string(dest));
+ print("]");
+ }
+
+ setsize(obj.old, size(obj.inputs));
+
+ return obj;
+}
+TDMEncoder.update = func () {
+ var t = getprop("/sim/time/elapsed-sec"); # NOTE: simulated time.
+ if (t > me.last_time + me.MIN_INT) {
+ var n = size(me.inputs);
+ while (1) {
+ var v = me.inputs[me.next_item].getValue();
+
+ if ((n <= 0) or (me.old[me.next_item] != v)) {
+ # Set the MP properties to send the next item.
+ me.channel.send(Binary.encodeByte(me.next_item) ~
+ Binary.encodeDouble(v));
+
+ me.old[me.next_item] = v;
+
+ me.last_time = t;
+ me.next_item += 1;
+ if (me.next_item >= size(me.inputs)) { me.next_item = 0; }
+ return;
+ } else {
+ # Search for changed property.
+ n -= 1;
+ me.next_item += 1;
+ if (me.next_item >= size(me.inputs)) { me.next_item = 0; }
+ }
+ }
+ }
+}
+
+############################################################
+# Time division multiplexing decoder: Receives a list of
+# properties over a MP enabled string property.
+# src - MP string prop : property node
+# actions - list of actions : [func(v)]
+# An action is triggered when its value is received.
+# Note: TDM can have high latency so it is best used for
+# non-time critical properties.
+var TDMDecoder = {};
+TDMDecoder.new = func (src, actions) {
+ var obj = { parents : [TDMDecoder],
+ actions : actions };
+ obj.channel = MessageChannel.new(src,
+ func (msg) {
+ obj.process(msg);
+ });
+
+ # Error checking.
+ var bad = (src == nil) or (obj.channel == nil);
+ foreach (var a; actions) {
+ if (a == nil) { bad = 1; }
+ }
+
+ if (bad) {
+ print("TDMDecoder[");
+ print(" ", debug.string(src));
+ foreach (var a; actions) {
+ print(" ", debug.string(a));
+ }
+ print("]");
+ fail();
+ }
+
+ return obj;
+}
+TDMDecoder.process = func (msg) {
+ var v1 = Binary.decodeByte(msg);
+ var v2 = Binary.decodeDouble(substr(msg, 1));
+ # Trigger action.
+ me.actions[v1](v2);
+}
+TDMDecoder.update = func {
+ me.channel.update();
+}
+
+###############################################################################
+# Internal utility functions
+
+var is_num = func (v) {
+ return num(v) != nil;
+}
+
+# fail causes a Nasal runtime error so we get a backtrace.
+var fail = func {
+ error_detected_in_calling_context();
+}
+
+###############################################################################
+
+###############################################################################
+# Copilot selection dialog.
+#
+# Usage: dual_control_tools.copilot_dialog.show();
+#
+var COPILOT_DLG = 0;
+var copilot_dialog = {};
+############################################################
+copilot_dialog.init = func (copilot_type, x = nil, y = nil) {
+ me.x = x;
+ me.y = y;
+ me.bg = [0, 0, 0, 0.3]; # background color
+ me.fg = [[1.0, 1.0, 1.0, 1.0]];
+ #
+ # "private"
+ if (contains(aircraft_dual_control, "copilot_view")) {
+ me.title = "Pilot selection";
+ } else {
+ me.title = "Copilot selection";
+ }
+ me.basenode = props.globals.getNode("/sim/remote", 1);
+ me.dialog = nil;
+ me.namenode = props.Node.new({"dialog-name" : me.title });
+ me.listeners = [];
+ me.copilot_type = copilot_type;
+}
+############################################################
+copilot_dialog.create = func {
+ if (me.dialog != nil)
+ me.close();
+
+ me.dialog = gui.Widget.new();
+ me.dialog.set("name", me.title);
+ if (me.x != nil)
+ me.dialog.set("x", me.x);
+ if (me.y != nil)
+ me.dialog.set("y", me.y);
+
+ me.dialog.set("layout", "vbox");
+ me.dialog.set("default-padding", 0);
+ var titlebar = me.dialog.addChild("group");
+ titlebar.set("layout", "hbox");
+ titlebar.addChild("empty").set("stretch", 1);
+ if (contains(aircraft_dual_control, "copilot_view")) {
+ titlebar.addChild("text").set("label", "Pilots online");
+ } else {
+ titlebar.addChild("text").set("label", "Copilots online");
+ }
+ var w = titlebar.addChild("button");
+ w.set("pref-width", 16);
+ w.set("pref-height", 16);
+ w.set("legend", "");
+ w.set("default", 0);
+ w.set("key", "esc");
+ w.setBinding("nasal", "dual_control_tools.copilot_dialog.destroy(); ");
+ w.setBinding("dialog-close");
+ me.dialog.addChild("hrule");
+
+ var content = me.dialog.addChild("group");
+ content.set("layout", "vbox");
+ content.set("halign", "center");
+ content.set("default-padding", 5);
+
+ # Generate the dialog contents.
+ me.players = me.find_copilot_players();
+ var i = 0;
+ var tmpbase = me.basenode.getNode("dialog", 1);
+ var selected = me.basenode.getNode("pilot-callsign").getValue();
+ foreach (var p; me.players) {
+ var tmp = tmpbase.getNode("b[" ~ i ~ "]", 1);
+ tmp.setBoolValue(streq(selected, p));
+ var w = content.addChild("checkbox");
+ w.node.setValues({"label" : p,
+ "halign" : "left",
+ "property" : tmp.getPath()});
+ w.setBinding
+ ("nasal",
+ "dual_control_tools.copilot_dialog.select_action(" ~ i ~ ");");
+ i = i + 1;
+ }
+ me.dialog.addChild("hrule");
+
+ # Display the dialog.
+ fgcommand("dialog-new", me.dialog.prop());
+ fgcommand("dialog-show", me.namenode);
+}
+############################################################
+copilot_dialog.close = func {
+ fgcommand("dialog-close", me.namenode);
+}
+############################################################
+copilot_dialog.destroy = func {
+ COPILOT_DLG = 0;
+ me.close();
+ foreach(var l; me.listeners)
+ removelistener(l);
+ delete(gui.dialog, "\"" ~ me.title ~ "\"");
+}
+############################################################
+copilot_dialog.show = func (copilot_type) {
+# print("Showing MPCopilots dialog!");
+ if (!COPILOT_DLG) {
+ COPILOT_DLG = int(getprop("/sim/time/elapsed-sec"));
+ me.init(copilot_type);
+ me.create();
+ me._update_(COPILOT_DLG);
+ }
+}
+############################################################
+copilot_dialog._redraw_ = func {
+ if (me.dialog != nil) {
+ me.close();
+ me.create();
+ }
+}
+############################################################
+copilot_dialog._update_ = func (id) {
+ if (COPILOT_DLG != id) return;
+ me._redraw_();
+ settimer(func { me._update_(id); }, 4.1);
+}
+############################################################
+copilot_dialog.select_action = func (n) {
+ var selected = me.basenode.getNode("pilot-callsign").getValue();
+ var bs = me.basenode.getNode("dialog").getChildren();
+ # Assumption: There are two true b:s or none. The one not matching selected
+ # is the new selection.
+ var i = 0;
+ me.basenode.getNode("pilot-callsign").setValue("");
+ foreach (var b; bs) {
+ if (!b.getValue() and (i == n)) {
+ b.setValue(1);
+ me.basenode.getNode("pilot-callsign").setValue(me.players[i]);
+ } else {
+ b.setValue(0);
+ }
+ i = i + 1;
+ }
+ dual_control.main.reset();
+ me._redraw_();
+}
+############################################################
+# Return a list containing all nearby copilot players of the right type.
+copilot_dialog.find_copilot_players = func {
+ var mpplayers =
+ props.globals.getNode("/ai/models").getChildren("multiplayer");
+
+ var res = [];
+ foreach (var pilot; mpplayers) {
+ if ((pilot.getNode("valid") != nil) and
+ (pilot.getNode("valid").getValue()) and
+ (pilot.getNode("sim/model/path") != nil)) {
+ var type = pilot.getNode("sim/model/path").getValue();
+
+ if (type == me.copilot_type) {
+ append(res, pilot.getNode("callsign").getValue());
+ }
+ }
+ }
+# debug.dump(res);
+ return res;
+}
+###############################################################################
diff --git a/Aircraft/Generic/DualControl/pilot-dual-control.nas b/Aircraft/Generic/DualControl/pilot-dual-control.nas
new file mode 100644
index 000000000..a124b7be1
--- /dev/null
+++ b/Aircraft/Generic/DualControl/pilot-dual-control.nas
@@ -0,0 +1,116 @@
+###############################################################################
+## $Id$
+##
+## Nasal for main pilot for dual control over the multiplayer network.
+##
+## Copyright (C) 2007 - 2010 Anders Gidenstam (anders(at)gidenstam.org)
+## This file is licensed under the GPL license version 2 or later.
+##
+###############################################################################
+
+# Renaming (almost :)
+var DCT = dual_control_tools;
+var ADC = aircraft_dual_control;
+# NOTE: By loading the aircraft specific dual control module
+# as this file is generic.
+# The aircraft specific modul must set the variables
+# pilot_type and copilot_type to the name (with full path) of
+# main 3d model XML for the pilot and copilot aircraft.
+# This module should be loades under the name dual_control.
+
+######################################################################
+# Connect new copilot
+var process_data = 0;
+
+var connect = func (copilot) {
+ # Tweak MP/AI filters
+ copilot.getNode("controls/allow-extrapolation").setBoolValue(0);
+ copilot.getNode("controls/lag-adjust-system-speed").setValue(5);
+
+ process_data = ADC.pilot_connect_copilot(copilot);
+
+ print("Dual control ... copilot connected.");
+ setprop("/sim/messages/copilot", "Hi.");
+}
+
+######################################################################
+# Main loop singleton class.
+var main = {
+ init : func {
+ me.loopid = 0;
+ me.active = 0;
+ setlistener("/ai/models/model-added", func {
+ settimer(func { me.activate(); }, 2);
+ });
+ settimer(func { me.activate(); }, 5);
+ print("Pilot dual control ... initialized");
+ },
+ reset : func {
+ if (me.active) {
+ print("Dual control ... copilot disconnected.");
+ ADC.pilot_disconnect_copilot();
+ }
+ me.active = 0;
+ me.loopid += 1;
+ me._loop_(me.loopid);
+ },
+ activate : func {
+ if (!me.active) {
+ me.reset();
+ }
+ },
+ update : func {
+ var mpplayers =
+ props.globals.getNode("/ai/models").getChildren("multiplayer");
+ var r_callsign = getprop("/sim/remote/pilot-callsign");
+
+ foreach (var copilot; mpplayers) {
+ if ((copilot.getChild("valid").getValue()) and
+ (copilot.getChild("callsign") != nil) and
+ (copilot.getChild("callsign").getValue() == r_callsign)) {
+
+ if (me.active == 0) {
+ # Note: sim/model/path tells the 3d XML file of the model.
+ if ((copilot.getNode("sim/model/path") != nil) and
+ (copilot.getNode("sim/model/path").getValue() ==
+ ADC.copilot_type)) {
+ connect(copilot);
+ me.active = 1;
+ } else {
+ print("Dual control ... copilot rejected - wrong aircraft type.");
+ me.loopid += 1;
+ return;
+ }
+ }
+
+ # Mess with the MP filters. Highly experimental.
+ if (copilot.getNode("controls/lag-time-offset") != nil) {
+ var v = copilot.getNode("controls/lag-time-offset").getValue();
+ copilot.getNode("controls/lag-time-offset").setValue(0.97 * v);
+ }
+
+ foreach (var w; process_data) {
+ w.update();
+ }
+ return;
+ }
+ }
+ if (me.active) {
+ print("Dual control ... copilot disconnected.");
+ ADC.pilot_disconnect_copilot();
+ }
+ me.loopid += 1;
+ me.active = 0;
+ },
+ _loop_ : func(id) {
+ id == me.loopid or return;
+ me.update();
+ settimer(func { me._loop_(id); }, 0);
+ }
+};
+
+######################################################################
+# Initialization.
+setlistener("/sim/signals/fdm-initialized", func {
+ main.init();
+});
diff --git a/Aircraft/c172p/Models/c172p.xml b/Aircraft/c172p/Models/c172p.xml
index 53beef438..ad4f99881 100644
--- a/Aircraft/c172p/Models/c172p.xml
+++ b/Aircraft/c172p/Models/c172p.xml
@@ -1918,23 +1918,6 @@
-
- spin
- Propeller.Slow
- engines/engine[0]/rpm
- -0.1
-
- -1.79
- 0
- -0.05
-
-
- 1.0
- 0.0
- -0.05240773494
-
-
-
spin
Propeller.Fast
diff --git a/Input/Joysticks/Genius/f31.xml b/Input/Joysticks/Genius/f31.xml
new file mode 100644
index 000000000..783594e88
--- /dev/null
+++ b/Input/Joysticks/Genius/f31.xml
@@ -0,0 +1,268 @@
+
+
+
+ Padix Co. Ltd. 10-Button USB Joystick
+ 10-Button USB Joystick with Vibration
+ 10-Button USB Joystick
+
+
+ Aileron
+
+ property-scale
+ /controls/flight/aileron
+ 2
+
+
+
+
+ Elevator
+
+ property-scale
+ /controls/flight/elevator
+ 2
+ -1.0
+
+
+
+
+ Rudder
+
+ 2
+ 3
+
+
+ property-scale
+ /controls/flight/rudder
+ 2
+ -1.0
+
+
+
+
+ Throttle
+
+ 3
+ 2
+
+
+ nasal
+
+
+
+
+
+ View Direction
+
+ 4
+ 6
+
+
+ View left
+ true
+
+
+ nasal
+
+
+
+
+ View right
+ true
+
+
+ nasal
+
+
+
+
+
+
+ View Elevation
+
+ 5
+ 7
+
+
+ View down
+ true
+
+ property-adjust
+ /sim/current-view/goal-pitch-offset-deg
+ 3.0
+
+
+
+ View up
+ true
+
+ property-adjust
+ /sim/current-view/goal-pitch-offset-deg
+ -3.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+